From 5fae4b5a1ca1574fb8c748861ab7237859c0f369 Mon Sep 17 00:00:00 2001 From: Anton Chirikalov Date: Thu, 16 Jun 2022 22:08:41 +0300 Subject: [PATCH 1/3] sql grammar/lexer/parser/listener --- go.mod | 11 +- go.sum | 280 +- processor/stream_processor/parser/sql.interp | 87 + processor/stream_processor/parser/sql.tokens | 41 + .../stream_processor/parser/sqlLexer.interp | 143 + .../stream_processor/parser/sqlLexer.tokens | 41 + .../parser/sql_base_listener.go | 82 + .../stream_processor/parser/sql_lexer.go | 321 + .../stream_processor/parser/sql_lexer_test.go | 22 + .../stream_processor/parser/sql_listener.go | 70 + .../stream_processor/parser/sql_parser.go | 1764 ++ processor/stream_processor/sql.g4 | 137 + processor/stream_processor/test/Sql.g4 | 980 + .../stream_processor/test/parser/Sql.interp | 431 + .../stream_processor/test/parser/Sql.tokens | 186 + .../test/parser/SqlLexer.interp | 527 + .../test/parser/SqlLexer.tokens | 186 + .../test/parser/sql_base_listener.go | 618 + .../stream_processor/test/parser/sql_lexer.go | 1002 + .../test/parser/sql_lexer_test.go | 22 + .../test/parser/sql_listener.go | 598 + .../test/parser/sql_parser.go | 25479 ++++++++++++++++ 22 files changed, 33024 insertions(+), 4 deletions(-) create mode 100644 processor/stream_processor/parser/sql.interp create mode 100644 processor/stream_processor/parser/sql.tokens create mode 100644 processor/stream_processor/parser/sqlLexer.interp create mode 100644 processor/stream_processor/parser/sqlLexer.tokens create mode 100644 processor/stream_processor/parser/sql_base_listener.go create mode 100644 processor/stream_processor/parser/sql_lexer.go create mode 100644 processor/stream_processor/parser/sql_lexer_test.go create mode 100644 processor/stream_processor/parser/sql_listener.go create mode 100644 processor/stream_processor/parser/sql_parser.go create mode 100644 processor/stream_processor/sql.g4 create mode 100644 processor/stream_processor/test/Sql.g4 create mode 100644 processor/stream_processor/test/parser/Sql.interp create mode 100644 processor/stream_processor/test/parser/Sql.tokens create mode 100644 processor/stream_processor/test/parser/SqlLexer.interp create mode 100644 processor/stream_processor/test/parser/SqlLexer.tokens create mode 100644 processor/stream_processor/test/parser/sql_base_listener.go create mode 100644 processor/stream_processor/test/parser/sql_lexer.go create mode 100644 processor/stream_processor/test/parser/sql_lexer_test.go create mode 100644 processor/stream_processor/test/parser/sql_listener.go create mode 100644 processor/stream_processor/test/parser/sql_parser.go diff --git a/go.mod b/go.mod index 723c753af87b..87cc8f3371c3 100644 --- a/go.mod +++ b/go.mod @@ -259,7 +259,6 @@ require ( github.com/felixge/httpsnoop v1.0.3 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect github.com/getsentry/sentry-go v0.13.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.5.1 // indirect github.com/go-logr/logr v1.2.3 // indirect @@ -309,6 +308,7 @@ require ( github.com/hashicorp/go-version v1.5.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/memberlist v0.3.1 // indirect github.com/hashicorp/serf v0.9.7 // indirect github.com/hetznercloud/hcloud-go v1.33.2 // indirect github.com/honeycombio/libhoney-go v1.15.8 // indirect @@ -362,7 +362,6 @@ require ( github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/hashstructure v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect @@ -433,7 +432,6 @@ require ( github.com/santhosh-tekuri/jsonschema v1.2.4 // indirect github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 // indirect github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921 // indirect - github.com/shirou/gopsutil v3.21.10+incompatible // indirect github.com/shirou/gopsutil/v3 v3.22.5 // indirect github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3 // indirect github.com/signalfx/gohistogram v0.0.0-20160107210732-1ccfd2ff5083 // indirect @@ -537,6 +535,13 @@ require ( skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f // indirect ) +require ( + github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 + github.com/go-kit/kit v0.12.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/shirou/gopsutil v3.21.10+incompatible // indirect +) + // Replace references to modules that are in this repository with their relateive paths // so that we always build with current (latest) version of the source code. diff --git a/go.sum b/go.sum index e5092060a9a5..f6fe624b5c3e 100644 --- a/go.sum +++ b/go.sum @@ -53,6 +53,7 @@ cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLq cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= @@ -60,6 +61,8 @@ cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/logging v1.4.2 h1:Mu2Q75VBDQlW1HlBMjTX4X84UFR73G1TiLlRYc/b7tA= cloud.google.com/go/logging v1.4.2/go.mod h1:jco9QZSx8HiVVqLJReq7z7bVdj0P1Jb9PDFs63T+axo= +cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= +cloud.google.com/go/monitoring v1.4.0/go.mod h1:y6xnxfwI3hTFWOdkOaD7nfJVlwuC3/mS/5kvtT131p4= cloud.google.com/go/monitoring v1.5.0 h1:ZltYv8e69fJVga7RTthUBGdx4+Pwz6GRF1V3zylERl4= cloud.google.com/go/monitoring v1.5.0/go.mod h1:/o9y8NYX5j91JjD/JvGLYbi86kL11OjyJXq2XziLJu4= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -79,6 +82,7 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9 cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= cloud.google.com/go/storage v1.22.0/go.mod h1:GbaLEoMqbVm6sx3Z0R++gSiBlgMv6yUi2q1DeGFKQgE= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= cloud.google.com/go/trace v1.2.0 h1:oIaB4KahkIUOpLSAAjEJ8y2desbjY/x/RfP4O3KAtTI= cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM= code.cloudfoundry.org/bytefmt v0.0.0-20190710193110-1eb035ffe2b6/go.mod h1:wN/zk7mhREp/oviagqUXY3EwuHhWyOvAdsn5Y4CzOrc= @@ -96,8 +100,12 @@ contrib.go.opencensus.io/exporter/prometheus v0.4.1/go.mod h1:t9wvfitlUjGXG2IXAZ contrib.go.opencensus.io/exporter/stackdriver v0.13.13 h1:3KLhsPyyFp1pfZPicg8e1VMSeztIyWm+aE+iZQ8b9Kg= contrib.go.opencensus.io/exporter/stackdriver v0.13.13/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= +github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= @@ -111,6 +119,7 @@ github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+B github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= github.com/Azure/go-autorest/autorest v0.11.27 h1:F3R3q42aWytozkV8ihzcgMO4OA4cuqr3bNlsEuF6//A= github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= @@ -145,6 +154,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/agent-payload/v5 v5.0.22 h1:XaMYtdvdjRWLwvoQhZM3Se0YmOeMYgEvdKVLwPsxEaU= github.com/DataDog/agent-payload/v5 v5.0.22/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= @@ -163,13 +174,16 @@ github.com/DataDog/datadog-go v4.8.2+incompatible h1:qbcKSx29aBLD+5QLvlQZlGmRMF/ github.com/DataDog/datadog-go v4.8.2+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go/v5 v5.0.2/go.mod h1:ZI9JFB4ewXbw1sBnF4sxsR2k1H3xjV+PUAOUsHvKpcU= github.com/DataDog/gostackparse v0.5.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= +github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= github.com/DataDog/sketches-go v1.0.0/go.mod h1:O+XkJHWk9w4hDwY2ZUDU31ZC9sNYlYo8DiFsxjYeo1k= github.com/DataDog/sketches-go v1.4.1 h1:j5G6as+9FASM2qC36lvpvQAj9qsv/jUs3FtO8CwZNAY= github.com/DataDog/sketches-go v1.4.1/go.mod h1:xJIXldczJyyjnbDop7ZZcLxJdV3+7Kra7H1KMgpgkLk= github.com/DataDog/zstd v1.3.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 h1:KeNholpO2xKjgaaSyd+DyQRrsQjhbSeS7qe4nEw8aQw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962/go.mod h1:kC29dT1vFpj7py2OvG1khBdQpo3kInWP+6QipLbdngo= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v0.32.1 h1:v2ey6AUQFjj6vPMdXNL9K1R1/4V20qPBuL3os831jvw= @@ -182,7 +196,10 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.30.1/go.mod h1:j+FS9VBW3mwtHBmm9KOJEy5Tq68fCp7fE/R9bV/flIM= github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4= github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= +github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= @@ -228,6 +245,7 @@ github.com/SAP/go-hdb v0.105.5 h1:mop9KOZU1ro9PjJLgqseHUZzwoOJh4d7f8Nrvf1a2Uo= github.com/SAP/go-hdb v0.105.5/go.mod h1:xbtJDvjqm9MQhIAnalynGNAbqxolS9W02qQo/vBqyaU= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 h1:koK7z0nSsRiRiBWwa+E714Puh+DO+ZRdIyAXiXzL+lg= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.22.0/go.mod h1:lm3THZ8reqBDBQKQyb5HB3sY1lKp3grEbQ81aWSgPp4= @@ -249,8 +267,14 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/a8m/tree v0.0.0-20210115125333-10a5fd5b637d/go.mod h1:FSdwKX97koS5efgm8WevNf7XS3PqtyFkKDDXrz778cg= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alecthomas/participle/v2 v2.0.0-alpha9 h1:TnflwDbtf5/aG6JMbmdiA+YB3bLg0sc6yRtmAfedfN4= github.com/alecthomas/participle/v2 v2.0.0-alpha9/go.mod h1:NumScqsC42o9x+dGj8/YqsIfhrIQjFEOFovxotbBirA= github.com/alecthomas/repr v0.0.0-20181024024818-d37bc2a10ba1 h1:GDQdwm/gAcJcLAKQQZGOJ4knlw+7rfEQQcmwTbt4p5E= @@ -269,6 +293,8 @@ github.com/aliyun/aliyun-log-go-sdk v0.1.36/go.mod h1:1QQ59pEJiVVXqKgbHcU6FWIgxT github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 h1:mEzJ8SH4M5wDL8C4a17yX2YeD/FIXV5w8FJekByaBi0= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= @@ -281,6 +307,8 @@ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hC github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= +github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.10 h1:FR+drcQStOe+32sYyJYyZ7FIdgoGGBnwLl+flodp8Uo= github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -304,11 +332,16 @@ github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/ github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.20/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.28 h1:h/OAqEqY18wq//v6h4GNPMmCkxuzSDrWuGyrvSiRqf4= github.com/aws/aws-sdk-go v1.44.28/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.0.0/go.mod h1:smfAbmpW+tcRVuNUjo3MOArSZmW72t62rkCzc2i0TWM= github.com/aws/aws-sdk-go-v2 v1.7.0/go.mod h1:tb9wi5s61kTDA5qCkcDbt3KRVV74GGslQkl/DRdX/P4= +github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.9.2 h1:dUFQcMNZMLON4BOe273pl0filK9RqyQMhCK/6xssL6s= github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2/config v1.0.0/go.mod h1:WysE/OpUgE37tjtmtJd8GXgT8s1euilE5XtUkRNUQ1w= @@ -324,6 +357,7 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4 h1:leSJ6vCqtPpTmBIgE7044B1wql1E github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.5.0/go.mod h1:acH3+MQoiMzozT/ivU+DbRg7Ooo2298RdRaWcOv+4vM= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.0/go.mod h1:3jExOmpbjgPnz2FJaMOfbSk1heTkZ66aD3yNtVhnjvI= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2 h1:r7jel2aa4d9Duys7wEmWqDd5ebpC9w6Kxu6wIjjp18E= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= @@ -338,7 +372,9 @@ github.com/aws/smithy-go v1.5.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAm github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.11.0 h1:nOfSDwiiH232f90OuevPnAEQO5ZqH+xnn8uGVsvBCw4= github.com/aws/smithy-go v1.11.0/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= +github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/basgys/goxml2json v1.1.0 h1:4ln5i4rseYfXNd86lGEB+Vi652IsIXIvggKM/BhUKVw= +github.com/basgys/goxml2json v1.1.0/go.mod h1:wH7a5Np/Q4QoECFIU8zTQlZwZkrilY0itPfecMw41Dw= github.com/beeker1121/goque v2.1.0+incompatible h1:m5pZ5b8nqzojS2DF2ioZphFYQUqGYsDORq6uefUItPM= github.com/beeker1121/goque v2.1.0+incompatible/go.mod h1:L6dOWBhDOnxUVQsb0wkLve0VCnt2xJW/MI8pdRX4ANw= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= @@ -365,6 +401,8 @@ github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2y github.com/bmatcuk/doublestar/v3 v3.0.0 h1:TQtVPlDnAYwcrVNB2JiGuMc++H5qzWZd9PhkNo5WyHI= github.com/bmatcuk/doublestar/v3 v3.0.0/go.mod h1:6PcTVMw80pCY1RVuoqu3V++99uQB3vsSYKPTd8AWA0k= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bsm/sarama-cluster v2.1.13+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM= @@ -377,6 +415,7 @@ github.com/caio/go-tdigest v3.1.0+incompatible h1:uoVMJ3Q5lXmVLCCqaMGHLBWnbGoN6L github.com/caio/go-tdigest v3.1.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.31.6/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -388,6 +427,7 @@ github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnd github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= @@ -397,8 +437,11 @@ github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d8 github.com/checkpoint-restore/go-criu/v5 v5.3.0 h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575 h1:kHaBemcxl8o/pQ5VM1c8PVE1PubbNx3mjUr09OqWGCs= github.com/cihub/seelog v0.0.0-20170130134532-f561c5e57575/go.mod h1:9d6lWj8KzO/fd/NrVaLscBKmPigpZpn5YawRPw+e3Yo= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= @@ -410,6 +453,7 @@ github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 h1:F1EaeKL/ta07PY/k9Os/UFtwERei2/XzGemhpGnBKNg= @@ -435,6 +479,7 @@ github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/confluentinc/confluent-kafka-go v1.4.0/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= @@ -476,6 +521,7 @@ github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoT github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= +github.com/containerd/containerd v1.5.9/go.mod h1:fvQqCfadDGga5HZyn3j4+dx56qj2I9YwBrlSdalvJYQ= github.com/containerd/containerd v1.6.1 h1:oa2uY0/0G+JX4X7hpGCYvkp9FjUancz56kSNnb1sG3o= github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= @@ -555,6 +601,7 @@ github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= @@ -587,6 +634,7 @@ github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27 github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger/v3 v3.2103.0/go.mod h1:GHMCYxuDWyzbHkh4k3yyg4PM61tJPFfEGSMbE3Vd5QE= github.com/dgraph-io/badger/v3 v3.2103.2/go.mod h1:RHo4/GmYcKKh5Lxu63wLEMHJ70Pac2JqZRYGhlyAo2M= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= @@ -600,18 +648,26 @@ github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WA github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= github.com/digitalocean/godo v1.80.0 h1:ZULJ/fWDM97YtO7Fa+K6hzJLd7+smCu4N+0n+B/xtj4= github.com/digitalocean/godo v1.80.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.0-beta.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.11+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.15+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.16+incompatible h1:2Db6ZR/+FUR3hqPMwnogOPHFn405crbpxvWzKovETOQ= github.com/docker/docker v20.10.16+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= @@ -628,6 +684,7 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dougm/pretty v0.0.0-20171025230240-2ee9d7453c02/go.mod h1:7NQ3kWOx2cZOSjtcveTa5nqupVr2s6/83sG+rTlI7uA= github.com/dropbox/godropbox v0.0.0-20180512210157-31879d3884b9 h1:NAvZb7gqQfLSNBPzVsvI7eZMosXtg2g2kxXrei90CtU= github.com/dropbox/godropbox v0.0.0-20180512210157-31879d3884b9/go.mod h1:glr97hP/JuXb+WMYCizc4PIFuzw1lCR97mwbe1VVXhQ= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -643,6 +700,8 @@ github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1 github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= github.com/elastic/go-elasticsearch/v7 v7.17.1 h1:49mHcHx7lpCL8cW1aioEwSEVKQF3s+Igi4Ye/QTWwmk= github.com/elastic/go-elasticsearch/v7 v7.17.1/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= @@ -676,6 +735,7 @@ github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E github.com/envoyproxy/protoc-gen-validate v0.6.7 h1:qcZcULcd/abmQg6dwigimCNEyi4gg31M/xaciQlDml8= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= +github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -699,6 +759,8 @@ github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpm github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -706,11 +768,14 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.10.2/go.mod h1:K+q6oSqb0W0Ininfk863uOk1lMy69l/P6txr3mVT54s= @@ -730,6 +795,7 @@ github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmV github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/garyburd/redigo v1.6.3/go.mod h1:rTb6epsqigu3kYKBnaF028A7Tf/Aw5s0cqA47doKKqw= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= @@ -741,12 +807,20 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-chi/chi v1.5.0/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -761,6 +835,8 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -780,6 +856,7 @@ github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jT github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -841,7 +918,9 @@ github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2g github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= github.com/go-openapi/runtime v0.19.28/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= +github.com/go-openapi/runtime v0.21.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= github.com/go-openapi/runtime v0.22.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= +github.com/go-openapi/runtime v0.23.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/runtime v0.23.3/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= @@ -894,6 +973,8 @@ github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= github.com/go-openapi/validate v0.20.3/go.mod h1:goDdqVGiigM3jChcrYJxD2joalke3ZXeftD16byIjA4= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pg/pg/v10 v10.0.0/go.mod h1:XHU1AkQW534GFuUdSiQ46+Xw6Ah+9+b8DlT4YwhiXL8= github.com/go-pg/zerochecker v0.2.0/go.mod h1:NJZ4wKL0NmTtz0GKCoJ8kym6Xn/EQzXRl2OnAe7MmDo= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -902,6 +983,7 @@ github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTM github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v7 v7.1.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= @@ -949,11 +1031,16 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/gocql/gocql v0.0.0-20200228163523-cd4b606dd2fb/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= github.com/gocql/gocql v0.0.0-20211222173705-d73e6b1002a7/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/gocql/gocql v0.0.0-20220224095938-0eacd3183625/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -971,6 +1058,7 @@ github.com/gogo/googleapis v1.3.1/go.mod h1:d+q1s/xVJxZGKWwC/6UfPIF33J+G1Tq4GYv9 github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -979,10 +1067,13 @@ github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= @@ -1028,6 +1119,7 @@ github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.7.0/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/addlicense v0.0.0-20190510175307-22550fa7c1b0/go.mod h1:QtPG26W17m+OIQgE6gQ24gC1M6pUaMBAbFrTIDtwG/E= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -1055,6 +1147,7 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= @@ -1083,7 +1176,10 @@ github.com/google/pprof v0.0.0-20210423192551-a2663126120b/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/google/pprof v0.0.0-20220520215854-d04f2422c8a1/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1105,6 +1201,7 @@ github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97Dwqy github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3 h1:eHv/jVY/JNop1xg2J9cBb4EzyMpWZoNCP1BslSAIkOI= +github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3/go.mod h1:h/KNeRx7oYU4SpA4SoY7W2/NxDKEEVuwA6j9A27L4OI= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gophercloud/gophercloud v0.24.0 h1:jDsIMGJ1KZpAjYfQgGI2coNQj5Q83oPzuiGJRFWgMzw= github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= @@ -1124,6 +1221,7 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2 h1:uirlL/j72L93RhV4+mkWhjv0cov2I0MIgPOG9rMDr1k= github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= @@ -1140,12 +1238,15 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.2/go.mod h1:chrfS3YoLAlKTRE5cFWvCbt8uGAjshktT4PveTUpsFQ= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/consul/api v1.0.0/go.mod h1:mbFwfRxOTDHZpT3iUsMAFcLNoVm6Xbe1xZ6KiSm8FY0= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/api v1.8.1/go.mod h1:sDjTOq0yUyv5G4h+BqSea7Fn6BU+XbolEz1952UB+mk= +github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.12.0 h1:k3y1FYv6nuKyNTqj6w9gXOx5r5CfLj/k/euUeBXj1OY= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= @@ -1167,6 +1268,7 @@ github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9 github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= @@ -1176,11 +1278,13 @@ github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39E github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw= github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= @@ -1225,8 +1329,9 @@ github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/ github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.1.6/go.mod h1:5VDNHjqFMgEcclnwmkCnC99IPwxBmIsxwY8qn+Nl0H4= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.0 h1:8+567mCcFDnS5ADl7lrpxPMWiFCElyUEeW0gtj34fMA= github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/memberlist v0.3.1 h1:MXgUXLqva1QvpVEDQW1IQLG0wivQAtmFlHRQ+1vWZfM= +github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.8.6/go.mod h1:P/AVgr4UHsUYqVHG1y9eFhz8S35pqhGhLZaDpfGKIMo= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= @@ -1240,26 +1345,32 @@ github.com/hashicorp/vault/sdk v0.1.14-0.20200519221838-e0cfd64bc267/go.mod h1:W github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20190923154419-df201c70410d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/hetznercloud/hcloud-go v1.33.2 h1:ptWKVYLW7YtjXzsqTFKFxwpVo3iM9UMkVPBYQE4teLU= github.com/hetznercloud/hcloud-go v1.33.2/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= github.com/honeycombio/libhoney-go v1.15.8 h1:TECEltZ48K6J4NG1JVYqmi0vCJNnHYooFor83fgKesA= github.com/honeycombio/libhoney-go v1.15.8/go.mod h1:+tnL2etFnJmVx30yqmoUkVyQjp7uRJw0a2QGu48lSyY= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6 h1:s9ZL6ZhFF8y6ebnm1FLvobkzoIu5xwDQUcRPk/IEhpM= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6/go.mod h1:aXdIdfn2OcGnMhOTojXmwZqXKgC3MU5riiNvzwwG9OY= +github.com/influxdata/influxdb-observability/common v0.2.20/go.mod h1:9t4MDkYRImBa4Wuatb3URr6tlimGT1JUYv9O8y5L/C8= github.com/influxdata/influxdb-observability/common v0.2.21-0.20220517160208-05f925d616de h1:f9p3iKS31+/p6cvqdmTJ45lrTlH+GDj2sK4EdVbuMI4= github.com/influxdata/influxdb-observability/common v0.2.21-0.20220517160208-05f925d616de/go.mod h1:9t4MDkYRImBa4Wuatb3URr6tlimGT1JUYv9O8y5L/C8= github.com/influxdata/influxdb-observability/influx2otel v0.2.21-0.20220517160208-05f925d616de h1:Ycgp+v47g/qaK70x54GuOBUkZinVmztEIg3dHdinKpo= @@ -1278,8 +1389,14 @@ github.com/influxdata/line-protocol/v2 v2.2.1/go.mod h1:DmB3Cnh+3oxmG6LOBIxce4oa github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= github.com/ionos-cloud/sdk-go/v6 v6.0.5851 h1:Xjdta3uR5SDLXXl0oahgVIJ+AQNFCyOCuAwxPAXFUCM= github.com/ionos-cloud/sdk-go/v6 v6.0.5851/go.mod h1:UE3V/2DjnqD5doOqtjYqzJRMpI1RiwrvuuSEPX1pdnk= +github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= +github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= +github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= +github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= +github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= +github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -1305,6 +1422,7 @@ github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5W github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A= github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= @@ -1351,6 +1469,7 @@ github.com/jackc/puddle v1.2.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jaegertracing/jaeger v1.15.1/go.mod h1:LUWPSnzNPGRubM8pk0inANGitpiMOOxihXx0+53llXI= github.com/jaegertracing/jaeger v1.24.0/go.mod h1:mqdtFDA447va5j0UewDaAWyNlGreGQyhGxXVhbF58gQ= +github.com/jaegertracing/jaeger v1.28.0/go.mod h1:CfqVll05gkdPxNc5xrCnR44UmeVYZoYJtO4Ub8qn2wI= github.com/jaegertracing/jaeger v1.31.0/go.mod h1:KukZMhuamI3NVbzWmngcmXbcnxiB3WyaNf0nxio+sUw= github.com/jaegertracing/jaeger v1.35.1 h1:Jb7/5anKF70V4FQSJRJ3AYBcA/hJDfWy45kE/9nFSe8= github.com/jaegertracing/jaeger v1.35.1/go.mod h1:e7FBVZ14ptsRjwiHEnLyxvOa4bSnZA0BDFE1OcvNiHs= @@ -1369,6 +1488,7 @@ github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aW github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jinzhu/gorm v1.9.1/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= @@ -1413,17 +1533,26 @@ github.com/juju/testing v0.0.0-20191001232224-ce9dec17d28b/go.mod h1:63prj8cnj0t github.com/julienschmidt/httprouter v1.1.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= +github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= +github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= +github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= +github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= +github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= @@ -1438,6 +1567,7 @@ github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e github.com/klauspost/compress v1.15.4/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.6 h1:6D9PcO8QWu0JyaQ2zUMmu16T1T+zjjEpP91guRsvDfY= github.com/klauspost/compress v1.15.6/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/knadh/koanf v1.4.1 h1:Z0VGW/uo8NJmjd+L1Dc3S5frq6c62w5xQ9Yf4Mg3wFQ= github.com/knadh/koanf v1.4.1/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg= @@ -1458,11 +1588,14 @@ github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= github.com/labstack/echo/v4 v4.2.0/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353 h1:X/79QL0b4YJVO5+OsPH9rF2u428CIrGL/jLmPsoOQQ4= +github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= @@ -1477,6 +1610,7 @@ github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= github.com/linode/linodego v1.5.0 h1:p1TgkDsz0ubaIPLNviZBTIjlsX3PdvqZQ4eO2r0L1Hk= github.com/linode/linodego v1.5.0/go.mod h1:9lmhBsOupR6ke7D9Ioj1bq/ny9pfgFkCLiX7ubq0r08= github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= @@ -1516,6 +1650,7 @@ github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= @@ -1541,22 +1676,28 @@ github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOq github.com/mattn/go-sqlite3 v1.14.12/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/microsoft/ApplicationInsights-Go v0.4.4 h1:G4+H9WNs6ygSCe6sUyxRc2U81TI5Es90b2t/MwX5KqY= github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/miekg/dns v1.1.49 h1:qe0mQU3Z/XpFeE+AEBo2rqaS1IPBJ3anmqZ4XiZJVG8= github.com/miekg/dns v1.1.49/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -1595,6 +1736,7 @@ github.com/mjibson/esc v0.2.0/go.mod h1:9Hw9gxxfHulMF5OJKCyhYD7PzlSdhzXyaGEBRPH1 github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= +github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= @@ -1614,13 +1756,16 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mongodb-forks/digest v1.0.4 h1:9FrGTc7MGAchgaQBcXBnEwUM/Oo8obW7OGWxnsSvZ64= github.com/mongodb-forks/digest v1.0.4/go.mod h1:eHRfgovT+dvSFfltrOa27hy1oR/rcwyDdp5H1ZQxEMA= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= +github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mostynb/go-grpc-compression v1.1.16 h1:D9tGUINmcII049pxOj9dl32Fzhp26TrDVQXECoKJqQg= github.com/mostynb/go-grpc-compression v1.1.16/go.mod h1:xxa6UoYynYS2h+5HB/Hglu81iYAp87ARaNmhhwi0s1s= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= @@ -1635,10 +1780,13 @@ github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5Vgl github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= github.com/nats-io/jwt/v2 v2.0.2/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= +github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= github.com/nats-io/nats-server/v2 v2.2.6/go.mod h1:sEnFaxqe09cDmfMgACxZbziXnhQFhwk+aKkZjBBRYrI= +github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nats.go v1.11.0/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= +github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= @@ -1657,6 +1805,7 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/observiq/ctimefmt v1.0.0 h1:r7vTJ+Slkrt9fZ67mkf+mA6zAdR5nGIJRMTzkUyvilk= github.com/observiq/ctimefmt v1.0.0/go.mod h1:mxi62//WbSpG/roCO1c6MqZ7zQTvjVtYheqHN3eOjvc= github.com/observiq/nanojack v0.0.0-20201106172433-343928847ebc h1:49ewVBwLcy+eYqI4R0ICilCI4dPjddpFXWv3liXzUxM= +github.com/observiq/nanojack v0.0.0-20201106172433-343928847ebc/go.mod h1:WXIHwGy+c7/IK2PiJ4oxuTHkpnkSut7TNFpKnI5llPU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= @@ -1698,6 +1847,7 @@ github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je4 github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1716,6 +1866,7 @@ github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.0 h1:O9+X96OcDjkmmZyfaG996kV7yq8HsoU2h1XRRQcefG8= github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -1772,10 +1923,14 @@ github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCko github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= github.com/pierrec/lz4 v0.0.0-20190327172049-315a67e90e41/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= @@ -1788,6 +1943,8 @@ github.com/pierrec/lz4/v3 v3.3.4/go.mod h1:280XNCGS8jAcG++AHdd6SeWnzyJ1w9oow2vbO github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE= github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1807,6 +1964,7 @@ github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prY github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/alertmanager v0.24.0/go.mod h1:r6fy/D7FRuZh5YbnX6J3MBY0eI4Pb5yPYS7/bPSXXqI= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= @@ -1848,8 +2006,10 @@ github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/common/sigv4 v0.1.0 h1:qoVebwtwwEhS85Czm2dSROY5fTo2PAPEVdDeppTwGX4= github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= +github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -1867,12 +2027,15 @@ github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= github.com/prometheus/prometheus v0.36.0 h1:d1OWo3gTs5apWUMP5luhZTmXKmwrUUz9DqWlGCQJBAE= github.com/prometheus/prometheus v0.36.0/go.mod h1:g5VjDTKGDiTs249GQVBbbWdHLkkIOgme3HxyUwIzlwY= github.com/prometheus/statsd_exporter v0.21.0 h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8= github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rabbitmq/amqp091-go v1.1.0/go.mod h1:ogQDLSOACsLPsIq0NpbtiifNZi2YOz0VTJ0kHRghqbM= +github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4= +github.com/rasky/go-xdr v0.0.0-20170217172119-4930550ba2e2/go.mod h1:Nfe4efndBz4TibWycNE+lqyJZiMX4ycx+QKV8Ta0f/o= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20200313005456-10cdbea86bc0/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= @@ -1887,7 +2050,9 @@ github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -1897,11 +2062,14 @@ github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThC github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= github.com/sagikazarmark/crypt v0.5.0/go.mod h1:l+nzl7KWh51rpzp2h7t4MZWyiEWdhNpOAnclKvg+mdA= @@ -1913,6 +2081,7 @@ github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHi github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 h1:0roa6gXKgyta64uqh52AQG3wzZXH21unn+ltzQSXML0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v2 v2.13.2/go.mod h1:6YZjqdthH6SCZKv2rqGryrxPtfmRB/DWZxSMfCXPyD8= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= @@ -1937,7 +2106,9 @@ github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9Nz github.com/shopspring/decimal v0.0.0-20200227202807-02e2044944cc/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.1/go.mod h1:QkslgLDW0N9qRi9qkxcNDaf812gg0kWcf3ZZORE5/FI= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3 h1:32k2QLgsKhcEs55q4REPKyIadvid5FPy2+VMgvbmKJ0= github.com/signalfx/com_signalfx_metrics_protobuf v0.0.3/go.mod h1:gJrXWi7wSGXfiC7+VheQaz+ypdCt5SmZNL+BRxUe7y4= @@ -1991,6 +2162,7 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL github.com/spf13/cobra v0.0.7/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= @@ -2007,6 +2179,7 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= github.com/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= @@ -2049,6 +2222,7 @@ github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955u github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413 h1:DvydszksqriOr0Zze9OREt8OrIrtMSFcVD8lz3xNAQA= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.413/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/testcontainers/testcontainers-go v0.13.0 h1:OUujSlEGsXVo/ykPVZk3KanBNGN0TYb/7oKIPVn15JA= +github.com/testcontainers/testcontainers-go v0.13.0/go.mod h1:z1abufU633Eb/FmSBTzV6ntZAC1eZBYPtaFsn4nPuDk= github.com/tg123/go-htpasswd v1.2.0 h1:UKp34m9H467/xklxUxU15wKRru7fwXoTojtxg25ITF0= github.com/tg123/go-htpasswd v1.2.0/go.mod h1:h7IzlfpvIWnVJhNZ0nQ9HaFxHb7pn5uFJYLlEUJa2sM= github.com/tidwall/btree v0.3.0/go.mod h1:huei1BkDWJ3/sLXmO+bsCNELL+Bp2Kks9OLyQFkzvA8= @@ -2104,10 +2278,12 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= github.com/valyala/fasthttp v1.32.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/vaughan0/go-ini v0.0.0-20130923145212-a98ad7ee00ec/go.mod h1:owBmyHYMLkxyrugmfwE/DLJyW8Ro9mkphwuVErQ0iUw= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= @@ -2141,6 +2317,7 @@ github.com/vmware/go-vmware-nsxt v0.0.0-20220328155605-f49a14c1ef5f h1:NbC9yOr5A github.com/vmware/go-vmware-nsxt v0.0.0-20220328155605-f49a14c1ef5f/go.mod h1:VEqcmf4Sp7gPB7z05QGyKVmn6xWppr7Nz8cVNvyC80o= github.com/vmware/govmomi v0.28.0 h1:VgeQ/Rvz79U9G8QIKLdgpsN9AndHJL+5iMJLgYIrBGI= github.com/vmware/govmomi v0.28.0/go.mod h1:F7adsVewLNHsW/IIm7ziFURaXDaHEwcc+ym4r3INMdY= +github.com/vmware/vmw-guestinfo v0.0.0-20170707015358-25eff159a728/go.mod h1:x9oS4Wk2s2u4tS29nEaDLdzvuHdB19CvSGJjPgkZJNk= github.com/vultr/govultr/v2 v2.17.0 h1:BHa6MQvQn4YNOw+ecfrbISOf4+3cvgofEQHKBSXt6t0= github.com/vultr/govultr/v2 v2.17.0/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad/go.mod h1:Hy8o65+MXnS6EwGElrSRjUzQDLXreJlzYLlWiHtt8hM= @@ -2165,10 +2342,15 @@ github.com/xdg/stringprep v1.0.3/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0 github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -2183,6 +2365,7 @@ github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zenazn/goji v1.0.1/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zorkian/go-datadog-api v2.30.0+incompatible h1:R4ryGocppDqZZbnNc5EDR8xGWF/z/MxzWnqTUijDQes= +github.com/zorkian/go-datadog-api v2.30.0+incompatible/go.mod h1:PkXwHX9CUQa/FpB9ZwAD45N1uhCW4MT/Wj7m36PbKss= go.elastic.co/apm v1.15.0 h1:uPk2g/whK7c7XiZyz/YCUnAUBNPiyNeE3ARX3G6Gx7Q= go.elastic.co/apm v1.15.0/go.mod h1:dylGv2HKR0tiCV+wliJz1KHtDyuD8SPe69oV7VyK6WY= go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= @@ -2238,14 +2421,18 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector v0.52.0/go.mod h1:a9GvaOhyc0nVOUzqvdv5mxyWghCSso/WRO2GgRl4I1g= go.opentelemetry.io/collector v0.53.0 h1:p4XwnAltBnw/gCRTk+DHTJVGYLzD5cPHp+0XK/KKE/s= go.opentelemetry.io/collector v0.53.0/go.mod h1:MMSqz2ImXjLrZB26cC8vrtgnjsza3hpc760NNjsmjwE= +go.opentelemetry.io/collector/model v0.38.0/go.mod h1:gS8A27wi+8gM3hrXL+dEjTbrbLxktjHjAwwqI31ELgQ= go.opentelemetry.io/collector/model v0.44.0/go.mod h1:4jo1R8uBDspLCxUGhQ0k3v/EFXFbW7s0AIy3LuGLbcU= go.opentelemetry.io/collector/model v0.45.0/go.mod h1:uyiyyq8lV45zrJ94MnLip26sorfNLP6J9XmOvaEmy7w= +go.opentelemetry.io/collector/pdata v0.51.0/go.mod h1:FsowYKNmf8CgsHgOfJv8V3KjALmy6FYQRHtXAOY3fho= go.opentelemetry.io/collector/pdata v0.52.0/go.mod h1:GJUTfTv8mlYpHRjcmHXVbvJr48EW/q/P/HuBvpXAE58= go.opentelemetry.io/collector/pdata v0.53.0 h1:jezCyHu/LXs4P/GzKObCabU2/OUTivNBlQHGPAo/dZo= go.opentelemetry.io/collector/pdata v0.53.0/go.mod h1:25b+xH0uJwp8H3f0a1V+OQfxbhYVds6Rf1Ul+HFCGo4= +go.opentelemetry.io/collector/semconv v0.51.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= go.opentelemetry.io/collector/semconv v0.52.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= go.opentelemetry.io/collector/semconv v0.53.0 h1:J1lVnFp1VyNKU63rc7csY9/54Tjm9BlLylXLjPimf7s= go.opentelemetry.io/collector/semconv v0.53.0/go.mod h1:SxK0rUnUP7YeDakexzbE/vhimTOHwE6m/4aKKd9e27Q= +go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= @@ -2253,6 +2440,7 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.3 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.32.0/go.mod h1:J0dBVrt7dPS/lKJyQoW0xzQiUr4r2Ik1VwPjAUWnofI= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.29.0/go.mod h1:tLYsuf2v8fZreBVwp9gVMhefZlLFZaUiNVSq8QxXRII= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0 h1:mac9BKRqwaX6zxHPDe3pvmWpwuuIM0vuXv2juCnQevE= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= go.opentelemetry.io/contrib/zpages v0.32.0 h1:AVKTx5ppWDaem7A61HFsO1T3CK/t6kFRQoZQMj0/TW4= @@ -2262,23 +2450,38 @@ go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzox go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= +go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= +go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= +go.opentelemetry.io/otel v1.6.2/go.mod h1:MUBZHaB2cm6CahEBHQPq9Anos7IXynP/noVpjsxQTSc= +go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM= go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.1/go.mod h1:YJ/JbY5ag/tSQFXzH3mtDmHqzF3aFn3DI/aB1n7pt4w= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.1/go.mod h1:UJJXJj0rltNIemDMwkOJyggsvyMG9QHfJeFH0HS5JjM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA= go.opentelemetry.io/otel/exporters/prometheus v0.30.0 h1:YXo5ZY5nofaEYMCMTTMaRH2cLDZB8+0UGuk5RwMfIo0= go.opentelemetry.io/otel/exporters/prometheus v0.30.0/go.mod h1:qN5feW+0/d661KDtJuATEmHtw5bKBK7NSvNEP927zSs= go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v0.27.0/go.mod h1:raXDJ7uP2/Jc0nVZWQjJtzoyssOYWu/+pjZqRzfvZ7g= +go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= go.opentelemetry.io/otel/metric v0.30.0 h1:Hs8eQZ8aQgs0U49diZoaS6Uaxw3+bBE3lcMUKBFIk3c= go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= +go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= +go.opentelemetry.io/otel/sdk v1.6.2/go.mod h1:M2r4VCm1Yurk4E+fWtP2p+QzFDHMFEqhGdbtQ7zRf+k= go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0= go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= @@ -2289,11 +2492,17 @@ go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16g go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= +go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= +go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= +go.opentelemetry.io/otel/trace v1.6.2/go.mod h1:RMqfw8Mclba1p7sXDmEDBvrB8jw65F6GOoN1fyyXTzk= +go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o= go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= +go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -2305,6 +2514,7 @@ go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= @@ -2322,6 +2532,7 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= @@ -2351,6 +2562,7 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -2368,6 +2580,7 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5 golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210920023735-84f357641f63/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -2377,21 +2590,37 @@ golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122 h1:NvGWuYG8dkDHFSKksI1P9faiVJ9rayE6l0+ouWVIDs8= golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20200901203048-c4f52b2c50aa/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925 h1:5XVKs2rlCg8EFyRcvO8/XFwYxh1oKJO1Q3X5vttIf9c= golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925/go.mod h1:1phAWC201xIgDyaFpmDeZkgf70Q4Pd/CNqfRtVPtxNw= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -2418,6 +2647,7 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2436,6 +2666,7 @@ golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -2493,8 +2724,10 @@ golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211108170745-6635138e15ea/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -2647,6 +2880,7 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2689,6 +2923,8 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2721,23 +2957,29 @@ golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w= golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181112210238-4b1f3b6b1646/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -2759,6 +3001,7 @@ golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190906203814-12febf440ab1/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2793,6 +3036,7 @@ golang.org/x/tools v0.0.0-20200527183253-8e7acdbce89d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200701151220-7cb253f4c4f8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -2814,6 +3058,7 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= @@ -2826,8 +3071,16 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.7.0/go.mod h1:L02bwd0sqlsvRv41G7wGWFCsVNZFv/k1xzGIxeANHGM= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -2862,6 +3115,7 @@ google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6 google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= @@ -2921,6 +3175,7 @@ google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1m google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200528110217-3d3490e7e671/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200605102947-12044bf5ea91/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200726014623-da3ae01ef02d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -2958,8 +3213,11 @@ google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211129164237-f09f9a12af12/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= @@ -2986,6 +3244,7 @@ google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220524023933-508584e28198/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58 h1:a221mAAEAzq4Lz6ZWRkcS8ptb2mxoxYSt4N68aRyQHM= google.golang.org/genproto v0.0.0-20220527130721-00d5c0f3be58/go.mod h1:yKyY4AMRwFiC8yMMNaMi+RkCnjZJt9LoWuvhXjMs+To= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -3075,11 +3334,14 @@ gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:a gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jinzhu/gorm.v1 v1.9.1/go.mod h1:56JJPUzbikvTVnoyP1nppSkbJ2L8sunqTBDY2fDrmFg= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= @@ -3090,6 +3352,7 @@ gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76 gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -3103,10 +3366,12 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/zorkian/go-datadog-api.v2 v2.30.0 h1:umQdVO0Ytx+kYadhuJNjFtDgIsIEBnKrOTvNuu8ClKI= @@ -3119,9 +3384,12 @@ gorm.io/gorm v1.20.0/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.20.6/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/gotestsum v1.7.0/go.mod h1:V1m4Jw3eBerhI/A6qCxUE07RnCg7ACkKj9BYcAm09V8= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.1.0/go.mod h1:fHy7eyTmJFO5bQbUsEGQ1v4m2J3Jz9eWL54TP2/ZuYQ= gotest.tools/v3 v3.2.0 h1:I0DwBVMGAx26dttAj1BtJLAkVGncrkkUXfJLC4Flt/I= +gotest.tools/v3 v3.2.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -3130,6 +3398,7 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= honnef.co/go/tools v0.2.0/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= @@ -3139,6 +3408,7 @@ k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= +k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I= k8s.io/api v0.24.1 h1:BjCMRDcyEYz03joa3K1+rbshwh1Ay6oB53+iUx2H8UY= k8s.io/api v0.24.1/go.mod h1:JhoOvNiLXKTPQ60zh2g0ewpA+bnEYf5q44Flhquh4vQ= @@ -3149,6 +3419,7 @@ k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MA k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= +k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= k8s.io/apimachinery v0.24.1 h1:ShD4aDxTQKN5zNf8K1RQ2u98ELLdIW7jEnlO9uAMX/I= k8s.io/apimachinery v0.24.1/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM= @@ -3162,6 +3433,7 @@ k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= +k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= k8s.io/client-go v0.24.0/go.mod h1:VFPQET+cAFpYxh6Bq6f4xyMY80G6jKKktU6G0m00VDw= k8s.io/client-go v0.24.1 h1:w1hNdI9PFrzu3OlovVeTnf4oHDt+FJLd9Ndluvnb42E= k8s.io/client-go v0.24.1/go.mod h1:f1kIDqcEYmwXS/vTbbhopMUbhKp2JhOeVTfxgaCIlF8= @@ -3193,6 +3465,7 @@ k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.8.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.60.1 h1:VW25q3bZx9uE3vvdL6M8ezOX79vA2Aq1nEWLqNQclHc= k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= @@ -3201,6 +3474,7 @@ k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAG k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= +k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42 h1:Gii5eqf+GmIEwGNKQYQClCayuJCe2/4fZUvF7VG99sU= k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= k8s.io/kubelet v0.24.0 h1:fH+D6mSr4DGIeHp/O2+mCEJhkVq3Gpgv9BVOHI+GrWY= @@ -3216,13 +3490,16 @@ k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19V k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= mellium.im/sasl v0.2.1/go.mod h1:ROaEDLQNuf9vjKqE1SrAfnsobm2YKXT1gnN1uDp1PjQ= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= @@ -3235,6 +3512,7 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +skywalking.apache.org/repo/goapi v0.0.0-20211122071111-ffc517fbfe21/go.mod h1:4KrWd+Oi4lkB+PtxZgIlf+3T6EECPru4fOWNMEHjxRk= skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f h1:i0cL/mhLt8xVO05SCKshkzWNUkXOkiW+zRIIuVWjPko= skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f/go.mod h1:4KrWd+Oi4lkB+PtxZgIlf+3T6EECPru4fOWNMEHjxRk= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/processor/stream_processor/parser/sql.interp b/processor/stream_processor/parser/sql.interp new file mode 100644 index 000000000000..5715cebdcc30 --- /dev/null +++ b/processor/stream_processor/parser/sql.interp @@ -0,0 +1,87 @@ +token literal names: +null +null +',' +'(' +')' +';' +null +null +null +null +null +null +null +null +'=' +'>' +'<' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'*' + +token symbolic names: +null +SPACE +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR + +rule names: +sqlQuery +selectQuery +resultColumns +column +whereStatement +groupBy +avg +expr +comparisonOperator +literalValue + + +atn: +[4, 1, 33, 92, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 27, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 34, 8, 2, 11, 2, 12, 2, 35, 1, 2, 1, 2, 1, 2, 4, 2, 41, 8, 2, 11, 2, 12, 2, 42, 1, 2, 3, 2, 46, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 52, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 58, 8, 4, 1, 4, 3, 4, 61, 8, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 78, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 83, 8, 7, 10, 7, 12, 7, 86, 9, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 0, 1, 14, 10, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, 24, 25, 1, 0, 31, 32, 91, 0, 20, 1, 0, 0, 0, 2, 23, 1, 0, 0, 0, 4, 45, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 77, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, 89, 1, 0, 0, 0, 20, 21, 3, 2, 1, 0, 21, 22, 5, 0, 0, 1, 22, 1, 1, 0, 0, 0, 23, 24, 5, 6, 0, 0, 24, 26, 3, 4, 2, 0, 25, 27, 3, 8, 4, 0, 26, 25, 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, 29, 3, 1, 0, 0, 0, 30, 33, 3, 6, 3, 0, 31, 32, 5, 2, 0, 0, 32, 34, 3, 6, 3, 0, 33, 31, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 46, 1, 0, 0, 0, 37, 40, 3, 12, 6, 0, 38, 39, 5, 2, 0, 0, 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 46, 5, 33, 0, 0, 45, 30, 1, 0, 0, 0, 45, 37, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 5, 1, 0, 0, 0, 47, 48, 5, 30, 0, 0, 48, 7, 1, 0, 0, 0, 49, 50, 5, 7, 0, 0, 50, 52, 3, 14, 7, 0, 51, 49, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 61, 1, 0, 0, 0, 53, 54, 5, 8, 0, 0, 54, 57, 5, 31, 0, 0, 55, 56, 5, 7, 0, 0, 56, 58, 3, 14, 7, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 61, 3, 10, 5, 0, 60, 51, 1, 0, 0, 0, 60, 53, 1, 0, 0, 0, 61, 9, 1, 0, 0, 0, 62, 63, 5, 9, 0, 0, 63, 64, 3, 6, 3, 0, 64, 11, 1, 0, 0, 0, 65, 66, 7, 0, 0, 0, 66, 67, 5, 3, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 5, 4, 0, 0, 69, 13, 1, 0, 0, 0, 70, 71, 6, 7, -1, 0, 71, 72, 5, 30, 0, 0, 72, 73, 3, 16, 8, 0, 73, 74, 3, 18, 9, 0, 74, 78, 1, 0, 0, 0, 75, 76, 5, 30, 0, 0, 76, 78, 7, 1, 0, 0, 77, 70, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 84, 1, 0, 0, 0, 79, 80, 10, 2, 0, 0, 80, 81, 7, 2, 0, 0, 81, 83, 3, 14, 7, 3, 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 15, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 7, 3, 0, 0, 88, 17, 1, 0, 0, 0, 89, 90, 7, 4, 0, 0, 90, 19, 1, 0, 0, 0, 9, 26, 35, 42, 45, 51, 57, 60, 77, 84] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql.tokens b/processor/stream_processor/parser/sql.tokens new file mode 100644 index 000000000000..5c4b5e8edba0 --- /dev/null +++ b/processor/stream_processor/parser/sql.tokens @@ -0,0 +1,41 @@ +SPACE=1 +COMMA=2 +L_BRACKET=3 +R_BRACKET=4 +EOQ=5 +K_SELECT=6 +K_WHERE=7 +K_WINDOW_TUMBLING=8 +K_GROUP_BY=9 +K_AND=10 +K_OR=11 +K_IS=12 +K_LIKE=13 +K_EQUAL=14 +K_GREATER=15 +K_LESS=16 +K_LESS_EQUAL=17 +K_GREATER_EQUAL=18 +K_NOT_EQUAL=19 +K_NULL=20 +K_IS_NULL=21 +K_IS_NOT_NULL=22 +K_NOT=23 +K_NOT_IN=24 +K_IN=25 +K_COUNT=26 +K_MIN=27 +K_MAX=28 +K_AVG=29 +IDENTIFIER=30 +NUMERIC_LITERAL=31 +STRING_LITERAL=32 +STAR=33 +','=2 +'('=3 +')'=4 +';'=5 +'='=14 +'>'=15 +'<'=16 +'*'=33 diff --git a/processor/stream_processor/parser/sqlLexer.interp b/processor/stream_processor/parser/sqlLexer.interp new file mode 100644 index 000000000000..424787f5f654 --- /dev/null +++ b/processor/stream_processor/parser/sqlLexer.interp @@ -0,0 +1,143 @@ +token literal names: +null +null +',' +'(' +')' +';' +null +null +null +null +null +null +null +null +'=' +'>' +'<' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'*' + +token symbolic names: +null +SPACE +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR + +rule names: +SPACE +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR +DIGIT +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 33, 394, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 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, 7, 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, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 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, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 251, 8, 29, 10, 29, 12, 29, 254, 9, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 261, 8, 29, 10, 29, 12, 29, 264, 9, 29, 1, 29, 1, 29, 1, 29, 5, 29, 269, 8, 29, 10, 29, 12, 29, 272, 9, 29, 1, 29, 1, 29, 1, 29, 5, 29, 277, 8, 29, 10, 29, 12, 29, 280, 9, 29, 3, 29, 282, 8, 29, 1, 30, 4, 30, 285, 8, 30, 11, 30, 12, 30, 286, 1, 30, 1, 30, 5, 30, 291, 8, 30, 10, 30, 12, 30, 294, 9, 30, 3, 30, 296, 8, 30, 1, 30, 1, 30, 3, 30, 300, 8, 30, 1, 30, 4, 30, 303, 8, 30, 11, 30, 12, 30, 304, 3, 30, 307, 8, 30, 1, 30, 1, 30, 4, 30, 311, 8, 30, 11, 30, 12, 30, 312, 1, 30, 1, 30, 3, 30, 317, 8, 30, 1, 30, 4, 30, 320, 8, 30, 11, 30, 12, 30, 321, 3, 30, 324, 8, 30, 3, 30, 326, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 332, 8, 31, 10, 31, 12, 31, 335, 9, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 0, 0, 60, 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, 0, 69, 0, 71, 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, 0, 113, 0, 115, 0, 117, 0, 119, 0, 1, 0, 35, 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 388, 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, 1, 121, 1, 0, 0, 0, 3, 125, 1, 0, 0, 0, 5, 127, 1, 0, 0, 0, 7, 129, 1, 0, 0, 0, 9, 131, 1, 0, 0, 0, 11, 133, 1, 0, 0, 0, 13, 140, 1, 0, 0, 0, 15, 146, 1, 0, 0, 0, 17, 162, 1, 0, 0, 0, 19, 171, 1, 0, 0, 0, 21, 175, 1, 0, 0, 0, 23, 178, 1, 0, 0, 0, 25, 181, 1, 0, 0, 0, 27, 186, 1, 0, 0, 0, 29, 188, 1, 0, 0, 0, 31, 190, 1, 0, 0, 0, 33, 192, 1, 0, 0, 0, 35, 195, 1, 0, 0, 0, 37, 198, 1, 0, 0, 0, 39, 201, 1, 0, 0, 0, 41, 206, 1, 0, 0, 0, 43, 210, 1, 0, 0, 0, 45, 216, 1, 0, 0, 0, 47, 220, 1, 0, 0, 0, 49, 225, 1, 0, 0, 0, 51, 228, 1, 0, 0, 0, 53, 234, 1, 0, 0, 0, 55, 238, 1, 0, 0, 0, 57, 242, 1, 0, 0, 0, 59, 281, 1, 0, 0, 0, 61, 325, 1, 0, 0, 0, 63, 327, 1, 0, 0, 0, 65, 338, 1, 0, 0, 0, 67, 340, 1, 0, 0, 0, 69, 342, 1, 0, 0, 0, 71, 344, 1, 0, 0, 0, 73, 346, 1, 0, 0, 0, 75, 348, 1, 0, 0, 0, 77, 350, 1, 0, 0, 0, 79, 352, 1, 0, 0, 0, 81, 354, 1, 0, 0, 0, 83, 356, 1, 0, 0, 0, 85, 358, 1, 0, 0, 0, 87, 360, 1, 0, 0, 0, 89, 362, 1, 0, 0, 0, 91, 364, 1, 0, 0, 0, 93, 366, 1, 0, 0, 0, 95, 368, 1, 0, 0, 0, 97, 370, 1, 0, 0, 0, 99, 372, 1, 0, 0, 0, 101, 374, 1, 0, 0, 0, 103, 376, 1, 0, 0, 0, 105, 378, 1, 0, 0, 0, 107, 380, 1, 0, 0, 0, 109, 382, 1, 0, 0, 0, 111, 384, 1, 0, 0, 0, 113, 386, 1, 0, 0, 0, 115, 388, 1, 0, 0, 0, 117, 390, 1, 0, 0, 0, 119, 392, 1, 0, 0, 0, 121, 122, 7, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 6, 0, 0, 0, 124, 2, 1, 0, 0, 0, 125, 126, 5, 44, 0, 0, 126, 4, 1, 0, 0, 0, 127, 128, 5, 40, 0, 0, 128, 6, 1, 0, 0, 0, 129, 130, 5, 41, 0, 0, 130, 8, 1, 0, 0, 0, 131, 132, 5, 59, 0, 0, 132, 10, 1, 0, 0, 0, 133, 134, 3, 105, 52, 0, 134, 135, 3, 77, 38, 0, 135, 136, 3, 91, 45, 0, 136, 137, 3, 77, 38, 0, 137, 138, 3, 73, 36, 0, 138, 139, 3, 107, 53, 0, 139, 12, 1, 0, 0, 0, 140, 141, 3, 113, 56, 0, 141, 142, 3, 83, 41, 0, 142, 143, 3, 77, 38, 0, 143, 144, 3, 103, 51, 0, 144, 145, 3, 77, 38, 0, 145, 14, 1, 0, 0, 0, 146, 147, 3, 113, 56, 0, 147, 148, 3, 85, 42, 0, 148, 149, 3, 95, 47, 0, 149, 150, 3, 75, 37, 0, 150, 151, 3, 97, 48, 0, 151, 152, 3, 113, 56, 0, 152, 153, 3, 1, 0, 0, 153, 154, 3, 107, 53, 0, 154, 155, 3, 109, 54, 0, 155, 156, 3, 93, 46, 0, 156, 157, 3, 71, 35, 0, 157, 158, 3, 91, 45, 0, 158, 159, 3, 85, 42, 0, 159, 160, 3, 95, 47, 0, 160, 161, 3, 81, 40, 0, 161, 16, 1, 0, 0, 0, 162, 163, 3, 81, 40, 0, 163, 164, 3, 103, 51, 0, 164, 165, 3, 97, 48, 0, 165, 166, 3, 109, 54, 0, 166, 167, 3, 99, 49, 0, 167, 168, 3, 1, 0, 0, 168, 169, 3, 71, 35, 0, 169, 170, 3, 117, 58, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, 69, 34, 0, 172, 173, 3, 95, 47, 0, 173, 174, 3, 75, 37, 0, 174, 20, 1, 0, 0, 0, 175, 176, 3, 97, 48, 0, 176, 177, 3, 103, 51, 0, 177, 22, 1, 0, 0, 0, 178, 179, 3, 85, 42, 0, 179, 180, 3, 105, 52, 0, 180, 24, 1, 0, 0, 0, 181, 182, 3, 91, 45, 0, 182, 183, 3, 85, 42, 0, 183, 184, 3, 89, 44, 0, 184, 185, 3, 77, 38, 0, 185, 26, 1, 0, 0, 0, 186, 187, 5, 61, 0, 0, 187, 28, 1, 0, 0, 0, 188, 189, 5, 62, 0, 0, 189, 30, 1, 0, 0, 0, 190, 191, 5, 60, 0, 0, 191, 32, 1, 0, 0, 0, 192, 193, 3, 31, 15, 0, 193, 194, 3, 27, 13, 0, 194, 34, 1, 0, 0, 0, 195, 196, 3, 29, 14, 0, 196, 197, 3, 27, 13, 0, 197, 36, 1, 0, 0, 0, 198, 199, 5, 33, 0, 0, 199, 200, 3, 27, 13, 0, 200, 38, 1, 0, 0, 0, 201, 202, 3, 95, 47, 0, 202, 203, 3, 109, 54, 0, 203, 204, 3, 91, 45, 0, 204, 205, 3, 91, 45, 0, 205, 40, 1, 0, 0, 0, 206, 207, 3, 23, 11, 0, 207, 208, 3, 1, 0, 0, 208, 209, 3, 39, 19, 0, 209, 42, 1, 0, 0, 0, 210, 211, 3, 23, 11, 0, 211, 212, 3, 1, 0, 0, 212, 213, 3, 45, 22, 0, 213, 214, 3, 1, 0, 0, 214, 215, 3, 39, 19, 0, 215, 44, 1, 0, 0, 0, 216, 217, 3, 95, 47, 0, 217, 218, 3, 97, 48, 0, 218, 219, 3, 107, 53, 0, 219, 46, 1, 0, 0, 0, 220, 221, 3, 45, 22, 0, 221, 222, 3, 1, 0, 0, 222, 223, 3, 85, 42, 0, 223, 224, 3, 95, 47, 0, 224, 48, 1, 0, 0, 0, 225, 226, 3, 85, 42, 0, 226, 227, 3, 95, 47, 0, 227, 50, 1, 0, 0, 0, 228, 229, 3, 73, 36, 0, 229, 230, 3, 97, 48, 0, 230, 231, 3, 109, 54, 0, 231, 232, 3, 95, 47, 0, 232, 233, 3, 107, 53, 0, 233, 52, 1, 0, 0, 0, 234, 235, 3, 93, 46, 0, 235, 236, 3, 85, 42, 0, 236, 237, 3, 95, 47, 0, 237, 54, 1, 0, 0, 0, 238, 239, 3, 93, 46, 0, 239, 240, 3, 69, 34, 0, 240, 241, 3, 115, 57, 0, 241, 56, 1, 0, 0, 0, 242, 243, 3, 69, 34, 0, 243, 244, 3, 111, 55, 0, 244, 245, 3, 81, 40, 0, 245, 58, 1, 0, 0, 0, 246, 252, 5, 34, 0, 0, 247, 251, 8, 1, 0, 0, 248, 249, 5, 34, 0, 0, 249, 251, 5, 34, 0, 0, 250, 247, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 254, 1, 0, 0, 0, 252, 250, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 255, 1, 0, 0, 0, 254, 252, 1, 0, 0, 0, 255, 282, 5, 34, 0, 0, 256, 262, 5, 96, 0, 0, 257, 261, 8, 2, 0, 0, 258, 259, 5, 96, 0, 0, 259, 261, 5, 96, 0, 0, 260, 257, 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, 282, 5, 96, 0, 0, 266, 270, 5, 91, 0, 0, 267, 269, 8, 3, 0, 0, 268, 267, 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 282, 5, 93, 0, 0, 274, 278, 7, 4, 0, 0, 275, 277, 7, 5, 0, 0, 276, 275, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 282, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 246, 1, 0, 0, 0, 281, 256, 1, 0, 0, 0, 281, 266, 1, 0, 0, 0, 281, 274, 1, 0, 0, 0, 282, 60, 1, 0, 0, 0, 283, 285, 3, 67, 33, 0, 284, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 295, 1, 0, 0, 0, 288, 292, 5, 46, 0, 0, 289, 291, 3, 67, 33, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 296, 1, 0, 0, 0, 294, 292, 1, 0, 0, 0, 295, 288, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 306, 1, 0, 0, 0, 297, 299, 3, 77, 38, 0, 298, 300, 7, 6, 0, 0, 299, 298, 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 303, 3, 67, 33, 0, 302, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 307, 1, 0, 0, 0, 306, 297, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 326, 1, 0, 0, 0, 308, 310, 5, 46, 0, 0, 309, 311, 3, 67, 33, 0, 310, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 310, 1, 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 323, 1, 0, 0, 0, 314, 316, 3, 77, 38, 0, 315, 317, 7, 6, 0, 0, 316, 315, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, 319, 1, 0, 0, 0, 318, 320, 3, 67, 33, 0, 319, 318, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, 0, 0, 323, 314, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, 325, 284, 1, 0, 0, 0, 325, 308, 1, 0, 0, 0, 326, 62, 1, 0, 0, 0, 327, 333, 5, 39, 0, 0, 328, 332, 8, 7, 0, 0, 329, 330, 5, 39, 0, 0, 330, 332, 5, 39, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 337, 5, 39, 0, 0, 337, 64, 1, 0, 0, 0, 338, 339, 5, 42, 0, 0, 339, 66, 1, 0, 0, 0, 340, 341, 7, 8, 0, 0, 341, 68, 1, 0, 0, 0, 342, 343, 7, 9, 0, 0, 343, 70, 1, 0, 0, 0, 344, 345, 7, 10, 0, 0, 345, 72, 1, 0, 0, 0, 346, 347, 7, 11, 0, 0, 347, 74, 1, 0, 0, 0, 348, 349, 7, 12, 0, 0, 349, 76, 1, 0, 0, 0, 350, 351, 7, 13, 0, 0, 351, 78, 1, 0, 0, 0, 352, 353, 7, 14, 0, 0, 353, 80, 1, 0, 0, 0, 354, 355, 7, 15, 0, 0, 355, 82, 1, 0, 0, 0, 356, 357, 7, 16, 0, 0, 357, 84, 1, 0, 0, 0, 358, 359, 7, 17, 0, 0, 359, 86, 1, 0, 0, 0, 360, 361, 7, 18, 0, 0, 361, 88, 1, 0, 0, 0, 362, 363, 7, 19, 0, 0, 363, 90, 1, 0, 0, 0, 364, 365, 7, 20, 0, 0, 365, 92, 1, 0, 0, 0, 366, 367, 7, 21, 0, 0, 367, 94, 1, 0, 0, 0, 368, 369, 7, 22, 0, 0, 369, 96, 1, 0, 0, 0, 370, 371, 7, 23, 0, 0, 371, 98, 1, 0, 0, 0, 372, 373, 7, 24, 0, 0, 373, 100, 1, 0, 0, 0, 374, 375, 7, 25, 0, 0, 375, 102, 1, 0, 0, 0, 376, 377, 7, 26, 0, 0, 377, 104, 1, 0, 0, 0, 378, 379, 7, 27, 0, 0, 379, 106, 1, 0, 0, 0, 380, 381, 7, 28, 0, 0, 381, 108, 1, 0, 0, 0, 382, 383, 7, 29, 0, 0, 383, 110, 1, 0, 0, 0, 384, 385, 7, 30, 0, 0, 385, 112, 1, 0, 0, 0, 386, 387, 7, 31, 0, 0, 387, 114, 1, 0, 0, 0, 388, 389, 7, 32, 0, 0, 389, 116, 1, 0, 0, 0, 390, 391, 7, 33, 0, 0, 391, 118, 1, 0, 0, 0, 392, 393, 7, 34, 0, 0, 393, 120, 1, 0, 0, 0, 21, 0, 250, 252, 260, 262, 270, 278, 281, 286, 292, 295, 299, 304, 306, 312, 316, 321, 323, 325, 331, 333, 1, 0, 1, 0] \ No newline at end of file diff --git a/processor/stream_processor/parser/sqlLexer.tokens b/processor/stream_processor/parser/sqlLexer.tokens new file mode 100644 index 000000000000..5c4b5e8edba0 --- /dev/null +++ b/processor/stream_processor/parser/sqlLexer.tokens @@ -0,0 +1,41 @@ +SPACE=1 +COMMA=2 +L_BRACKET=3 +R_BRACKET=4 +EOQ=5 +K_SELECT=6 +K_WHERE=7 +K_WINDOW_TUMBLING=8 +K_GROUP_BY=9 +K_AND=10 +K_OR=11 +K_IS=12 +K_LIKE=13 +K_EQUAL=14 +K_GREATER=15 +K_LESS=16 +K_LESS_EQUAL=17 +K_GREATER_EQUAL=18 +K_NOT_EQUAL=19 +K_NULL=20 +K_IS_NULL=21 +K_IS_NOT_NULL=22 +K_NOT=23 +K_NOT_IN=24 +K_IN=25 +K_COUNT=26 +K_MIN=27 +K_MAX=28 +K_AVG=29 +IDENTIFIER=30 +NUMERIC_LITERAL=31 +STRING_LITERAL=32 +STAR=33 +','=2 +'('=3 +')'=4 +';'=5 +'='=14 +'>'=15 +'<'=16 +'*'=33 diff --git a/processor/stream_processor/parser/sql_base_listener.go b/processor/stream_processor/parser/sql_base_listener.go new file mode 100644 index 000000000000..eab0cc0960f8 --- /dev/null +++ b/processor/stream_processor/parser/sql_base_listener.go @@ -0,0 +1,82 @@ +// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// BasesqlListener is a complete listener for a parse tree produced by sqlParser. +type BasesqlListener struct{} + +var _ sqlListener = &BasesqlListener{} + +// VisitTerminal is called when a terminal node is visited. +func (s *BasesqlListener) VisitTerminal(node antlr.TerminalNode) {} + +// VisitErrorNode is called when an error node is visited. +func (s *BasesqlListener) VisitErrorNode(node antlr.ErrorNode) {} + +// EnterEveryRule is called when any rule is entered. +func (s *BasesqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} + +// ExitEveryRule is called when any rule is exited. +func (s *BasesqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} + +// EnterSqlQuery is called when production sqlQuery is entered. +func (s *BasesqlListener) EnterSqlQuery(ctx *SqlQueryContext) {} + +// ExitSqlQuery is called when production sqlQuery is exited. +func (s *BasesqlListener) ExitSqlQuery(ctx *SqlQueryContext) {} + +// EnterSelectQuery is called when production selectQuery is entered. +func (s *BasesqlListener) EnterSelectQuery(ctx *SelectQueryContext) {} + +// ExitSelectQuery is called when production selectQuery is exited. +func (s *BasesqlListener) ExitSelectQuery(ctx *SelectQueryContext) {} + +// EnterResultColumns is called when production resultColumns is entered. +func (s *BasesqlListener) EnterResultColumns(ctx *ResultColumnsContext) {} + +// ExitResultColumns is called when production resultColumns is exited. +func (s *BasesqlListener) ExitResultColumns(ctx *ResultColumnsContext) {} + +// EnterColumn is called when production column is entered. +func (s *BasesqlListener) EnterColumn(ctx *ColumnContext) {} + +// ExitColumn is called when production column is exited. +func (s *BasesqlListener) ExitColumn(ctx *ColumnContext) {} + +// EnterWhereStatement is called when production whereStatement is entered. +func (s *BasesqlListener) EnterWhereStatement(ctx *WhereStatementContext) {} + +// ExitWhereStatement is called when production whereStatement is exited. +func (s *BasesqlListener) ExitWhereStatement(ctx *WhereStatementContext) {} + +// EnterGroupBy is called when production groupBy is entered. +func (s *BasesqlListener) EnterGroupBy(ctx *GroupByContext) {} + +// ExitGroupBy is called when production groupBy is exited. +func (s *BasesqlListener) ExitGroupBy(ctx *GroupByContext) {} + +// EnterAvg is called when production avg is entered. +func (s *BasesqlListener) EnterAvg(ctx *AvgContext) {} + +// ExitAvg is called when production avg is exited. +func (s *BasesqlListener) ExitAvg(ctx *AvgContext) {} + +// EnterExpr is called when production expr is entered. +func (s *BasesqlListener) EnterExpr(ctx *ExprContext) {} + +// ExitExpr is called when production expr is exited. +func (s *BasesqlListener) ExitExpr(ctx *ExprContext) {} + +// EnterComparisonOperator is called when production comparisonOperator is entered. +func (s *BasesqlListener) EnterComparisonOperator(ctx *ComparisonOperatorContext) {} + +// ExitComparisonOperator is called when production comparisonOperator is exited. +func (s *BasesqlListener) ExitComparisonOperator(ctx *ComparisonOperatorContext) {} + +// EnterLiteralValue is called when production literalValue is entered. +func (s *BasesqlListener) EnterLiteralValue(ctx *LiteralValueContext) {} + +// ExitLiteralValue is called when production literalValue is exited. +func (s *BasesqlListener) ExitLiteralValue(ctx *LiteralValueContext) {} diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go new file mode 100644 index 000000000000..17f65aaa0567 --- /dev/null +++ b/processor/stream_processor/parser/sql_lexer.go @@ -0,0 +1,321 @@ +// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser + +import ( + "fmt" + "sync" + "unicode" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import error +var _ = fmt.Printf +var _ = sync.Once{} +var _ = unicode.IsLetter + +type sqlLexer struct { + *antlr.BaseLexer + channelNames []string + modeNames []string + // TODO: EOF string +} + +var sqllexerLexerStaticData struct { + once sync.Once + serializedATN []int32 + channelNames []string + modeNames []string + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func sqllexerLexerInit() { + staticData := &sqllexerLexerStaticData + staticData.channelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", + } + staticData.modeNames = []string{ + "DEFAULT_MODE", + } + staticData.literalNames = []string{ + "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", + "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "'*'", + } + staticData.symbolicNames = []string{ + "", "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", + "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", + "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", + "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", + } + staticData.ruleNames = []string{ + "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", + "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", + "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", + "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", + "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", + "V", "W", "X", "Y", "Z", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 0, 33, 394, 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, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, + 1, 2, 1, 2, 1, 3, 1, 3, 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, 7, 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, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, + 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, + 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, + 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, + 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 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, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, + 29, 1, 29, 5, 29, 251, 8, 29, 10, 29, 12, 29, 254, 9, 29, 1, 29, 1, 29, + 1, 29, 1, 29, 1, 29, 5, 29, 261, 8, 29, 10, 29, 12, 29, 264, 9, 29, 1, + 29, 1, 29, 1, 29, 5, 29, 269, 8, 29, 10, 29, 12, 29, 272, 9, 29, 1, 29, + 1, 29, 1, 29, 5, 29, 277, 8, 29, 10, 29, 12, 29, 280, 9, 29, 3, 29, 282, + 8, 29, 1, 30, 4, 30, 285, 8, 30, 11, 30, 12, 30, 286, 1, 30, 1, 30, 5, + 30, 291, 8, 30, 10, 30, 12, 30, 294, 9, 30, 3, 30, 296, 8, 30, 1, 30, 1, + 30, 3, 30, 300, 8, 30, 1, 30, 4, 30, 303, 8, 30, 11, 30, 12, 30, 304, 3, + 30, 307, 8, 30, 1, 30, 1, 30, 4, 30, 311, 8, 30, 11, 30, 12, 30, 312, 1, + 30, 1, 30, 3, 30, 317, 8, 30, 1, 30, 4, 30, 320, 8, 30, 11, 30, 12, 30, + 321, 3, 30, 324, 8, 30, 3, 30, 326, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, + 5, 31, 332, 8, 31, 10, 31, 12, 31, 335, 9, 31, 1, 31, 1, 31, 1, 32, 1, + 32, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, + 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, + 43, 1, 43, 1, 44, 1, 44, 1, 45, 1, 45, 1, 46, 1, 46, 1, 47, 1, 47, 1, 48, + 1, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, + 53, 1, 54, 1, 54, 1, 55, 1, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, + 1, 59, 1, 59, 0, 0, 60, 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, 0, 69, 0, 71, + 0, 73, 0, 75, 0, 77, 0, 79, 0, 81, 0, 83, 0, 85, 0, 87, 0, 89, 0, 91, 0, + 93, 0, 95, 0, 97, 0, 99, 0, 101, 0, 103, 0, 105, 0, 107, 0, 109, 0, 111, + 0, 113, 0, 115, 0, 117, 0, 119, 0, 1, 0, 35, 3, 0, 9, 11, 13, 13, 32, 32, + 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, + 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 1, 0, 39, + 39, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, + 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, + 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, + 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, + 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, + 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, + 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, + 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, + 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 388, 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, 1, 121, 1, 0, 0, 0, 3, 125, 1, 0, 0, 0, + 5, 127, 1, 0, 0, 0, 7, 129, 1, 0, 0, 0, 9, 131, 1, 0, 0, 0, 11, 133, 1, + 0, 0, 0, 13, 140, 1, 0, 0, 0, 15, 146, 1, 0, 0, 0, 17, 162, 1, 0, 0, 0, + 19, 171, 1, 0, 0, 0, 21, 175, 1, 0, 0, 0, 23, 178, 1, 0, 0, 0, 25, 181, + 1, 0, 0, 0, 27, 186, 1, 0, 0, 0, 29, 188, 1, 0, 0, 0, 31, 190, 1, 0, 0, + 0, 33, 192, 1, 0, 0, 0, 35, 195, 1, 0, 0, 0, 37, 198, 1, 0, 0, 0, 39, 201, + 1, 0, 0, 0, 41, 206, 1, 0, 0, 0, 43, 210, 1, 0, 0, 0, 45, 216, 1, 0, 0, + 0, 47, 220, 1, 0, 0, 0, 49, 225, 1, 0, 0, 0, 51, 228, 1, 0, 0, 0, 53, 234, + 1, 0, 0, 0, 55, 238, 1, 0, 0, 0, 57, 242, 1, 0, 0, 0, 59, 281, 1, 0, 0, + 0, 61, 325, 1, 0, 0, 0, 63, 327, 1, 0, 0, 0, 65, 338, 1, 0, 0, 0, 67, 340, + 1, 0, 0, 0, 69, 342, 1, 0, 0, 0, 71, 344, 1, 0, 0, 0, 73, 346, 1, 0, 0, + 0, 75, 348, 1, 0, 0, 0, 77, 350, 1, 0, 0, 0, 79, 352, 1, 0, 0, 0, 81, 354, + 1, 0, 0, 0, 83, 356, 1, 0, 0, 0, 85, 358, 1, 0, 0, 0, 87, 360, 1, 0, 0, + 0, 89, 362, 1, 0, 0, 0, 91, 364, 1, 0, 0, 0, 93, 366, 1, 0, 0, 0, 95, 368, + 1, 0, 0, 0, 97, 370, 1, 0, 0, 0, 99, 372, 1, 0, 0, 0, 101, 374, 1, 0, 0, + 0, 103, 376, 1, 0, 0, 0, 105, 378, 1, 0, 0, 0, 107, 380, 1, 0, 0, 0, 109, + 382, 1, 0, 0, 0, 111, 384, 1, 0, 0, 0, 113, 386, 1, 0, 0, 0, 115, 388, + 1, 0, 0, 0, 117, 390, 1, 0, 0, 0, 119, 392, 1, 0, 0, 0, 121, 122, 7, 0, + 0, 0, 122, 123, 1, 0, 0, 0, 123, 124, 6, 0, 0, 0, 124, 2, 1, 0, 0, 0, 125, + 126, 5, 44, 0, 0, 126, 4, 1, 0, 0, 0, 127, 128, 5, 40, 0, 0, 128, 6, 1, + 0, 0, 0, 129, 130, 5, 41, 0, 0, 130, 8, 1, 0, 0, 0, 131, 132, 5, 59, 0, + 0, 132, 10, 1, 0, 0, 0, 133, 134, 3, 105, 52, 0, 134, 135, 3, 77, 38, 0, + 135, 136, 3, 91, 45, 0, 136, 137, 3, 77, 38, 0, 137, 138, 3, 73, 36, 0, + 138, 139, 3, 107, 53, 0, 139, 12, 1, 0, 0, 0, 140, 141, 3, 113, 56, 0, + 141, 142, 3, 83, 41, 0, 142, 143, 3, 77, 38, 0, 143, 144, 3, 103, 51, 0, + 144, 145, 3, 77, 38, 0, 145, 14, 1, 0, 0, 0, 146, 147, 3, 113, 56, 0, 147, + 148, 3, 85, 42, 0, 148, 149, 3, 95, 47, 0, 149, 150, 3, 75, 37, 0, 150, + 151, 3, 97, 48, 0, 151, 152, 3, 113, 56, 0, 152, 153, 3, 1, 0, 0, 153, + 154, 3, 107, 53, 0, 154, 155, 3, 109, 54, 0, 155, 156, 3, 93, 46, 0, 156, + 157, 3, 71, 35, 0, 157, 158, 3, 91, 45, 0, 158, 159, 3, 85, 42, 0, 159, + 160, 3, 95, 47, 0, 160, 161, 3, 81, 40, 0, 161, 16, 1, 0, 0, 0, 162, 163, + 3, 81, 40, 0, 163, 164, 3, 103, 51, 0, 164, 165, 3, 97, 48, 0, 165, 166, + 3, 109, 54, 0, 166, 167, 3, 99, 49, 0, 167, 168, 3, 1, 0, 0, 168, 169, + 3, 71, 35, 0, 169, 170, 3, 117, 58, 0, 170, 18, 1, 0, 0, 0, 171, 172, 3, + 69, 34, 0, 172, 173, 3, 95, 47, 0, 173, 174, 3, 75, 37, 0, 174, 20, 1, + 0, 0, 0, 175, 176, 3, 97, 48, 0, 176, 177, 3, 103, 51, 0, 177, 22, 1, 0, + 0, 0, 178, 179, 3, 85, 42, 0, 179, 180, 3, 105, 52, 0, 180, 24, 1, 0, 0, + 0, 181, 182, 3, 91, 45, 0, 182, 183, 3, 85, 42, 0, 183, 184, 3, 89, 44, + 0, 184, 185, 3, 77, 38, 0, 185, 26, 1, 0, 0, 0, 186, 187, 5, 61, 0, 0, + 187, 28, 1, 0, 0, 0, 188, 189, 5, 62, 0, 0, 189, 30, 1, 0, 0, 0, 190, 191, + 5, 60, 0, 0, 191, 32, 1, 0, 0, 0, 192, 193, 3, 31, 15, 0, 193, 194, 3, + 27, 13, 0, 194, 34, 1, 0, 0, 0, 195, 196, 3, 29, 14, 0, 196, 197, 3, 27, + 13, 0, 197, 36, 1, 0, 0, 0, 198, 199, 5, 33, 0, 0, 199, 200, 3, 27, 13, + 0, 200, 38, 1, 0, 0, 0, 201, 202, 3, 95, 47, 0, 202, 203, 3, 109, 54, 0, + 203, 204, 3, 91, 45, 0, 204, 205, 3, 91, 45, 0, 205, 40, 1, 0, 0, 0, 206, + 207, 3, 23, 11, 0, 207, 208, 3, 1, 0, 0, 208, 209, 3, 39, 19, 0, 209, 42, + 1, 0, 0, 0, 210, 211, 3, 23, 11, 0, 211, 212, 3, 1, 0, 0, 212, 213, 3, + 45, 22, 0, 213, 214, 3, 1, 0, 0, 214, 215, 3, 39, 19, 0, 215, 44, 1, 0, + 0, 0, 216, 217, 3, 95, 47, 0, 217, 218, 3, 97, 48, 0, 218, 219, 3, 107, + 53, 0, 219, 46, 1, 0, 0, 0, 220, 221, 3, 45, 22, 0, 221, 222, 3, 1, 0, + 0, 222, 223, 3, 85, 42, 0, 223, 224, 3, 95, 47, 0, 224, 48, 1, 0, 0, 0, + 225, 226, 3, 85, 42, 0, 226, 227, 3, 95, 47, 0, 227, 50, 1, 0, 0, 0, 228, + 229, 3, 73, 36, 0, 229, 230, 3, 97, 48, 0, 230, 231, 3, 109, 54, 0, 231, + 232, 3, 95, 47, 0, 232, 233, 3, 107, 53, 0, 233, 52, 1, 0, 0, 0, 234, 235, + 3, 93, 46, 0, 235, 236, 3, 85, 42, 0, 236, 237, 3, 95, 47, 0, 237, 54, + 1, 0, 0, 0, 238, 239, 3, 93, 46, 0, 239, 240, 3, 69, 34, 0, 240, 241, 3, + 115, 57, 0, 241, 56, 1, 0, 0, 0, 242, 243, 3, 69, 34, 0, 243, 244, 3, 111, + 55, 0, 244, 245, 3, 81, 40, 0, 245, 58, 1, 0, 0, 0, 246, 252, 5, 34, 0, + 0, 247, 251, 8, 1, 0, 0, 248, 249, 5, 34, 0, 0, 249, 251, 5, 34, 0, 0, + 250, 247, 1, 0, 0, 0, 250, 248, 1, 0, 0, 0, 251, 254, 1, 0, 0, 0, 252, + 250, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 255, 1, 0, 0, 0, 254, 252, + 1, 0, 0, 0, 255, 282, 5, 34, 0, 0, 256, 262, 5, 96, 0, 0, 257, 261, 8, + 2, 0, 0, 258, 259, 5, 96, 0, 0, 259, 261, 5, 96, 0, 0, 260, 257, 1, 0, + 0, 0, 260, 258, 1, 0, 0, 0, 261, 264, 1, 0, 0, 0, 262, 260, 1, 0, 0, 0, + 262, 263, 1, 0, 0, 0, 263, 265, 1, 0, 0, 0, 264, 262, 1, 0, 0, 0, 265, + 282, 5, 96, 0, 0, 266, 270, 5, 91, 0, 0, 267, 269, 8, 3, 0, 0, 268, 267, + 1, 0, 0, 0, 269, 272, 1, 0, 0, 0, 270, 268, 1, 0, 0, 0, 270, 271, 1, 0, + 0, 0, 271, 273, 1, 0, 0, 0, 272, 270, 1, 0, 0, 0, 273, 282, 5, 93, 0, 0, + 274, 278, 7, 4, 0, 0, 275, 277, 7, 5, 0, 0, 276, 275, 1, 0, 0, 0, 277, + 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 282, + 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 246, 1, 0, 0, 0, 281, 256, 1, 0, + 0, 0, 281, 266, 1, 0, 0, 0, 281, 274, 1, 0, 0, 0, 282, 60, 1, 0, 0, 0, + 283, 285, 3, 67, 33, 0, 284, 283, 1, 0, 0, 0, 285, 286, 1, 0, 0, 0, 286, + 284, 1, 0, 0, 0, 286, 287, 1, 0, 0, 0, 287, 295, 1, 0, 0, 0, 288, 292, + 5, 46, 0, 0, 289, 291, 3, 67, 33, 0, 290, 289, 1, 0, 0, 0, 291, 294, 1, + 0, 0, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 296, 1, 0, 0, + 0, 294, 292, 1, 0, 0, 0, 295, 288, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, + 306, 1, 0, 0, 0, 297, 299, 3, 77, 38, 0, 298, 300, 7, 6, 0, 0, 299, 298, + 1, 0, 0, 0, 299, 300, 1, 0, 0, 0, 300, 302, 1, 0, 0, 0, 301, 303, 3, 67, + 33, 0, 302, 301, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 302, 1, 0, 0, 0, + 304, 305, 1, 0, 0, 0, 305, 307, 1, 0, 0, 0, 306, 297, 1, 0, 0, 0, 306, + 307, 1, 0, 0, 0, 307, 326, 1, 0, 0, 0, 308, 310, 5, 46, 0, 0, 309, 311, + 3, 67, 33, 0, 310, 309, 1, 0, 0, 0, 311, 312, 1, 0, 0, 0, 312, 310, 1, + 0, 0, 0, 312, 313, 1, 0, 0, 0, 313, 323, 1, 0, 0, 0, 314, 316, 3, 77, 38, + 0, 315, 317, 7, 6, 0, 0, 316, 315, 1, 0, 0, 0, 316, 317, 1, 0, 0, 0, 317, + 319, 1, 0, 0, 0, 318, 320, 3, 67, 33, 0, 319, 318, 1, 0, 0, 0, 320, 321, + 1, 0, 0, 0, 321, 319, 1, 0, 0, 0, 321, 322, 1, 0, 0, 0, 322, 324, 1, 0, + 0, 0, 323, 314, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 326, 1, 0, 0, 0, + 325, 284, 1, 0, 0, 0, 325, 308, 1, 0, 0, 0, 326, 62, 1, 0, 0, 0, 327, 333, + 5, 39, 0, 0, 328, 332, 8, 7, 0, 0, 329, 330, 5, 39, 0, 0, 330, 332, 5, + 39, 0, 0, 331, 328, 1, 0, 0, 0, 331, 329, 1, 0, 0, 0, 332, 335, 1, 0, 0, + 0, 333, 331, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 336, 1, 0, 0, 0, 335, + 333, 1, 0, 0, 0, 336, 337, 5, 39, 0, 0, 337, 64, 1, 0, 0, 0, 338, 339, + 5, 42, 0, 0, 339, 66, 1, 0, 0, 0, 340, 341, 7, 8, 0, 0, 341, 68, 1, 0, + 0, 0, 342, 343, 7, 9, 0, 0, 343, 70, 1, 0, 0, 0, 344, 345, 7, 10, 0, 0, + 345, 72, 1, 0, 0, 0, 346, 347, 7, 11, 0, 0, 347, 74, 1, 0, 0, 0, 348, 349, + 7, 12, 0, 0, 349, 76, 1, 0, 0, 0, 350, 351, 7, 13, 0, 0, 351, 78, 1, 0, + 0, 0, 352, 353, 7, 14, 0, 0, 353, 80, 1, 0, 0, 0, 354, 355, 7, 15, 0, 0, + 355, 82, 1, 0, 0, 0, 356, 357, 7, 16, 0, 0, 357, 84, 1, 0, 0, 0, 358, 359, + 7, 17, 0, 0, 359, 86, 1, 0, 0, 0, 360, 361, 7, 18, 0, 0, 361, 88, 1, 0, + 0, 0, 362, 363, 7, 19, 0, 0, 363, 90, 1, 0, 0, 0, 364, 365, 7, 20, 0, 0, + 365, 92, 1, 0, 0, 0, 366, 367, 7, 21, 0, 0, 367, 94, 1, 0, 0, 0, 368, 369, + 7, 22, 0, 0, 369, 96, 1, 0, 0, 0, 370, 371, 7, 23, 0, 0, 371, 98, 1, 0, + 0, 0, 372, 373, 7, 24, 0, 0, 373, 100, 1, 0, 0, 0, 374, 375, 7, 25, 0, + 0, 375, 102, 1, 0, 0, 0, 376, 377, 7, 26, 0, 0, 377, 104, 1, 0, 0, 0, 378, + 379, 7, 27, 0, 0, 379, 106, 1, 0, 0, 0, 380, 381, 7, 28, 0, 0, 381, 108, + 1, 0, 0, 0, 382, 383, 7, 29, 0, 0, 383, 110, 1, 0, 0, 0, 384, 385, 7, 30, + 0, 0, 385, 112, 1, 0, 0, 0, 386, 387, 7, 31, 0, 0, 387, 114, 1, 0, 0, 0, + 388, 389, 7, 32, 0, 0, 389, 116, 1, 0, 0, 0, 390, 391, 7, 33, 0, 0, 391, + 118, 1, 0, 0, 0, 392, 393, 7, 34, 0, 0, 393, 120, 1, 0, 0, 0, 21, 0, 250, + 252, 260, 262, 270, 278, 281, 286, 292, 295, 299, 304, 306, 312, 316, 321, + 323, 325, 331, 333, 1, 0, 1, 0, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// sqlLexerInit initializes any static state used to implement sqlLexer. By default the +// static state used to implement the lexer is lazily initialized during the first call to +// NewsqlLexer(). You can call this function if you wish to initialize the static state ahead +// of time. +func SqlLexerInit() { + staticData := &sqllexerLexerStaticData + staticData.once.Do(sqllexerLexerInit) +} + +// NewsqlLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewsqlLexer(input antlr.CharStream) *sqlLexer { + SqlLexerInit() + l := new(sqlLexer) + l.BaseLexer = antlr.NewBaseLexer(input) + staticData := &sqllexerLexerStaticData + l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + l.channelNames = staticData.channelNames + l.modeNames = staticData.modeNames + l.RuleNames = staticData.ruleNames + l.LiteralNames = staticData.literalNames + l.SymbolicNames = staticData.symbolicNames + l.GrammarFileName = "sql.g4" + // TODO: l.EOF = antlr.TokenEOF + + return l +} + +// sqlLexer tokens. +const ( + sqlLexerSPACE = 1 + sqlLexerCOMMA = 2 + sqlLexerL_BRACKET = 3 + sqlLexerR_BRACKET = 4 + sqlLexerEOQ = 5 + sqlLexerK_SELECT = 6 + sqlLexerK_WHERE = 7 + sqlLexerK_WINDOW_TUMBLING = 8 + sqlLexerK_GROUP_BY = 9 + sqlLexerK_AND = 10 + sqlLexerK_OR = 11 + sqlLexerK_IS = 12 + sqlLexerK_LIKE = 13 + sqlLexerK_EQUAL = 14 + sqlLexerK_GREATER = 15 + sqlLexerK_LESS = 16 + sqlLexerK_LESS_EQUAL = 17 + sqlLexerK_GREATER_EQUAL = 18 + sqlLexerK_NOT_EQUAL = 19 + sqlLexerK_NULL = 20 + sqlLexerK_IS_NULL = 21 + sqlLexerK_IS_NOT_NULL = 22 + sqlLexerK_NOT = 23 + sqlLexerK_NOT_IN = 24 + sqlLexerK_IN = 25 + sqlLexerK_COUNT = 26 + sqlLexerK_MIN = 27 + sqlLexerK_MAX = 28 + sqlLexerK_AVG = 29 + sqlLexerIDENTIFIER = 30 + sqlLexerNUMERIC_LITERAL = 31 + sqlLexerSTRING_LITERAL = 32 + sqlLexerSTAR = 33 +) diff --git a/processor/stream_processor/parser/sql_lexer_test.go b/processor/stream_processor/parser/sql_lexer_test.go new file mode 100644 index 000000000000..2330b42b7cfc --- /dev/null +++ b/processor/stream_processor/parser/sql_lexer_test.go @@ -0,0 +1,22 @@ +package parser + +import ( + "fmt" + "github.com/antlr/antlr4/runtime/Go/antlr" + "testing" +) + +func TestSelectExpr(t *testing.T) { + is := antlr.NewInputStream(`SELECT field1, min(field2) WHERE field3 <= 3 and field4 is not null `) + lexer := NewsqlLexer(is) + + for { + t := lexer.NextToken() + if t.GetTokenType() == antlr.TokenEOF { + break + } + fmt.Printf("%s (%q)\n", + lexer.SymbolicNames[t.GetTokenType()], t.GetText()) + } + +} diff --git a/processor/stream_processor/parser/sql_listener.go b/processor/stream_processor/parser/sql_listener.go new file mode 100644 index 000000000000..4e8bfde019cc --- /dev/null +++ b/processor/stream_processor/parser/sql_listener.go @@ -0,0 +1,70 @@ +// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// sqlListener is a complete listener for a parse tree produced by sqlParser. +type sqlListener interface { + antlr.ParseTreeListener + + // EnterSqlQuery is called when entering the sqlQuery production. + EnterSqlQuery(c *SqlQueryContext) + + // EnterSelectQuery is called when entering the selectQuery production. + EnterSelectQuery(c *SelectQueryContext) + + // EnterResultColumns is called when entering the resultColumns production. + EnterResultColumns(c *ResultColumnsContext) + + // EnterColumn is called when entering the column production. + EnterColumn(c *ColumnContext) + + // EnterWhereStatement is called when entering the whereStatement production. + EnterWhereStatement(c *WhereStatementContext) + + // EnterGroupBy is called when entering the groupBy production. + EnterGroupBy(c *GroupByContext) + + // EnterAvg is called when entering the avg production. + EnterAvg(c *AvgContext) + + // EnterExpr is called when entering the expr production. + EnterExpr(c *ExprContext) + + // EnterComparisonOperator is called when entering the comparisonOperator production. + EnterComparisonOperator(c *ComparisonOperatorContext) + + // EnterLiteralValue is called when entering the literalValue production. + EnterLiteralValue(c *LiteralValueContext) + + // ExitSqlQuery is called when exiting the sqlQuery production. + ExitSqlQuery(c *SqlQueryContext) + + // ExitSelectQuery is called when exiting the selectQuery production. + ExitSelectQuery(c *SelectQueryContext) + + // ExitResultColumns is called when exiting the resultColumns production. + ExitResultColumns(c *ResultColumnsContext) + + // ExitColumn is called when exiting the column production. + ExitColumn(c *ColumnContext) + + // ExitWhereStatement is called when exiting the whereStatement production. + ExitWhereStatement(c *WhereStatementContext) + + // ExitGroupBy is called when exiting the groupBy production. + ExitGroupBy(c *GroupByContext) + + // ExitAvg is called when exiting the avg production. + ExitAvg(c *AvgContext) + + // ExitExpr is called when exiting the expr production. + ExitExpr(c *ExprContext) + + // ExitComparisonOperator is called when exiting the comparisonOperator production. + ExitComparisonOperator(c *ComparisonOperatorContext) + + // ExitLiteralValue is called when exiting the literalValue production. + ExitLiteralValue(c *LiteralValueContext) +} diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go new file mode 100644 index 000000000000..aacef8c5d518 --- /dev/null +++ b/processor/stream_processor/parser/sql_parser.go @@ -0,0 +1,1764 @@ +// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // sql + +import ( + "fmt" + "strconv" + "sync" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import errors +var _ = fmt.Printf +var _ = strconv.Itoa +var _ = sync.Once{} + +type sqlParser struct { + *antlr.BaseParser +} + +var sqlParserStaticData struct { + once sync.Once + serializedATN []int32 + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func sqlParserInit() { + staticData := &sqlParserStaticData + staticData.literalNames = []string{ + "", "", "','", "'('", "')'", "';'", "", "", "", "", "", "", "", "", + "'='", "'>'", "'<'", "", "", "", "", "", "", "", "", "", "", "", "", + "", "", "", "", "'*'", + } + staticData.symbolicNames = []string{ + "", "SPACE", "COMMA", "L_BRACKET", "R_BRACKET", "EOQ", "K_SELECT", "K_WHERE", + "K_WINDOW_TUMBLING", "K_GROUP_BY", "K_AND", "K_OR", "K_IS", "K_LIKE", + "K_EQUAL", "K_GREATER", "K_LESS", "K_LESS_EQUAL", "K_GREATER_EQUAL", + "K_NOT_EQUAL", "K_NULL", "K_IS_NULL", "K_IS_NOT_NULL", "K_NOT", "K_NOT_IN", + "K_IN", "K_COUNT", "K_MIN", "K_MAX", "K_AVG", "IDENTIFIER", "NUMERIC_LITERAL", + "STRING_LITERAL", "STAR", + } + staticData.ruleNames = []string{ + "sqlQuery", "selectQuery", "resultColumns", "column", "whereStatement", + "groupBy", "avg", "expr", "comparisonOperator", "literalValue", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 1, 33, 92, 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, 1, 0, 1, + 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 27, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, + 4, 2, 34, 8, 2, 11, 2, 12, 2, 35, 1, 2, 1, 2, 1, 2, 4, 2, 41, 8, 2, 11, + 2, 12, 2, 42, 1, 2, 3, 2, 46, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 52, 8, + 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 58, 8, 4, 1, 4, 3, 4, 61, 8, 4, 1, 5, + 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 1, 7, 3, 7, 78, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 83, 8, 7, 10, 7, 12, + 7, 86, 9, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 0, 1, 14, 10, 0, 2, 4, 6, 8, + 10, 12, 14, 16, 18, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, + 0, 12, 19, 24, 25, 1, 0, 31, 32, 91, 0, 20, 1, 0, 0, 0, 2, 23, 1, 0, 0, + 0, 4, 45, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, + 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 77, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, + 89, 1, 0, 0, 0, 20, 21, 3, 2, 1, 0, 21, 22, 5, 0, 0, 1, 22, 1, 1, 0, 0, + 0, 23, 24, 5, 6, 0, 0, 24, 26, 3, 4, 2, 0, 25, 27, 3, 8, 4, 0, 26, 25, + 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, + 29, 3, 1, 0, 0, 0, 30, 33, 3, 6, 3, 0, 31, 32, 5, 2, 0, 0, 32, 34, 3, 6, + 3, 0, 33, 31, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, + 1, 0, 0, 0, 36, 46, 1, 0, 0, 0, 37, 40, 3, 12, 6, 0, 38, 39, 5, 2, 0, 0, + 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, + 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 46, 5, 33, 0, 0, 45, + 30, 1, 0, 0, 0, 45, 37, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 5, 1, 0, 0, + 0, 47, 48, 5, 30, 0, 0, 48, 7, 1, 0, 0, 0, 49, 50, 5, 7, 0, 0, 50, 52, + 3, 14, 7, 0, 51, 49, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 61, 1, 0, 0, 0, + 53, 54, 5, 8, 0, 0, 54, 57, 5, 31, 0, 0, 55, 56, 5, 7, 0, 0, 56, 58, 3, + 14, 7, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, + 61, 3, 10, 5, 0, 60, 51, 1, 0, 0, 0, 60, 53, 1, 0, 0, 0, 61, 9, 1, 0, 0, + 0, 62, 63, 5, 9, 0, 0, 63, 64, 3, 6, 3, 0, 64, 11, 1, 0, 0, 0, 65, 66, + 7, 0, 0, 0, 66, 67, 5, 3, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 5, 4, 0, 0, + 69, 13, 1, 0, 0, 0, 70, 71, 6, 7, -1, 0, 71, 72, 5, 30, 0, 0, 72, 73, 3, + 16, 8, 0, 73, 74, 3, 18, 9, 0, 74, 78, 1, 0, 0, 0, 75, 76, 5, 30, 0, 0, + 76, 78, 7, 1, 0, 0, 77, 70, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 84, 1, + 0, 0, 0, 79, 80, 10, 2, 0, 0, 80, 81, 7, 2, 0, 0, 81, 83, 3, 14, 7, 3, + 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, + 0, 0, 0, 85, 15, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 7, 3, 0, 0, 88, + 17, 1, 0, 0, 0, 89, 90, 7, 4, 0, 0, 90, 19, 1, 0, 0, 0, 9, 26, 35, 42, + 45, 51, 57, 60, 77, 84, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// sqlParserInit initializes any static state used to implement sqlParser. By default the +// static state used to implement the parser is lazily initialized during the first call to +// NewsqlParser(). You can call this function if you wish to initialize the static state ahead +// of time. +func SqlParserInit() { + staticData := &sqlParserStaticData + staticData.once.Do(sqlParserInit) +} + +// NewsqlParser produces a new parser instance for the optional input antlr.TokenStream. +func NewsqlParser(input antlr.TokenStream) *sqlParser { + SqlParserInit() + this := new(sqlParser) + this.BaseParser = antlr.NewBaseParser(input) + staticData := &sqlParserStaticData + this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + this.RuleNames = staticData.ruleNames + this.LiteralNames = staticData.literalNames + this.SymbolicNames = staticData.symbolicNames + this.GrammarFileName = "sql.g4" + + return this +} + +// sqlParser tokens. +const ( + sqlParserEOF = antlr.TokenEOF + sqlParserSPACE = 1 + sqlParserCOMMA = 2 + sqlParserL_BRACKET = 3 + sqlParserR_BRACKET = 4 + sqlParserEOQ = 5 + sqlParserK_SELECT = 6 + sqlParserK_WHERE = 7 + sqlParserK_WINDOW_TUMBLING = 8 + sqlParserK_GROUP_BY = 9 + sqlParserK_AND = 10 + sqlParserK_OR = 11 + sqlParserK_IS = 12 + sqlParserK_LIKE = 13 + sqlParserK_EQUAL = 14 + sqlParserK_GREATER = 15 + sqlParserK_LESS = 16 + sqlParserK_LESS_EQUAL = 17 + sqlParserK_GREATER_EQUAL = 18 + sqlParserK_NOT_EQUAL = 19 + sqlParserK_NULL = 20 + sqlParserK_IS_NULL = 21 + sqlParserK_IS_NOT_NULL = 22 + sqlParserK_NOT = 23 + sqlParserK_NOT_IN = 24 + sqlParserK_IN = 25 + sqlParserK_COUNT = 26 + sqlParserK_MIN = 27 + sqlParserK_MAX = 28 + sqlParserK_AVG = 29 + sqlParserIDENTIFIER = 30 + sqlParserNUMERIC_LITERAL = 31 + sqlParserSTRING_LITERAL = 32 + sqlParserSTAR = 33 +) + +// sqlParser rules. +const ( + sqlParserRULE_sqlQuery = 0 + sqlParserRULE_selectQuery = 1 + sqlParserRULE_resultColumns = 2 + sqlParserRULE_column = 3 + sqlParserRULE_whereStatement = 4 + sqlParserRULE_groupBy = 5 + sqlParserRULE_avg = 6 + sqlParserRULE_expr = 7 + sqlParserRULE_comparisonOperator = 8 + sqlParserRULE_literalValue = 9 +) + +// ISqlQueryContext is an interface to support dynamic dispatch. +type ISqlQueryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSqlQueryContext differentiates from other interfaces. + IsSqlQueryContext() +} + +type SqlQueryContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySqlQueryContext() *SqlQueryContext { + var p = new(SqlQueryContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_sqlQuery + return p +} + +func (*SqlQueryContext) IsSqlQueryContext() {} + +func NewSqlQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SqlQueryContext { + var p = new(SqlQueryContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_sqlQuery + + return p +} + +func (s *SqlQueryContext) GetParser() antlr.Parser { return s.parser } + +func (s *SqlQueryContext) SelectQuery() ISelectQueryContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelectQueryContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(ISelectQueryContext) +} + +func (s *SqlQueryContext) EOF() antlr.TerminalNode { + return s.GetToken(sqlParserEOF, 0) +} + +func (s *SqlQueryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SqlQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SqlQueryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterSqlQuery(s) + } +} + +func (s *SqlQueryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitSqlQuery(s) + } +} + +func (p *sqlParser) SqlQuery() (localctx ISqlQueryContext) { + this := p + _ = this + + localctx = NewSqlQueryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 0, sqlParserRULE_sqlQuery) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(20) + p.SelectQuery() + } + { + p.SetState(21) + p.Match(sqlParserEOF) + } + + return localctx +} + +// ISelectQueryContext is an interface to support dynamic dispatch. +type ISelectQueryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSelectQueryContext differentiates from other interfaces. + IsSelectQueryContext() +} + +type SelectQueryContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelectQueryContext() *SelectQueryContext { + var p = new(SelectQueryContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_selectQuery + return p +} + +func (*SelectQueryContext) IsSelectQueryContext() {} + +func NewSelectQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *SelectQueryContext { + var p = new(SelectQueryContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_selectQuery + + return p +} + +func (s *SelectQueryContext) GetParser() antlr.Parser { return s.parser } + +func (s *SelectQueryContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(sqlParserK_SELECT, 0) +} + +func (s *SelectQueryContext) EOQ() antlr.TerminalNode { + return s.GetToken(sqlParserEOQ, 0) +} + +func (s *SelectQueryContext) ResultColumns() IResultColumnsContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResultColumnsContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IResultColumnsContext) +} + +func (s *SelectQueryContext) WhereStatement() IWhereStatementContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWhereStatementContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IWhereStatementContext) +} + +func (s *SelectQueryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *SelectQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *SelectQueryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterSelectQuery(s) + } +} + +func (s *SelectQueryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitSelectQuery(s) + } +} + +func (p *sqlParser) SelectQuery() (localctx ISelectQueryContext) { + this := p + _ = this + + localctx = NewSelectQueryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 2, sqlParserRULE_selectQuery) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(23) + p.Match(sqlParserK_SELECT) + } + + { + p.SetState(24) + p.ResultColumns() + } + + p.SetState(26) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 0, p.GetParserRuleContext()) == 1 { + { + p.SetState(25) + p.WhereStatement() + } + + } + { + p.SetState(28) + p.Match(sqlParserEOQ) + } + + return localctx +} + +// IResultColumnsContext is an interface to support dynamic dispatch. +type IResultColumnsContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsResultColumnsContext differentiates from other interfaces. + IsResultColumnsContext() +} + +type ResultColumnsContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyResultColumnsContext() *ResultColumnsContext { + var p = new(ResultColumnsContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_resultColumns + return p +} + +func (*ResultColumnsContext) IsResultColumnsContext() {} + +func NewResultColumnsContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ResultColumnsContext { + var p = new(ResultColumnsContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_resultColumns + + return p +} + +func (s *ResultColumnsContext) GetParser() antlr.Parser { return s.parser } + +func (s *ResultColumnsContext) AllColumn() []IColumnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumnContext); ok { + len++ + } + } + + tst := make([]IColumnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumnContext); ok { + tst[i] = t.(IColumnContext) + i++ + } + } + + return tst +} + +func (s *ResultColumnsContext) Column(i int) IColumnContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumnContext) +} + +func (s *ResultColumnsContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(sqlParserCOMMA) +} + +func (s *ResultColumnsContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(sqlParserCOMMA, i) +} + +func (s *ResultColumnsContext) AllAvg() []IAvgContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAvgContext); ok { + len++ + } + } + + tst := make([]IAvgContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAvgContext); ok { + tst[i] = t.(IAvgContext) + i++ + } + } + + return tst +} + +func (s *ResultColumnsContext) Avg(i int) IAvgContext { + var t antlr.RuleContext + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAvgContext); ok { + if j == i { + t = ctx.(antlr.RuleContext) + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAvgContext) +} + +func (s *ResultColumnsContext) STAR() antlr.TerminalNode { + return s.GetToken(sqlParserSTAR, 0) +} + +func (s *ResultColumnsContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ResultColumnsContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ResultColumnsContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterResultColumns(s) + } +} + +func (s *ResultColumnsContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitResultColumns(s) + } +} + +func (p *sqlParser) ResultColumns() (localctx IResultColumnsContext) { + this := p + _ = this + + localctx = NewResultColumnsContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 4, sqlParserRULE_resultColumns) + var _la int + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(45) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case sqlParserIDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(30) + p.Column() + } + p.SetState(33) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == sqlParserCOMMA { + { + p.SetState(31) + p.Match(sqlParserCOMMA) + } + { + p.SetState(32) + p.Column() + } + + p.SetState(35) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + case sqlParserK_COUNT, sqlParserK_MIN, sqlParserK_MAX, sqlParserK_AVG: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(37) + p.Avg() + } + p.SetState(40) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + for ok := true; ok; ok = _la == sqlParserCOMMA { + { + p.SetState(38) + p.Match(sqlParserCOMMA) + } + { + p.SetState(39) + p.Avg() + } + + p.SetState(42) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + case sqlParserSTAR: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(44) + p.Match(sqlParserSTAR) + } + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + return localctx +} + +// IColumnContext is an interface to support dynamic dispatch. +type IColumnContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumnContext differentiates from other interfaces. + IsColumnContext() +} + +type ColumnContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumnContext() *ColumnContext { + var p = new(ColumnContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_column + return p +} + +func (*ColumnContext) IsColumnContext() {} + +func NewColumnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ColumnContext { + var p = new(ColumnContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_column + + return p +} + +func (s *ColumnContext) GetParser() antlr.Parser { return s.parser } + +func (s *ColumnContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(sqlParserIDENTIFIER, 0) +} + +func (s *ColumnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ColumnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *ColumnContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterColumn(s) + } +} + +func (s *ColumnContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitColumn(s) + } +} + +func (p *sqlParser) Column() (localctx IColumnContext) { + this := p + _ = this + + localctx = NewColumnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 6, sqlParserRULE_column) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(47) + p.Match(sqlParserIDENTIFIER) + } + + return localctx +} + +// IWhereStatementContext is an interface to support dynamic dispatch. +type IWhereStatementContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsWhereStatementContext differentiates from other interfaces. + IsWhereStatementContext() +} + +type WhereStatementContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyWhereStatementContext() *WhereStatementContext { + var p = new(WhereStatementContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_whereStatement + return p +} + +func (*WhereStatementContext) IsWhereStatementContext() {} + +func NewWhereStatementContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *WhereStatementContext { + var p = new(WhereStatementContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_whereStatement + + return p +} + +func (s *WhereStatementContext) GetParser() antlr.Parser { return s.parser } + +func (s *WhereStatementContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(sqlParserK_WHERE, 0) +} + +func (s *WhereStatementContext) Expr() IExprContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *WhereStatementContext) K_WINDOW_TUMBLING() antlr.TerminalNode { + return s.GetToken(sqlParserK_WINDOW_TUMBLING, 0) +} + +func (s *WhereStatementContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(sqlParserNUMERIC_LITERAL, 0) +} + +func (s *WhereStatementContext) GroupBy() IGroupByContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IGroupByContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IGroupByContext) +} + +func (s *WhereStatementContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *WhereStatementContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *WhereStatementContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterWhereStatement(s) + } +} + +func (s *WhereStatementContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitWhereStatement(s) + } +} + +func (p *sqlParser) WhereStatement() (localctx IWhereStatementContext) { + this := p + _ = this + + localctx = NewWhereStatementContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 8, sqlParserRULE_whereStatement) + var _la int + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(60) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case sqlParserEOQ, sqlParserK_WHERE: + p.EnterOuterAlt(localctx, 1) + p.SetState(51) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == sqlParserK_WHERE { + { + p.SetState(49) + p.Match(sqlParserK_WHERE) + } + { + p.SetState(50) + p.expr(0) + } + + } + + case sqlParserK_WINDOW_TUMBLING: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(53) + p.Match(sqlParserK_WINDOW_TUMBLING) + } + { + p.SetState(54) + p.Match(sqlParserNUMERIC_LITERAL) + } + p.SetState(57) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + if _la == sqlParserK_WHERE { + { + p.SetState(55) + p.Match(sqlParserK_WHERE) + } + { + p.SetState(56) + p.expr(0) + } + + } + + { + p.SetState(59) + p.GroupBy() + } + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + return localctx +} + +// IGroupByContext is an interface to support dynamic dispatch. +type IGroupByContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsGroupByContext differentiates from other interfaces. + IsGroupByContext() +} + +type GroupByContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyGroupByContext() *GroupByContext { + var p = new(GroupByContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_groupBy + return p +} + +func (*GroupByContext) IsGroupByContext() {} + +func NewGroupByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *GroupByContext { + var p = new(GroupByContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_groupBy + + return p +} + +func (s *GroupByContext) GetParser() antlr.Parser { return s.parser } + +func (s *GroupByContext) K_GROUP_BY() antlr.TerminalNode { + return s.GetToken(sqlParserK_GROUP_BY, 0) +} + +func (s *GroupByContext) Column() IColumnContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumnContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IColumnContext) +} + +func (s *GroupByContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *GroupByContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *GroupByContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterGroupBy(s) + } +} + +func (s *GroupByContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitGroupBy(s) + } +} + +func (p *sqlParser) GroupBy() (localctx IGroupByContext) { + this := p + _ = this + + localctx = NewGroupByContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, sqlParserRULE_groupBy) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(62) + p.Match(sqlParserK_GROUP_BY) + } + { + p.SetState(63) + p.Column() + } + + return localctx +} + +// IAvgContext is an interface to support dynamic dispatch. +type IAvgContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAvgContext differentiates from other interfaces. + IsAvgContext() +} + +type AvgContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAvgContext() *AvgContext { + var p = new(AvgContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = sqlParserRULE_avg + return p +} + +func (*AvgContext) IsAvgContext() {} + +func NewAvgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AvgContext { + var p = new(AvgContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = sqlParserRULE_avg + + return p +} + +func (s *AvgContext) GetParser() antlr.Parser { return s.parser } + +func (s *AvgContext) L_BRACKET() antlr.TerminalNode { + return s.GetToken(sqlParserL_BRACKET, 0) +} + +func (s *AvgContext) Column() IColumnContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumnContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IColumnContext) +} + +func (s *AvgContext) R_BRACKET() antlr.TerminalNode { + return s.GetToken(sqlParserR_BRACKET, 0) +} + +func (s *AvgContext) K_MIN() antlr.TerminalNode { + return s.GetToken(sqlParserK_MIN, 0) +} + +func (s *AvgContext) K_MAX() antlr.TerminalNode { + return s.GetToken(sqlParserK_MAX, 0) +} + +func (s *AvgContext) K_COUNT() antlr.TerminalNode { + return s.GetToken(sqlParserK_COUNT, 0) +} + +func (s *AvgContext) K_AVG() antlr.TerminalNode { + return s.GetToken(sqlParserK_AVG, 0) +} + +func (s *AvgContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *AvgContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *AvgContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.EnterAvg(s) + } +} + +func (s *AvgContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(sqlListener); ok { + listenerT.ExitAvg(s) + } +} + +func (p *sqlParser) Avg() (localctx IAvgContext) { + this := p + _ = this + + localctx = NewAvgContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 12, sqlParserRULE_avg) + var _la int + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(65) + _la = p.GetTokenStream().LA(1) + + if !(((_la)&-(0x1f+1)) == 0 && ((1< channel(HIDDEN) + ; + +COMMA : ',' ; +L_BRACKET : '(' ; +R_BRACKET : ')' ; + +EOQ: ';'; + +K_SELECT : S E L E C T; +K_WHERE : W H E R E; +K_WINDOW_TUMBLING : W I N D O W SPACE T U M B L I N G; +K_GROUP_BY : G R O U P SPACE B Y; +K_AND : A N D; +K_OR : O R; +K_IS : I S; +K_LIKE : L I K E; +K_EQUAL : '='; +K_GREATER : '>'; +K_LESS : '<'; +K_LESS_EQUAL : (K_LESS K_EQUAL); +K_GREATER_EQUAL : (K_GREATER K_EQUAL); +K_NOT_EQUAL : ('!' K_EQUAL); +K_NULL : N U L L; +K_IS_NULL : (K_IS SPACE K_NULL); +K_IS_NOT_NULL : (K_IS SPACE K_NOT SPACE K_NULL); +K_NOT : N O T; +K_NOT_IN : (K_NOT SPACE I N); +K_IN : I N; + +K_COUNT : C O U N T; +K_MIN : M I N; +K_MAX : M A X; +K_AVG : A V G; + +IDENTIFIER + : '"' (~'"' | '""')* '"' + | '`' (~'`' | '``')* '`' + | '[' ~']'* ']' + | [a-zA-Z_] [a-zA-Z_0-9]* + ; + +expr + : IDENTIFIER comparisonOperator literalValue + | expr ( K_AND | K_OR ) expr + | IDENTIFIER (K_IS_NULL | K_IS_NOT_NULL) + ; + + + +comparisonOperator + : K_EQUAL | K_GREATER | K_LESS | K_LESS_EQUAL | K_GREATER_EQUAL | K_NOT_EQUAL | K_LIKE | K_IN | K_IS | K_NOT_IN + ; + + +literalValue + : NUMERIC_LITERAL + | STRING_LITERAL + ; + + +NUMERIC_LITERAL + : DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )? + | '.' DIGIT+ ( E [-+]? DIGIT+ )? + ; + +STRING_LITERAL + : '\'' ( ~'\'' | '\'\'' )* '\'' + ; + + +STAR : '*'; + +fragment DIGIT : [0-9]; +fragment A : [aA]; +fragment B : [bB]; +fragment C : [cC]; +fragment D : [dD]; +fragment E : [eE]; +fragment F : [fF]; +fragment G : [gG]; +fragment H : [hH]; +fragment I : [iI]; +fragment J : [jJ]; +fragment K : [kK]; +fragment L : [lL]; +fragment M : [mM]; +fragment N : [nN]; +fragment O : [oO]; +fragment P : [pP]; +fragment Q : [qQ]; +fragment R : [rR]; +fragment S : [sS]; +fragment T : [tT]; +fragment U : [uU]; +fragment V : [vV]; +fragment W : [wW]; +fragment X : [xX]; +fragment Y : [yY]; +fragment Z : [zZ]; diff --git a/processor/stream_processor/test/Sql.g4 b/processor/stream_processor/test/Sql.g4 new file mode 100644 index 000000000000..2022d75525a2 --- /dev/null +++ b/processor/stream_processor/test/Sql.g4 @@ -0,0 +1,980 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2014 by Bart Kiers + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Project : sqlite-parser; an ANTLR4 grammar for SQLite + * https://github.com/bkiers/sqlite-parser + * Developed by : Bart Kiers, bart@big-o.nl + */ +grammar Sql; + +parse + : ( sql_stmt_list | error )* EOF + ; + +error + : UNEXPECTED_CHAR + { + throw new RuntimeException("UNEXPECTED_CHAR=" + $UNEXPECTED_CHAR.text); + } + ; + +sql_stmt_list + : ';'* sql_stmt ( ';'+ sql_stmt )* ';'* + ; + +sql_stmt + : ( K_EXPLAIN ( K_QUERY K_PLAN )? )? ( alter_table_stmt + | analyze_stmt + | attach_stmt + | begin_stmt + | commit_stmt + | compound_select_stmt + | create_index_stmt + | create_table_stmt + | create_trigger_stmt + | create_view_stmt + | create_virtual_table_stmt + | delete_stmt + | delete_stmt_limited + | detach_stmt + | drop_index_stmt + | drop_table_stmt + | drop_trigger_stmt + | drop_view_stmt + | factored_select_stmt + | insert_stmt + | pragma_stmt + | reindex_stmt + | release_stmt + | rollback_stmt + | savepoint_stmt + | simple_select_stmt + | select_stmt + | update_stmt + | update_stmt_limited + | vacuum_stmt ) + ; + +alter_table_stmt + : K_ALTER K_TABLE K_ONLY? ( database_name '.' )? source_table_name + ( K_RENAME K_TO new_table_name + | alter_table_add + | alter_table_add_constraint + | K_ADD K_COLUMN? column_def + ) + K_ENABLE? (unknown)? + ; + +alter_table_add_constraint + : K_ADD K_CONSTRAINT any_name table_constraint + ; + +alter_table_add + : K_ADD table_constraint + ; + +analyze_stmt + : K_ANALYZE ( database_name | table_or_index_name | database_name '.' table_or_index_name )? + ; + +attach_stmt + : K_ATTACH K_DATABASE? expr K_AS database_name + ; + +begin_stmt + : K_BEGIN ( K_DEFERRED | K_IMMEDIATE | K_EXCLUSIVE )? ( K_TRANSACTION transaction_name? )? + ; + +commit_stmt + : ( K_COMMIT | K_END ) ( K_TRANSACTION transaction_name? )? + ; + +compound_select_stmt + : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? + select_core ( ( K_UNION K_ALL? | K_INTERSECT | K_EXCEPT ) select_core )+ + ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? + ; + +create_index_stmt + : K_CREATE K_UNIQUE? K_INDEX ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? index_name K_ON table_name '(' indexed_column ( ',' indexed_column )* ')' + ( K_WHERE expr )? + ; + +create_table_stmt + : K_CREATE ( K_TEMP | K_TEMPORARY )? K_TABLE ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? table_name + ( '(' column_def ( ',' table_constraint | ',' column_def )* ')' ( K_WITHOUT IDENTIFIER )? + | K_AS select_stmt + ) (unknown)? + ; + +create_trigger_stmt + : K_CREATE ( K_TEMP | K_TEMPORARY )? K_TRIGGER ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? trigger_name ( K_BEFORE | K_AFTER | K_INSTEAD K_OF )? + ( K_DELETE | K_INSERT | K_UPDATE ( K_OF column_name ( ',' column_name )* )? ) K_ON ( database_name '.' )? table_name + ( K_FOR K_EACH K_ROW )? ( K_WHEN expr )? + K_BEGIN ( ( update_stmt | insert_stmt | delete_stmt | select_stmt ) ';' )+ K_END + ; + +create_view_stmt + : K_CREATE ( K_TEMP | K_TEMPORARY )? K_VIEW ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? view_name K_AS select_stmt + ; + +create_virtual_table_stmt + : K_CREATE K_VIRTUAL K_TABLE ( K_IF K_NOT K_EXISTS )? + ( database_name '.' )? table_name + K_USING module_name ( '(' module_argument ( ',' module_argument )* ')' )? + ; + +delete_stmt + : with_clause? K_DELETE K_FROM qualified_table_name + ( K_WHERE expr )? + ; + +delete_stmt_limited + : with_clause? K_DELETE K_FROM qualified_table_name + ( K_WHERE expr )? + ( ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? + )? + ; + +detach_stmt + : K_DETACH K_DATABASE? database_name + ; + +drop_index_stmt + : K_DROP K_INDEX ( K_IF K_EXISTS )? ( database_name '.' )? index_name + ; + +drop_table_stmt + : K_DROP K_TABLE ( K_IF K_EXISTS )? ( database_name '.' )? table_name + ; + +drop_trigger_stmt + : K_DROP K_TRIGGER ( K_IF K_EXISTS )? ( database_name '.' )? trigger_name + ; + +drop_view_stmt + : K_DROP K_VIEW ( K_IF K_EXISTS )? ( database_name '.' )? view_name + ; + +factored_select_stmt + : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? + select_core ( compound_operator select_core )* + ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? + ; + +insert_stmt + : with_clause? ( K_INSERT + | K_REPLACE + | K_INSERT K_OR K_REPLACE + | K_INSERT K_OR K_ROLLBACK + | K_INSERT K_OR K_ABORT + | K_INSERT K_OR K_FAIL + | K_INSERT K_OR K_IGNORE ) K_INTO + ( database_name '.' )? table_name ( '(' column_name ( ',' column_name )* ')' )? + ( K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* + | select_stmt + | K_DEFAULT K_VALUES + ) + ; + +pragma_stmt + : K_PRAGMA ( database_name '.' )? pragma_name ( '=' pragma_value + | '(' pragma_value ')' )? + ; + +reindex_stmt + : K_REINDEX ( collation_name + | ( database_name '.' )? ( table_name | index_name ) + )? + ; + +release_stmt + : K_RELEASE K_SAVEPOINT? savepoint_name + ; + +rollback_stmt + : K_ROLLBACK ( K_TRANSACTION transaction_name? )? ( K_TO K_SAVEPOINT? savepoint_name )? + ; + +savepoint_stmt + : K_SAVEPOINT savepoint_name + ; + +simple_select_stmt + : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? + select_core ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? + ; + +select_stmt + : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? + select_or_values ( compound_operator select_or_values )* + ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? + ; + +select_or_values + : K_SELECT ( K_DISTINCT | K_ALL )? result_column ( ',' result_column )* + ( K_FROM ( table_or_subquery ( ',' table_or_subquery )* | join_clause ) )? + ( K_WHERE expr )? + ( K_GROUP K_BY expr ( ',' expr )* ( K_HAVING expr )? )? + | K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* + ; + +update_stmt + : with_clause? K_UPDATE ( K_OR K_ROLLBACK + | K_OR K_ABORT + | K_OR K_REPLACE + | K_OR K_FAIL + | K_OR K_IGNORE )? qualified_table_name + K_SET column_name '=' expr ( ',' column_name '=' expr )* ( K_WHERE expr )? + ; + +update_stmt_limited + : with_clause? K_UPDATE ( K_OR K_ROLLBACK + | K_OR K_ABORT + | K_OR K_REPLACE + | K_OR K_FAIL + | K_OR K_IGNORE )? qualified_table_name + K_SET column_name '=' expr ( ',' column_name '=' expr )* ( K_WHERE expr )? + ( ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? + K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? + )? + ; + +vacuum_stmt + : K_VACUUM + ; + +column_def + : column_name ( column_constraint | type_name )* + ; + +type_name + : name ( '(' signed_number (any_name)? ')' + | '(' signed_number (any_name)? ',' signed_number (any_name)? ')' )? + ; + +column_constraint + : ( K_CONSTRAINT name )? + ( column_constraint_primary_key + | column_constraint_foreign_key + | column_constraint_not_null + | column_constraint_null + | K_UNIQUE conflict_clause + | K_CHECK '(' expr ')' + | column_default + | K_COLLATE collation_name + ) + ; + +column_constraint_primary_key + : K_PRIMARY K_KEY ( K_ASC | K_DESC )? conflict_clause K_AUTOINCREMENT? + ; + +column_constraint_foreign_key + : foreign_key_clause + ; + +column_constraint_not_null + : K_NOT K_NULL conflict_clause + ; + +column_constraint_null + : K_NULL conflict_clause + ; + +column_default + : K_DEFAULT (column_default_value | '(' expr ')' | K_NEXTVAL '(' expr ')' | any_name ) ( '::' any_name+ )? + ; + +column_default_value + : ( signed_number | literal_value ) + ; + +conflict_clause + : ( K_ON K_CONFLICT ( K_ROLLBACK + | K_ABORT + | K_FAIL + | K_IGNORE + | K_REPLACE + ) + )? + ; + +/* + SQLite understands the following binary operators, in order from highest to + lowest precedence: + + || + * / % + + - + << >> & | + < <= > >= + = == != <> IS IS NOT IN LIKE GLOB MATCH REGEXP + AND + OR +*/ +expr + : literal_value + | BIND_PARAMETER + | ( ( database_name '.' )? table_name '.' )? column_name + | unary_operator expr + | expr '||' expr + | expr ( '*' | '/' | '%' ) expr + | expr ( '+' | '-' ) expr + | expr ( '<<' | '>>' | '&' | '|' ) expr + | expr ( '<' | '<=' | '>' | '>=' ) expr + | expr ( '=' | '==' | '!=' | '<>' | K_IS | K_IS K_NOT | K_IN | K_LIKE | K_GLOB | K_MATCH | K_REGEXP ) expr + | expr K_AND expr + | expr K_OR expr + | function_name '(' ( K_DISTINCT? expr ( ',' expr )* | '*' )? ')' + | '(' expr ')' + | K_CAST '(' expr K_AS type_name ')' + | expr K_COLLATE collation_name + | expr K_NOT? ( K_LIKE | K_GLOB | K_REGEXP | K_MATCH ) expr ( K_ESCAPE expr )? + | expr ( K_ISNULL | K_NOTNULL | K_NOT K_NULL ) + | expr K_IS K_NOT? expr + | expr K_NOT? K_BETWEEN expr K_AND expr + | expr K_NOT? K_IN ( '(' ( select_stmt + | expr ( ',' expr )* + )? + ')' + | ( database_name '.' )? table_name ) + | ( ( K_NOT )? K_EXISTS )? '(' select_stmt ')' + | K_CASE expr? ( K_WHEN expr K_THEN expr )+ ( K_ELSE expr )? K_END + | raise_function + ; + +foreign_key_clause + : K_REFERENCES ( database_name '.' )? foreign_table ( '(' fk_target_column_name ( ',' fk_target_column_name )* ')' )? + ( ( K_ON ( K_DELETE | K_UPDATE ) ( K_SET K_NULL + | K_SET K_DEFAULT + | K_CASCADE + | K_RESTRICT + | K_NO K_ACTION ) + | K_MATCH name + ) + )* + ( K_NOT? K_DEFERRABLE ( K_INITIALLY K_DEFERRED | K_INITIALLY K_IMMEDIATE )? K_ENABLE? )? + ; + +fk_target_column_name + : name + ; + +raise_function + : K_RAISE '(' ( K_IGNORE + | ( K_ROLLBACK | K_ABORT | K_FAIL ) ',' error_message ) + ')' + ; + +indexed_column + : column_name ( K_COLLATE collation_name )? ( K_ASC | K_DESC )? + ; + +table_constraint + : ( K_CONSTRAINT name )? + ( table_constraint_primary_key + | table_constraint_key + | table_constraint_unique + | K_CHECK '(' expr ')' + | table_constraint_foreign_key + ) + ; + +table_constraint_primary_key + : K_PRIMARY K_KEY '(' indexed_column ( ',' indexed_column )* ')' conflict_clause + ; + +table_constraint_foreign_key + : K_FOREIGN K_KEY '(' fk_origin_column_name ( ',' fk_origin_column_name )* ')' foreign_key_clause + ; + +table_constraint_unique + : K_UNIQUE K_KEY? name? '(' indexed_column ( ',' indexed_column )* ')' conflict_clause + ; + +table_constraint_key + : K_KEY name? '(' indexed_column ( ',' indexed_column )* ')' conflict_clause + ; + +fk_origin_column_name + : column_name + ; + +with_clause + : K_WITH K_RECURSIVE? cte_table_name K_AS '(' select_stmt ')' ( ',' cte_table_name K_AS '(' select_stmt ')' )* + ; + +qualified_table_name + : ( database_name '.' )? table_name ( K_INDEXED K_BY index_name + | K_NOT K_INDEXED )? + ; + +ordering_term + : expr ( K_COLLATE collation_name )? ( K_ASC | K_DESC )? + ; + +pragma_value + : signed_number + | name + | STRING_LITERAL + ; + +common_table_expression + : table_name ( '(' column_name ( ',' column_name )* ')' )? K_AS '(' select_stmt ')' + ; + +result_column + : '*' + | table_name '.' '*' + | expr ( K_AS? column_alias )? + ; + +table_or_subquery + : ( database_name '.' )? table_name ( K_AS? table_alias )? + ( K_INDEXED K_BY index_name + | K_NOT K_INDEXED )? + | '(' ( table_or_subquery ( ',' table_or_subquery )* + | join_clause ) + ')' ( K_AS? table_alias )? + | '(' select_stmt ')' ( K_AS? table_alias )? + ; + +join_clause + : table_or_subquery ( join_operator table_or_subquery join_constraint )* + ; + +join_operator + : ',' + | K_NATURAL? ( K_LEFT K_OUTER? | K_INNER | K_CROSS )? K_JOIN + ; + +join_constraint + : ( K_ON expr + | K_USING '(' column_name ( ',' column_name )* ')' )? + ; + +select_core + : K_SELECT ( K_DISTINCT | K_ALL )? result_column ( ',' result_column )* + ( K_FROM ( table_or_subquery ( ',' table_or_subquery )* | join_clause ) )? + ( K_WHERE expr )? + ( K_GROUP K_BY expr ( ',' expr )* ( K_HAVING expr )? )? + | K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* + ; + +compound_operator + : K_UNION + | K_UNION K_ALL + | K_INTERSECT + | K_EXCEPT + ; + +cte_table_name + : table_name ( '(' column_name ( ',' column_name )* ')' )? + ; + +signed_number + : ( ( '+' | '-' )? NUMERIC_LITERAL | '*' ) + ; + +literal_value + : NUMERIC_LITERAL + | STRING_LITERAL + | BLOB_LITERAL + | K_NULL + | K_CURRENT_TIME + | K_CURRENT_DATE + | K_CURRENT_TIMESTAMP + ; + +unary_operator + : '-' + | '+' + | '~' + | K_NOT + ; + +error_message + : STRING_LITERAL + ; + +module_argument // TODO check what exactly is permitted here + : expr + | column_def + ; + +column_alias + : IDENTIFIER + | STRING_LITERAL + ; + +keyword + : K_ABORT + | K_ACTION + | K_ADD + | K_AFTER + | K_ALL + | K_ALTER + | K_ANALYZE + | K_AND + | K_AS + | K_ASC + | K_ATTACH + | K_AUTOINCREMENT + | K_BEFORE + | K_BEGIN + | K_BETWEEN + | K_BY + | K_CASCADE + | K_CASE + | K_CAST + | K_CHECK + | K_COLLATE + | K_COLUMN + | K_COMMIT + | K_CONFLICT + | K_CONSTRAINT + | K_CREATE + | K_CROSS + | K_CURRENT_DATE + | K_CURRENT_TIME + | K_CURRENT_TIMESTAMP + | K_DATABASE + | K_DEFAULT + | K_DEFERRABLE + | K_DEFERRED + | K_DELETE + | K_DESC + | K_DETACH + | K_DISTINCT + | K_DROP + | K_EACH + | K_ELSE + | K_END + | K_ENABLE + | K_ESCAPE + | K_EXCEPT + | K_EXCLUSIVE + | K_EXISTS + | K_EXPLAIN + | K_FAIL + | K_FOR + | K_FOREIGN + | K_FROM + | K_FULL + | K_GLOB + | K_GROUP + | K_HAVING + | K_IF + | K_IGNORE + | K_IMMEDIATE + | K_IN + | K_INDEX + | K_INDEXED + | K_INITIALLY + | K_INNER + | K_INSERT + | K_INSTEAD + | K_INTERSECT + | K_INTO + | K_IS + | K_ISNULL + | K_JOIN + | K_KEY + | K_LEFT + | K_LIKE + | K_LIMIT + | K_MATCH + | K_NATURAL + | K_NO + | K_NOT + | K_NOTNULL + | K_NULL + | K_OF + | K_OFFSET + | K_ON + | K_OR + | K_ORDER + | K_OUTER + | K_PLAN + | K_PRAGMA + | K_PRIMARY + | K_QUERY + | K_RAISE + | K_RECURSIVE + | K_REFERENCES + | K_REGEXP + | K_REINDEX + | K_RELEASE + | K_RENAME + | K_REPLACE + | K_RESTRICT + | K_RIGHT + | K_ROLLBACK + | K_ROW + | K_SAVEPOINT + | K_SELECT + | K_SET + | K_TABLE + | K_TEMP + | K_TEMPORARY + | K_THEN + | K_TO + | K_TRANSACTION + | K_TRIGGER + | K_UNION + | K_UNIQUE + | K_UPDATE + | K_USING + | K_VACUUM + | K_VALUES + | K_VIEW + | K_VIRTUAL + | K_WHEN + | K_WHERE + | K_WITH + | K_WITHOUT + | K_NEXTVAL + ; + +// TODO check all names below + +//[a-zA-Z_0-9\t \-\[\]\=]+ +unknown + : .+ + ; + +name + : any_name + ; + +function_name + : any_name + ; + +database_name + : any_name + ; + +source_table_name + : any_name + ; + +table_name + : any_name + ; + +table_or_index_name + : any_name + ; + +new_table_name + : any_name + ; + +column_name + : any_name + ; + +collation_name + : any_name + ; + +foreign_table + : any_name + ; + +index_name + : any_name + ; + +trigger_name + : any_name + ; + +view_name + : any_name + ; + +module_name + : any_name + ; + +pragma_name + : any_name + ; + +savepoint_name + : any_name + ; + +table_alias + : any_name + ; + +transaction_name + : any_name + ; + +any_name + : IDENTIFIER + | keyword + | STRING_LITERAL + | '(' any_name ')' + ; + +SCOL : ';'; +DOT : '.'; +OPEN_PAR : '('; +CLOSE_PAR : ')'; +COMMA : ','; +ASSIGN : '='; +STAR : '*'; +PLUS : '+'; +MINUS : '-'; +TILDE : '~'; +PIPE2 : '||'; +DIV : '/'; +MOD : '%'; +LT2 : '<<'; +GT2 : '>>'; +AMP : '&'; +PIPE : '|'; +LT : '<'; +LT_EQ : '<='; +GT : '>'; +GT_EQ : '>='; +EQ : '=='; +NOT_EQ1 : '!='; +NOT_EQ2 : '<>'; + +// http://www.sqlite.org/lang_keywords.html +K_ABORT : A B O R T; +K_ACTION : A C T I O N; +K_ADD : A D D; +K_AFTER : A F T E R; +K_ALL : A L L; +K_ALTER : A L T E R; +K_ANALYZE : A N A L Y Z E; +K_AND : A N D; +K_AS : A S; +K_ASC : A S C; +K_ATTACH : A T T A C H; +K_AUTOINCREMENT : A U T O I N C R E M E N T; +K_BEFORE : B E F O R E; +K_BEGIN : B E G I N; +K_BETWEEN : B E T W E E N; +K_BY : B Y; +K_CASCADE : C A S C A D E; +K_CASE : C A S E; +K_CAST : C A S T; +K_CHECK : C H E C K; +K_COLLATE : C O L L A T E; +K_COLUMN : C O L U M N; +K_COMMIT : C O M M I T; +K_CONFLICT : C O N F L I C T; +K_CONSTRAINT : C O N S T R A I N T; +K_CREATE : C R E A T E; +K_CROSS : C R O S S; +K_CURRENT_DATE : C U R R E N T '_' D A T E; +K_CURRENT_TIME : C U R R E N T '_' T I M E; +K_CURRENT_TIMESTAMP : C U R R E N T '_' T I M E S T A M P; +K_DATABASE : D A T A B A S E; +K_DEFAULT : D E F A U L T; +K_DEFERRABLE : D E F E R R A B L E; +K_DEFERRED : D E F E R R E D; +K_DELETE : D E L E T E; +K_DESC : D E S C; +K_DETACH : D E T A C H; +K_DISTINCT : D I S T I N C T; +K_DROP : D R O P; +K_EACH : E A C H; +K_ELSE : E L S E; +K_END : E N D; +K_ENABLE : E N A B L E; +K_ESCAPE : E S C A P E; +K_EXCEPT : E X C E P T; +K_EXCLUSIVE : E X C L U S I V E; +K_EXISTS : E X I S T S; +K_EXPLAIN : E X P L A I N; +K_FAIL : F A I L; +K_FOR : F O R; +K_FOREIGN : F O R E I G N; +K_FROM : F R O M; +K_FULL : F U L L; +K_GLOB : G L O B; +K_GROUP : G R O U P; +K_HAVING : H A V I N G; +K_IF : I F; +K_IGNORE : I G N O R E; +K_IMMEDIATE : I M M E D I A T E; +K_IN : I N; +K_INDEX : I N D E X; +K_INDEXED : I N D E X E D; +K_INITIALLY : I N I T I A L L Y; +K_INNER : I N N E R; +K_INSERT : I N S E R T; +K_INSTEAD : I N S T E A D; +K_INTERSECT : I N T E R S E C T; +K_INTO : I N T O; +K_IS : I S; +K_ISNULL : I S N U L L; +K_JOIN : J O I N; +K_KEY : K E Y; +K_LEFT : L E F T; +K_LIKE : L I K E; +K_LIMIT : L I M I T; +K_MATCH : M A T C H; +K_NATURAL : N A T U R A L; +K_NEXTVAL : N E X T V A L; +K_NO : N O; +K_NOT : N O T; +K_NOTNULL : N O T N U L L; +K_NULL : N U L L; +K_OF : O F; +K_OFFSET : O F F S E T; +K_ON : O N; +K_ONLY : O N L Y; +K_OR : O R; +K_ORDER : O R D E R; +K_OUTER : O U T E R; +K_PLAN : P L A N; +K_PRAGMA : P R A G M A; +K_PRIMARY : P R I M A R Y; +K_QUERY : Q U E R Y; +K_RAISE : R A I S E; +K_RECURSIVE : R E C U R S I V E; +K_REFERENCES : R E F E R E N C E S; +K_REGEXP : R E G E X P; +K_REINDEX : R E I N D E X; +K_RELEASE : R E L E A S E; +K_RENAME : R E N A M E; +K_REPLACE : R E P L A C E; +K_RESTRICT : R E S T R I C T; +K_RIGHT : R I G H T; +K_ROLLBACK : R O L L B A C K; +K_ROW : R O W; +K_SAVEPOINT : S A V E P O I N T; +K_SELECT : S E L E C T; +K_SET : S E T; +K_TABLE : T A B L E; +K_TEMP : T E M P; +K_TEMPORARY : T E M P O R A R Y; +K_THEN : T H E N; +K_TO : T O; +K_TRANSACTION : T R A N S A C T I O N; +K_TRIGGER : T R I G G E R; +K_UNION : U N I O N; +K_UNIQUE : U N I Q U E; +K_UPDATE : U P D A T E; +K_USING : U S I N G; +K_VACUUM : V A C U U M; +K_VALUES : V A L U E S; +K_VIEW : V I E W; +K_VIRTUAL : V I R T U A L; +K_WHEN : W H E N; +K_WHERE : W H E R E; +K_WITH : W I T H; +K_WITHOUT : W I T H O U T; + +IDENTIFIER + : '"' (~'"' | '""')* '"' + | '`' (~'`' | '``')* '`' + | '[' ~']'* ']' + | [a-zA-Z_] [a-zA-Z_0-9]* // TODO check: needs more chars in set + ; + +NUMERIC_LITERAL + : DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )? + | '.' DIGIT+ ( E [-+]? DIGIT+ )? + ; + +BIND_PARAMETER + : '?' DIGIT* + | [:@$] IDENTIFIER + ; + +STRING_LITERAL + : '\'' ( ~'\'' | '\'\'' )* '\'' + ; + +BLOB_LITERAL + : X STRING_LITERAL + ; + +SINGLE_LINE_COMMENT + : '--' ~[\r\n]* -> channel(HIDDEN) + ; + +MULTILINE_COMMENT + : '/*' .*? ( '*/' | EOF ) -> channel(HIDDEN) + ; + +SPACES + : [ \u000B\t\r\n] -> channel(HIDDEN) + ; + +UNEXPECTED_CHAR + : . + ; + +fragment DIGIT : [0-9]; + +fragment A : [aA]; +fragment B : [bB]; +fragment C : [cC]; +fragment D : [dD]; +fragment E : [eE]; +fragment F : [fF]; +fragment G : [gG]; +fragment H : [hH]; +fragment I : [iI]; +fragment J : [jJ]; +fragment K : [kK]; +fragment L : [lL]; +fragment M : [mM]; +fragment N : [nN]; +fragment O : [oO]; +fragment P : [pP]; +fragment Q : [qQ]; +fragment R : [rR]; +fragment S : [sS]; +fragment T : [tT]; +fragment U : [uU]; +fragment V : [vV]; +fragment W : [wW]; +fragment X : [xX]; +fragment Y : [yY]; +fragment Z : [zZ]; \ No newline at end of file diff --git a/processor/stream_processor/test/parser/Sql.interp b/processor/stream_processor/test/parser/Sql.interp new file mode 100644 index 000000000000..2390b99ed92a --- /dev/null +++ b/processor/stream_processor/test/parser/Sql.interp @@ -0,0 +1,431 @@ +token literal names: +null +'::' +';' +'.' +'(' +')' +',' +'=' +'*' +'+' +'-' +'~' +'||' +'/' +'%' +'<<' +'>>' +'&' +'|' +'<' +'<=' +'>' +'>=' +'==' +'!=' +'<>' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +null +SCOL +DOT +OPEN_PAR +CLOSE_PAR +COMMA +ASSIGN +STAR +PLUS +MINUS +TILDE +PIPE2 +DIV +MOD +LT2 +GT2 +AMP +PIPE +LT +LT_EQ +GT +GT_EQ +EQ +NOT_EQ1 +NOT_EQ2 +K_ABORT +K_ACTION +K_ADD +K_AFTER +K_ALL +K_ALTER +K_ANALYZE +K_AND +K_AS +K_ASC +K_ATTACH +K_AUTOINCREMENT +K_BEFORE +K_BEGIN +K_BETWEEN +K_BY +K_CASCADE +K_CASE +K_CAST +K_CHECK +K_COLLATE +K_COLUMN +K_COMMIT +K_CONFLICT +K_CONSTRAINT +K_CREATE +K_CROSS +K_CURRENT_DATE +K_CURRENT_TIME +K_CURRENT_TIMESTAMP +K_DATABASE +K_DEFAULT +K_DEFERRABLE +K_DEFERRED +K_DELETE +K_DESC +K_DETACH +K_DISTINCT +K_DROP +K_EACH +K_ELSE +K_END +K_ENABLE +K_ESCAPE +K_EXCEPT +K_EXCLUSIVE +K_EXISTS +K_EXPLAIN +K_FAIL +K_FOR +K_FOREIGN +K_FROM +K_FULL +K_GLOB +K_GROUP +K_HAVING +K_IF +K_IGNORE +K_IMMEDIATE +K_IN +K_INDEX +K_INDEXED +K_INITIALLY +K_INNER +K_INSERT +K_INSTEAD +K_INTERSECT +K_INTO +K_IS +K_ISNULL +K_JOIN +K_KEY +K_LEFT +K_LIKE +K_LIMIT +K_MATCH +K_NATURAL +K_NEXTVAL +K_NO +K_NOT +K_NOTNULL +K_NULL +K_OF +K_OFFSET +K_ON +K_ONLY +K_OR +K_ORDER +K_OUTER +K_PLAN +K_PRAGMA +K_PRIMARY +K_QUERY +K_RAISE +K_RECURSIVE +K_REFERENCES +K_REGEXP +K_REINDEX +K_RELEASE +K_RENAME +K_REPLACE +K_RESTRICT +K_RIGHT +K_ROLLBACK +K_ROW +K_SAVEPOINT +K_SELECT +K_SET +K_TABLE +K_TEMP +K_TEMPORARY +K_THEN +K_TO +K_TRANSACTION +K_TRIGGER +K_UNION +K_UNIQUE +K_UPDATE +K_USING +K_VACUUM +K_VALUES +K_VIEW +K_VIRTUAL +K_WHEN +K_WHERE +K_WITH +K_WITHOUT +IDENTIFIER +NUMERIC_LITERAL +BIND_PARAMETER +STRING_LITERAL +BLOB_LITERAL +SINGLE_LINE_COMMENT +MULTILINE_COMMENT +SPACES +UNEXPECTED_CHAR + +rule names: +parse +error +sql_stmt_list +sql_stmt +alter_table_stmt +alter_table_add_constraint +alter_table_add +analyze_stmt +attach_stmt +begin_stmt +commit_stmt +compound_select_stmt +create_index_stmt +create_table_stmt +create_trigger_stmt +create_view_stmt +create_virtual_table_stmt +delete_stmt +delete_stmt_limited +detach_stmt +drop_index_stmt +drop_table_stmt +drop_trigger_stmt +drop_view_stmt +factored_select_stmt +insert_stmt +pragma_stmt +reindex_stmt +release_stmt +rollback_stmt +savepoint_stmt +simple_select_stmt +select_stmt +select_or_values +update_stmt +update_stmt_limited +vacuum_stmt +column_def +type_name +column_constraint +column_constraint_primary_key +column_constraint_foreign_key +column_constraint_not_null +column_constraint_null +column_default +column_default_value +conflict_clause +expr +foreign_key_clause +fk_target_column_name +raise_function +indexed_column +table_constraint +table_constraint_primary_key +table_constraint_foreign_key +table_constraint_unique +table_constraint_key +fk_origin_column_name +with_clause +qualified_table_name +ordering_term +pragma_value +common_table_expression +result_column +table_or_subquery +join_clause +join_operator +join_constraint +select_core +compound_operator +cte_table_name +signed_number +literal_value +unary_operator +error_message +module_argument +column_alias +keyword +unknown +name +function_name +database_name +source_table_name +table_name +table_or_index_name +new_table_name +column_name +collation_name +foreign_table +index_name +trigger_name +view_name +module_name +pragma_name +savepoint_name +table_alias +transaction_name +any_name + + +atn: +[4, 1, 161, 1866, 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, 1, 0, 1, 0, 5, 0, 199, 8, 0, 10, 0, 12, 0, 202, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 210, 8, 2, 10, 2, 12, 2, 213, 9, 2, 1, 2, 1, 2, 4, 2, 217, 8, 2, 11, 2, 12, 2, 218, 1, 2, 5, 2, 222, 8, 2, 10, 2, 12, 2, 225, 9, 2, 1, 2, 5, 2, 228, 8, 2, 10, 2, 12, 2, 231, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 236, 8, 3, 3, 3, 238, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 270, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 275, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 280, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 290, 8, 4, 1, 4, 3, 4, 293, 8, 4, 1, 4, 3, 4, 296, 8, 4, 1, 4, 3, 4, 299, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 316, 8, 7, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 3, 9, 328, 8, 9, 1, 9, 1, 9, 3, 9, 332, 8, 9, 3, 9, 334, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 339, 8, 10, 3, 10, 341, 8, 10, 1, 11, 1, 11, 3, 11, 345, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 350, 8, 11, 10, 11, 12, 11, 353, 9, 11, 3, 11, 355, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 360, 8, 11, 1, 11, 1, 11, 3, 11, 364, 8, 11, 1, 11, 4, 11, 367, 8, 11, 11, 11, 12, 11, 368, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 376, 8, 11, 10, 11, 12, 11, 379, 9, 11, 3, 11, 381, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 387, 8, 11, 3, 11, 389, 8, 11, 1, 12, 1, 12, 3, 12, 393, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 399, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 404, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 413, 8, 12, 10, 12, 12, 12, 416, 9, 12, 1, 12, 1, 12, 1, 12, 3, 12, 421, 8, 12, 1, 13, 1, 13, 3, 13, 425, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 431, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 436, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 445, 8, 13, 10, 13, 12, 13, 448, 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 453, 8, 13, 1, 13, 1, 13, 3, 13, 457, 8, 13, 1, 13, 3, 13, 460, 8, 13, 1, 14, 1, 14, 3, 14, 464, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 470, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 475, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 482, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 491, 8, 14, 10, 14, 12, 14, 494, 9, 14, 3, 14, 496, 8, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 504, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 510, 8, 14, 1, 14, 1, 14, 3, 14, 514, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 521, 8, 14, 1, 14, 1, 14, 4, 14, 525, 8, 14, 11, 14, 12, 14, 526, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 533, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 539, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 544, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 556, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 561, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 570, 8, 16, 10, 16, 12, 16, 573, 9, 16, 1, 16, 1, 16, 3, 16, 577, 8, 16, 1, 17, 3, 17, 580, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 18, 3, 18, 590, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 597, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 604, 8, 18, 10, 18, 12, 18, 607, 9, 18, 3, 18, 609, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 615, 8, 18, 3, 18, 617, 8, 18, 1, 19, 1, 19, 3, 19, 621, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 629, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 634, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 642, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 647, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 655, 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 660, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 668, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 673, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 3, 24, 679, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, 684, 8, 24, 10, 24, 12, 24, 687, 9, 24, 3, 24, 689, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 695, 8, 24, 10, 24, 12, 24, 698, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 705, 8, 24, 10, 24, 12, 24, 708, 9, 24, 3, 24, 710, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 716, 8, 24, 3, 24, 718, 8, 24, 1, 25, 3, 25, 721, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 740, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 746, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 753, 8, 25, 10, 25, 12, 25, 756, 9, 25, 1, 25, 1, 25, 3, 25, 760, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 767, 8, 25, 10, 25, 12, 25, 770, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 778, 8, 25, 10, 25, 12, 25, 781, 9, 25, 1, 25, 1, 25, 5, 25, 785, 8, 25, 10, 25, 12, 25, 788, 9, 25, 1, 25, 1, 25, 1, 25, 3, 25, 793, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 799, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 808, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 815, 8, 27, 1, 27, 1, 27, 3, 27, 819, 8, 27, 3, 27, 821, 8, 27, 1, 28, 1, 28, 3, 28, 825, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 832, 8, 29, 3, 29, 834, 8, 29, 1, 29, 1, 29, 3, 29, 838, 8, 29, 1, 29, 3, 29, 841, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 848, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 853, 8, 31, 10, 31, 12, 31, 856, 9, 31, 3, 31, 858, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 866, 8, 31, 10, 31, 12, 31, 869, 9, 31, 3, 31, 871, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 877, 8, 31, 3, 31, 879, 8, 31, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 888, 8, 32, 10, 32, 12, 32, 891, 9, 32, 3, 32, 893, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 899, 8, 32, 10, 32, 12, 32, 902, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 909, 8, 32, 10, 32, 12, 32, 912, 9, 32, 3, 32, 914, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 920, 8, 32, 3, 32, 922, 8, 32, 1, 33, 1, 33, 3, 33, 926, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 931, 8, 33, 10, 33, 12, 33, 934, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 940, 8, 33, 10, 33, 12, 33, 943, 9, 33, 1, 33, 3, 33, 946, 8, 33, 3, 33, 948, 8, 33, 1, 33, 1, 33, 3, 33, 952, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 959, 8, 33, 10, 33, 12, 33, 962, 9, 33, 1, 33, 1, 33, 3, 33, 966, 8, 33, 3, 33, 968, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 975, 8, 33, 10, 33, 12, 33, 978, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 986, 8, 33, 10, 33, 12, 33, 989, 9, 33, 1, 33, 1, 33, 5, 33, 993, 8, 33, 10, 33, 12, 33, 996, 9, 33, 3, 33, 998, 8, 33, 1, 34, 3, 34, 1001, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1014, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 1026, 8, 34, 10, 34, 12, 34, 1029, 9, 34, 1, 34, 1, 34, 3, 34, 1033, 8, 34, 1, 35, 3, 35, 1036, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1049, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1061, 8, 35, 10, 35, 12, 35, 1064, 9, 35, 1, 35, 1, 35, 3, 35, 1068, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1075, 8, 35, 10, 35, 12, 35, 1078, 9, 35, 3, 35, 1080, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1086, 8, 35, 3, 35, 1088, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1095, 8, 37, 10, 37, 12, 37, 1098, 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1104, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1111, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1116, 8, 38, 1, 38, 1, 38, 3, 38, 1120, 8, 38, 1, 39, 1, 39, 3, 39, 1124, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1140, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, 1145, 8, 40, 1, 40, 1, 40, 3, 40, 1149, 8, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 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, 44, 1, 44, 3, 44, 1172, 8, 44, 1, 44, 1, 44, 4, 44, 1176, 8, 44, 11, 44, 12, 44, 1177, 3, 44, 1180, 8, 44, 1, 45, 1, 45, 3, 45, 1184, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1189, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1197, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1202, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1211, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1216, 8, 47, 10, 47, 12, 47, 1219, 9, 47, 1, 47, 3, 47, 1222, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1238, 8, 47, 1, 47, 3, 47, 1241, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1249, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 1256, 8, 47, 11, 47, 12, 47, 1257, 1, 47, 1, 47, 3, 47, 1262, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1267, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1297, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1309, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1314, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1326, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1332, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1339, 8, 47, 1, 47, 1, 47, 3, 47, 1343, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1351, 8, 47, 10, 47, 12, 47, 1354, 9, 47, 3, 47, 1356, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 47, 3, 47, 1365, 8, 47, 5, 47, 1367, 8, 47, 10, 47, 12, 47, 1370, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1376, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 1383, 8, 48, 10, 48, 12, 48, 1386, 9, 48, 1, 48, 1, 48, 3, 48, 1390, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1402, 8, 48, 1, 48, 1, 48, 3, 48, 1406, 8, 48, 5, 48, 1408, 8, 48, 10, 48, 12, 48, 1411, 9, 48, 1, 48, 3, 48, 1414, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1421, 8, 48, 1, 48, 3, 48, 1424, 8, 48, 3, 48, 1426, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1436, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, 1, 51, 3, 51, 1446, 8, 51, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1461, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1469, 8, 53, 10, 53, 12, 53, 1472, 9, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1483, 8, 54, 10, 54, 12, 54, 1486, 9, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1502, 8, 55, 10, 55, 12, 55, 1505, 9, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1512, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1518, 8, 56, 10, 56, 12, 56, 1521, 9, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1530, 8, 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, 5, 58, 1544, 8, 58, 10, 58, 12, 58, 1547, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1552, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1560, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1565, 8, 60, 1, 60, 3, 60, 1568, 8, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1573, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 1580, 8, 62, 10, 62, 12, 62, 1583, 9, 62, 1, 62, 1, 62, 3, 62, 1587, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1601, 8, 63, 1, 63, 3, 63, 1604, 8, 63, 3, 63, 1606, 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1611, 8, 64, 1, 64, 1, 64, 3, 64, 1615, 8, 64, 1, 64, 3, 64, 1618, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1625, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1631, 8, 64, 10, 64, 12, 64, 1634, 9, 64, 1, 64, 3, 64, 1637, 8, 64, 1, 64, 1, 64, 3, 64, 1641, 8, 64, 1, 64, 3, 64, 1644, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1650, 8, 64, 1, 64, 3, 64, 1653, 8, 64, 3, 64, 1655, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1662, 8, 65, 10, 65, 12, 65, 1665, 9, 65, 1, 66, 1, 66, 3, 66, 1669, 8, 66, 1, 66, 1, 66, 3, 66, 1673, 8, 66, 1, 66, 1, 66, 3, 66, 1677, 8, 66, 1, 66, 3, 66, 1680, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1689, 8, 67, 10, 67, 12, 67, 1692, 9, 67, 1, 67, 1, 67, 3, 67, 1696, 8, 67, 1, 68, 1, 68, 3, 68, 1700, 8, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1705, 8, 68, 10, 68, 12, 68, 1708, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1714, 8, 68, 10, 68, 12, 68, 1717, 9, 68, 1, 68, 3, 68, 1720, 8, 68, 3, 68, 1722, 8, 68, 1, 68, 1, 68, 3, 68, 1726, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1733, 8, 68, 10, 68, 12, 68, 1736, 9, 68, 1, 68, 1, 68, 3, 68, 1740, 8, 68, 3, 68, 1742, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1749, 8, 68, 10, 68, 12, 68, 1752, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1760, 8, 68, 10, 68, 12, 68, 1763, 9, 68, 1, 68, 1, 68, 5, 68, 1767, 8, 68, 10, 68, 12, 68, 1770, 9, 68, 3, 68, 1772, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1779, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1786, 8, 70, 10, 70, 12, 70, 1789, 9, 70, 1, 70, 1, 70, 3, 70, 1793, 8, 70, 1, 71, 3, 71, 1796, 8, 71, 1, 71, 1, 71, 3, 71, 1800, 8, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1810, 8, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 4, 78, 1817, 8, 78, 11, 78, 12, 78, 1818, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1864, 8, 97, 1, 97, 0, 1, 94, 98, 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, 0, 18, 3, 0, 59, 59, 71, 71, 84, 84, 2, 0, 48, 48, 67, 67, 2, 0, 6, 6, 109, 109, 1, 0, 135, 136, 2, 0, 30, 30, 63, 63, 2, 0, 35, 35, 61, 61, 5, 0, 26, 26, 74, 74, 83, 83, 126, 126, 129, 129, 2, 0, 8, 8, 13, 14, 1, 0, 9, 10, 1, 0, 15, 18, 1, 0, 19, 22, 4, 0, 79, 79, 99, 99, 101, 101, 122, 122, 2, 0, 60, 60, 143, 143, 3, 0, 26, 26, 74, 74, 129, 129, 4, 0, 53, 55, 107, 107, 154, 154, 156, 157, 2, 0, 9, 11, 105, 105, 2, 0, 153, 153, 156, 156, 2, 0, 26, 110, 112, 152, 2141, 0, 200, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 6, 237, 1, 0, 0, 0, 8, 271, 1, 0, 0, 0, 10, 300, 1, 0, 0, 0, 12, 305, 1, 0, 0, 0, 14, 308, 1, 0, 0, 0, 16, 317, 1, 0, 0, 0, 18, 325, 1, 0, 0, 0, 20, 335, 1, 0, 0, 0, 22, 354, 1, 0, 0, 0, 24, 390, 1, 0, 0, 0, 26, 422, 1, 0, 0, 0, 28, 461, 1, 0, 0, 0, 30, 530, 1, 0, 0, 0, 32, 549, 1, 0, 0, 0, 34, 579, 1, 0, 0, 0, 36, 589, 1, 0, 0, 0, 38, 618, 1, 0, 0, 0, 40, 624, 1, 0, 0, 0, 42, 637, 1, 0, 0, 0, 44, 650, 1, 0, 0, 0, 46, 663, 1, 0, 0, 0, 48, 688, 1, 0, 0, 0, 50, 720, 1, 0, 0, 0, 52, 794, 1, 0, 0, 0, 54, 809, 1, 0, 0, 0, 56, 822, 1, 0, 0, 0, 58, 828, 1, 0, 0, 0, 60, 842, 1, 0, 0, 0, 62, 857, 1, 0, 0, 0, 64, 892, 1, 0, 0, 0, 66, 997, 1, 0, 0, 0, 68, 1000, 1, 0, 0, 0, 70, 1035, 1, 0, 0, 0, 72, 1089, 1, 0, 0, 0, 74, 1091, 1, 0, 0, 0, 76, 1099, 1, 0, 0, 0, 78, 1123, 1, 0, 0, 0, 80, 1141, 1, 0, 0, 0, 82, 1150, 1, 0, 0, 0, 84, 1152, 1, 0, 0, 0, 86, 1156, 1, 0, 0, 0, 88, 1159, 1, 0, 0, 0, 90, 1183, 1, 0, 0, 0, 92, 1188, 1, 0, 0, 0, 94, 1266, 1, 0, 0, 0, 96, 1371, 1, 0, 0, 0, 98, 1427, 1, 0, 0, 0, 100, 1429, 1, 0, 0, 0, 102, 1439, 1, 0, 0, 0, 104, 1449, 1, 0, 0, 0, 106, 1462, 1, 0, 0, 0, 108, 1476, 1, 0, 0, 0, 110, 1490, 1, 0, 0, 0, 112, 1509, 1, 0, 0, 0, 114, 1525, 1, 0, 0, 0, 116, 1527, 1, 0, 0, 0, 118, 1551, 1, 0, 0, 0, 120, 1561, 1, 0, 0, 0, 122, 1572, 1, 0, 0, 0, 124, 1574, 1, 0, 0, 0, 126, 1605, 1, 0, 0, 0, 128, 1654, 1, 0, 0, 0, 130, 1656, 1, 0, 0, 0, 132, 1679, 1, 0, 0, 0, 134, 1695, 1, 0, 0, 0, 136, 1771, 1, 0, 0, 0, 138, 1778, 1, 0, 0, 0, 140, 1780, 1, 0, 0, 0, 142, 1799, 1, 0, 0, 0, 144, 1801, 1, 0, 0, 0, 146, 1803, 1, 0, 0, 0, 148, 1805, 1, 0, 0, 0, 150, 1809, 1, 0, 0, 0, 152, 1811, 1, 0, 0, 0, 154, 1813, 1, 0, 0, 0, 156, 1816, 1, 0, 0, 0, 158, 1820, 1, 0, 0, 0, 160, 1822, 1, 0, 0, 0, 162, 1824, 1, 0, 0, 0, 164, 1826, 1, 0, 0, 0, 166, 1828, 1, 0, 0, 0, 168, 1830, 1, 0, 0, 0, 170, 1832, 1, 0, 0, 0, 172, 1834, 1, 0, 0, 0, 174, 1836, 1, 0, 0, 0, 176, 1838, 1, 0, 0, 0, 178, 1840, 1, 0, 0, 0, 180, 1842, 1, 0, 0, 0, 182, 1844, 1, 0, 0, 0, 184, 1846, 1, 0, 0, 0, 186, 1848, 1, 0, 0, 0, 188, 1850, 1, 0, 0, 0, 190, 1852, 1, 0, 0, 0, 192, 1854, 1, 0, 0, 0, 194, 1863, 1, 0, 0, 0, 196, 199, 3, 4, 2, 0, 197, 199, 3, 2, 1, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 0, 0, 1, 204, 1, 1, 0, 0, 0, 205, 206, 5, 161, 0, 0, 206, 207, 6, 1, -1, 0, 207, 3, 1, 0, 0, 0, 208, 210, 5, 2, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 223, 3, 6, 3, 0, 215, 217, 5, 2, 0, 0, 216, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 3, 6, 3, 0, 221, 216, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 2, 0, 0, 227, 226, 1, 0, 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 5, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 235, 5, 73, 0, 0, 233, 234, 5, 118, 0, 0, 234, 236, 5, 115, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 232, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 269, 1, 0, 0, 0, 239, 270, 3, 8, 4, 0, 240, 270, 3, 14, 7, 0, 241, 270, 3, 16, 8, 0, 242, 270, 3, 18, 9, 0, 243, 270, 3, 20, 10, 0, 244, 270, 3, 22, 11, 0, 245, 270, 3, 24, 12, 0, 246, 270, 3, 26, 13, 0, 247, 270, 3, 28, 14, 0, 248, 270, 3, 30, 15, 0, 249, 270, 3, 32, 16, 0, 250, 270, 3, 34, 17, 0, 251, 270, 3, 36, 18, 0, 252, 270, 3, 38, 19, 0, 253, 270, 3, 40, 20, 0, 254, 270, 3, 42, 21, 0, 255, 270, 3, 44, 22, 0, 256, 270, 3, 46, 23, 0, 257, 270, 3, 48, 24, 0, 258, 270, 3, 50, 25, 0, 259, 270, 3, 52, 26, 0, 260, 270, 3, 54, 27, 0, 261, 270, 3, 56, 28, 0, 262, 270, 3, 58, 29, 0, 263, 270, 3, 60, 30, 0, 264, 270, 3, 62, 31, 0, 265, 270, 3, 64, 32, 0, 266, 270, 3, 68, 34, 0, 267, 270, 3, 70, 35, 0, 268, 270, 3, 72, 36, 0, 269, 239, 1, 0, 0, 0, 269, 240, 1, 0, 0, 0, 269, 241, 1, 0, 0, 0, 269, 242, 1, 0, 0, 0, 269, 243, 1, 0, 0, 0, 269, 244, 1, 0, 0, 0, 269, 245, 1, 0, 0, 0, 269, 246, 1, 0, 0, 0, 269, 247, 1, 0, 0, 0, 269, 248, 1, 0, 0, 0, 269, 249, 1, 0, 0, 0, 269, 250, 1, 0, 0, 0, 269, 251, 1, 0, 0, 0, 269, 252, 1, 0, 0, 0, 269, 253, 1, 0, 0, 0, 269, 254, 1, 0, 0, 0, 269, 255, 1, 0, 0, 0, 269, 256, 1, 0, 0, 0, 269, 257, 1, 0, 0, 0, 269, 258, 1, 0, 0, 0, 269, 259, 1, 0, 0, 0, 269, 260, 1, 0, 0, 0, 269, 261, 1, 0, 0, 0, 269, 262, 1, 0, 0, 0, 269, 263, 1, 0, 0, 0, 269, 264, 1, 0, 0, 0, 269, 265, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 268, 1, 0, 0, 0, 270, 7, 1, 0, 0, 0, 271, 272, 5, 31, 0, 0, 272, 274, 5, 134, 0, 0, 273, 275, 5, 111, 0, 0, 274, 273, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 279, 1, 0, 0, 0, 276, 277, 3, 162, 81, 0, 277, 278, 5, 3, 0, 0, 278, 280, 1, 0, 0, 0, 279, 276, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 292, 3, 164, 82, 0, 282, 283, 5, 125, 0, 0, 283, 284, 5, 138, 0, 0, 284, 293, 3, 170, 85, 0, 285, 293, 3, 12, 6, 0, 286, 293, 3, 10, 5, 0, 287, 289, 5, 28, 0, 0, 288, 290, 5, 47, 0, 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 293, 3, 74, 37, 0, 292, 282, 1, 0, 0, 0, 292, 285, 1, 0, 0, 0, 292, 286, 1, 0, 0, 0, 292, 287, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 296, 5, 68, 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 299, 3, 156, 78, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 9, 1, 0, 0, 0, 300, 301, 5, 28, 0, 0, 301, 302, 5, 50, 0, 0, 302, 303, 3, 194, 97, 0, 303, 304, 3, 104, 52, 0, 304, 11, 1, 0, 0, 0, 305, 306, 5, 28, 0, 0, 306, 307, 3, 104, 52, 0, 307, 13, 1, 0, 0, 0, 308, 315, 5, 32, 0, 0, 309, 316, 3, 162, 81, 0, 310, 316, 3, 168, 84, 0, 311, 312, 3, 162, 81, 0, 312, 313, 5, 3, 0, 0, 313, 314, 3, 168, 84, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 15, 1, 0, 0, 0, 317, 319, 5, 36, 0, 0, 318, 320, 5, 56, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322, 3, 94, 47, 0, 322, 323, 5, 34, 0, 0, 323, 324, 3, 162, 81, 0, 324, 17, 1, 0, 0, 0, 325, 327, 5, 39, 0, 0, 326, 328, 7, 0, 0, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 333, 1, 0, 0, 0, 329, 331, 5, 139, 0, 0, 330, 332, 3, 192, 96, 0, 331, 330, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 19, 1, 0, 0, 0, 335, 340, 7, 1, 0, 0, 336, 338, 5, 139, 0, 0, 337, 339, 3, 192, 96, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 336, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 21, 1, 0, 0, 0, 342, 344, 5, 151, 0, 0, 343, 345, 5, 120, 0, 0, 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 351, 3, 124, 62, 0, 347, 348, 5, 6, 0, 0, 348, 350, 3, 124, 62, 0, 349, 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 342, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 366, 3, 136, 68, 0, 357, 359, 5, 141, 0, 0, 358, 360, 5, 30, 0, 0, 359, 358, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 364, 1, 0, 0, 0, 361, 364, 5, 92, 0, 0, 362, 364, 5, 70, 0, 0, 363, 357, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 3, 136, 68, 0, 366, 363, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 380, 1, 0, 0, 0, 370, 371, 5, 113, 0, 0, 371, 372, 5, 41, 0, 0, 372, 377, 3, 120, 60, 0, 373, 374, 5, 6, 0, 0, 374, 376, 3, 120, 60, 0, 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 370, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 388, 1, 0, 0, 0, 382, 383, 5, 100, 0, 0, 383, 386, 3, 94, 47, 0, 384, 385, 7, 2, 0, 0, 385, 387, 3, 94, 47, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 382, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 23, 1, 0, 0, 0, 390, 392, 5, 51, 0, 0, 391, 393, 5, 142, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 5, 86, 0, 0, 395, 396, 5, 82, 0, 0, 396, 397, 5, 105, 0, 0, 397, 399, 5, 72, 0, 0, 398, 395, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 403, 1, 0, 0, 0, 400, 401, 3, 162, 81, 0, 401, 402, 5, 3, 0, 0, 402, 404, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 3, 178, 89, 0, 406, 407, 5, 110, 0, 0, 407, 408, 3, 166, 83, 0, 408, 409, 5, 4, 0, 0, 409, 414, 3, 102, 51, 0, 410, 411, 5, 6, 0, 0, 411, 413, 3, 102, 51, 0, 412, 410, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 420, 5, 5, 0, 0, 418, 419, 5, 150, 0, 0, 419, 421, 3, 94, 47, 0, 420, 418, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 25, 1, 0, 0, 0, 422, 424, 5, 51, 0, 0, 423, 425, 7, 3, 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 430, 5, 134, 0, 0, 427, 428, 5, 82, 0, 0, 428, 429, 5, 105, 0, 0, 429, 431, 5, 72, 0, 0, 430, 427, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 435, 1, 0, 0, 0, 432, 433, 3, 162, 81, 0, 433, 434, 5, 3, 0, 0, 434, 436, 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 456, 3, 166, 83, 0, 438, 439, 5, 4, 0, 0, 439, 446, 3, 74, 37, 0, 440, 441, 5, 6, 0, 0, 441, 445, 3, 104, 52, 0, 442, 443, 5, 6, 0, 0, 443, 445, 3, 74, 37, 0, 444, 440, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 5, 5, 0, 0, 450, 451, 5, 152, 0, 0, 451, 453, 5, 153, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 457, 1, 0, 0, 0, 454, 455, 5, 34, 0, 0, 455, 457, 3, 64, 32, 0, 456, 438, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 459, 1, 0, 0, 0, 458, 460, 3, 156, 78, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 27, 1, 0, 0, 0, 461, 463, 5, 51, 0, 0, 462, 464, 7, 3, 0, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 469, 5, 140, 0, 0, 466, 467, 5, 82, 0, 0, 467, 468, 5, 105, 0, 0, 468, 470, 5, 72, 0, 0, 469, 466, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 474, 1, 0, 0, 0, 471, 472, 3, 162, 81, 0, 472, 473, 5, 3, 0, 0, 473, 475, 1, 0, 0, 0, 474, 471, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 3, 180, 90, 0, 477, 482, 5, 38, 0, 0, 478, 482, 5, 29, 0, 0, 479, 480, 5, 91, 0, 0, 480, 482, 5, 108, 0, 0, 481, 477, 1, 0, 0, 0, 481, 478, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 497, 1, 0, 0, 0, 483, 498, 5, 60, 0, 0, 484, 498, 5, 90, 0, 0, 485, 495, 5, 143, 0, 0, 486, 487, 5, 108, 0, 0, 487, 492, 3, 172, 86, 0, 488, 489, 5, 6, 0, 0, 489, 491, 3, 172, 86, 0, 490, 488, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, 0, 495, 486, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, 483, 1, 0, 0, 0, 497, 484, 1, 0, 0, 0, 497, 485, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 503, 5, 110, 0, 0, 500, 501, 3, 162, 81, 0, 501, 502, 5, 3, 0, 0, 502, 504, 1, 0, 0, 0, 503, 500, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 509, 3, 166, 83, 0, 506, 507, 5, 75, 0, 0, 507, 508, 5, 65, 0, 0, 508, 510, 5, 130, 0, 0, 509, 506, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 512, 5, 149, 0, 0, 512, 514, 3, 94, 47, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 524, 5, 39, 0, 0, 516, 521, 3, 68, 34, 0, 517, 521, 3, 50, 25, 0, 518, 521, 3, 34, 17, 0, 519, 521, 3, 64, 32, 0, 520, 516, 1, 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 5, 2, 0, 0, 523, 525, 1, 0, 0, 0, 524, 520, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 5, 67, 0, 0, 529, 29, 1, 0, 0, 0, 530, 532, 5, 51, 0, 0, 531, 533, 7, 3, 0, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 538, 5, 147, 0, 0, 535, 536, 5, 82, 0, 0, 536, 537, 5, 105, 0, 0, 537, 539, 5, 72, 0, 0, 538, 535, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 1, 0, 0, 0, 540, 541, 3, 162, 81, 0, 541, 542, 5, 3, 0, 0, 542, 544, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 3, 182, 91, 0, 546, 547, 5, 34, 0, 0, 547, 548, 3, 64, 32, 0, 548, 31, 1, 0, 0, 0, 549, 550, 5, 51, 0, 0, 550, 551, 5, 148, 0, 0, 551, 555, 5, 134, 0, 0, 552, 553, 5, 82, 0, 0, 553, 554, 5, 105, 0, 0, 554, 556, 5, 72, 0, 0, 555, 552, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 560, 1, 0, 0, 0, 557, 558, 3, 162, 81, 0, 558, 559, 5, 3, 0, 0, 559, 561, 1, 0, 0, 0, 560, 557, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 166, 83, 0, 563, 564, 5, 144, 0, 0, 564, 576, 3, 184, 92, 0, 565, 566, 5, 4, 0, 0, 566, 571, 3, 150, 75, 0, 567, 568, 5, 6, 0, 0, 568, 570, 3, 150, 75, 0, 569, 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 5, 0, 0, 575, 577, 1, 0, 0, 0, 576, 565, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 33, 1, 0, 0, 0, 578, 580, 3, 116, 58, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 60, 0, 0, 582, 583, 5, 77, 0, 0, 583, 586, 3, 118, 59, 0, 584, 585, 5, 150, 0, 0, 585, 587, 3, 94, 47, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 35, 1, 0, 0, 0, 588, 590, 3, 116, 58, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 60, 0, 0, 592, 593, 5, 77, 0, 0, 593, 596, 3, 118, 59, 0, 594, 595, 5, 150, 0, 0, 595, 597, 3, 94, 47, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 616, 1, 0, 0, 0, 598, 599, 5, 113, 0, 0, 599, 600, 5, 41, 0, 0, 600, 605, 3, 120, 60, 0, 601, 602, 5, 6, 0, 0, 602, 604, 3, 120, 60, 0, 603, 601, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 598, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 614, 3, 94, 47, 0, 612, 613, 7, 2, 0, 0, 613, 615, 3, 94, 47, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 37, 1, 0, 0, 0, 618, 620, 5, 62, 0, 0, 619, 621, 5, 56, 0, 0, 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 623, 3, 162, 81, 0, 623, 39, 1, 0, 0, 0, 624, 625, 5, 64, 0, 0, 625, 628, 5, 86, 0, 0, 626, 627, 5, 82, 0, 0, 627, 629, 5, 72, 0, 0, 628, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 633, 1, 0, 0, 0, 630, 631, 3, 162, 81, 0, 631, 632, 5, 3, 0, 0, 632, 634, 1, 0, 0, 0, 633, 630, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 3, 178, 89, 0, 636, 41, 1, 0, 0, 0, 637, 638, 5, 64, 0, 0, 638, 641, 5, 134, 0, 0, 639, 640, 5, 82, 0, 0, 640, 642, 5, 72, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 3, 162, 81, 0, 644, 645, 5, 3, 0, 0, 645, 647, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 649, 3, 166, 83, 0, 649, 43, 1, 0, 0, 0, 650, 651, 5, 64, 0, 0, 651, 654, 5, 140, 0, 0, 652, 653, 5, 82, 0, 0, 653, 655, 5, 72, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 659, 1, 0, 0, 0, 656, 657, 3, 162, 81, 0, 657, 658, 5, 3, 0, 0, 658, 660, 1, 0, 0, 0, 659, 656, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 662, 3, 180, 90, 0, 662, 45, 1, 0, 0, 0, 663, 664, 5, 64, 0, 0, 664, 667, 5, 147, 0, 0, 665, 666, 5, 82, 0, 0, 666, 668, 5, 72, 0, 0, 667, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 672, 1, 0, 0, 0, 669, 670, 3, 162, 81, 0, 670, 671, 5, 3, 0, 0, 671, 673, 1, 0, 0, 0, 672, 669, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 3, 182, 91, 0, 675, 47, 1, 0, 0, 0, 676, 678, 5, 151, 0, 0, 677, 679, 5, 120, 0, 0, 678, 677, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 685, 3, 124, 62, 0, 681, 682, 5, 6, 0, 0, 682, 684, 3, 124, 62, 0, 683, 681, 1, 0, 0, 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 676, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 696, 3, 136, 68, 0, 691, 692, 3, 138, 69, 0, 692, 693, 3, 136, 68, 0, 693, 695, 1, 0, 0, 0, 694, 691, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 709, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 700, 5, 113, 0, 0, 700, 701, 5, 41, 0, 0, 701, 706, 3, 120, 60, 0, 702, 703, 5, 6, 0, 0, 703, 705, 3, 120, 60, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 699, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 717, 1, 0, 0, 0, 711, 712, 5, 100, 0, 0, 712, 715, 3, 94, 47, 0, 713, 714, 7, 2, 0, 0, 714, 716, 3, 94, 47, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 49, 1, 0, 0, 0, 719, 721, 3, 116, 58, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 739, 1, 0, 0, 0, 722, 740, 5, 90, 0, 0, 723, 740, 5, 126, 0, 0, 724, 725, 5, 90, 0, 0, 725, 726, 5, 112, 0, 0, 726, 740, 5, 126, 0, 0, 727, 728, 5, 90, 0, 0, 728, 729, 5, 112, 0, 0, 729, 740, 5, 129, 0, 0, 730, 731, 5, 90, 0, 0, 731, 732, 5, 112, 0, 0, 732, 740, 5, 26, 0, 0, 733, 734, 5, 90, 0, 0, 734, 735, 5, 112, 0, 0, 735, 740, 5, 74, 0, 0, 736, 737, 5, 90, 0, 0, 737, 738, 5, 112, 0, 0, 738, 740, 5, 83, 0, 0, 739, 722, 1, 0, 0, 0, 739, 723, 1, 0, 0, 0, 739, 724, 1, 0, 0, 0, 739, 727, 1, 0, 0, 0, 739, 730, 1, 0, 0, 0, 739, 733, 1, 0, 0, 0, 739, 736, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 745, 5, 93, 0, 0, 742, 743, 3, 162, 81, 0, 743, 744, 5, 3, 0, 0, 744, 746, 1, 0, 0, 0, 745, 742, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 759, 3, 166, 83, 0, 748, 749, 5, 4, 0, 0, 749, 754, 3, 172, 86, 0, 750, 751, 5, 6, 0, 0, 751, 753, 3, 172, 86, 0, 752, 750, 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, 5, 0, 0, 758, 760, 1, 0, 0, 0, 759, 748, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 792, 1, 0, 0, 0, 761, 762, 5, 146, 0, 0, 762, 763, 5, 4, 0, 0, 763, 768, 3, 94, 47, 0, 764, 765, 5, 6, 0, 0, 765, 767, 3, 94, 47, 0, 766, 764, 1, 0, 0, 0, 767, 770, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 786, 5, 5, 0, 0, 772, 773, 5, 6, 0, 0, 773, 774, 5, 4, 0, 0, 774, 779, 3, 94, 47, 0, 775, 776, 5, 6, 0, 0, 776, 778, 3, 94, 47, 0, 777, 775, 1, 0, 0, 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 782, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, 5, 5, 0, 0, 783, 785, 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 793, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 789, 793, 3, 64, 32, 0, 790, 791, 5, 57, 0, 0, 791, 793, 5, 146, 0, 0, 792, 761, 1, 0, 0, 0, 792, 789, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, 51, 1, 0, 0, 0, 794, 798, 5, 116, 0, 0, 795, 796, 3, 162, 81, 0, 796, 797, 5, 3, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 807, 3, 186, 93, 0, 801, 802, 5, 7, 0, 0, 802, 808, 3, 122, 61, 0, 803, 804, 5, 4, 0, 0, 804, 805, 3, 122, 61, 0, 805, 806, 5, 5, 0, 0, 806, 808, 1, 0, 0, 0, 807, 801, 1, 0, 0, 0, 807, 803, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 53, 1, 0, 0, 0, 809, 820, 5, 123, 0, 0, 810, 821, 3, 174, 87, 0, 811, 812, 3, 162, 81, 0, 812, 813, 5, 3, 0, 0, 813, 815, 1, 0, 0, 0, 814, 811, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 818, 1, 0, 0, 0, 816, 819, 3, 166, 83, 0, 817, 819, 3, 178, 89, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, 820, 810, 1, 0, 0, 0, 820, 814, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 55, 1, 0, 0, 0, 822, 824, 5, 124, 0, 0, 823, 825, 5, 131, 0, 0, 824, 823, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 188, 94, 0, 827, 57, 1, 0, 0, 0, 828, 833, 5, 129, 0, 0, 829, 831, 5, 139, 0, 0, 830, 832, 3, 192, 96, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 834, 1, 0, 0, 0, 833, 829, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 840, 1, 0, 0, 0, 835, 837, 5, 138, 0, 0, 836, 838, 5, 131, 0, 0, 837, 836, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 188, 94, 0, 840, 835, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 59, 1, 0, 0, 0, 842, 843, 5, 131, 0, 0, 843, 844, 3, 188, 94, 0, 844, 61, 1, 0, 0, 0, 845, 847, 5, 151, 0, 0, 846, 848, 5, 120, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 854, 3, 124, 62, 0, 850, 851, 5, 6, 0, 0, 851, 853, 3, 124, 62, 0, 852, 850, 1, 0, 0, 0, 853, 856, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 857, 845, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 870, 3, 136, 68, 0, 860, 861, 5, 113, 0, 0, 861, 862, 5, 41, 0, 0, 862, 867, 3, 120, 60, 0, 863, 864, 5, 6, 0, 0, 864, 866, 3, 120, 60, 0, 865, 863, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, 0, 870, 860, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 878, 1, 0, 0, 0, 872, 873, 5, 100, 0, 0, 873, 876, 3, 94, 47, 0, 874, 875, 7, 2, 0, 0, 875, 877, 3, 94, 47, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 879, 1, 0, 0, 0, 878, 872, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 63, 1, 0, 0, 0, 880, 882, 5, 151, 0, 0, 881, 883, 5, 120, 0, 0, 882, 881, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 889, 3, 124, 62, 0, 885, 886, 5, 6, 0, 0, 886, 888, 3, 124, 62, 0, 887, 885, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 892, 880, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 900, 3, 66, 33, 0, 895, 896, 3, 138, 69, 0, 896, 897, 3, 66, 33, 0, 897, 899, 1, 0, 0, 0, 898, 895, 1, 0, 0, 0, 899, 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 913, 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 113, 0, 0, 904, 905, 5, 41, 0, 0, 905, 910, 3, 120, 60, 0, 906, 907, 5, 6, 0, 0, 907, 909, 3, 120, 60, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, 903, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 921, 1, 0, 0, 0, 915, 916, 5, 100, 0, 0, 916, 919, 3, 94, 47, 0, 917, 918, 7, 2, 0, 0, 918, 920, 3, 94, 47, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 65, 1, 0, 0, 0, 923, 925, 5, 132, 0, 0, 924, 926, 7, 4, 0, 0, 925, 924, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 932, 3, 126, 63, 0, 928, 929, 5, 6, 0, 0, 929, 931, 3, 126, 63, 0, 930, 928, 1, 0, 0, 0, 931, 934, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 947, 1, 0, 0, 0, 934, 932, 1, 0, 0, 0, 935, 945, 5, 77, 0, 0, 936, 941, 3, 128, 64, 0, 937, 938, 5, 6, 0, 0, 938, 940, 3, 128, 64, 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, 946, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 130, 65, 0, 945, 936, 1, 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 935, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 950, 5, 150, 0, 0, 950, 952, 3, 94, 47, 0, 951, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 967, 1, 0, 0, 0, 953, 954, 5, 80, 0, 0, 954, 955, 5, 41, 0, 0, 955, 960, 3, 94, 47, 0, 956, 957, 5, 6, 0, 0, 957, 959, 3, 94, 47, 0, 958, 956, 1, 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 965, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 963, 964, 5, 81, 0, 0, 964, 966, 3, 94, 47, 0, 965, 963, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, 1, 0, 0, 0, 967, 953, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 998, 1, 0, 0, 0, 969, 970, 5, 146, 0, 0, 970, 971, 5, 4, 0, 0, 971, 976, 3, 94, 47, 0, 972, 973, 5, 6, 0, 0, 973, 975, 3, 94, 47, 0, 974, 972, 1, 0, 0, 0, 975, 978, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 979, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 979, 994, 5, 5, 0, 0, 980, 981, 5, 6, 0, 0, 981, 982, 5, 4, 0, 0, 982, 987, 3, 94, 47, 0, 983, 984, 5, 6, 0, 0, 984, 986, 3, 94, 47, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 1, 0, 0, 0, 989, 987, 1, 0, 0, 0, 990, 991, 5, 5, 0, 0, 991, 993, 1, 0, 0, 0, 992, 980, 1, 0, 0, 0, 993, 996, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 923, 1, 0, 0, 0, 997, 969, 1, 0, 0, 0, 998, 67, 1, 0, 0, 0, 999, 1001, 3, 116, 58, 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1013, 5, 143, 0, 0, 1003, 1004, 5, 112, 0, 0, 1004, 1014, 5, 129, 0, 0, 1005, 1006, 5, 112, 0, 0, 1006, 1014, 5, 26, 0, 0, 1007, 1008, 5, 112, 0, 0, 1008, 1014, 5, 126, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1014, 5, 74, 0, 0, 1011, 1012, 5, 112, 0, 0, 1012, 1014, 5, 83, 0, 0, 1013, 1003, 1, 0, 0, 0, 1013, 1005, 1, 0, 0, 0, 1013, 1007, 1, 0, 0, 0, 1013, 1009, 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1016, 3, 118, 59, 0, 1016, 1017, 5, 133, 0, 0, 1017, 1018, 3, 172, 86, 0, 1018, 1019, 5, 7, 0, 0, 1019, 1027, 3, 94, 47, 0, 1020, 1021, 5, 6, 0, 0, 1021, 1022, 3, 172, 86, 0, 1022, 1023, 5, 7, 0, 0, 1023, 1024, 3, 94, 47, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, 0, 0, 1026, 1029, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1032, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 1031, 5, 150, 0, 0, 1031, 1033, 3, 94, 47, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 69, 1, 0, 0, 0, 1034, 1036, 3, 116, 58, 0, 1035, 1034, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1048, 5, 143, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1049, 5, 129, 0, 0, 1040, 1041, 5, 112, 0, 0, 1041, 1049, 5, 26, 0, 0, 1042, 1043, 5, 112, 0, 0, 1043, 1049, 5, 126, 0, 0, 1044, 1045, 5, 112, 0, 0, 1045, 1049, 5, 74, 0, 0, 1046, 1047, 5, 112, 0, 0, 1047, 1049, 5, 83, 0, 0, 1048, 1038, 1, 0, 0, 0, 1048, 1040, 1, 0, 0, 0, 1048, 1042, 1, 0, 0, 0, 1048, 1044, 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1051, 3, 118, 59, 0, 1051, 1052, 5, 133, 0, 0, 1052, 1053, 3, 172, 86, 0, 1053, 1054, 5, 7, 0, 0, 1054, 1062, 3, 94, 47, 0, 1055, 1056, 5, 6, 0, 0, 1056, 1057, 3, 172, 86, 0, 1057, 1058, 5, 7, 0, 0, 1058, 1059, 3, 94, 47, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1067, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 150, 0, 0, 1066, 1068, 3, 94, 47, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1087, 1, 0, 0, 0, 1069, 1070, 5, 113, 0, 0, 1070, 1071, 5, 41, 0, 0, 1071, 1076, 3, 120, 60, 0, 1072, 1073, 5, 6, 0, 0, 1073, 1075, 3, 120, 60, 0, 1074, 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, 1069, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, 5, 100, 0, 0, 1082, 1085, 3, 94, 47, 0, 1083, 1084, 7, 2, 0, 0, 1084, 1086, 3, 94, 47, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1088, 1, 0, 0, 0, 1087, 1079, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 71, 1, 0, 0, 0, 1089, 1090, 5, 145, 0, 0, 1090, 73, 1, 0, 0, 0, 1091, 1096, 3, 172, 86, 0, 1092, 1095, 3, 78, 39, 0, 1093, 1095, 3, 76, 38, 0, 1094, 1092, 1, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1098, 1, 0, 0, 0, 1096, 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 75, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1099, 1119, 3, 158, 79, 0, 1100, 1101, 5, 4, 0, 0, 1101, 1103, 3, 142, 71, 0, 1102, 1104, 3, 194, 97, 0, 1103, 1102, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 5, 5, 0, 0, 1106, 1120, 1, 0, 0, 0, 1107, 1108, 5, 4, 0, 0, 1108, 1110, 3, 142, 71, 0, 1109, 1111, 3, 194, 97, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1113, 5, 6, 0, 0, 1113, 1115, 3, 142, 71, 0, 1114, 1116, 3, 194, 97, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1118, 5, 5, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, 1100, 1, 0, 0, 0, 1119, 1107, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 77, 1, 0, 0, 0, 1121, 1122, 5, 50, 0, 0, 1122, 1124, 3, 158, 79, 0, 1123, 1121, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, 1140, 3, 80, 40, 0, 1126, 1140, 3, 82, 41, 0, 1127, 1140, 3, 84, 42, 0, 1128, 1140, 3, 86, 43, 0, 1129, 1130, 5, 142, 0, 0, 1130, 1140, 3, 92, 46, 0, 1131, 1132, 5, 45, 0, 0, 1132, 1133, 5, 4, 0, 0, 1133, 1134, 3, 94, 47, 0, 1134, 1135, 5, 5, 0, 0, 1135, 1140, 1, 0, 0, 0, 1136, 1140, 3, 88, 44, 0, 1137, 1138, 5, 46, 0, 0, 1138, 1140, 3, 174, 87, 0, 1139, 1125, 1, 0, 0, 0, 1139, 1126, 1, 0, 0, 0, 1139, 1127, 1, 0, 0, 0, 1139, 1128, 1, 0, 0, 0, 1139, 1129, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 79, 1, 0, 0, 0, 1141, 1142, 5, 117, 0, 0, 1142, 1144, 5, 97, 0, 0, 1143, 1145, 7, 5, 0, 0, 1144, 1143, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1148, 3, 92, 46, 0, 1147, 1149, 5, 37, 0, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 81, 1, 0, 0, 0, 1150, 1151, 3, 96, 48, 0, 1151, 83, 1, 0, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 1155, 3, 92, 46, 0, 1155, 85, 1, 0, 0, 0, 1156, 1157, 5, 107, 0, 0, 1157, 1158, 3, 92, 46, 0, 1158, 87, 1, 0, 0, 0, 1159, 1171, 5, 57, 0, 0, 1160, 1172, 3, 90, 45, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 94, 47, 0, 1163, 1164, 5, 5, 0, 0, 1164, 1172, 1, 0, 0, 0, 1165, 1166, 5, 103, 0, 0, 1166, 1167, 5, 4, 0, 0, 1167, 1168, 3, 94, 47, 0, 1168, 1169, 5, 5, 0, 0, 1169, 1172, 1, 0, 0, 0, 1170, 1172, 3, 194, 97, 0, 1171, 1160, 1, 0, 0, 0, 1171, 1161, 1, 0, 0, 0, 1171, 1165, 1, 0, 0, 0, 1171, 1170, 1, 0, 0, 0, 1172, 1179, 1, 0, 0, 0, 1173, 1175, 5, 1, 0, 0, 1174, 1176, 3, 194, 97, 0, 1175, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1173, 1, 0, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 89, 1, 0, 0, 0, 1181, 1184, 3, 142, 71, 0, 1182, 1184, 3, 144, 72, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 91, 1, 0, 0, 0, 1185, 1186, 5, 110, 0, 0, 1186, 1187, 5, 49, 0, 0, 1187, 1189, 7, 6, 0, 0, 1188, 1185, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 93, 1, 0, 0, 0, 1190, 1191, 6, 47, -1, 0, 1191, 1267, 3, 144, 72, 0, 1192, 1267, 5, 155, 0, 0, 1193, 1194, 3, 162, 81, 0, 1194, 1195, 5, 3, 0, 0, 1195, 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 3, 166, 83, 0, 1199, 1200, 5, 3, 0, 0, 1200, 1202, 1, 0, 0, 0, 1201, 1196, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1267, 3, 172, 86, 0, 1204, 1205, 3, 146, 73, 0, 1205, 1206, 3, 94, 47, 21, 1206, 1267, 1, 0, 0, 0, 1207, 1208, 3, 160, 80, 0, 1208, 1221, 5, 4, 0, 0, 1209, 1211, 5, 63, 0, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1217, 3, 94, 47, 0, 1213, 1214, 5, 6, 0, 0, 1214, 1216, 3, 94, 47, 0, 1215, 1213, 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, 5, 8, 0, 0, 1221, 1210, 1, 0, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 5, 0, 0, 1224, 1267, 1, 0, 0, 0, 1225, 1226, 5, 4, 0, 0, 1226, 1227, 3, 94, 47, 0, 1227, 1228, 5, 5, 0, 0, 1228, 1267, 1, 0, 0, 0, 1229, 1230, 5, 44, 0, 0, 1230, 1231, 5, 4, 0, 0, 1231, 1232, 3, 94, 47, 0, 1232, 1233, 5, 34, 0, 0, 1233, 1234, 3, 76, 38, 0, 1234, 1235, 5, 5, 0, 0, 1235, 1267, 1, 0, 0, 0, 1236, 1238, 5, 105, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1241, 5, 72, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, 3, 64, 32, 0, 1244, 1245, 5, 5, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1248, 5, 43, 0, 0, 1247, 1249, 3, 94, 47, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1255, 1, 0, 0, 0, 1250, 1251, 5, 149, 0, 0, 1251, 1252, 3, 94, 47, 0, 1252, 1253, 5, 137, 0, 0, 1253, 1254, 3, 94, 47, 0, 1254, 1256, 1, 0, 0, 0, 1255, 1250, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, 1260, 5, 66, 0, 0, 1260, 1262, 3, 94, 47, 0, 1261, 1259, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 5, 67, 0, 0, 1264, 1267, 1, 0, 0, 0, 1265, 1267, 3, 100, 50, 0, 1266, 1190, 1, 0, 0, 0, 1266, 1192, 1, 0, 0, 0, 1266, 1201, 1, 0, 0, 0, 1266, 1204, 1, 0, 0, 0, 1266, 1207, 1, 0, 0, 0, 1266, 1225, 1, 0, 0, 0, 1266, 1229, 1, 0, 0, 0, 1266, 1240, 1, 0, 0, 0, 1266, 1246, 1, 0, 0, 0, 1266, 1265, 1, 0, 0, 0, 1267, 1368, 1, 0, 0, 0, 1268, 1269, 10, 20, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, 1367, 3, 94, 47, 21, 1271, 1272, 10, 19, 0, 0, 1272, 1273, 7, 7, 0, 0, 1273, 1367, 3, 94, 47, 20, 1274, 1275, 10, 18, 0, 0, 1275, 1276, 7, 8, 0, 0, 1276, 1367, 3, 94, 47, 19, 1277, 1278, 10, 17, 0, 0, 1278, 1279, 7, 9, 0, 0, 1279, 1367, 3, 94, 47, 18, 1280, 1281, 10, 16, 0, 0, 1281, 1282, 7, 10, 0, 0, 1282, 1367, 3, 94, 47, 17, 1283, 1296, 10, 15, 0, 0, 1284, 1297, 5, 7, 0, 0, 1285, 1297, 5, 23, 0, 0, 1286, 1297, 5, 24, 0, 0, 1287, 1297, 5, 25, 0, 0, 1288, 1297, 5, 94, 0, 0, 1289, 1290, 5, 94, 0, 0, 1290, 1297, 5, 105, 0, 0, 1291, 1297, 5, 85, 0, 0, 1292, 1297, 5, 99, 0, 0, 1293, 1297, 5, 79, 0, 0, 1294, 1297, 5, 101, 0, 0, 1295, 1297, 5, 122, 0, 0, 1296, 1284, 1, 0, 0, 0, 1296, 1285, 1, 0, 0, 0, 1296, 1286, 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1288, 1, 0, 0, 0, 1296, 1289, 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1367, 3, 94, 47, 16, 1299, 1300, 10, 14, 0, 0, 1300, 1301, 5, 33, 0, 0, 1301, 1367, 3, 94, 47, 15, 1302, 1303, 10, 13, 0, 0, 1303, 1304, 5, 112, 0, 0, 1304, 1367, 3, 94, 47, 14, 1305, 1306, 10, 6, 0, 0, 1306, 1308, 5, 94, 0, 0, 1307, 1309, 5, 105, 0, 0, 1308, 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1367, 3, 94, 47, 7, 1311, 1313, 10, 5, 0, 0, 1312, 1314, 5, 105, 0, 0, 1313, 1312, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, 5, 40, 0, 0, 1316, 1317, 3, 94, 47, 0, 1317, 1318, 5, 33, 0, 0, 1318, 1319, 3, 94, 47, 6, 1319, 1367, 1, 0, 0, 0, 1320, 1321, 10, 9, 0, 0, 1321, 1322, 5, 46, 0, 0, 1322, 1367, 3, 174, 87, 0, 1323, 1325, 10, 8, 0, 0, 1324, 1326, 5, 105, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1328, 7, 11, 0, 0, 1328, 1331, 3, 94, 47, 0, 1329, 1330, 5, 69, 0, 0, 1330, 1332, 3, 94, 47, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1367, 1, 0, 0, 0, 1333, 1338, 10, 7, 0, 0, 1334, 1339, 5, 95, 0, 0, 1335, 1339, 5, 106, 0, 0, 1336, 1337, 5, 105, 0, 0, 1337, 1339, 5, 107, 0, 0, 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1342, 10, 4, 0, 0, 1341, 1343, 5, 105, 0, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1364, 5, 85, 0, 0, 1345, 1355, 5, 4, 0, 0, 1346, 1356, 3, 64, 32, 0, 1347, 1352, 3, 94, 47, 0, 1348, 1349, 5, 6, 0, 0, 1349, 1351, 3, 94, 47, 0, 1350, 1348, 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, 1346, 1, 0, 0, 0, 1355, 1347, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1365, 5, 5, 0, 0, 1358, 1359, 3, 162, 81, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1362, 1, 0, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1365, 3, 166, 83, 0, 1364, 1345, 1, 0, 0, 0, 1364, 1361, 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1268, 1, 0, 0, 0, 1366, 1271, 1, 0, 0, 0, 1366, 1274, 1, 0, 0, 0, 1366, 1277, 1, 0, 0, 0, 1366, 1280, 1, 0, 0, 0, 1366, 1283, 1, 0, 0, 0, 1366, 1299, 1, 0, 0, 0, 1366, 1302, 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1311, 1, 0, 0, 0, 1366, 1320, 1, 0, 0, 0, 1366, 1323, 1, 0, 0, 0, 1366, 1333, 1, 0, 0, 0, 1366, 1340, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 95, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1375, 5, 121, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 1374, 5, 3, 0, 0, 1374, 1376, 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1389, 3, 176, 88, 0, 1378, 1379, 5, 4, 0, 0, 1379, 1384, 3, 98, 49, 0, 1380, 1381, 5, 6, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, 5, 5, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1378, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1409, 1, 0, 0, 0, 1391, 1392, 5, 110, 0, 0, 1392, 1401, 7, 12, 0, 0, 1393, 1394, 5, 133, 0, 0, 1394, 1402, 5, 107, 0, 0, 1395, 1396, 5, 133, 0, 0, 1396, 1402, 5, 57, 0, 0, 1397, 1402, 5, 42, 0, 0, 1398, 1402, 5, 127, 0, 0, 1399, 1400, 5, 104, 0, 0, 1400, 1402, 5, 27, 0, 0, 1401, 1393, 1, 0, 0, 0, 1401, 1395, 1, 0, 0, 0, 1401, 1397, 1, 0, 0, 0, 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1406, 1, 0, 0, 0, 1403, 1404, 5, 101, 0, 0, 1404, 1406, 3, 158, 79, 0, 1405, 1391, 1, 0, 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1408, 1, 0, 0, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1425, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1414, 5, 105, 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1420, 5, 58, 0, 0, 1416, 1417, 5, 88, 0, 0, 1417, 1421, 5, 59, 0, 0, 1418, 1419, 5, 88, 0, 0, 1419, 1421, 5, 84, 0, 0, 1420, 1416, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, 1, 0, 0, 0, 1422, 1424, 5, 68, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1413, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 3, 158, 79, 0, 1428, 99, 1, 0, 0, 0, 1429, 1430, 5, 119, 0, 0, 1430, 1435, 5, 4, 0, 0, 1431, 1436, 5, 83, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 5, 6, 0, 0, 1434, 1436, 3, 148, 74, 0, 1435, 1431, 1, 0, 0, 0, 1435, 1432, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1438, 5, 5, 0, 0, 1438, 101, 1, 0, 0, 0, 1439, 1442, 3, 172, 86, 0, 1440, 1441, 5, 46, 0, 0, 1441, 1443, 3, 174, 87, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, 1446, 7, 5, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 103, 1, 0, 0, 0, 1447, 1448, 5, 50, 0, 0, 1448, 1450, 3, 158, 79, 0, 1449, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1460, 1, 0, 0, 0, 1451, 1461, 3, 106, 53, 0, 1452, 1461, 3, 112, 56, 0, 1453, 1461, 3, 110, 55, 0, 1454, 1455, 5, 45, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 94, 47, 0, 1457, 1458, 5, 5, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1461, 3, 108, 54, 0, 1460, 1451, 1, 0, 0, 0, 1460, 1452, 1, 0, 0, 0, 1460, 1453, 1, 0, 0, 0, 1460, 1454, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 105, 1, 0, 0, 0, 1462, 1463, 5, 117, 0, 0, 1463, 1464, 5, 97, 0, 0, 1464, 1465, 5, 4, 0, 0, 1465, 1470, 3, 102, 51, 0, 1466, 1467, 5, 6, 0, 0, 1467, 1469, 3, 102, 51, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1473, 1474, 5, 5, 0, 0, 1474, 1475, 3, 92, 46, 0, 1475, 107, 1, 0, 0, 0, 1476, 1477, 5, 76, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, 5, 4, 0, 0, 1479, 1484, 3, 114, 57, 0, 1480, 1481, 5, 6, 0, 0, 1481, 1483, 3, 114, 57, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1487, 1488, 5, 5, 0, 0, 1488, 1489, 3, 96, 48, 0, 1489, 109, 1, 0, 0, 0, 1490, 1492, 5, 142, 0, 0, 1491, 1493, 5, 97, 0, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1496, 3, 158, 79, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1498, 5, 4, 0, 0, 1498, 1503, 3, 102, 51, 0, 1499, 1500, 5, 6, 0, 0, 1500, 1502, 3, 102, 51, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 5, 5, 0, 0, 1507, 1508, 3, 92, 46, 0, 1508, 111, 1, 0, 0, 0, 1509, 1511, 5, 97, 0, 0, 1510, 1512, 3, 158, 79, 0, 1511, 1510, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 5, 4, 0, 0, 1514, 1519, 3, 102, 51, 0, 1515, 1516, 5, 6, 0, 0, 1516, 1518, 3, 102, 51, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 5, 0, 0, 1523, 1524, 3, 92, 46, 0, 1524, 113, 1, 0, 0, 0, 1525, 1526, 3, 172, 86, 0, 1526, 115, 1, 0, 0, 0, 1527, 1529, 5, 151, 0, 0, 1528, 1530, 5, 120, 0, 0, 1529, 1528, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 3, 140, 70, 0, 1532, 1533, 5, 34, 0, 0, 1533, 1534, 5, 4, 0, 0, 1534, 1535, 3, 64, 32, 0, 1535, 1545, 5, 5, 0, 0, 1536, 1537, 5, 6, 0, 0, 1537, 1538, 3, 140, 70, 0, 1538, 1539, 5, 34, 0, 0, 1539, 1540, 5, 4, 0, 0, 1540, 1541, 3, 64, 32, 0, 1541, 1542, 5, 5, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1536, 1, 0, 0, 0, 1544, 1547, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 117, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1549, 3, 162, 81, 0, 1549, 1550, 5, 3, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1548, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1559, 3, 166, 83, 0, 1554, 1555, 5, 87, 0, 0, 1555, 1556, 5, 41, 0, 0, 1556, 1560, 3, 178, 89, 0, 1557, 1558, 5, 105, 0, 0, 1558, 1560, 5, 87, 0, 0, 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, 1560, 119, 1, 0, 0, 0, 1561, 1564, 3, 94, 47, 0, 1562, 1563, 5, 46, 0, 0, 1563, 1565, 3, 174, 87, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1567, 1, 0, 0, 0, 1566, 1568, 7, 5, 0, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 121, 1, 0, 0, 0, 1569, 1573, 3, 142, 71, 0, 1570, 1573, 3, 158, 79, 0, 1571, 1573, 5, 156, 0, 0, 1572, 1569, 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1571, 1, 0, 0, 0, 1573, 123, 1, 0, 0, 0, 1574, 1586, 3, 166, 83, 0, 1575, 1576, 5, 4, 0, 0, 1576, 1581, 3, 172, 86, 0, 1577, 1578, 5, 6, 0, 0, 1578, 1580, 3, 172, 86, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1584, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, 1585, 5, 5, 0, 0, 1585, 1587, 1, 0, 0, 0, 1586, 1575, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, 1590, 5, 4, 0, 0, 1590, 1591, 3, 64, 32, 0, 1591, 1592, 5, 5, 0, 0, 1592, 125, 1, 0, 0, 0, 1593, 1606, 5, 8, 0, 0, 1594, 1595, 3, 166, 83, 0, 1595, 1596, 5, 3, 0, 0, 1596, 1597, 5, 8, 0, 0, 1597, 1606, 1, 0, 0, 0, 1598, 1603, 3, 94, 47, 0, 1599, 1601, 5, 34, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 3, 152, 76, 0, 1603, 1600, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, 1593, 1, 0, 0, 0, 1605, 1594, 1, 0, 0, 0, 1605, 1598, 1, 0, 0, 0, 1606, 127, 1, 0, 0, 0, 1607, 1608, 3, 162, 81, 0, 1608, 1609, 5, 3, 0, 0, 1609, 1611, 1, 0, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1617, 3, 166, 83, 0, 1613, 1615, 5, 34, 0, 0, 1614, 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1618, 3, 190, 95, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1624, 1, 0, 0, 0, 1619, 1620, 5, 87, 0, 0, 1620, 1621, 5, 41, 0, 0, 1621, 1625, 3, 178, 89, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1625, 5, 87, 0, 0, 1624, 1619, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1655, 1, 0, 0, 0, 1626, 1636, 5, 4, 0, 0, 1627, 1632, 3, 128, 64, 0, 1628, 1629, 5, 6, 0, 0, 1629, 1631, 3, 128, 64, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1637, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 3, 130, 65, 0, 1636, 1627, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 1643, 5, 5, 0, 0, 1639, 1641, 5, 34, 0, 0, 1640, 1639, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 3, 190, 95, 0, 1643, 1640, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1655, 1, 0, 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 1647, 3, 64, 32, 0, 1647, 1652, 5, 5, 0, 0, 1648, 1650, 5, 34, 0, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1653, 3, 190, 95, 0, 1652, 1649, 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1655, 1, 0, 0, 0, 1654, 1610, 1, 0, 0, 0, 1654, 1626, 1, 0, 0, 0, 1654, 1645, 1, 0, 0, 0, 1655, 129, 1, 0, 0, 0, 1656, 1663, 3, 128, 64, 0, 1657, 1658, 3, 132, 66, 0, 1658, 1659, 3, 128, 64, 0, 1659, 1660, 3, 134, 67, 0, 1660, 1662, 1, 0, 0, 0, 1661, 1657, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 131, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, 1666, 1680, 5, 6, 0, 0, 1667, 1669, 5, 102, 0, 0, 1668, 1667, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1672, 5, 98, 0, 0, 1671, 1673, 5, 114, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 1677, 1, 0, 0, 0, 1674, 1677, 5, 89, 0, 0, 1675, 1677, 5, 52, 0, 0, 1676, 1670, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1680, 5, 96, 0, 0, 1679, 1666, 1, 0, 0, 0, 1679, 1668, 1, 0, 0, 0, 1680, 133, 1, 0, 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 1696, 3, 94, 47, 0, 1683, 1684, 5, 144, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 1690, 3, 172, 86, 0, 1686, 1687, 5, 6, 0, 0, 1687, 1689, 3, 172, 86, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 5, 5, 0, 0, 1694, 1696, 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1695, 1683, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 135, 1, 0, 0, 0, 1697, 1699, 5, 132, 0, 0, 1698, 1700, 7, 4, 0, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1706, 3, 126, 63, 0, 1702, 1703, 5, 6, 0, 0, 1703, 1705, 3, 126, 63, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1721, 1, 0, 0, 0, 1708, 1706, 1, 0, 0, 0, 1709, 1719, 5, 77, 0, 0, 1710, 1715, 3, 128, 64, 0, 1711, 1712, 5, 6, 0, 0, 1712, 1714, 3, 128, 64, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1720, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 130, 65, 0, 1719, 1710, 1, 0, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1709, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1725, 1, 0, 0, 0, 1723, 1724, 5, 150, 0, 0, 1724, 1726, 3, 94, 47, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1741, 1, 0, 0, 0, 1727, 1728, 5, 80, 0, 0, 1728, 1729, 5, 41, 0, 0, 1729, 1734, 3, 94, 47, 0, 1730, 1731, 5, 6, 0, 0, 1731, 1733, 3, 94, 47, 0, 1732, 1730, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1739, 1, 0, 0, 0, 1736, 1734, 1, 0, 0, 0, 1737, 1738, 5, 81, 0, 0, 1738, 1740, 3, 94, 47, 0, 1739, 1737, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1727, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1772, 1, 0, 0, 0, 1743, 1744, 5, 146, 0, 0, 1744, 1745, 5, 4, 0, 0, 1745, 1750, 3, 94, 47, 0, 1746, 1747, 5, 6, 0, 0, 1747, 1749, 3, 94, 47, 0, 1748, 1746, 1, 0, 0, 0, 1749, 1752, 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1768, 5, 5, 0, 0, 1754, 1755, 5, 6, 0, 0, 1755, 1756, 5, 4, 0, 0, 1756, 1761, 3, 94, 47, 0, 1757, 1758, 5, 6, 0, 0, 1758, 1760, 3, 94, 47, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1764, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1765, 5, 5, 0, 0, 1765, 1767, 1, 0, 0, 0, 1766, 1754, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1768, 1, 0, 0, 0, 1771, 1697, 1, 0, 0, 0, 1771, 1743, 1, 0, 0, 0, 1772, 137, 1, 0, 0, 0, 1773, 1779, 5, 141, 0, 0, 1774, 1775, 5, 141, 0, 0, 1775, 1779, 5, 30, 0, 0, 1776, 1779, 5, 92, 0, 0, 1777, 1779, 5, 70, 0, 0, 1778, 1773, 1, 0, 0, 0, 1778, 1774, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1778, 1777, 1, 0, 0, 0, 1779, 139, 1, 0, 0, 0, 1780, 1792, 3, 166, 83, 0, 1781, 1782, 5, 4, 0, 0, 1782, 1787, 3, 172, 86, 0, 1783, 1784, 5, 6, 0, 0, 1784, 1786, 3, 172, 86, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1787, 1, 0, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1793, 1, 0, 0, 0, 1792, 1781, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 141, 1, 0, 0, 0, 1794, 1796, 7, 8, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1800, 5, 154, 0, 0, 1798, 1800, 5, 8, 0, 0, 1799, 1795, 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 143, 1, 0, 0, 0, 1801, 1802, 7, 14, 0, 0, 1802, 145, 1, 0, 0, 0, 1803, 1804, 7, 15, 0, 0, 1804, 147, 1, 0, 0, 0, 1805, 1806, 5, 156, 0, 0, 1806, 149, 1, 0, 0, 0, 1807, 1810, 3, 94, 47, 0, 1808, 1810, 3, 74, 37, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1808, 1, 0, 0, 0, 1810, 151, 1, 0, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 153, 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 155, 1, 0, 0, 0, 1815, 1817, 9, 0, 0, 0, 1816, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1816, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 157, 1, 0, 0, 0, 1820, 1821, 3, 194, 97, 0, 1821, 159, 1, 0, 0, 0, 1822, 1823, 3, 194, 97, 0, 1823, 161, 1, 0, 0, 0, 1824, 1825, 3, 194, 97, 0, 1825, 163, 1, 0, 0, 0, 1826, 1827, 3, 194, 97, 0, 1827, 165, 1, 0, 0, 0, 1828, 1829, 3, 194, 97, 0, 1829, 167, 1, 0, 0, 0, 1830, 1831, 3, 194, 97, 0, 1831, 169, 1, 0, 0, 0, 1832, 1833, 3, 194, 97, 0, 1833, 171, 1, 0, 0, 0, 1834, 1835, 3, 194, 97, 0, 1835, 173, 1, 0, 0, 0, 1836, 1837, 3, 194, 97, 0, 1837, 175, 1, 0, 0, 0, 1838, 1839, 3, 194, 97, 0, 1839, 177, 1, 0, 0, 0, 1840, 1841, 3, 194, 97, 0, 1841, 179, 1, 0, 0, 0, 1842, 1843, 3, 194, 97, 0, 1843, 181, 1, 0, 0, 0, 1844, 1845, 3, 194, 97, 0, 1845, 183, 1, 0, 0, 0, 1846, 1847, 3, 194, 97, 0, 1847, 185, 1, 0, 0, 0, 1848, 1849, 3, 194, 97, 0, 1849, 187, 1, 0, 0, 0, 1850, 1851, 3, 194, 97, 0, 1851, 189, 1, 0, 0, 0, 1852, 1853, 3, 194, 97, 0, 1853, 191, 1, 0, 0, 0, 1854, 1855, 3, 194, 97, 0, 1855, 193, 1, 0, 0, 0, 1856, 1864, 5, 153, 0, 0, 1857, 1864, 3, 154, 77, 0, 1858, 1864, 5, 156, 0, 0, 1859, 1860, 5, 4, 0, 0, 1860, 1861, 3, 194, 97, 0, 1861, 1862, 5, 5, 0, 0, 1862, 1864, 1, 0, 0, 0, 1863, 1856, 1, 0, 0, 0, 1863, 1857, 1, 0, 0, 0, 1863, 1858, 1, 0, 0, 0, 1863, 1859, 1, 0, 0, 0, 1864, 195, 1, 0, 0, 0, 260, 198, 200, 211, 218, 223, 229, 235, 237, 269, 274, 279, 289, 292, 295, 298, 315, 319, 327, 331, 333, 338, 340, 344, 351, 354, 359, 363, 368, 377, 380, 386, 388, 392, 398, 403, 414, 420, 424, 430, 435, 444, 446, 452, 456, 459, 463, 469, 474, 481, 492, 495, 497, 503, 509, 513, 520, 526, 532, 538, 543, 555, 560, 571, 576, 579, 586, 589, 596, 605, 608, 614, 616, 620, 628, 633, 641, 646, 654, 659, 667, 672, 678, 685, 688, 696, 706, 709, 715, 717, 720, 739, 745, 754, 759, 768, 779, 786, 792, 798, 807, 814, 818, 820, 824, 831, 833, 837, 840, 847, 854, 857, 867, 870, 876, 878, 882, 889, 892, 900, 910, 913, 919, 921, 925, 932, 941, 945, 947, 951, 960, 965, 967, 976, 987, 994, 997, 1000, 1013, 1027, 1032, 1035, 1048, 1062, 1067, 1076, 1079, 1085, 1087, 1094, 1096, 1103, 1110, 1115, 1119, 1123, 1139, 1144, 1148, 1171, 1177, 1179, 1183, 1188, 1196, 1201, 1210, 1217, 1221, 1237, 1240, 1248, 1257, 1261, 1266, 1296, 1308, 1313, 1325, 1331, 1338, 1342, 1352, 1355, 1361, 1364, 1366, 1368, 1375, 1384, 1389, 1401, 1405, 1409, 1413, 1420, 1423, 1425, 1435, 1442, 1445, 1449, 1460, 1470, 1484, 1492, 1495, 1503, 1511, 1519, 1529, 1545, 1551, 1559, 1564, 1567, 1572, 1581, 1586, 1600, 1603, 1605, 1610, 1614, 1617, 1624, 1632, 1636, 1640, 1643, 1649, 1652, 1654, 1663, 1668, 1672, 1676, 1679, 1690, 1695, 1699, 1706, 1715, 1719, 1721, 1725, 1734, 1739, 1741, 1750, 1761, 1768, 1771, 1778, 1787, 1792, 1795, 1799, 1809, 1818, 1863] \ No newline at end of file diff --git a/processor/stream_processor/test/parser/Sql.tokens b/processor/stream_processor/test/parser/Sql.tokens new file mode 100644 index 000000000000..70454cda7204 --- /dev/null +++ b/processor/stream_processor/test/parser/Sql.tokens @@ -0,0 +1,186 @@ +T__0=1 +SCOL=2 +DOT=3 +OPEN_PAR=4 +CLOSE_PAR=5 +COMMA=6 +ASSIGN=7 +STAR=8 +PLUS=9 +MINUS=10 +TILDE=11 +PIPE2=12 +DIV=13 +MOD=14 +LT2=15 +GT2=16 +AMP=17 +PIPE=18 +LT=19 +LT_EQ=20 +GT=21 +GT_EQ=22 +EQ=23 +NOT_EQ1=24 +NOT_EQ2=25 +K_ABORT=26 +K_ACTION=27 +K_ADD=28 +K_AFTER=29 +K_ALL=30 +K_ALTER=31 +K_ANALYZE=32 +K_AND=33 +K_AS=34 +K_ASC=35 +K_ATTACH=36 +K_AUTOINCREMENT=37 +K_BEFORE=38 +K_BEGIN=39 +K_BETWEEN=40 +K_BY=41 +K_CASCADE=42 +K_CASE=43 +K_CAST=44 +K_CHECK=45 +K_COLLATE=46 +K_COLUMN=47 +K_COMMIT=48 +K_CONFLICT=49 +K_CONSTRAINT=50 +K_CREATE=51 +K_CROSS=52 +K_CURRENT_DATE=53 +K_CURRENT_TIME=54 +K_CURRENT_TIMESTAMP=55 +K_DATABASE=56 +K_DEFAULT=57 +K_DEFERRABLE=58 +K_DEFERRED=59 +K_DELETE=60 +K_DESC=61 +K_DETACH=62 +K_DISTINCT=63 +K_DROP=64 +K_EACH=65 +K_ELSE=66 +K_END=67 +K_ENABLE=68 +K_ESCAPE=69 +K_EXCEPT=70 +K_EXCLUSIVE=71 +K_EXISTS=72 +K_EXPLAIN=73 +K_FAIL=74 +K_FOR=75 +K_FOREIGN=76 +K_FROM=77 +K_FULL=78 +K_GLOB=79 +K_GROUP=80 +K_HAVING=81 +K_IF=82 +K_IGNORE=83 +K_IMMEDIATE=84 +K_IN=85 +K_INDEX=86 +K_INDEXED=87 +K_INITIALLY=88 +K_INNER=89 +K_INSERT=90 +K_INSTEAD=91 +K_INTERSECT=92 +K_INTO=93 +K_IS=94 +K_ISNULL=95 +K_JOIN=96 +K_KEY=97 +K_LEFT=98 +K_LIKE=99 +K_LIMIT=100 +K_MATCH=101 +K_NATURAL=102 +K_NEXTVAL=103 +K_NO=104 +K_NOT=105 +K_NOTNULL=106 +K_NULL=107 +K_OF=108 +K_OFFSET=109 +K_ON=110 +K_ONLY=111 +K_OR=112 +K_ORDER=113 +K_OUTER=114 +K_PLAN=115 +K_PRAGMA=116 +K_PRIMARY=117 +K_QUERY=118 +K_RAISE=119 +K_RECURSIVE=120 +K_REFERENCES=121 +K_REGEXP=122 +K_REINDEX=123 +K_RELEASE=124 +K_RENAME=125 +K_REPLACE=126 +K_RESTRICT=127 +K_RIGHT=128 +K_ROLLBACK=129 +K_ROW=130 +K_SAVEPOINT=131 +K_SELECT=132 +K_SET=133 +K_TABLE=134 +K_TEMP=135 +K_TEMPORARY=136 +K_THEN=137 +K_TO=138 +K_TRANSACTION=139 +K_TRIGGER=140 +K_UNION=141 +K_UNIQUE=142 +K_UPDATE=143 +K_USING=144 +K_VACUUM=145 +K_VALUES=146 +K_VIEW=147 +K_VIRTUAL=148 +K_WHEN=149 +K_WHERE=150 +K_WITH=151 +K_WITHOUT=152 +IDENTIFIER=153 +NUMERIC_LITERAL=154 +BIND_PARAMETER=155 +STRING_LITERAL=156 +BLOB_LITERAL=157 +SINGLE_LINE_COMMENT=158 +MULTILINE_COMMENT=159 +SPACES=160 +UNEXPECTED_CHAR=161 +'::'=1 +';'=2 +'.'=3 +'('=4 +')'=5 +','=6 +'='=7 +'*'=8 +'+'=9 +'-'=10 +'~'=11 +'||'=12 +'/'=13 +'%'=14 +'<<'=15 +'>>'=16 +'&'=17 +'|'=18 +'<'=19 +'<='=20 +'>'=21 +'>='=22 +'=='=23 +'!='=24 +'<>'=25 diff --git a/processor/stream_processor/test/parser/SqlLexer.interp b/processor/stream_processor/test/parser/SqlLexer.interp new file mode 100644 index 000000000000..d43689e2eb1e --- /dev/null +++ b/processor/stream_processor/test/parser/SqlLexer.interp @@ -0,0 +1,527 @@ +token literal names: +null +'::' +';' +'.' +'(' +')' +',' +'=' +'*' +'+' +'-' +'~' +'||' +'/' +'%' +'<<' +'>>' +'&' +'|' +'<' +'<=' +'>' +'>=' +'==' +'!=' +'<>' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null + +token symbolic names: +null +null +SCOL +DOT +OPEN_PAR +CLOSE_PAR +COMMA +ASSIGN +STAR +PLUS +MINUS +TILDE +PIPE2 +DIV +MOD +LT2 +GT2 +AMP +PIPE +LT +LT_EQ +GT +GT_EQ +EQ +NOT_EQ1 +NOT_EQ2 +K_ABORT +K_ACTION +K_ADD +K_AFTER +K_ALL +K_ALTER +K_ANALYZE +K_AND +K_AS +K_ASC +K_ATTACH +K_AUTOINCREMENT +K_BEFORE +K_BEGIN +K_BETWEEN +K_BY +K_CASCADE +K_CASE +K_CAST +K_CHECK +K_COLLATE +K_COLUMN +K_COMMIT +K_CONFLICT +K_CONSTRAINT +K_CREATE +K_CROSS +K_CURRENT_DATE +K_CURRENT_TIME +K_CURRENT_TIMESTAMP +K_DATABASE +K_DEFAULT +K_DEFERRABLE +K_DEFERRED +K_DELETE +K_DESC +K_DETACH +K_DISTINCT +K_DROP +K_EACH +K_ELSE +K_END +K_ENABLE +K_ESCAPE +K_EXCEPT +K_EXCLUSIVE +K_EXISTS +K_EXPLAIN +K_FAIL +K_FOR +K_FOREIGN +K_FROM +K_FULL +K_GLOB +K_GROUP +K_HAVING +K_IF +K_IGNORE +K_IMMEDIATE +K_IN +K_INDEX +K_INDEXED +K_INITIALLY +K_INNER +K_INSERT +K_INSTEAD +K_INTERSECT +K_INTO +K_IS +K_ISNULL +K_JOIN +K_KEY +K_LEFT +K_LIKE +K_LIMIT +K_MATCH +K_NATURAL +K_NEXTVAL +K_NO +K_NOT +K_NOTNULL +K_NULL +K_OF +K_OFFSET +K_ON +K_ONLY +K_OR +K_ORDER +K_OUTER +K_PLAN +K_PRAGMA +K_PRIMARY +K_QUERY +K_RAISE +K_RECURSIVE +K_REFERENCES +K_REGEXP +K_REINDEX +K_RELEASE +K_RENAME +K_REPLACE +K_RESTRICT +K_RIGHT +K_ROLLBACK +K_ROW +K_SAVEPOINT +K_SELECT +K_SET +K_TABLE +K_TEMP +K_TEMPORARY +K_THEN +K_TO +K_TRANSACTION +K_TRIGGER +K_UNION +K_UNIQUE +K_UPDATE +K_USING +K_VACUUM +K_VALUES +K_VIEW +K_VIRTUAL +K_WHEN +K_WHERE +K_WITH +K_WITHOUT +IDENTIFIER +NUMERIC_LITERAL +BIND_PARAMETER +STRING_LITERAL +BLOB_LITERAL +SINGLE_LINE_COMMENT +MULTILINE_COMMENT +SPACES +UNEXPECTED_CHAR + +rule names: +T__0 +SCOL +DOT +OPEN_PAR +CLOSE_PAR +COMMA +ASSIGN +STAR +PLUS +MINUS +TILDE +PIPE2 +DIV +MOD +LT2 +GT2 +AMP +PIPE +LT +LT_EQ +GT +GT_EQ +EQ +NOT_EQ1 +NOT_EQ2 +K_ABORT +K_ACTION +K_ADD +K_AFTER +K_ALL +K_ALTER +K_ANALYZE +K_AND +K_AS +K_ASC +K_ATTACH +K_AUTOINCREMENT +K_BEFORE +K_BEGIN +K_BETWEEN +K_BY +K_CASCADE +K_CASE +K_CAST +K_CHECK +K_COLLATE +K_COLUMN +K_COMMIT +K_CONFLICT +K_CONSTRAINT +K_CREATE +K_CROSS +K_CURRENT_DATE +K_CURRENT_TIME +K_CURRENT_TIMESTAMP +K_DATABASE +K_DEFAULT +K_DEFERRABLE +K_DEFERRED +K_DELETE +K_DESC +K_DETACH +K_DISTINCT +K_DROP +K_EACH +K_ELSE +K_END +K_ENABLE +K_ESCAPE +K_EXCEPT +K_EXCLUSIVE +K_EXISTS +K_EXPLAIN +K_FAIL +K_FOR +K_FOREIGN +K_FROM +K_FULL +K_GLOB +K_GROUP +K_HAVING +K_IF +K_IGNORE +K_IMMEDIATE +K_IN +K_INDEX +K_INDEXED +K_INITIALLY +K_INNER +K_INSERT +K_INSTEAD +K_INTERSECT +K_INTO +K_IS +K_ISNULL +K_JOIN +K_KEY +K_LEFT +K_LIKE +K_LIMIT +K_MATCH +K_NATURAL +K_NEXTVAL +K_NO +K_NOT +K_NOTNULL +K_NULL +K_OF +K_OFFSET +K_ON +K_ONLY +K_OR +K_ORDER +K_OUTER +K_PLAN +K_PRAGMA +K_PRIMARY +K_QUERY +K_RAISE +K_RECURSIVE +K_REFERENCES +K_REGEXP +K_REINDEX +K_RELEASE +K_RENAME +K_REPLACE +K_RESTRICT +K_RIGHT +K_ROLLBACK +K_ROW +K_SAVEPOINT +K_SELECT +K_SET +K_TABLE +K_TEMP +K_TEMPORARY +K_THEN +K_TO +K_TRANSACTION +K_TRIGGER +K_UNION +K_UNIQUE +K_UPDATE +K_USING +K_VACUUM +K_VALUES +K_VIEW +K_VIRTUAL +K_WHEN +K_WHERE +K_WITH +K_WITHOUT +IDENTIFIER +NUMERIC_LITERAL +BIND_PARAMETER +STRING_LITERAL +BLOB_LITERAL +SINGLE_LINE_COMMENT +MULTILINE_COMMENT +SPACES +UNEXPECTED_CHAR +DIGIT +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[4, 0, 161, 1483, 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, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 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, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 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, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 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, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 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, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 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, 47, 1, 47, 1, 47, 1, 48, 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, 49, 1, 49, 1, 49, 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, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 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, 53, 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, 54, 1, 54, 1, 54, 1, 54, 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, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 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, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 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, 63, 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, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 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, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1295, 8, 152, 10, 152, 12, 152, 1298, 9, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1305, 8, 152, 10, 152, 12, 152, 1308, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1313, 8, 152, 10, 152, 12, 152, 1316, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1321, 8, 152, 10, 152, 12, 152, 1324, 9, 152, 3, 152, 1326, 8, 152, 1, 153, 4, 153, 1329, 8, 153, 11, 153, 12, 153, 1330, 1, 153, 1, 153, 5, 153, 1335, 8, 153, 10, 153, 12, 153, 1338, 9, 153, 3, 153, 1340, 8, 153, 1, 153, 1, 153, 3, 153, 1344, 8, 153, 1, 153, 4, 153, 1347, 8, 153, 11, 153, 12, 153, 1348, 3, 153, 1351, 8, 153, 1, 153, 1, 153, 4, 153, 1355, 8, 153, 11, 153, 12, 153, 1356, 1, 153, 1, 153, 3, 153, 1361, 8, 153, 1, 153, 4, 153, 1364, 8, 153, 11, 153, 12, 153, 1365, 3, 153, 1368, 8, 153, 3, 153, 1370, 8, 153, 1, 154, 1, 154, 5, 154, 1374, 8, 154, 10, 154, 12, 154, 1377, 9, 154, 1, 154, 1, 154, 3, 154, 1381, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 1387, 8, 155, 10, 155, 12, 155, 1390, 9, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1401, 8, 157, 10, 157, 12, 157, 1404, 9, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 1412, 8, 158, 10, 158, 12, 158, 1415, 9, 158, 1, 158, 1, 158, 1, 158, 3, 158, 1420, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 1413, 0, 188, 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, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, 0, 375, 0, 1, 0, 37, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 3, 0, 36, 36, 58, 58, 64, 64, 1, 0, 39, 39, 2, 0, 10, 10, 13, 13, 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 1482, 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, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 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, 1, 377, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 5, 382, 1, 0, 0, 0, 7, 384, 1, 0, 0, 0, 9, 386, 1, 0, 0, 0, 11, 388, 1, 0, 0, 0, 13, 390, 1, 0, 0, 0, 15, 392, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 396, 1, 0, 0, 0, 21, 398, 1, 0, 0, 0, 23, 400, 1, 0, 0, 0, 25, 403, 1, 0, 0, 0, 27, 405, 1, 0, 0, 0, 29, 407, 1, 0, 0, 0, 31, 410, 1, 0, 0, 0, 33, 413, 1, 0, 0, 0, 35, 415, 1, 0, 0, 0, 37, 417, 1, 0, 0, 0, 39, 419, 1, 0, 0, 0, 41, 422, 1, 0, 0, 0, 43, 424, 1, 0, 0, 0, 45, 427, 1, 0, 0, 0, 47, 430, 1, 0, 0, 0, 49, 433, 1, 0, 0, 0, 51, 436, 1, 0, 0, 0, 53, 442, 1, 0, 0, 0, 55, 449, 1, 0, 0, 0, 57, 453, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 463, 1, 0, 0, 0, 63, 469, 1, 0, 0, 0, 65, 477, 1, 0, 0, 0, 67, 481, 1, 0, 0, 0, 69, 484, 1, 0, 0, 0, 71, 488, 1, 0, 0, 0, 73, 495, 1, 0, 0, 0, 75, 509, 1, 0, 0, 0, 77, 516, 1, 0, 0, 0, 79, 522, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 533, 1, 0, 0, 0, 85, 541, 1, 0, 0, 0, 87, 546, 1, 0, 0, 0, 89, 551, 1, 0, 0, 0, 91, 557, 1, 0, 0, 0, 93, 565, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 579, 1, 0, 0, 0, 99, 588, 1, 0, 0, 0, 101, 599, 1, 0, 0, 0, 103, 606, 1, 0, 0, 0, 105, 612, 1, 0, 0, 0, 107, 625, 1, 0, 0, 0, 109, 638, 1, 0, 0, 0, 111, 656, 1, 0, 0, 0, 113, 665, 1, 0, 0, 0, 115, 673, 1, 0, 0, 0, 117, 684, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 700, 1, 0, 0, 0, 123, 705, 1, 0, 0, 0, 125, 712, 1, 0, 0, 0, 127, 721, 1, 0, 0, 0, 129, 726, 1, 0, 0, 0, 131, 731, 1, 0, 0, 0, 133, 736, 1, 0, 0, 0, 135, 740, 1, 0, 0, 0, 137, 747, 1, 0, 0, 0, 139, 754, 1, 0, 0, 0, 141, 761, 1, 0, 0, 0, 143, 771, 1, 0, 0, 0, 145, 778, 1, 0, 0, 0, 147, 786, 1, 0, 0, 0, 149, 791, 1, 0, 0, 0, 151, 795, 1, 0, 0, 0, 153, 803, 1, 0, 0, 0, 155, 808, 1, 0, 0, 0, 157, 813, 1, 0, 0, 0, 159, 818, 1, 0, 0, 0, 161, 824, 1, 0, 0, 0, 163, 831, 1, 0, 0, 0, 165, 834, 1, 0, 0, 0, 167, 841, 1, 0, 0, 0, 169, 851, 1, 0, 0, 0, 171, 854, 1, 0, 0, 0, 173, 860, 1, 0, 0, 0, 175, 868, 1, 0, 0, 0, 177, 878, 1, 0, 0, 0, 179, 884, 1, 0, 0, 0, 181, 891, 1, 0, 0, 0, 183, 899, 1, 0, 0, 0, 185, 909, 1, 0, 0, 0, 187, 914, 1, 0, 0, 0, 189, 917, 1, 0, 0, 0, 191, 924, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, 933, 1, 0, 0, 0, 197, 938, 1, 0, 0, 0, 199, 943, 1, 0, 0, 0, 201, 949, 1, 0, 0, 0, 203, 955, 1, 0, 0, 0, 205, 963, 1, 0, 0, 0, 207, 971, 1, 0, 0, 0, 209, 974, 1, 0, 0, 0, 211, 978, 1, 0, 0, 0, 213, 986, 1, 0, 0, 0, 215, 991, 1, 0, 0, 0, 217, 994, 1, 0, 0, 0, 219, 1001, 1, 0, 0, 0, 221, 1004, 1, 0, 0, 0, 223, 1009, 1, 0, 0, 0, 225, 1012, 1, 0, 0, 0, 227, 1018, 1, 0, 0, 0, 229, 1024, 1, 0, 0, 0, 231, 1029, 1, 0, 0, 0, 233, 1036, 1, 0, 0, 0, 235, 1044, 1, 0, 0, 0, 237, 1050, 1, 0, 0, 0, 239, 1056, 1, 0, 0, 0, 241, 1066, 1, 0, 0, 0, 243, 1077, 1, 0, 0, 0, 245, 1084, 1, 0, 0, 0, 247, 1092, 1, 0, 0, 0, 249, 1100, 1, 0, 0, 0, 251, 1107, 1, 0, 0, 0, 253, 1115, 1, 0, 0, 0, 255, 1124, 1, 0, 0, 0, 257, 1130, 1, 0, 0, 0, 259, 1139, 1, 0, 0, 0, 261, 1143, 1, 0, 0, 0, 263, 1153, 1, 0, 0, 0, 265, 1160, 1, 0, 0, 0, 267, 1164, 1, 0, 0, 0, 269, 1170, 1, 0, 0, 0, 271, 1175, 1, 0, 0, 0, 273, 1185, 1, 0, 0, 0, 275, 1190, 1, 0, 0, 0, 277, 1193, 1, 0, 0, 0, 279, 1205, 1, 0, 0, 0, 281, 1213, 1, 0, 0, 0, 283, 1219, 1, 0, 0, 0, 285, 1226, 1, 0, 0, 0, 287, 1233, 1, 0, 0, 0, 289, 1239, 1, 0, 0, 0, 291, 1246, 1, 0, 0, 0, 293, 1253, 1, 0, 0, 0, 295, 1258, 1, 0, 0, 0, 297, 1266, 1, 0, 0, 0, 299, 1271, 1, 0, 0, 0, 301, 1277, 1, 0, 0, 0, 303, 1282, 1, 0, 0, 0, 305, 1325, 1, 0, 0, 0, 307, 1369, 1, 0, 0, 0, 309, 1380, 1, 0, 0, 0, 311, 1382, 1, 0, 0, 0, 313, 1393, 1, 0, 0, 0, 315, 1396, 1, 0, 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1423, 1, 0, 0, 0, 321, 1427, 1, 0, 0, 0, 323, 1429, 1, 0, 0, 0, 325, 1431, 1, 0, 0, 0, 327, 1433, 1, 0, 0, 0, 329, 1435, 1, 0, 0, 0, 331, 1437, 1, 0, 0, 0, 333, 1439, 1, 0, 0, 0, 335, 1441, 1, 0, 0, 0, 337, 1443, 1, 0, 0, 0, 339, 1445, 1, 0, 0, 0, 341, 1447, 1, 0, 0, 0, 343, 1449, 1, 0, 0, 0, 345, 1451, 1, 0, 0, 0, 347, 1453, 1, 0, 0, 0, 349, 1455, 1, 0, 0, 0, 351, 1457, 1, 0, 0, 0, 353, 1459, 1, 0, 0, 0, 355, 1461, 1, 0, 0, 0, 357, 1463, 1, 0, 0, 0, 359, 1465, 1, 0, 0, 0, 361, 1467, 1, 0, 0, 0, 363, 1469, 1, 0, 0, 0, 365, 1471, 1, 0, 0, 0, 367, 1473, 1, 0, 0, 0, 369, 1475, 1, 0, 0, 0, 371, 1477, 1, 0, 0, 0, 373, 1479, 1, 0, 0, 0, 375, 1481, 1, 0, 0, 0, 377, 378, 5, 58, 0, 0, 378, 379, 5, 58, 0, 0, 379, 2, 1, 0, 0, 0, 380, 381, 5, 59, 0, 0, 381, 4, 1, 0, 0, 0, 382, 383, 5, 46, 0, 0, 383, 6, 1, 0, 0, 0, 384, 385, 5, 40, 0, 0, 385, 8, 1, 0, 0, 0, 386, 387, 5, 41, 0, 0, 387, 10, 1, 0, 0, 0, 388, 389, 5, 44, 0, 0, 389, 12, 1, 0, 0, 0, 390, 391, 5, 61, 0, 0, 391, 14, 1, 0, 0, 0, 392, 393, 5, 42, 0, 0, 393, 16, 1, 0, 0, 0, 394, 395, 5, 43, 0, 0, 395, 18, 1, 0, 0, 0, 396, 397, 5, 45, 0, 0, 397, 20, 1, 0, 0, 0, 398, 399, 5, 126, 0, 0, 399, 22, 1, 0, 0, 0, 400, 401, 5, 124, 0, 0, 401, 402, 5, 124, 0, 0, 402, 24, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 26, 1, 0, 0, 0, 405, 406, 5, 37, 0, 0, 406, 28, 1, 0, 0, 0, 407, 408, 5, 60, 0, 0, 408, 409, 5, 60, 0, 0, 409, 30, 1, 0, 0, 0, 410, 411, 5, 62, 0, 0, 411, 412, 5, 62, 0, 0, 412, 32, 1, 0, 0, 0, 413, 414, 5, 38, 0, 0, 414, 34, 1, 0, 0, 0, 415, 416, 5, 124, 0, 0, 416, 36, 1, 0, 0, 0, 417, 418, 5, 60, 0, 0, 418, 38, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 421, 5, 61, 0, 0, 421, 40, 1, 0, 0, 0, 422, 423, 5, 62, 0, 0, 423, 42, 1, 0, 0, 0, 424, 425, 5, 62, 0, 0, 425, 426, 5, 61, 0, 0, 426, 44, 1, 0, 0, 0, 427, 428, 5, 61, 0, 0, 428, 429, 5, 61, 0, 0, 429, 46, 1, 0, 0, 0, 430, 431, 5, 33, 0, 0, 431, 432, 5, 61, 0, 0, 432, 48, 1, 0, 0, 0, 433, 434, 5, 60, 0, 0, 434, 435, 5, 62, 0, 0, 435, 50, 1, 0, 0, 0, 436, 437, 3, 325, 162, 0, 437, 438, 3, 327, 163, 0, 438, 439, 3, 353, 176, 0, 439, 440, 3, 359, 179, 0, 440, 441, 3, 363, 181, 0, 441, 52, 1, 0, 0, 0, 442, 443, 3, 325, 162, 0, 443, 444, 3, 329, 164, 0, 444, 445, 3, 363, 181, 0, 445, 446, 3, 341, 170, 0, 446, 447, 3, 353, 176, 0, 447, 448, 3, 351, 175, 0, 448, 54, 1, 0, 0, 0, 449, 450, 3, 325, 162, 0, 450, 451, 3, 331, 165, 0, 451, 452, 3, 331, 165, 0, 452, 56, 1, 0, 0, 0, 453, 454, 3, 325, 162, 0, 454, 455, 3, 335, 167, 0, 455, 456, 3, 363, 181, 0, 456, 457, 3, 333, 166, 0, 457, 458, 3, 359, 179, 0, 458, 58, 1, 0, 0, 0, 459, 460, 3, 325, 162, 0, 460, 461, 3, 347, 173, 0, 461, 462, 3, 347, 173, 0, 462, 60, 1, 0, 0, 0, 463, 464, 3, 325, 162, 0, 464, 465, 3, 347, 173, 0, 465, 466, 3, 363, 181, 0, 466, 467, 3, 333, 166, 0, 467, 468, 3, 359, 179, 0, 468, 62, 1, 0, 0, 0, 469, 470, 3, 325, 162, 0, 470, 471, 3, 351, 175, 0, 471, 472, 3, 325, 162, 0, 472, 473, 3, 347, 173, 0, 473, 474, 3, 373, 186, 0, 474, 475, 3, 375, 187, 0, 475, 476, 3, 333, 166, 0, 476, 64, 1, 0, 0, 0, 477, 478, 3, 325, 162, 0, 478, 479, 3, 351, 175, 0, 479, 480, 3, 331, 165, 0, 480, 66, 1, 0, 0, 0, 481, 482, 3, 325, 162, 0, 482, 483, 3, 361, 180, 0, 483, 68, 1, 0, 0, 0, 484, 485, 3, 325, 162, 0, 485, 486, 3, 361, 180, 0, 486, 487, 3, 329, 164, 0, 487, 70, 1, 0, 0, 0, 488, 489, 3, 325, 162, 0, 489, 490, 3, 363, 181, 0, 490, 491, 3, 363, 181, 0, 491, 492, 3, 325, 162, 0, 492, 493, 3, 329, 164, 0, 493, 494, 3, 339, 169, 0, 494, 72, 1, 0, 0, 0, 495, 496, 3, 325, 162, 0, 496, 497, 3, 365, 182, 0, 497, 498, 3, 363, 181, 0, 498, 499, 3, 353, 176, 0, 499, 500, 3, 341, 170, 0, 500, 501, 3, 351, 175, 0, 501, 502, 3, 329, 164, 0, 502, 503, 3, 359, 179, 0, 503, 504, 3, 333, 166, 0, 504, 505, 3, 349, 174, 0, 505, 506, 3, 333, 166, 0, 506, 507, 3, 351, 175, 0, 507, 508, 3, 363, 181, 0, 508, 74, 1, 0, 0, 0, 509, 510, 3, 327, 163, 0, 510, 511, 3, 333, 166, 0, 511, 512, 3, 335, 167, 0, 512, 513, 3, 353, 176, 0, 513, 514, 3, 359, 179, 0, 514, 515, 3, 333, 166, 0, 515, 76, 1, 0, 0, 0, 516, 517, 3, 327, 163, 0, 517, 518, 3, 333, 166, 0, 518, 519, 3, 337, 168, 0, 519, 520, 3, 341, 170, 0, 520, 521, 3, 351, 175, 0, 521, 78, 1, 0, 0, 0, 522, 523, 3, 327, 163, 0, 523, 524, 3, 333, 166, 0, 524, 525, 3, 363, 181, 0, 525, 526, 3, 369, 184, 0, 526, 527, 3, 333, 166, 0, 527, 528, 3, 333, 166, 0, 528, 529, 3, 351, 175, 0, 529, 80, 1, 0, 0, 0, 530, 531, 3, 327, 163, 0, 531, 532, 3, 373, 186, 0, 532, 82, 1, 0, 0, 0, 533, 534, 3, 329, 164, 0, 534, 535, 3, 325, 162, 0, 535, 536, 3, 361, 180, 0, 536, 537, 3, 329, 164, 0, 537, 538, 3, 325, 162, 0, 538, 539, 3, 331, 165, 0, 539, 540, 3, 333, 166, 0, 540, 84, 1, 0, 0, 0, 541, 542, 3, 329, 164, 0, 542, 543, 3, 325, 162, 0, 543, 544, 3, 361, 180, 0, 544, 545, 3, 333, 166, 0, 545, 86, 1, 0, 0, 0, 546, 547, 3, 329, 164, 0, 547, 548, 3, 325, 162, 0, 548, 549, 3, 361, 180, 0, 549, 550, 3, 363, 181, 0, 550, 88, 1, 0, 0, 0, 551, 552, 3, 329, 164, 0, 552, 553, 3, 339, 169, 0, 553, 554, 3, 333, 166, 0, 554, 555, 3, 329, 164, 0, 555, 556, 3, 345, 172, 0, 556, 90, 1, 0, 0, 0, 557, 558, 3, 329, 164, 0, 558, 559, 3, 353, 176, 0, 559, 560, 3, 347, 173, 0, 560, 561, 3, 347, 173, 0, 561, 562, 3, 325, 162, 0, 562, 563, 3, 363, 181, 0, 563, 564, 3, 333, 166, 0, 564, 92, 1, 0, 0, 0, 565, 566, 3, 329, 164, 0, 566, 567, 3, 353, 176, 0, 567, 568, 3, 347, 173, 0, 568, 569, 3, 365, 182, 0, 569, 570, 3, 349, 174, 0, 570, 571, 3, 351, 175, 0, 571, 94, 1, 0, 0, 0, 572, 573, 3, 329, 164, 0, 573, 574, 3, 353, 176, 0, 574, 575, 3, 349, 174, 0, 575, 576, 3, 349, 174, 0, 576, 577, 3, 341, 170, 0, 577, 578, 3, 363, 181, 0, 578, 96, 1, 0, 0, 0, 579, 580, 3, 329, 164, 0, 580, 581, 3, 353, 176, 0, 581, 582, 3, 351, 175, 0, 582, 583, 3, 335, 167, 0, 583, 584, 3, 347, 173, 0, 584, 585, 3, 341, 170, 0, 585, 586, 3, 329, 164, 0, 586, 587, 3, 363, 181, 0, 587, 98, 1, 0, 0, 0, 588, 589, 3, 329, 164, 0, 589, 590, 3, 353, 176, 0, 590, 591, 3, 351, 175, 0, 591, 592, 3, 361, 180, 0, 592, 593, 3, 363, 181, 0, 593, 594, 3, 359, 179, 0, 594, 595, 3, 325, 162, 0, 595, 596, 3, 341, 170, 0, 596, 597, 3, 351, 175, 0, 597, 598, 3, 363, 181, 0, 598, 100, 1, 0, 0, 0, 599, 600, 3, 329, 164, 0, 600, 601, 3, 359, 179, 0, 601, 602, 3, 333, 166, 0, 602, 603, 3, 325, 162, 0, 603, 604, 3, 363, 181, 0, 604, 605, 3, 333, 166, 0, 605, 102, 1, 0, 0, 0, 606, 607, 3, 329, 164, 0, 607, 608, 3, 359, 179, 0, 608, 609, 3, 353, 176, 0, 609, 610, 3, 361, 180, 0, 610, 611, 3, 361, 180, 0, 611, 104, 1, 0, 0, 0, 612, 613, 3, 329, 164, 0, 613, 614, 3, 365, 182, 0, 614, 615, 3, 359, 179, 0, 615, 616, 3, 359, 179, 0, 616, 617, 3, 333, 166, 0, 617, 618, 3, 351, 175, 0, 618, 619, 3, 363, 181, 0, 619, 620, 5, 95, 0, 0, 620, 621, 3, 331, 165, 0, 621, 622, 3, 325, 162, 0, 622, 623, 3, 363, 181, 0, 623, 624, 3, 333, 166, 0, 624, 106, 1, 0, 0, 0, 625, 626, 3, 329, 164, 0, 626, 627, 3, 365, 182, 0, 627, 628, 3, 359, 179, 0, 628, 629, 3, 359, 179, 0, 629, 630, 3, 333, 166, 0, 630, 631, 3, 351, 175, 0, 631, 632, 3, 363, 181, 0, 632, 633, 5, 95, 0, 0, 633, 634, 3, 363, 181, 0, 634, 635, 3, 341, 170, 0, 635, 636, 3, 349, 174, 0, 636, 637, 3, 333, 166, 0, 637, 108, 1, 0, 0, 0, 638, 639, 3, 329, 164, 0, 639, 640, 3, 365, 182, 0, 640, 641, 3, 359, 179, 0, 641, 642, 3, 359, 179, 0, 642, 643, 3, 333, 166, 0, 643, 644, 3, 351, 175, 0, 644, 645, 3, 363, 181, 0, 645, 646, 5, 95, 0, 0, 646, 647, 3, 363, 181, 0, 647, 648, 3, 341, 170, 0, 648, 649, 3, 349, 174, 0, 649, 650, 3, 333, 166, 0, 650, 651, 3, 361, 180, 0, 651, 652, 3, 363, 181, 0, 652, 653, 3, 325, 162, 0, 653, 654, 3, 349, 174, 0, 654, 655, 3, 355, 177, 0, 655, 110, 1, 0, 0, 0, 656, 657, 3, 331, 165, 0, 657, 658, 3, 325, 162, 0, 658, 659, 3, 363, 181, 0, 659, 660, 3, 325, 162, 0, 660, 661, 3, 327, 163, 0, 661, 662, 3, 325, 162, 0, 662, 663, 3, 361, 180, 0, 663, 664, 3, 333, 166, 0, 664, 112, 1, 0, 0, 0, 665, 666, 3, 331, 165, 0, 666, 667, 3, 333, 166, 0, 667, 668, 3, 335, 167, 0, 668, 669, 3, 325, 162, 0, 669, 670, 3, 365, 182, 0, 670, 671, 3, 347, 173, 0, 671, 672, 3, 363, 181, 0, 672, 114, 1, 0, 0, 0, 673, 674, 3, 331, 165, 0, 674, 675, 3, 333, 166, 0, 675, 676, 3, 335, 167, 0, 676, 677, 3, 333, 166, 0, 677, 678, 3, 359, 179, 0, 678, 679, 3, 359, 179, 0, 679, 680, 3, 325, 162, 0, 680, 681, 3, 327, 163, 0, 681, 682, 3, 347, 173, 0, 682, 683, 3, 333, 166, 0, 683, 116, 1, 0, 0, 0, 684, 685, 3, 331, 165, 0, 685, 686, 3, 333, 166, 0, 686, 687, 3, 335, 167, 0, 687, 688, 3, 333, 166, 0, 688, 689, 3, 359, 179, 0, 689, 690, 3, 359, 179, 0, 690, 691, 3, 333, 166, 0, 691, 692, 3, 331, 165, 0, 692, 118, 1, 0, 0, 0, 693, 694, 3, 331, 165, 0, 694, 695, 3, 333, 166, 0, 695, 696, 3, 347, 173, 0, 696, 697, 3, 333, 166, 0, 697, 698, 3, 363, 181, 0, 698, 699, 3, 333, 166, 0, 699, 120, 1, 0, 0, 0, 700, 701, 3, 331, 165, 0, 701, 702, 3, 333, 166, 0, 702, 703, 3, 361, 180, 0, 703, 704, 3, 329, 164, 0, 704, 122, 1, 0, 0, 0, 705, 706, 3, 331, 165, 0, 706, 707, 3, 333, 166, 0, 707, 708, 3, 363, 181, 0, 708, 709, 3, 325, 162, 0, 709, 710, 3, 329, 164, 0, 710, 711, 3, 339, 169, 0, 711, 124, 1, 0, 0, 0, 712, 713, 3, 331, 165, 0, 713, 714, 3, 341, 170, 0, 714, 715, 3, 361, 180, 0, 715, 716, 3, 363, 181, 0, 716, 717, 3, 341, 170, 0, 717, 718, 3, 351, 175, 0, 718, 719, 3, 329, 164, 0, 719, 720, 3, 363, 181, 0, 720, 126, 1, 0, 0, 0, 721, 722, 3, 331, 165, 0, 722, 723, 3, 359, 179, 0, 723, 724, 3, 353, 176, 0, 724, 725, 3, 355, 177, 0, 725, 128, 1, 0, 0, 0, 726, 727, 3, 333, 166, 0, 727, 728, 3, 325, 162, 0, 728, 729, 3, 329, 164, 0, 729, 730, 3, 339, 169, 0, 730, 130, 1, 0, 0, 0, 731, 732, 3, 333, 166, 0, 732, 733, 3, 347, 173, 0, 733, 734, 3, 361, 180, 0, 734, 735, 3, 333, 166, 0, 735, 132, 1, 0, 0, 0, 736, 737, 3, 333, 166, 0, 737, 738, 3, 351, 175, 0, 738, 739, 3, 331, 165, 0, 739, 134, 1, 0, 0, 0, 740, 741, 3, 333, 166, 0, 741, 742, 3, 351, 175, 0, 742, 743, 3, 325, 162, 0, 743, 744, 3, 327, 163, 0, 744, 745, 3, 347, 173, 0, 745, 746, 3, 333, 166, 0, 746, 136, 1, 0, 0, 0, 747, 748, 3, 333, 166, 0, 748, 749, 3, 361, 180, 0, 749, 750, 3, 329, 164, 0, 750, 751, 3, 325, 162, 0, 751, 752, 3, 355, 177, 0, 752, 753, 3, 333, 166, 0, 753, 138, 1, 0, 0, 0, 754, 755, 3, 333, 166, 0, 755, 756, 3, 371, 185, 0, 756, 757, 3, 329, 164, 0, 757, 758, 3, 333, 166, 0, 758, 759, 3, 355, 177, 0, 759, 760, 3, 363, 181, 0, 760, 140, 1, 0, 0, 0, 761, 762, 3, 333, 166, 0, 762, 763, 3, 371, 185, 0, 763, 764, 3, 329, 164, 0, 764, 765, 3, 347, 173, 0, 765, 766, 3, 365, 182, 0, 766, 767, 3, 361, 180, 0, 767, 768, 3, 341, 170, 0, 768, 769, 3, 367, 183, 0, 769, 770, 3, 333, 166, 0, 770, 142, 1, 0, 0, 0, 771, 772, 3, 333, 166, 0, 772, 773, 3, 371, 185, 0, 773, 774, 3, 341, 170, 0, 774, 775, 3, 361, 180, 0, 775, 776, 3, 363, 181, 0, 776, 777, 3, 361, 180, 0, 777, 144, 1, 0, 0, 0, 778, 779, 3, 333, 166, 0, 779, 780, 3, 371, 185, 0, 780, 781, 3, 355, 177, 0, 781, 782, 3, 347, 173, 0, 782, 783, 3, 325, 162, 0, 783, 784, 3, 341, 170, 0, 784, 785, 3, 351, 175, 0, 785, 146, 1, 0, 0, 0, 786, 787, 3, 335, 167, 0, 787, 788, 3, 325, 162, 0, 788, 789, 3, 341, 170, 0, 789, 790, 3, 347, 173, 0, 790, 148, 1, 0, 0, 0, 791, 792, 3, 335, 167, 0, 792, 793, 3, 353, 176, 0, 793, 794, 3, 359, 179, 0, 794, 150, 1, 0, 0, 0, 795, 796, 3, 335, 167, 0, 796, 797, 3, 353, 176, 0, 797, 798, 3, 359, 179, 0, 798, 799, 3, 333, 166, 0, 799, 800, 3, 341, 170, 0, 800, 801, 3, 337, 168, 0, 801, 802, 3, 351, 175, 0, 802, 152, 1, 0, 0, 0, 803, 804, 3, 335, 167, 0, 804, 805, 3, 359, 179, 0, 805, 806, 3, 353, 176, 0, 806, 807, 3, 349, 174, 0, 807, 154, 1, 0, 0, 0, 808, 809, 3, 335, 167, 0, 809, 810, 3, 365, 182, 0, 810, 811, 3, 347, 173, 0, 811, 812, 3, 347, 173, 0, 812, 156, 1, 0, 0, 0, 813, 814, 3, 337, 168, 0, 814, 815, 3, 347, 173, 0, 815, 816, 3, 353, 176, 0, 816, 817, 3, 327, 163, 0, 817, 158, 1, 0, 0, 0, 818, 819, 3, 337, 168, 0, 819, 820, 3, 359, 179, 0, 820, 821, 3, 353, 176, 0, 821, 822, 3, 365, 182, 0, 822, 823, 3, 355, 177, 0, 823, 160, 1, 0, 0, 0, 824, 825, 3, 339, 169, 0, 825, 826, 3, 325, 162, 0, 826, 827, 3, 367, 183, 0, 827, 828, 3, 341, 170, 0, 828, 829, 3, 351, 175, 0, 829, 830, 3, 337, 168, 0, 830, 162, 1, 0, 0, 0, 831, 832, 3, 341, 170, 0, 832, 833, 3, 335, 167, 0, 833, 164, 1, 0, 0, 0, 834, 835, 3, 341, 170, 0, 835, 836, 3, 337, 168, 0, 836, 837, 3, 351, 175, 0, 837, 838, 3, 353, 176, 0, 838, 839, 3, 359, 179, 0, 839, 840, 3, 333, 166, 0, 840, 166, 1, 0, 0, 0, 841, 842, 3, 341, 170, 0, 842, 843, 3, 349, 174, 0, 843, 844, 3, 349, 174, 0, 844, 845, 3, 333, 166, 0, 845, 846, 3, 331, 165, 0, 846, 847, 3, 341, 170, 0, 847, 848, 3, 325, 162, 0, 848, 849, 3, 363, 181, 0, 849, 850, 3, 333, 166, 0, 850, 168, 1, 0, 0, 0, 851, 852, 3, 341, 170, 0, 852, 853, 3, 351, 175, 0, 853, 170, 1, 0, 0, 0, 854, 855, 3, 341, 170, 0, 855, 856, 3, 351, 175, 0, 856, 857, 3, 331, 165, 0, 857, 858, 3, 333, 166, 0, 858, 859, 3, 371, 185, 0, 859, 172, 1, 0, 0, 0, 860, 861, 3, 341, 170, 0, 861, 862, 3, 351, 175, 0, 862, 863, 3, 331, 165, 0, 863, 864, 3, 333, 166, 0, 864, 865, 3, 371, 185, 0, 865, 866, 3, 333, 166, 0, 866, 867, 3, 331, 165, 0, 867, 174, 1, 0, 0, 0, 868, 869, 3, 341, 170, 0, 869, 870, 3, 351, 175, 0, 870, 871, 3, 341, 170, 0, 871, 872, 3, 363, 181, 0, 872, 873, 3, 341, 170, 0, 873, 874, 3, 325, 162, 0, 874, 875, 3, 347, 173, 0, 875, 876, 3, 347, 173, 0, 876, 877, 3, 373, 186, 0, 877, 176, 1, 0, 0, 0, 878, 879, 3, 341, 170, 0, 879, 880, 3, 351, 175, 0, 880, 881, 3, 351, 175, 0, 881, 882, 3, 333, 166, 0, 882, 883, 3, 359, 179, 0, 883, 178, 1, 0, 0, 0, 884, 885, 3, 341, 170, 0, 885, 886, 3, 351, 175, 0, 886, 887, 3, 361, 180, 0, 887, 888, 3, 333, 166, 0, 888, 889, 3, 359, 179, 0, 889, 890, 3, 363, 181, 0, 890, 180, 1, 0, 0, 0, 891, 892, 3, 341, 170, 0, 892, 893, 3, 351, 175, 0, 893, 894, 3, 361, 180, 0, 894, 895, 3, 363, 181, 0, 895, 896, 3, 333, 166, 0, 896, 897, 3, 325, 162, 0, 897, 898, 3, 331, 165, 0, 898, 182, 1, 0, 0, 0, 899, 900, 3, 341, 170, 0, 900, 901, 3, 351, 175, 0, 901, 902, 3, 363, 181, 0, 902, 903, 3, 333, 166, 0, 903, 904, 3, 359, 179, 0, 904, 905, 3, 361, 180, 0, 905, 906, 3, 333, 166, 0, 906, 907, 3, 329, 164, 0, 907, 908, 3, 363, 181, 0, 908, 184, 1, 0, 0, 0, 909, 910, 3, 341, 170, 0, 910, 911, 3, 351, 175, 0, 911, 912, 3, 363, 181, 0, 912, 913, 3, 353, 176, 0, 913, 186, 1, 0, 0, 0, 914, 915, 3, 341, 170, 0, 915, 916, 3, 361, 180, 0, 916, 188, 1, 0, 0, 0, 917, 918, 3, 341, 170, 0, 918, 919, 3, 361, 180, 0, 919, 920, 3, 351, 175, 0, 920, 921, 3, 365, 182, 0, 921, 922, 3, 347, 173, 0, 922, 923, 3, 347, 173, 0, 923, 190, 1, 0, 0, 0, 924, 925, 3, 343, 171, 0, 925, 926, 3, 353, 176, 0, 926, 927, 3, 341, 170, 0, 927, 928, 3, 351, 175, 0, 928, 192, 1, 0, 0, 0, 929, 930, 3, 345, 172, 0, 930, 931, 3, 333, 166, 0, 931, 932, 3, 373, 186, 0, 932, 194, 1, 0, 0, 0, 933, 934, 3, 347, 173, 0, 934, 935, 3, 333, 166, 0, 935, 936, 3, 335, 167, 0, 936, 937, 3, 363, 181, 0, 937, 196, 1, 0, 0, 0, 938, 939, 3, 347, 173, 0, 939, 940, 3, 341, 170, 0, 940, 941, 3, 345, 172, 0, 941, 942, 3, 333, 166, 0, 942, 198, 1, 0, 0, 0, 943, 944, 3, 347, 173, 0, 944, 945, 3, 341, 170, 0, 945, 946, 3, 349, 174, 0, 946, 947, 3, 341, 170, 0, 947, 948, 3, 363, 181, 0, 948, 200, 1, 0, 0, 0, 949, 950, 3, 349, 174, 0, 950, 951, 3, 325, 162, 0, 951, 952, 3, 363, 181, 0, 952, 953, 3, 329, 164, 0, 953, 954, 3, 339, 169, 0, 954, 202, 1, 0, 0, 0, 955, 956, 3, 351, 175, 0, 956, 957, 3, 325, 162, 0, 957, 958, 3, 363, 181, 0, 958, 959, 3, 365, 182, 0, 959, 960, 3, 359, 179, 0, 960, 961, 3, 325, 162, 0, 961, 962, 3, 347, 173, 0, 962, 204, 1, 0, 0, 0, 963, 964, 3, 351, 175, 0, 964, 965, 3, 333, 166, 0, 965, 966, 3, 371, 185, 0, 966, 967, 3, 363, 181, 0, 967, 968, 3, 367, 183, 0, 968, 969, 3, 325, 162, 0, 969, 970, 3, 347, 173, 0, 970, 206, 1, 0, 0, 0, 971, 972, 3, 351, 175, 0, 972, 973, 3, 353, 176, 0, 973, 208, 1, 0, 0, 0, 974, 975, 3, 351, 175, 0, 975, 976, 3, 353, 176, 0, 976, 977, 3, 363, 181, 0, 977, 210, 1, 0, 0, 0, 978, 979, 3, 351, 175, 0, 979, 980, 3, 353, 176, 0, 980, 981, 3, 363, 181, 0, 981, 982, 3, 351, 175, 0, 982, 983, 3, 365, 182, 0, 983, 984, 3, 347, 173, 0, 984, 985, 3, 347, 173, 0, 985, 212, 1, 0, 0, 0, 986, 987, 3, 351, 175, 0, 987, 988, 3, 365, 182, 0, 988, 989, 3, 347, 173, 0, 989, 990, 3, 347, 173, 0, 990, 214, 1, 0, 0, 0, 991, 992, 3, 353, 176, 0, 992, 993, 3, 335, 167, 0, 993, 216, 1, 0, 0, 0, 994, 995, 3, 353, 176, 0, 995, 996, 3, 335, 167, 0, 996, 997, 3, 335, 167, 0, 997, 998, 3, 361, 180, 0, 998, 999, 3, 333, 166, 0, 999, 1000, 3, 363, 181, 0, 1000, 218, 1, 0, 0, 0, 1001, 1002, 3, 353, 176, 0, 1002, 1003, 3, 351, 175, 0, 1003, 220, 1, 0, 0, 0, 1004, 1005, 3, 353, 176, 0, 1005, 1006, 3, 351, 175, 0, 1006, 1007, 3, 347, 173, 0, 1007, 1008, 3, 373, 186, 0, 1008, 222, 1, 0, 0, 0, 1009, 1010, 3, 353, 176, 0, 1010, 1011, 3, 359, 179, 0, 1011, 224, 1, 0, 0, 0, 1012, 1013, 3, 353, 176, 0, 1013, 1014, 3, 359, 179, 0, 1014, 1015, 3, 331, 165, 0, 1015, 1016, 3, 333, 166, 0, 1016, 1017, 3, 359, 179, 0, 1017, 226, 1, 0, 0, 0, 1018, 1019, 3, 353, 176, 0, 1019, 1020, 3, 365, 182, 0, 1020, 1021, 3, 363, 181, 0, 1021, 1022, 3, 333, 166, 0, 1022, 1023, 3, 359, 179, 0, 1023, 228, 1, 0, 0, 0, 1024, 1025, 3, 355, 177, 0, 1025, 1026, 3, 347, 173, 0, 1026, 1027, 3, 325, 162, 0, 1027, 1028, 3, 351, 175, 0, 1028, 230, 1, 0, 0, 0, 1029, 1030, 3, 355, 177, 0, 1030, 1031, 3, 359, 179, 0, 1031, 1032, 3, 325, 162, 0, 1032, 1033, 3, 337, 168, 0, 1033, 1034, 3, 349, 174, 0, 1034, 1035, 3, 325, 162, 0, 1035, 232, 1, 0, 0, 0, 1036, 1037, 3, 355, 177, 0, 1037, 1038, 3, 359, 179, 0, 1038, 1039, 3, 341, 170, 0, 1039, 1040, 3, 349, 174, 0, 1040, 1041, 3, 325, 162, 0, 1041, 1042, 3, 359, 179, 0, 1042, 1043, 3, 373, 186, 0, 1043, 234, 1, 0, 0, 0, 1044, 1045, 3, 357, 178, 0, 1045, 1046, 3, 365, 182, 0, 1046, 1047, 3, 333, 166, 0, 1047, 1048, 3, 359, 179, 0, 1048, 1049, 3, 373, 186, 0, 1049, 236, 1, 0, 0, 0, 1050, 1051, 3, 359, 179, 0, 1051, 1052, 3, 325, 162, 0, 1052, 1053, 3, 341, 170, 0, 1053, 1054, 3, 361, 180, 0, 1054, 1055, 3, 333, 166, 0, 1055, 238, 1, 0, 0, 0, 1056, 1057, 3, 359, 179, 0, 1057, 1058, 3, 333, 166, 0, 1058, 1059, 3, 329, 164, 0, 1059, 1060, 3, 365, 182, 0, 1060, 1061, 3, 359, 179, 0, 1061, 1062, 3, 361, 180, 0, 1062, 1063, 3, 341, 170, 0, 1063, 1064, 3, 367, 183, 0, 1064, 1065, 3, 333, 166, 0, 1065, 240, 1, 0, 0, 0, 1066, 1067, 3, 359, 179, 0, 1067, 1068, 3, 333, 166, 0, 1068, 1069, 3, 335, 167, 0, 1069, 1070, 3, 333, 166, 0, 1070, 1071, 3, 359, 179, 0, 1071, 1072, 3, 333, 166, 0, 1072, 1073, 3, 351, 175, 0, 1073, 1074, 3, 329, 164, 0, 1074, 1075, 3, 333, 166, 0, 1075, 1076, 3, 361, 180, 0, 1076, 242, 1, 0, 0, 0, 1077, 1078, 3, 359, 179, 0, 1078, 1079, 3, 333, 166, 0, 1079, 1080, 3, 337, 168, 0, 1080, 1081, 3, 333, 166, 0, 1081, 1082, 3, 371, 185, 0, 1082, 1083, 3, 355, 177, 0, 1083, 244, 1, 0, 0, 0, 1084, 1085, 3, 359, 179, 0, 1085, 1086, 3, 333, 166, 0, 1086, 1087, 3, 341, 170, 0, 1087, 1088, 3, 351, 175, 0, 1088, 1089, 3, 331, 165, 0, 1089, 1090, 3, 333, 166, 0, 1090, 1091, 3, 371, 185, 0, 1091, 246, 1, 0, 0, 0, 1092, 1093, 3, 359, 179, 0, 1093, 1094, 3, 333, 166, 0, 1094, 1095, 3, 347, 173, 0, 1095, 1096, 3, 333, 166, 0, 1096, 1097, 3, 325, 162, 0, 1097, 1098, 3, 361, 180, 0, 1098, 1099, 3, 333, 166, 0, 1099, 248, 1, 0, 0, 0, 1100, 1101, 3, 359, 179, 0, 1101, 1102, 3, 333, 166, 0, 1102, 1103, 3, 351, 175, 0, 1103, 1104, 3, 325, 162, 0, 1104, 1105, 3, 349, 174, 0, 1105, 1106, 3, 333, 166, 0, 1106, 250, 1, 0, 0, 0, 1107, 1108, 3, 359, 179, 0, 1108, 1109, 3, 333, 166, 0, 1109, 1110, 3, 355, 177, 0, 1110, 1111, 3, 347, 173, 0, 1111, 1112, 3, 325, 162, 0, 1112, 1113, 3, 329, 164, 0, 1113, 1114, 3, 333, 166, 0, 1114, 252, 1, 0, 0, 0, 1115, 1116, 3, 359, 179, 0, 1116, 1117, 3, 333, 166, 0, 1117, 1118, 3, 361, 180, 0, 1118, 1119, 3, 363, 181, 0, 1119, 1120, 3, 359, 179, 0, 1120, 1121, 3, 341, 170, 0, 1121, 1122, 3, 329, 164, 0, 1122, 1123, 3, 363, 181, 0, 1123, 254, 1, 0, 0, 0, 1124, 1125, 3, 359, 179, 0, 1125, 1126, 3, 341, 170, 0, 1126, 1127, 3, 337, 168, 0, 1127, 1128, 3, 339, 169, 0, 1128, 1129, 3, 363, 181, 0, 1129, 256, 1, 0, 0, 0, 1130, 1131, 3, 359, 179, 0, 1131, 1132, 3, 353, 176, 0, 1132, 1133, 3, 347, 173, 0, 1133, 1134, 3, 347, 173, 0, 1134, 1135, 3, 327, 163, 0, 1135, 1136, 3, 325, 162, 0, 1136, 1137, 3, 329, 164, 0, 1137, 1138, 3, 345, 172, 0, 1138, 258, 1, 0, 0, 0, 1139, 1140, 3, 359, 179, 0, 1140, 1141, 3, 353, 176, 0, 1141, 1142, 3, 369, 184, 0, 1142, 260, 1, 0, 0, 0, 1143, 1144, 3, 361, 180, 0, 1144, 1145, 3, 325, 162, 0, 1145, 1146, 3, 367, 183, 0, 1146, 1147, 3, 333, 166, 0, 1147, 1148, 3, 355, 177, 0, 1148, 1149, 3, 353, 176, 0, 1149, 1150, 3, 341, 170, 0, 1150, 1151, 3, 351, 175, 0, 1151, 1152, 3, 363, 181, 0, 1152, 262, 1, 0, 0, 0, 1153, 1154, 3, 361, 180, 0, 1154, 1155, 3, 333, 166, 0, 1155, 1156, 3, 347, 173, 0, 1156, 1157, 3, 333, 166, 0, 1157, 1158, 3, 329, 164, 0, 1158, 1159, 3, 363, 181, 0, 1159, 264, 1, 0, 0, 0, 1160, 1161, 3, 361, 180, 0, 1161, 1162, 3, 333, 166, 0, 1162, 1163, 3, 363, 181, 0, 1163, 266, 1, 0, 0, 0, 1164, 1165, 3, 363, 181, 0, 1165, 1166, 3, 325, 162, 0, 1166, 1167, 3, 327, 163, 0, 1167, 1168, 3, 347, 173, 0, 1168, 1169, 3, 333, 166, 0, 1169, 268, 1, 0, 0, 0, 1170, 1171, 3, 363, 181, 0, 1171, 1172, 3, 333, 166, 0, 1172, 1173, 3, 349, 174, 0, 1173, 1174, 3, 355, 177, 0, 1174, 270, 1, 0, 0, 0, 1175, 1176, 3, 363, 181, 0, 1176, 1177, 3, 333, 166, 0, 1177, 1178, 3, 349, 174, 0, 1178, 1179, 3, 355, 177, 0, 1179, 1180, 3, 353, 176, 0, 1180, 1181, 3, 359, 179, 0, 1181, 1182, 3, 325, 162, 0, 1182, 1183, 3, 359, 179, 0, 1183, 1184, 3, 373, 186, 0, 1184, 272, 1, 0, 0, 0, 1185, 1186, 3, 363, 181, 0, 1186, 1187, 3, 339, 169, 0, 1187, 1188, 3, 333, 166, 0, 1188, 1189, 3, 351, 175, 0, 1189, 274, 1, 0, 0, 0, 1190, 1191, 3, 363, 181, 0, 1191, 1192, 3, 353, 176, 0, 1192, 276, 1, 0, 0, 0, 1193, 1194, 3, 363, 181, 0, 1194, 1195, 3, 359, 179, 0, 1195, 1196, 3, 325, 162, 0, 1196, 1197, 3, 351, 175, 0, 1197, 1198, 3, 361, 180, 0, 1198, 1199, 3, 325, 162, 0, 1199, 1200, 3, 329, 164, 0, 1200, 1201, 3, 363, 181, 0, 1201, 1202, 3, 341, 170, 0, 1202, 1203, 3, 353, 176, 0, 1203, 1204, 3, 351, 175, 0, 1204, 278, 1, 0, 0, 0, 1205, 1206, 3, 363, 181, 0, 1206, 1207, 3, 359, 179, 0, 1207, 1208, 3, 341, 170, 0, 1208, 1209, 3, 337, 168, 0, 1209, 1210, 3, 337, 168, 0, 1210, 1211, 3, 333, 166, 0, 1211, 1212, 3, 359, 179, 0, 1212, 280, 1, 0, 0, 0, 1213, 1214, 3, 365, 182, 0, 1214, 1215, 3, 351, 175, 0, 1215, 1216, 3, 341, 170, 0, 1216, 1217, 3, 353, 176, 0, 1217, 1218, 3, 351, 175, 0, 1218, 282, 1, 0, 0, 0, 1219, 1220, 3, 365, 182, 0, 1220, 1221, 3, 351, 175, 0, 1221, 1222, 3, 341, 170, 0, 1222, 1223, 3, 357, 178, 0, 1223, 1224, 3, 365, 182, 0, 1224, 1225, 3, 333, 166, 0, 1225, 284, 1, 0, 0, 0, 1226, 1227, 3, 365, 182, 0, 1227, 1228, 3, 355, 177, 0, 1228, 1229, 3, 331, 165, 0, 1229, 1230, 3, 325, 162, 0, 1230, 1231, 3, 363, 181, 0, 1231, 1232, 3, 333, 166, 0, 1232, 286, 1, 0, 0, 0, 1233, 1234, 3, 365, 182, 0, 1234, 1235, 3, 361, 180, 0, 1235, 1236, 3, 341, 170, 0, 1236, 1237, 3, 351, 175, 0, 1237, 1238, 3, 337, 168, 0, 1238, 288, 1, 0, 0, 0, 1239, 1240, 3, 367, 183, 0, 1240, 1241, 3, 325, 162, 0, 1241, 1242, 3, 329, 164, 0, 1242, 1243, 3, 365, 182, 0, 1243, 1244, 3, 365, 182, 0, 1244, 1245, 3, 349, 174, 0, 1245, 290, 1, 0, 0, 0, 1246, 1247, 3, 367, 183, 0, 1247, 1248, 3, 325, 162, 0, 1248, 1249, 3, 347, 173, 0, 1249, 1250, 3, 365, 182, 0, 1250, 1251, 3, 333, 166, 0, 1251, 1252, 3, 361, 180, 0, 1252, 292, 1, 0, 0, 0, 1253, 1254, 3, 367, 183, 0, 1254, 1255, 3, 341, 170, 0, 1255, 1256, 3, 333, 166, 0, 1256, 1257, 3, 369, 184, 0, 1257, 294, 1, 0, 0, 0, 1258, 1259, 3, 367, 183, 0, 1259, 1260, 3, 341, 170, 0, 1260, 1261, 3, 359, 179, 0, 1261, 1262, 3, 363, 181, 0, 1262, 1263, 3, 365, 182, 0, 1263, 1264, 3, 325, 162, 0, 1264, 1265, 3, 347, 173, 0, 1265, 296, 1, 0, 0, 0, 1266, 1267, 3, 369, 184, 0, 1267, 1268, 3, 339, 169, 0, 1268, 1269, 3, 333, 166, 0, 1269, 1270, 3, 351, 175, 0, 1270, 298, 1, 0, 0, 0, 1271, 1272, 3, 369, 184, 0, 1272, 1273, 3, 339, 169, 0, 1273, 1274, 3, 333, 166, 0, 1274, 1275, 3, 359, 179, 0, 1275, 1276, 3, 333, 166, 0, 1276, 300, 1, 0, 0, 0, 1277, 1278, 3, 369, 184, 0, 1278, 1279, 3, 341, 170, 0, 1279, 1280, 3, 363, 181, 0, 1280, 1281, 3, 339, 169, 0, 1281, 302, 1, 0, 0, 0, 1282, 1283, 3, 369, 184, 0, 1283, 1284, 3, 341, 170, 0, 1284, 1285, 3, 363, 181, 0, 1285, 1286, 3, 339, 169, 0, 1286, 1287, 3, 353, 176, 0, 1287, 1288, 3, 365, 182, 0, 1288, 1289, 3, 363, 181, 0, 1289, 304, 1, 0, 0, 0, 1290, 1296, 5, 34, 0, 0, 1291, 1295, 8, 0, 0, 0, 1292, 1293, 5, 34, 0, 0, 1293, 1295, 5, 34, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1326, 5, 34, 0, 0, 1300, 1306, 5, 96, 0, 0, 1301, 1305, 8, 1, 0, 0, 1302, 1303, 5, 96, 0, 0, 1303, 1305, 5, 96, 0, 0, 1304, 1301, 1, 0, 0, 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, 1309, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1326, 5, 96, 0, 0, 1310, 1314, 5, 91, 0, 0, 1311, 1313, 8, 2, 0, 0, 1312, 1311, 1, 0, 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1326, 5, 93, 0, 0, 1318, 1322, 7, 3, 0, 0, 1319, 1321, 7, 4, 0, 0, 1320, 1319, 1, 0, 0, 0, 1321, 1324, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1325, 1290, 1, 0, 0, 0, 1325, 1300, 1, 0, 0, 0, 1325, 1310, 1, 0, 0, 0, 1325, 1318, 1, 0, 0, 0, 1326, 306, 1, 0, 0, 0, 1327, 1329, 3, 323, 161, 0, 1328, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1339, 1, 0, 0, 0, 1332, 1336, 5, 46, 0, 0, 1333, 1335, 3, 323, 161, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1332, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1350, 1, 0, 0, 0, 1341, 1343, 3, 333, 166, 0, 1342, 1344, 7, 5, 0, 0, 1343, 1342, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1347, 3, 323, 161, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1341, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1370, 1, 0, 0, 0, 1352, 1354, 5, 46, 0, 0, 1353, 1355, 3, 323, 161, 0, 1354, 1353, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1367, 1, 0, 0, 0, 1358, 1360, 3, 333, 166, 0, 1359, 1361, 7, 5, 0, 0, 1360, 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, 1364, 3, 323, 161, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, 1358, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 1, 0, 0, 0, 1369, 1328, 1, 0, 0, 0, 1369, 1352, 1, 0, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, 1375, 5, 63, 0, 0, 1372, 1374, 3, 323, 161, 0, 1373, 1372, 1, 0, 0, 0, 1374, 1377, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1381, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1379, 7, 6, 0, 0, 1379, 1381, 3, 305, 152, 0, 1380, 1371, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1381, 310, 1, 0, 0, 0, 1382, 1388, 5, 39, 0, 0, 1383, 1387, 8, 7, 0, 0, 1384, 1385, 5, 39, 0, 0, 1385, 1387, 5, 39, 0, 0, 1386, 1383, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1390, 1, 0, 0, 0, 1388, 1386, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1388, 1, 0, 0, 0, 1391, 1392, 5, 39, 0, 0, 1392, 312, 1, 0, 0, 0, 1393, 1394, 3, 371, 185, 0, 1394, 1395, 3, 311, 155, 0, 1395, 314, 1, 0, 0, 0, 1396, 1397, 5, 45, 0, 0, 1397, 1398, 5, 45, 0, 0, 1398, 1402, 1, 0, 0, 0, 1399, 1401, 8, 8, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, 1, 0, 0, 0, 1405, 1406, 6, 157, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, 5, 47, 0, 0, 1408, 1409, 5, 42, 0, 0, 1409, 1413, 1, 0, 0, 0, 1410, 1412, 9, 0, 0, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1419, 1, 0, 0, 0, 1415, 1413, 1, 0, 0, 0, 1416, 1417, 5, 42, 0, 0, 1417, 1420, 5, 47, 0, 0, 1418, 1420, 5, 0, 0, 1, 1419, 1416, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 6, 158, 0, 0, 1422, 318, 1, 0, 0, 0, 1423, 1424, 7, 9, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 159, 0, 0, 1426, 320, 1, 0, 0, 0, 1427, 1428, 9, 0, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, 7, 10, 0, 0, 1430, 324, 1, 0, 0, 0, 1431, 1432, 7, 11, 0, 0, 1432, 326, 1, 0, 0, 0, 1433, 1434, 7, 12, 0, 0, 1434, 328, 1, 0, 0, 0, 1435, 1436, 7, 13, 0, 0, 1436, 330, 1, 0, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 332, 1, 0, 0, 0, 1439, 1440, 7, 15, 0, 0, 1440, 334, 1, 0, 0, 0, 1441, 1442, 7, 16, 0, 0, 1442, 336, 1, 0, 0, 0, 1443, 1444, 7, 17, 0, 0, 1444, 338, 1, 0, 0, 0, 1445, 1446, 7, 18, 0, 0, 1446, 340, 1, 0, 0, 0, 1447, 1448, 7, 19, 0, 0, 1448, 342, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 344, 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 346, 1, 0, 0, 0, 1453, 1454, 7, 22, 0, 0, 1454, 348, 1, 0, 0, 0, 1455, 1456, 7, 23, 0, 0, 1456, 350, 1, 0, 0, 0, 1457, 1458, 7, 24, 0, 0, 1458, 352, 1, 0, 0, 0, 1459, 1460, 7, 25, 0, 0, 1460, 354, 1, 0, 0, 0, 1461, 1462, 7, 26, 0, 0, 1462, 356, 1, 0, 0, 0, 1463, 1464, 7, 27, 0, 0, 1464, 358, 1, 0, 0, 0, 1465, 1466, 7, 28, 0, 0, 1466, 360, 1, 0, 0, 0, 1467, 1468, 7, 29, 0, 0, 1468, 362, 1, 0, 0, 0, 1469, 1470, 7, 30, 0, 0, 1470, 364, 1, 0, 0, 0, 1471, 1472, 7, 31, 0, 0, 1472, 366, 1, 0, 0, 0, 1473, 1474, 7, 32, 0, 0, 1474, 368, 1, 0, 0, 0, 1475, 1476, 7, 33, 0, 0, 1476, 370, 1, 0, 0, 0, 1477, 1478, 7, 34, 0, 0, 1478, 372, 1, 0, 0, 0, 1479, 1480, 7, 35, 0, 0, 1480, 374, 1, 0, 0, 0, 1481, 1482, 7, 36, 0, 0, 1482, 376, 1, 0, 0, 0, 26, 0, 1294, 1296, 1304, 1306, 1314, 1322, 1325, 1330, 1336, 1339, 1343, 1348, 1350, 1356, 1360, 1365, 1367, 1369, 1375, 1380, 1386, 1388, 1402, 1413, 1419, 1, 0, 1, 0] \ No newline at end of file diff --git a/processor/stream_processor/test/parser/SqlLexer.tokens b/processor/stream_processor/test/parser/SqlLexer.tokens new file mode 100644 index 000000000000..70454cda7204 --- /dev/null +++ b/processor/stream_processor/test/parser/SqlLexer.tokens @@ -0,0 +1,186 @@ +T__0=1 +SCOL=2 +DOT=3 +OPEN_PAR=4 +CLOSE_PAR=5 +COMMA=6 +ASSIGN=7 +STAR=8 +PLUS=9 +MINUS=10 +TILDE=11 +PIPE2=12 +DIV=13 +MOD=14 +LT2=15 +GT2=16 +AMP=17 +PIPE=18 +LT=19 +LT_EQ=20 +GT=21 +GT_EQ=22 +EQ=23 +NOT_EQ1=24 +NOT_EQ2=25 +K_ABORT=26 +K_ACTION=27 +K_ADD=28 +K_AFTER=29 +K_ALL=30 +K_ALTER=31 +K_ANALYZE=32 +K_AND=33 +K_AS=34 +K_ASC=35 +K_ATTACH=36 +K_AUTOINCREMENT=37 +K_BEFORE=38 +K_BEGIN=39 +K_BETWEEN=40 +K_BY=41 +K_CASCADE=42 +K_CASE=43 +K_CAST=44 +K_CHECK=45 +K_COLLATE=46 +K_COLUMN=47 +K_COMMIT=48 +K_CONFLICT=49 +K_CONSTRAINT=50 +K_CREATE=51 +K_CROSS=52 +K_CURRENT_DATE=53 +K_CURRENT_TIME=54 +K_CURRENT_TIMESTAMP=55 +K_DATABASE=56 +K_DEFAULT=57 +K_DEFERRABLE=58 +K_DEFERRED=59 +K_DELETE=60 +K_DESC=61 +K_DETACH=62 +K_DISTINCT=63 +K_DROP=64 +K_EACH=65 +K_ELSE=66 +K_END=67 +K_ENABLE=68 +K_ESCAPE=69 +K_EXCEPT=70 +K_EXCLUSIVE=71 +K_EXISTS=72 +K_EXPLAIN=73 +K_FAIL=74 +K_FOR=75 +K_FOREIGN=76 +K_FROM=77 +K_FULL=78 +K_GLOB=79 +K_GROUP=80 +K_HAVING=81 +K_IF=82 +K_IGNORE=83 +K_IMMEDIATE=84 +K_IN=85 +K_INDEX=86 +K_INDEXED=87 +K_INITIALLY=88 +K_INNER=89 +K_INSERT=90 +K_INSTEAD=91 +K_INTERSECT=92 +K_INTO=93 +K_IS=94 +K_ISNULL=95 +K_JOIN=96 +K_KEY=97 +K_LEFT=98 +K_LIKE=99 +K_LIMIT=100 +K_MATCH=101 +K_NATURAL=102 +K_NEXTVAL=103 +K_NO=104 +K_NOT=105 +K_NOTNULL=106 +K_NULL=107 +K_OF=108 +K_OFFSET=109 +K_ON=110 +K_ONLY=111 +K_OR=112 +K_ORDER=113 +K_OUTER=114 +K_PLAN=115 +K_PRAGMA=116 +K_PRIMARY=117 +K_QUERY=118 +K_RAISE=119 +K_RECURSIVE=120 +K_REFERENCES=121 +K_REGEXP=122 +K_REINDEX=123 +K_RELEASE=124 +K_RENAME=125 +K_REPLACE=126 +K_RESTRICT=127 +K_RIGHT=128 +K_ROLLBACK=129 +K_ROW=130 +K_SAVEPOINT=131 +K_SELECT=132 +K_SET=133 +K_TABLE=134 +K_TEMP=135 +K_TEMPORARY=136 +K_THEN=137 +K_TO=138 +K_TRANSACTION=139 +K_TRIGGER=140 +K_UNION=141 +K_UNIQUE=142 +K_UPDATE=143 +K_USING=144 +K_VACUUM=145 +K_VALUES=146 +K_VIEW=147 +K_VIRTUAL=148 +K_WHEN=149 +K_WHERE=150 +K_WITH=151 +K_WITHOUT=152 +IDENTIFIER=153 +NUMERIC_LITERAL=154 +BIND_PARAMETER=155 +STRING_LITERAL=156 +BLOB_LITERAL=157 +SINGLE_LINE_COMMENT=158 +MULTILINE_COMMENT=159 +SPACES=160 +UNEXPECTED_CHAR=161 +'::'=1 +';'=2 +'.'=3 +'('=4 +')'=5 +','=6 +'='=7 +'*'=8 +'+'=9 +'-'=10 +'~'=11 +'||'=12 +'/'=13 +'%'=14 +'<<'=15 +'>>'=16 +'&'=17 +'|'=18 +'<'=19 +'<='=20 +'>'=21 +'>='=22 +'=='=23 +'!='=24 +'<>'=25 diff --git a/processor/stream_processor/test/parser/sql_base_listener.go b/processor/stream_processor/test/parser/sql_base_listener.go new file mode 100644 index 000000000000..e84aee685618 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_base_listener.go @@ -0,0 +1,618 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // Sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// BaseSqlListener is a complete listener for a parse tree produced by SqlParser. +type BaseSqlListener struct{} + +var _ SqlListener = &BaseSqlListener{} + +// VisitTerminal is called when a terminal node is visited. +func (s *BaseSqlListener) VisitTerminal(node antlr.TerminalNode) {} + +// VisitErrorNode is called when an error node is visited. +func (s *BaseSqlListener) VisitErrorNode(node antlr.ErrorNode) {} + +// EnterEveryRule is called when any rule is entered. +func (s *BaseSqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} + +// ExitEveryRule is called when any rule is exited. +func (s *BaseSqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} + +// EnterParse is called when production parse is entered. +func (s *BaseSqlListener) EnterParse(ctx *ParseContext) {} + +// ExitParse is called when production parse is exited. +func (s *BaseSqlListener) ExitParse(ctx *ParseContext) {} + +// EnterError is called when production error is entered. +func (s *BaseSqlListener) EnterError(ctx *ErrorContext) {} + +// ExitError is called when production error is exited. +func (s *BaseSqlListener) ExitError(ctx *ErrorContext) {} + +// EnterSql_stmt_list is called when production sql_stmt_list is entered. +func (s *BaseSqlListener) EnterSql_stmt_list(ctx *Sql_stmt_listContext) {} + +// ExitSql_stmt_list is called when production sql_stmt_list is exited. +func (s *BaseSqlListener) ExitSql_stmt_list(ctx *Sql_stmt_listContext) {} + +// EnterSql_stmt is called when production sql_stmt is entered. +func (s *BaseSqlListener) EnterSql_stmt(ctx *Sql_stmtContext) {} + +// ExitSql_stmt is called when production sql_stmt is exited. +func (s *BaseSqlListener) ExitSql_stmt(ctx *Sql_stmtContext) {} + +// EnterAlter_table_stmt is called when production alter_table_stmt is entered. +func (s *BaseSqlListener) EnterAlter_table_stmt(ctx *Alter_table_stmtContext) {} + +// ExitAlter_table_stmt is called when production alter_table_stmt is exited. +func (s *BaseSqlListener) ExitAlter_table_stmt(ctx *Alter_table_stmtContext) {} + +// EnterAlter_table_add_constraint is called when production alter_table_add_constraint is entered. +func (s *BaseSqlListener) EnterAlter_table_add_constraint(ctx *Alter_table_add_constraintContext) {} + +// ExitAlter_table_add_constraint is called when production alter_table_add_constraint is exited. +func (s *BaseSqlListener) ExitAlter_table_add_constraint(ctx *Alter_table_add_constraintContext) {} + +// EnterAlter_table_add is called when production alter_table_add is entered. +func (s *BaseSqlListener) EnterAlter_table_add(ctx *Alter_table_addContext) {} + +// ExitAlter_table_add is called when production alter_table_add is exited. +func (s *BaseSqlListener) ExitAlter_table_add(ctx *Alter_table_addContext) {} + +// EnterAnalyze_stmt is called when production analyze_stmt is entered. +func (s *BaseSqlListener) EnterAnalyze_stmt(ctx *Analyze_stmtContext) {} + +// ExitAnalyze_stmt is called when production analyze_stmt is exited. +func (s *BaseSqlListener) ExitAnalyze_stmt(ctx *Analyze_stmtContext) {} + +// EnterAttach_stmt is called when production attach_stmt is entered. +func (s *BaseSqlListener) EnterAttach_stmt(ctx *Attach_stmtContext) {} + +// ExitAttach_stmt is called when production attach_stmt is exited. +func (s *BaseSqlListener) ExitAttach_stmt(ctx *Attach_stmtContext) {} + +// EnterBegin_stmt is called when production begin_stmt is entered. +func (s *BaseSqlListener) EnterBegin_stmt(ctx *Begin_stmtContext) {} + +// ExitBegin_stmt is called when production begin_stmt is exited. +func (s *BaseSqlListener) ExitBegin_stmt(ctx *Begin_stmtContext) {} + +// EnterCommit_stmt is called when production commit_stmt is entered. +func (s *BaseSqlListener) EnterCommit_stmt(ctx *Commit_stmtContext) {} + +// ExitCommit_stmt is called when production commit_stmt is exited. +func (s *BaseSqlListener) ExitCommit_stmt(ctx *Commit_stmtContext) {} + +// EnterCompound_select_stmt is called when production compound_select_stmt is entered. +func (s *BaseSqlListener) EnterCompound_select_stmt(ctx *Compound_select_stmtContext) {} + +// ExitCompound_select_stmt is called when production compound_select_stmt is exited. +func (s *BaseSqlListener) ExitCompound_select_stmt(ctx *Compound_select_stmtContext) {} + +// EnterCreate_index_stmt is called when production create_index_stmt is entered. +func (s *BaseSqlListener) EnterCreate_index_stmt(ctx *Create_index_stmtContext) {} + +// ExitCreate_index_stmt is called when production create_index_stmt is exited. +func (s *BaseSqlListener) ExitCreate_index_stmt(ctx *Create_index_stmtContext) {} + +// EnterCreate_table_stmt is called when production create_table_stmt is entered. +func (s *BaseSqlListener) EnterCreate_table_stmt(ctx *Create_table_stmtContext) {} + +// ExitCreate_table_stmt is called when production create_table_stmt is exited. +func (s *BaseSqlListener) ExitCreate_table_stmt(ctx *Create_table_stmtContext) {} + +// EnterCreate_trigger_stmt is called when production create_trigger_stmt is entered. +func (s *BaseSqlListener) EnterCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {} + +// ExitCreate_trigger_stmt is called when production create_trigger_stmt is exited. +func (s *BaseSqlListener) ExitCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {} + +// EnterCreate_view_stmt is called when production create_view_stmt is entered. +func (s *BaseSqlListener) EnterCreate_view_stmt(ctx *Create_view_stmtContext) {} + +// ExitCreate_view_stmt is called when production create_view_stmt is exited. +func (s *BaseSqlListener) ExitCreate_view_stmt(ctx *Create_view_stmtContext) {} + +// EnterCreate_virtual_table_stmt is called when production create_virtual_table_stmt is entered. +func (s *BaseSqlListener) EnterCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {} + +// ExitCreate_virtual_table_stmt is called when production create_virtual_table_stmt is exited. +func (s *BaseSqlListener) ExitCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {} + +// EnterDelete_stmt is called when production delete_stmt is entered. +func (s *BaseSqlListener) EnterDelete_stmt(ctx *Delete_stmtContext) {} + +// ExitDelete_stmt is called when production delete_stmt is exited. +func (s *BaseSqlListener) ExitDelete_stmt(ctx *Delete_stmtContext) {} + +// EnterDelete_stmt_limited is called when production delete_stmt_limited is entered. +func (s *BaseSqlListener) EnterDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {} + +// ExitDelete_stmt_limited is called when production delete_stmt_limited is exited. +func (s *BaseSqlListener) ExitDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {} + +// EnterDetach_stmt is called when production detach_stmt is entered. +func (s *BaseSqlListener) EnterDetach_stmt(ctx *Detach_stmtContext) {} + +// ExitDetach_stmt is called when production detach_stmt is exited. +func (s *BaseSqlListener) ExitDetach_stmt(ctx *Detach_stmtContext) {} + +// EnterDrop_index_stmt is called when production drop_index_stmt is entered. +func (s *BaseSqlListener) EnterDrop_index_stmt(ctx *Drop_index_stmtContext) {} + +// ExitDrop_index_stmt is called when production drop_index_stmt is exited. +func (s *BaseSqlListener) ExitDrop_index_stmt(ctx *Drop_index_stmtContext) {} + +// EnterDrop_table_stmt is called when production drop_table_stmt is entered. +func (s *BaseSqlListener) EnterDrop_table_stmt(ctx *Drop_table_stmtContext) {} + +// ExitDrop_table_stmt is called when production drop_table_stmt is exited. +func (s *BaseSqlListener) ExitDrop_table_stmt(ctx *Drop_table_stmtContext) {} + +// EnterDrop_trigger_stmt is called when production drop_trigger_stmt is entered. +func (s *BaseSqlListener) EnterDrop_trigger_stmt(ctx *Drop_trigger_stmtContext) {} + +// ExitDrop_trigger_stmt is called when production drop_trigger_stmt is exited. +func (s *BaseSqlListener) ExitDrop_trigger_stmt(ctx *Drop_trigger_stmtContext) {} + +// EnterDrop_view_stmt is called when production drop_view_stmt is entered. +func (s *BaseSqlListener) EnterDrop_view_stmt(ctx *Drop_view_stmtContext) {} + +// ExitDrop_view_stmt is called when production drop_view_stmt is exited. +func (s *BaseSqlListener) ExitDrop_view_stmt(ctx *Drop_view_stmtContext) {} + +// EnterFactored_select_stmt is called when production factored_select_stmt is entered. +func (s *BaseSqlListener) EnterFactored_select_stmt(ctx *Factored_select_stmtContext) {} + +// ExitFactored_select_stmt is called when production factored_select_stmt is exited. +func (s *BaseSqlListener) ExitFactored_select_stmt(ctx *Factored_select_stmtContext) {} + +// EnterInsert_stmt is called when production insert_stmt is entered. +func (s *BaseSqlListener) EnterInsert_stmt(ctx *Insert_stmtContext) {} + +// ExitInsert_stmt is called when production insert_stmt is exited. +func (s *BaseSqlListener) ExitInsert_stmt(ctx *Insert_stmtContext) {} + +// EnterPragma_stmt is called when production pragma_stmt is entered. +func (s *BaseSqlListener) EnterPragma_stmt(ctx *Pragma_stmtContext) {} + +// ExitPragma_stmt is called when production pragma_stmt is exited. +func (s *BaseSqlListener) ExitPragma_stmt(ctx *Pragma_stmtContext) {} + +// EnterReindex_stmt is called when production reindex_stmt is entered. +func (s *BaseSqlListener) EnterReindex_stmt(ctx *Reindex_stmtContext) {} + +// ExitReindex_stmt is called when production reindex_stmt is exited. +func (s *BaseSqlListener) ExitReindex_stmt(ctx *Reindex_stmtContext) {} + +// EnterRelease_stmt is called when production release_stmt is entered. +func (s *BaseSqlListener) EnterRelease_stmt(ctx *Release_stmtContext) {} + +// ExitRelease_stmt is called when production release_stmt is exited. +func (s *BaseSqlListener) ExitRelease_stmt(ctx *Release_stmtContext) {} + +// EnterRollback_stmt is called when production rollback_stmt is entered. +func (s *BaseSqlListener) EnterRollback_stmt(ctx *Rollback_stmtContext) {} + +// ExitRollback_stmt is called when production rollback_stmt is exited. +func (s *BaseSqlListener) ExitRollback_stmt(ctx *Rollback_stmtContext) {} + +// EnterSavepoint_stmt is called when production savepoint_stmt is entered. +func (s *BaseSqlListener) EnterSavepoint_stmt(ctx *Savepoint_stmtContext) {} + +// ExitSavepoint_stmt is called when production savepoint_stmt is exited. +func (s *BaseSqlListener) ExitSavepoint_stmt(ctx *Savepoint_stmtContext) {} + +// EnterSimple_select_stmt is called when production simple_select_stmt is entered. +func (s *BaseSqlListener) EnterSimple_select_stmt(ctx *Simple_select_stmtContext) {} + +// ExitSimple_select_stmt is called when production simple_select_stmt is exited. +func (s *BaseSqlListener) ExitSimple_select_stmt(ctx *Simple_select_stmtContext) {} + +// EnterSelect_stmt is called when production select_stmt is entered. +func (s *BaseSqlListener) EnterSelect_stmt(ctx *Select_stmtContext) {} + +// ExitSelect_stmt is called when production select_stmt is exited. +func (s *BaseSqlListener) ExitSelect_stmt(ctx *Select_stmtContext) {} + +// EnterSelect_or_values is called when production select_or_values is entered. +func (s *BaseSqlListener) EnterSelect_or_values(ctx *Select_or_valuesContext) {} + +// ExitSelect_or_values is called when production select_or_values is exited. +func (s *BaseSqlListener) ExitSelect_or_values(ctx *Select_or_valuesContext) {} + +// EnterUpdate_stmt is called when production update_stmt is entered. +func (s *BaseSqlListener) EnterUpdate_stmt(ctx *Update_stmtContext) {} + +// ExitUpdate_stmt is called when production update_stmt is exited. +func (s *BaseSqlListener) ExitUpdate_stmt(ctx *Update_stmtContext) {} + +// EnterUpdate_stmt_limited is called when production update_stmt_limited is entered. +func (s *BaseSqlListener) EnterUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {} + +// ExitUpdate_stmt_limited is called when production update_stmt_limited is exited. +func (s *BaseSqlListener) ExitUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {} + +// EnterVacuum_stmt is called when production vacuum_stmt is entered. +func (s *BaseSqlListener) EnterVacuum_stmt(ctx *Vacuum_stmtContext) {} + +// ExitVacuum_stmt is called when production vacuum_stmt is exited. +func (s *BaseSqlListener) ExitVacuum_stmt(ctx *Vacuum_stmtContext) {} + +// EnterColumn_def is called when production column_def is entered. +func (s *BaseSqlListener) EnterColumn_def(ctx *Column_defContext) {} + +// ExitColumn_def is called when production column_def is exited. +func (s *BaseSqlListener) ExitColumn_def(ctx *Column_defContext) {} + +// EnterType_name is called when production type_name is entered. +func (s *BaseSqlListener) EnterType_name(ctx *Type_nameContext) {} + +// ExitType_name is called when production type_name is exited. +func (s *BaseSqlListener) ExitType_name(ctx *Type_nameContext) {} + +// EnterColumn_constraint is called when production column_constraint is entered. +func (s *BaseSqlListener) EnterColumn_constraint(ctx *Column_constraintContext) {} + +// ExitColumn_constraint is called when production column_constraint is exited. +func (s *BaseSqlListener) ExitColumn_constraint(ctx *Column_constraintContext) {} + +// EnterColumn_constraint_primary_key is called when production column_constraint_primary_key is entered. +func (s *BaseSqlListener) EnterColumn_constraint_primary_key(ctx *Column_constraint_primary_keyContext) { +} + +// ExitColumn_constraint_primary_key is called when production column_constraint_primary_key is exited. +func (s *BaseSqlListener) ExitColumn_constraint_primary_key(ctx *Column_constraint_primary_keyContext) { +} + +// EnterColumn_constraint_foreign_key is called when production column_constraint_foreign_key is entered. +func (s *BaseSqlListener) EnterColumn_constraint_foreign_key(ctx *Column_constraint_foreign_keyContext) { +} + +// ExitColumn_constraint_foreign_key is called when production column_constraint_foreign_key is exited. +func (s *BaseSqlListener) ExitColumn_constraint_foreign_key(ctx *Column_constraint_foreign_keyContext) { +} + +// EnterColumn_constraint_not_null is called when production column_constraint_not_null is entered. +func (s *BaseSqlListener) EnterColumn_constraint_not_null(ctx *Column_constraint_not_nullContext) {} + +// ExitColumn_constraint_not_null is called when production column_constraint_not_null is exited. +func (s *BaseSqlListener) ExitColumn_constraint_not_null(ctx *Column_constraint_not_nullContext) {} + +// EnterColumn_constraint_null is called when production column_constraint_null is entered. +func (s *BaseSqlListener) EnterColumn_constraint_null(ctx *Column_constraint_nullContext) {} + +// ExitColumn_constraint_null is called when production column_constraint_null is exited. +func (s *BaseSqlListener) ExitColumn_constraint_null(ctx *Column_constraint_nullContext) {} + +// EnterColumn_default is called when production column_default is entered. +func (s *BaseSqlListener) EnterColumn_default(ctx *Column_defaultContext) {} + +// ExitColumn_default is called when production column_default is exited. +func (s *BaseSqlListener) ExitColumn_default(ctx *Column_defaultContext) {} + +// EnterColumn_default_value is called when production column_default_value is entered. +func (s *BaseSqlListener) EnterColumn_default_value(ctx *Column_default_valueContext) {} + +// ExitColumn_default_value is called when production column_default_value is exited. +func (s *BaseSqlListener) ExitColumn_default_value(ctx *Column_default_valueContext) {} + +// EnterConflict_clause is called when production conflict_clause is entered. +func (s *BaseSqlListener) EnterConflict_clause(ctx *Conflict_clauseContext) {} + +// ExitConflict_clause is called when production conflict_clause is exited. +func (s *BaseSqlListener) ExitConflict_clause(ctx *Conflict_clauseContext) {} + +// EnterExpr is called when production expr is entered. +func (s *BaseSqlListener) EnterExpr(ctx *ExprContext) {} + +// ExitExpr is called when production expr is exited. +func (s *BaseSqlListener) ExitExpr(ctx *ExprContext) {} + +// EnterForeign_key_clause is called when production foreign_key_clause is entered. +func (s *BaseSqlListener) EnterForeign_key_clause(ctx *Foreign_key_clauseContext) {} + +// ExitForeign_key_clause is called when production foreign_key_clause is exited. +func (s *BaseSqlListener) ExitForeign_key_clause(ctx *Foreign_key_clauseContext) {} + +// EnterFk_target_column_name is called when production fk_target_column_name is entered. +func (s *BaseSqlListener) EnterFk_target_column_name(ctx *Fk_target_column_nameContext) {} + +// ExitFk_target_column_name is called when production fk_target_column_name is exited. +func (s *BaseSqlListener) ExitFk_target_column_name(ctx *Fk_target_column_nameContext) {} + +// EnterRaise_function is called when production raise_function is entered. +func (s *BaseSqlListener) EnterRaise_function(ctx *Raise_functionContext) {} + +// ExitRaise_function is called when production raise_function is exited. +func (s *BaseSqlListener) ExitRaise_function(ctx *Raise_functionContext) {} + +// EnterIndexed_column is called when production indexed_column is entered. +func (s *BaseSqlListener) EnterIndexed_column(ctx *Indexed_columnContext) {} + +// ExitIndexed_column is called when production indexed_column is exited. +func (s *BaseSqlListener) ExitIndexed_column(ctx *Indexed_columnContext) {} + +// EnterTable_constraint is called when production table_constraint is entered. +func (s *BaseSqlListener) EnterTable_constraint(ctx *Table_constraintContext) {} + +// ExitTable_constraint is called when production table_constraint is exited. +func (s *BaseSqlListener) ExitTable_constraint(ctx *Table_constraintContext) {} + +// EnterTable_constraint_primary_key is called when production table_constraint_primary_key is entered. +func (s *BaseSqlListener) EnterTable_constraint_primary_key(ctx *Table_constraint_primary_keyContext) { +} + +// ExitTable_constraint_primary_key is called when production table_constraint_primary_key is exited. +func (s *BaseSqlListener) ExitTable_constraint_primary_key(ctx *Table_constraint_primary_keyContext) { +} + +// EnterTable_constraint_foreign_key is called when production table_constraint_foreign_key is entered. +func (s *BaseSqlListener) EnterTable_constraint_foreign_key(ctx *Table_constraint_foreign_keyContext) { +} + +// ExitTable_constraint_foreign_key is called when production table_constraint_foreign_key is exited. +func (s *BaseSqlListener) ExitTable_constraint_foreign_key(ctx *Table_constraint_foreign_keyContext) { +} + +// EnterTable_constraint_unique is called when production table_constraint_unique is entered. +func (s *BaseSqlListener) EnterTable_constraint_unique(ctx *Table_constraint_uniqueContext) {} + +// ExitTable_constraint_unique is called when production table_constraint_unique is exited. +func (s *BaseSqlListener) ExitTable_constraint_unique(ctx *Table_constraint_uniqueContext) {} + +// EnterTable_constraint_key is called when production table_constraint_key is entered. +func (s *BaseSqlListener) EnterTable_constraint_key(ctx *Table_constraint_keyContext) {} + +// ExitTable_constraint_key is called when production table_constraint_key is exited. +func (s *BaseSqlListener) ExitTable_constraint_key(ctx *Table_constraint_keyContext) {} + +// EnterFk_origin_column_name is called when production fk_origin_column_name is entered. +func (s *BaseSqlListener) EnterFk_origin_column_name(ctx *Fk_origin_column_nameContext) {} + +// ExitFk_origin_column_name is called when production fk_origin_column_name is exited. +func (s *BaseSqlListener) ExitFk_origin_column_name(ctx *Fk_origin_column_nameContext) {} + +// EnterWith_clause is called when production with_clause is entered. +func (s *BaseSqlListener) EnterWith_clause(ctx *With_clauseContext) {} + +// ExitWith_clause is called when production with_clause is exited. +func (s *BaseSqlListener) ExitWith_clause(ctx *With_clauseContext) {} + +// EnterQualified_table_name is called when production qualified_table_name is entered. +func (s *BaseSqlListener) EnterQualified_table_name(ctx *Qualified_table_nameContext) {} + +// ExitQualified_table_name is called when production qualified_table_name is exited. +func (s *BaseSqlListener) ExitQualified_table_name(ctx *Qualified_table_nameContext) {} + +// EnterOrdering_term is called when production ordering_term is entered. +func (s *BaseSqlListener) EnterOrdering_term(ctx *Ordering_termContext) {} + +// ExitOrdering_term is called when production ordering_term is exited. +func (s *BaseSqlListener) ExitOrdering_term(ctx *Ordering_termContext) {} + +// EnterPragma_value is called when production pragma_value is entered. +func (s *BaseSqlListener) EnterPragma_value(ctx *Pragma_valueContext) {} + +// ExitPragma_value is called when production pragma_value is exited. +func (s *BaseSqlListener) ExitPragma_value(ctx *Pragma_valueContext) {} + +// EnterCommon_table_expression is called when production common_table_expression is entered. +func (s *BaseSqlListener) EnterCommon_table_expression(ctx *Common_table_expressionContext) {} + +// ExitCommon_table_expression is called when production common_table_expression is exited. +func (s *BaseSqlListener) ExitCommon_table_expression(ctx *Common_table_expressionContext) {} + +// EnterResult_column is called when production result_column is entered. +func (s *BaseSqlListener) EnterResult_column(ctx *Result_columnContext) {} + +// ExitResult_column is called when production result_column is exited. +func (s *BaseSqlListener) ExitResult_column(ctx *Result_columnContext) {} + +// EnterTable_or_subquery is called when production table_or_subquery is entered. +func (s *BaseSqlListener) EnterTable_or_subquery(ctx *Table_or_subqueryContext) {} + +// ExitTable_or_subquery is called when production table_or_subquery is exited. +func (s *BaseSqlListener) ExitTable_or_subquery(ctx *Table_or_subqueryContext) {} + +// EnterJoin_clause is called when production join_clause is entered. +func (s *BaseSqlListener) EnterJoin_clause(ctx *Join_clauseContext) {} + +// ExitJoin_clause is called when production join_clause is exited. +func (s *BaseSqlListener) ExitJoin_clause(ctx *Join_clauseContext) {} + +// EnterJoin_operator is called when production join_operator is entered. +func (s *BaseSqlListener) EnterJoin_operator(ctx *Join_operatorContext) {} + +// ExitJoin_operator is called when production join_operator is exited. +func (s *BaseSqlListener) ExitJoin_operator(ctx *Join_operatorContext) {} + +// EnterJoin_constraint is called when production join_constraint is entered. +func (s *BaseSqlListener) EnterJoin_constraint(ctx *Join_constraintContext) {} + +// ExitJoin_constraint is called when production join_constraint is exited. +func (s *BaseSqlListener) ExitJoin_constraint(ctx *Join_constraintContext) {} + +// EnterSelect_core is called when production select_core is entered. +func (s *BaseSqlListener) EnterSelect_core(ctx *Select_coreContext) {} + +// ExitSelect_core is called when production select_core is exited. +func (s *BaseSqlListener) ExitSelect_core(ctx *Select_coreContext) {} + +// EnterCompound_operator is called when production compound_operator is entered. +func (s *BaseSqlListener) EnterCompound_operator(ctx *Compound_operatorContext) {} + +// ExitCompound_operator is called when production compound_operator is exited. +func (s *BaseSqlListener) ExitCompound_operator(ctx *Compound_operatorContext) {} + +// EnterCte_table_name is called when production cte_table_name is entered. +func (s *BaseSqlListener) EnterCte_table_name(ctx *Cte_table_nameContext) {} + +// ExitCte_table_name is called when production cte_table_name is exited. +func (s *BaseSqlListener) ExitCte_table_name(ctx *Cte_table_nameContext) {} + +// EnterSigned_number is called when production signed_number is entered. +func (s *BaseSqlListener) EnterSigned_number(ctx *Signed_numberContext) {} + +// ExitSigned_number is called when production signed_number is exited. +func (s *BaseSqlListener) ExitSigned_number(ctx *Signed_numberContext) {} + +// EnterLiteral_value is called when production literal_value is entered. +func (s *BaseSqlListener) EnterLiteral_value(ctx *Literal_valueContext) {} + +// ExitLiteral_value is called when production literal_value is exited. +func (s *BaseSqlListener) ExitLiteral_value(ctx *Literal_valueContext) {} + +// EnterUnary_operator is called when production unary_operator is entered. +func (s *BaseSqlListener) EnterUnary_operator(ctx *Unary_operatorContext) {} + +// ExitUnary_operator is called when production unary_operator is exited. +func (s *BaseSqlListener) ExitUnary_operator(ctx *Unary_operatorContext) {} + +// EnterError_message is called when production error_message is entered. +func (s *BaseSqlListener) EnterError_message(ctx *Error_messageContext) {} + +// ExitError_message is called when production error_message is exited. +func (s *BaseSqlListener) ExitError_message(ctx *Error_messageContext) {} + +// EnterModule_argument is called when production module_argument is entered. +func (s *BaseSqlListener) EnterModule_argument(ctx *Module_argumentContext) {} + +// ExitModule_argument is called when production module_argument is exited. +func (s *BaseSqlListener) ExitModule_argument(ctx *Module_argumentContext) {} + +// EnterColumn_alias is called when production column_alias is entered. +func (s *BaseSqlListener) EnterColumn_alias(ctx *Column_aliasContext) {} + +// ExitColumn_alias is called when production column_alias is exited. +func (s *BaseSqlListener) ExitColumn_alias(ctx *Column_aliasContext) {} + +// EnterKeyword is called when production keyword is entered. +func (s *BaseSqlListener) EnterKeyword(ctx *KeywordContext) {} + +// ExitKeyword is called when production keyword is exited. +func (s *BaseSqlListener) ExitKeyword(ctx *KeywordContext) {} + +// EnterUnknown is called when production unknown is entered. +func (s *BaseSqlListener) EnterUnknown(ctx *UnknownContext) {} + +// ExitUnknown is called when production unknown is exited. +func (s *BaseSqlListener) ExitUnknown(ctx *UnknownContext) {} + +// EnterName is called when production name is entered. +func (s *BaseSqlListener) EnterName(ctx *NameContext) {} + +// ExitName is called when production name is exited. +func (s *BaseSqlListener) ExitName(ctx *NameContext) {} + +// EnterFunction_name is called when production function_name is entered. +func (s *BaseSqlListener) EnterFunction_name(ctx *Function_nameContext) {} + +// ExitFunction_name is called when production function_name is exited. +func (s *BaseSqlListener) ExitFunction_name(ctx *Function_nameContext) {} + +// EnterDatabase_name is called when production database_name is entered. +func (s *BaseSqlListener) EnterDatabase_name(ctx *Database_nameContext) {} + +// ExitDatabase_name is called when production database_name is exited. +func (s *BaseSqlListener) ExitDatabase_name(ctx *Database_nameContext) {} + +// EnterSource_table_name is called when production source_table_name is entered. +func (s *BaseSqlListener) EnterSource_table_name(ctx *Source_table_nameContext) {} + +// ExitSource_table_name is called when production source_table_name is exited. +func (s *BaseSqlListener) ExitSource_table_name(ctx *Source_table_nameContext) {} + +// EnterTable_name is called when production table_name is entered. +func (s *BaseSqlListener) EnterTable_name(ctx *Table_nameContext) {} + +// ExitTable_name is called when production table_name is exited. +func (s *BaseSqlListener) ExitTable_name(ctx *Table_nameContext) {} + +// EnterTable_or_index_name is called when production table_or_index_name is entered. +func (s *BaseSqlListener) EnterTable_or_index_name(ctx *Table_or_index_nameContext) {} + +// ExitTable_or_index_name is called when production table_or_index_name is exited. +func (s *BaseSqlListener) ExitTable_or_index_name(ctx *Table_or_index_nameContext) {} + +// EnterNew_table_name is called when production new_table_name is entered. +func (s *BaseSqlListener) EnterNew_table_name(ctx *New_table_nameContext) {} + +// ExitNew_table_name is called when production new_table_name is exited. +func (s *BaseSqlListener) ExitNew_table_name(ctx *New_table_nameContext) {} + +// EnterColumn_name is called when production column_name is entered. +func (s *BaseSqlListener) EnterColumn_name(ctx *Column_nameContext) {} + +// ExitColumn_name is called when production column_name is exited. +func (s *BaseSqlListener) ExitColumn_name(ctx *Column_nameContext) {} + +// EnterCollation_name is called when production collation_name is entered. +func (s *BaseSqlListener) EnterCollation_name(ctx *Collation_nameContext) {} + +// ExitCollation_name is called when production collation_name is exited. +func (s *BaseSqlListener) ExitCollation_name(ctx *Collation_nameContext) {} + +// EnterForeign_table is called when production foreign_table is entered. +func (s *BaseSqlListener) EnterForeign_table(ctx *Foreign_tableContext) {} + +// ExitForeign_table is called when production foreign_table is exited. +func (s *BaseSqlListener) ExitForeign_table(ctx *Foreign_tableContext) {} + +// EnterIndex_name is called when production index_name is entered. +func (s *BaseSqlListener) EnterIndex_name(ctx *Index_nameContext) {} + +// ExitIndex_name is called when production index_name is exited. +func (s *BaseSqlListener) ExitIndex_name(ctx *Index_nameContext) {} + +// EnterTrigger_name is called when production trigger_name is entered. +func (s *BaseSqlListener) EnterTrigger_name(ctx *Trigger_nameContext) {} + +// ExitTrigger_name is called when production trigger_name is exited. +func (s *BaseSqlListener) ExitTrigger_name(ctx *Trigger_nameContext) {} + +// EnterView_name is called when production view_name is entered. +func (s *BaseSqlListener) EnterView_name(ctx *View_nameContext) {} + +// ExitView_name is called when production view_name is exited. +func (s *BaseSqlListener) ExitView_name(ctx *View_nameContext) {} + +// EnterModule_name is called when production module_name is entered. +func (s *BaseSqlListener) EnterModule_name(ctx *Module_nameContext) {} + +// ExitModule_name is called when production module_name is exited. +func (s *BaseSqlListener) ExitModule_name(ctx *Module_nameContext) {} + +// EnterPragma_name is called when production pragma_name is entered. +func (s *BaseSqlListener) EnterPragma_name(ctx *Pragma_nameContext) {} + +// ExitPragma_name is called when production pragma_name is exited. +func (s *BaseSqlListener) ExitPragma_name(ctx *Pragma_nameContext) {} + +// EnterSavepoint_name is called when production savepoint_name is entered. +func (s *BaseSqlListener) EnterSavepoint_name(ctx *Savepoint_nameContext) {} + +// ExitSavepoint_name is called when production savepoint_name is exited. +func (s *BaseSqlListener) ExitSavepoint_name(ctx *Savepoint_nameContext) {} + +// EnterTable_alias is called when production table_alias is entered. +func (s *BaseSqlListener) EnterTable_alias(ctx *Table_aliasContext) {} + +// ExitTable_alias is called when production table_alias is exited. +func (s *BaseSqlListener) ExitTable_alias(ctx *Table_aliasContext) {} + +// EnterTransaction_name is called when production transaction_name is entered. +func (s *BaseSqlListener) EnterTransaction_name(ctx *Transaction_nameContext) {} + +// ExitTransaction_name is called when production transaction_name is exited. +func (s *BaseSqlListener) ExitTransaction_name(ctx *Transaction_nameContext) {} + +// EnterAny_name is called when production any_name is entered. +func (s *BaseSqlListener) EnterAny_name(ctx *Any_nameContext) {} + +// ExitAny_name is called when production any_name is exited. +func (s *BaseSqlListener) ExitAny_name(ctx *Any_nameContext) {} diff --git a/processor/stream_processor/test/parser/sql_lexer.go b/processor/stream_processor/test/parser/sql_lexer.go new file mode 100644 index 000000000000..f48831c84578 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_lexer.go @@ -0,0 +1,1002 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser + +import ( + "fmt" + "sync" + "unicode" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import error +var _ = fmt.Printf +var _ = sync.Once{} +var _ = unicode.IsLetter + +type SqlLexer struct { + *antlr.BaseLexer + channelNames []string + modeNames []string + // TODO: EOF string +} + +var sqllexerLexerStaticData struct { + once sync.Once + serializedATN []int32 + channelNames []string + modeNames []string + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func sqllexerLexerInit() { + staticData := &sqllexerLexerStaticData + staticData.channelNames = []string{ + "DEFAULT_TOKEN_CHANNEL", "HIDDEN", + } + staticData.modeNames = []string{ + "DEFAULT_MODE", + } + staticData.literalNames = []string{ + "", "'::'", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", + "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", + "'<='", "'>'", "'>='", "'=='", "'!='", "'<>'", + } + staticData.symbolicNames = []string{ + "", "", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", + "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", + "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", + "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", + "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", + "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", + "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", + "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", + "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", + "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", + "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", + "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", + "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", + "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", + "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", + "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", + "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", + "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", + "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", + "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", + "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", + "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", + "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", + "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", + "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", + "UNEXPECTED_CHAR", + } + staticData.ruleNames = []string{ + "T__0", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", + "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", + "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", + "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", + "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", + "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", + "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", + "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", + "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", + "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", + "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", + "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", + "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", + "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", + "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", + "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", + "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", + "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", + "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", + "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", + "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", + "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", + "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", + "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", + "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", + "UNEXPECTED_CHAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", + "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", + "W", "X", "Y", "Z", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 0, 161, 1483, 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, 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, 1, 0, 1, 0, 1, 0, 1, 1, + 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, + 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, + 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, + 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, + 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 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, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, + 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, + 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, + 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, + 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, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, + 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 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, 39, 1, 39, 1, 39, + 1, 40, 1, 40, 1, 40, 1, 41, 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, 43, 1, 43, 1, 43, 1, 43, 1, 43, + 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 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, 47, 1, 47, 1, 47, 1, 48, 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, 49, 1, 49, 1, 49, 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, 52, 1, 52, + 1, 52, 1, 52, 1, 52, 1, 52, 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, 53, 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, + 54, 1, 54, 1, 54, 1, 54, 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, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, + 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, 59, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 59, 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, 63, 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, 66, 1, 66, 1, 66, 1, 66, + 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, + 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, + 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, + 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, + 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, + 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, + 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, + 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, + 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, + 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, + 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, + 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, + 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, + 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, + 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, + 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, + 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, + 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 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, 97, 1, 98, 1, + 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, + 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, + 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, + 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, + 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, + 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, + 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, + 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, + 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, + 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, + 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, + 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, + 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, + 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, + 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, + 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, + 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, + 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, + 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, + 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, + 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, + 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, + 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, + 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, + 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, + 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, + 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, + 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, + 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, + 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, + 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, + 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, + 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, + 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, + 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, + 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, + 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, + 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, + 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, + 1, 152, 1, 152, 5, 152, 1295, 8, 152, 10, 152, 12, 152, 1298, 9, 152, 1, + 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1305, 8, 152, 10, 152, 12, + 152, 1308, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1313, 8, 152, 10, 152, + 12, 152, 1316, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1321, 8, 152, 10, + 152, 12, 152, 1324, 9, 152, 3, 152, 1326, 8, 152, 1, 153, 4, 153, 1329, + 8, 153, 11, 153, 12, 153, 1330, 1, 153, 1, 153, 5, 153, 1335, 8, 153, 10, + 153, 12, 153, 1338, 9, 153, 3, 153, 1340, 8, 153, 1, 153, 1, 153, 3, 153, + 1344, 8, 153, 1, 153, 4, 153, 1347, 8, 153, 11, 153, 12, 153, 1348, 3, + 153, 1351, 8, 153, 1, 153, 1, 153, 4, 153, 1355, 8, 153, 11, 153, 12, 153, + 1356, 1, 153, 1, 153, 3, 153, 1361, 8, 153, 1, 153, 4, 153, 1364, 8, 153, + 11, 153, 12, 153, 1365, 3, 153, 1368, 8, 153, 3, 153, 1370, 8, 153, 1, + 154, 1, 154, 5, 154, 1374, 8, 154, 10, 154, 12, 154, 1377, 9, 154, 1, 154, + 1, 154, 3, 154, 1381, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 1387, + 8, 155, 10, 155, 12, 155, 1390, 9, 155, 1, 155, 1, 155, 1, 156, 1, 156, + 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1401, 8, 157, 10, 157, + 12, 157, 1404, 9, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, + 5, 158, 1412, 8, 158, 10, 158, 12, 158, 1415, 9, 158, 1, 158, 1, 158, 1, + 158, 3, 158, 1420, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, + 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, + 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, + 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, + 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, + 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, + 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, + 1, 187, 1, 187, 1, 1413, 0, 188, 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, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, + 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, + 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, + 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, + 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, + 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, + 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, + 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, + 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, + 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, + 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, + 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, + 321, 161, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, + 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, + 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, + 0, 375, 0, 1, 0, 37, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, + 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, + 45, 45, 3, 0, 36, 36, 58, 58, 64, 64, 1, 0, 39, 39, 2, 0, 10, 10, 13, 13, + 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, + 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, + 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, + 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, + 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, + 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, + 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, + 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, + 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, + 90, 122, 122, 1482, 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, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, + 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, + 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, + 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, + 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, + 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, 1, 377, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 5, 382, 1, 0, 0, 0, 7, + 384, 1, 0, 0, 0, 9, 386, 1, 0, 0, 0, 11, 388, 1, 0, 0, 0, 13, 390, 1, 0, + 0, 0, 15, 392, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 396, 1, 0, 0, 0, 21, + 398, 1, 0, 0, 0, 23, 400, 1, 0, 0, 0, 25, 403, 1, 0, 0, 0, 27, 405, 1, + 0, 0, 0, 29, 407, 1, 0, 0, 0, 31, 410, 1, 0, 0, 0, 33, 413, 1, 0, 0, 0, + 35, 415, 1, 0, 0, 0, 37, 417, 1, 0, 0, 0, 39, 419, 1, 0, 0, 0, 41, 422, + 1, 0, 0, 0, 43, 424, 1, 0, 0, 0, 45, 427, 1, 0, 0, 0, 47, 430, 1, 0, 0, + 0, 49, 433, 1, 0, 0, 0, 51, 436, 1, 0, 0, 0, 53, 442, 1, 0, 0, 0, 55, 449, + 1, 0, 0, 0, 57, 453, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 463, 1, 0, 0, + 0, 63, 469, 1, 0, 0, 0, 65, 477, 1, 0, 0, 0, 67, 481, 1, 0, 0, 0, 69, 484, + 1, 0, 0, 0, 71, 488, 1, 0, 0, 0, 73, 495, 1, 0, 0, 0, 75, 509, 1, 0, 0, + 0, 77, 516, 1, 0, 0, 0, 79, 522, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 533, + 1, 0, 0, 0, 85, 541, 1, 0, 0, 0, 87, 546, 1, 0, 0, 0, 89, 551, 1, 0, 0, + 0, 91, 557, 1, 0, 0, 0, 93, 565, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 579, + 1, 0, 0, 0, 99, 588, 1, 0, 0, 0, 101, 599, 1, 0, 0, 0, 103, 606, 1, 0, + 0, 0, 105, 612, 1, 0, 0, 0, 107, 625, 1, 0, 0, 0, 109, 638, 1, 0, 0, 0, + 111, 656, 1, 0, 0, 0, 113, 665, 1, 0, 0, 0, 115, 673, 1, 0, 0, 0, 117, + 684, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 700, 1, 0, 0, 0, 123, 705, + 1, 0, 0, 0, 125, 712, 1, 0, 0, 0, 127, 721, 1, 0, 0, 0, 129, 726, 1, 0, + 0, 0, 131, 731, 1, 0, 0, 0, 133, 736, 1, 0, 0, 0, 135, 740, 1, 0, 0, 0, + 137, 747, 1, 0, 0, 0, 139, 754, 1, 0, 0, 0, 141, 761, 1, 0, 0, 0, 143, + 771, 1, 0, 0, 0, 145, 778, 1, 0, 0, 0, 147, 786, 1, 0, 0, 0, 149, 791, + 1, 0, 0, 0, 151, 795, 1, 0, 0, 0, 153, 803, 1, 0, 0, 0, 155, 808, 1, 0, + 0, 0, 157, 813, 1, 0, 0, 0, 159, 818, 1, 0, 0, 0, 161, 824, 1, 0, 0, 0, + 163, 831, 1, 0, 0, 0, 165, 834, 1, 0, 0, 0, 167, 841, 1, 0, 0, 0, 169, + 851, 1, 0, 0, 0, 171, 854, 1, 0, 0, 0, 173, 860, 1, 0, 0, 0, 175, 868, + 1, 0, 0, 0, 177, 878, 1, 0, 0, 0, 179, 884, 1, 0, 0, 0, 181, 891, 1, 0, + 0, 0, 183, 899, 1, 0, 0, 0, 185, 909, 1, 0, 0, 0, 187, 914, 1, 0, 0, 0, + 189, 917, 1, 0, 0, 0, 191, 924, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, + 933, 1, 0, 0, 0, 197, 938, 1, 0, 0, 0, 199, 943, 1, 0, 0, 0, 201, 949, + 1, 0, 0, 0, 203, 955, 1, 0, 0, 0, 205, 963, 1, 0, 0, 0, 207, 971, 1, 0, + 0, 0, 209, 974, 1, 0, 0, 0, 211, 978, 1, 0, 0, 0, 213, 986, 1, 0, 0, 0, + 215, 991, 1, 0, 0, 0, 217, 994, 1, 0, 0, 0, 219, 1001, 1, 0, 0, 0, 221, + 1004, 1, 0, 0, 0, 223, 1009, 1, 0, 0, 0, 225, 1012, 1, 0, 0, 0, 227, 1018, + 1, 0, 0, 0, 229, 1024, 1, 0, 0, 0, 231, 1029, 1, 0, 0, 0, 233, 1036, 1, + 0, 0, 0, 235, 1044, 1, 0, 0, 0, 237, 1050, 1, 0, 0, 0, 239, 1056, 1, 0, + 0, 0, 241, 1066, 1, 0, 0, 0, 243, 1077, 1, 0, 0, 0, 245, 1084, 1, 0, 0, + 0, 247, 1092, 1, 0, 0, 0, 249, 1100, 1, 0, 0, 0, 251, 1107, 1, 0, 0, 0, + 253, 1115, 1, 0, 0, 0, 255, 1124, 1, 0, 0, 0, 257, 1130, 1, 0, 0, 0, 259, + 1139, 1, 0, 0, 0, 261, 1143, 1, 0, 0, 0, 263, 1153, 1, 0, 0, 0, 265, 1160, + 1, 0, 0, 0, 267, 1164, 1, 0, 0, 0, 269, 1170, 1, 0, 0, 0, 271, 1175, 1, + 0, 0, 0, 273, 1185, 1, 0, 0, 0, 275, 1190, 1, 0, 0, 0, 277, 1193, 1, 0, + 0, 0, 279, 1205, 1, 0, 0, 0, 281, 1213, 1, 0, 0, 0, 283, 1219, 1, 0, 0, + 0, 285, 1226, 1, 0, 0, 0, 287, 1233, 1, 0, 0, 0, 289, 1239, 1, 0, 0, 0, + 291, 1246, 1, 0, 0, 0, 293, 1253, 1, 0, 0, 0, 295, 1258, 1, 0, 0, 0, 297, + 1266, 1, 0, 0, 0, 299, 1271, 1, 0, 0, 0, 301, 1277, 1, 0, 0, 0, 303, 1282, + 1, 0, 0, 0, 305, 1325, 1, 0, 0, 0, 307, 1369, 1, 0, 0, 0, 309, 1380, 1, + 0, 0, 0, 311, 1382, 1, 0, 0, 0, 313, 1393, 1, 0, 0, 0, 315, 1396, 1, 0, + 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1423, 1, 0, 0, 0, 321, 1427, 1, 0, 0, + 0, 323, 1429, 1, 0, 0, 0, 325, 1431, 1, 0, 0, 0, 327, 1433, 1, 0, 0, 0, + 329, 1435, 1, 0, 0, 0, 331, 1437, 1, 0, 0, 0, 333, 1439, 1, 0, 0, 0, 335, + 1441, 1, 0, 0, 0, 337, 1443, 1, 0, 0, 0, 339, 1445, 1, 0, 0, 0, 341, 1447, + 1, 0, 0, 0, 343, 1449, 1, 0, 0, 0, 345, 1451, 1, 0, 0, 0, 347, 1453, 1, + 0, 0, 0, 349, 1455, 1, 0, 0, 0, 351, 1457, 1, 0, 0, 0, 353, 1459, 1, 0, + 0, 0, 355, 1461, 1, 0, 0, 0, 357, 1463, 1, 0, 0, 0, 359, 1465, 1, 0, 0, + 0, 361, 1467, 1, 0, 0, 0, 363, 1469, 1, 0, 0, 0, 365, 1471, 1, 0, 0, 0, + 367, 1473, 1, 0, 0, 0, 369, 1475, 1, 0, 0, 0, 371, 1477, 1, 0, 0, 0, 373, + 1479, 1, 0, 0, 0, 375, 1481, 1, 0, 0, 0, 377, 378, 5, 58, 0, 0, 378, 379, + 5, 58, 0, 0, 379, 2, 1, 0, 0, 0, 380, 381, 5, 59, 0, 0, 381, 4, 1, 0, 0, + 0, 382, 383, 5, 46, 0, 0, 383, 6, 1, 0, 0, 0, 384, 385, 5, 40, 0, 0, 385, + 8, 1, 0, 0, 0, 386, 387, 5, 41, 0, 0, 387, 10, 1, 0, 0, 0, 388, 389, 5, + 44, 0, 0, 389, 12, 1, 0, 0, 0, 390, 391, 5, 61, 0, 0, 391, 14, 1, 0, 0, + 0, 392, 393, 5, 42, 0, 0, 393, 16, 1, 0, 0, 0, 394, 395, 5, 43, 0, 0, 395, + 18, 1, 0, 0, 0, 396, 397, 5, 45, 0, 0, 397, 20, 1, 0, 0, 0, 398, 399, 5, + 126, 0, 0, 399, 22, 1, 0, 0, 0, 400, 401, 5, 124, 0, 0, 401, 402, 5, 124, + 0, 0, 402, 24, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 26, 1, 0, 0, 0, + 405, 406, 5, 37, 0, 0, 406, 28, 1, 0, 0, 0, 407, 408, 5, 60, 0, 0, 408, + 409, 5, 60, 0, 0, 409, 30, 1, 0, 0, 0, 410, 411, 5, 62, 0, 0, 411, 412, + 5, 62, 0, 0, 412, 32, 1, 0, 0, 0, 413, 414, 5, 38, 0, 0, 414, 34, 1, 0, + 0, 0, 415, 416, 5, 124, 0, 0, 416, 36, 1, 0, 0, 0, 417, 418, 5, 60, 0, + 0, 418, 38, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 421, 5, 61, 0, 0, 421, + 40, 1, 0, 0, 0, 422, 423, 5, 62, 0, 0, 423, 42, 1, 0, 0, 0, 424, 425, 5, + 62, 0, 0, 425, 426, 5, 61, 0, 0, 426, 44, 1, 0, 0, 0, 427, 428, 5, 61, + 0, 0, 428, 429, 5, 61, 0, 0, 429, 46, 1, 0, 0, 0, 430, 431, 5, 33, 0, 0, + 431, 432, 5, 61, 0, 0, 432, 48, 1, 0, 0, 0, 433, 434, 5, 60, 0, 0, 434, + 435, 5, 62, 0, 0, 435, 50, 1, 0, 0, 0, 436, 437, 3, 325, 162, 0, 437, 438, + 3, 327, 163, 0, 438, 439, 3, 353, 176, 0, 439, 440, 3, 359, 179, 0, 440, + 441, 3, 363, 181, 0, 441, 52, 1, 0, 0, 0, 442, 443, 3, 325, 162, 0, 443, + 444, 3, 329, 164, 0, 444, 445, 3, 363, 181, 0, 445, 446, 3, 341, 170, 0, + 446, 447, 3, 353, 176, 0, 447, 448, 3, 351, 175, 0, 448, 54, 1, 0, 0, 0, + 449, 450, 3, 325, 162, 0, 450, 451, 3, 331, 165, 0, 451, 452, 3, 331, 165, + 0, 452, 56, 1, 0, 0, 0, 453, 454, 3, 325, 162, 0, 454, 455, 3, 335, 167, + 0, 455, 456, 3, 363, 181, 0, 456, 457, 3, 333, 166, 0, 457, 458, 3, 359, + 179, 0, 458, 58, 1, 0, 0, 0, 459, 460, 3, 325, 162, 0, 460, 461, 3, 347, + 173, 0, 461, 462, 3, 347, 173, 0, 462, 60, 1, 0, 0, 0, 463, 464, 3, 325, + 162, 0, 464, 465, 3, 347, 173, 0, 465, 466, 3, 363, 181, 0, 466, 467, 3, + 333, 166, 0, 467, 468, 3, 359, 179, 0, 468, 62, 1, 0, 0, 0, 469, 470, 3, + 325, 162, 0, 470, 471, 3, 351, 175, 0, 471, 472, 3, 325, 162, 0, 472, 473, + 3, 347, 173, 0, 473, 474, 3, 373, 186, 0, 474, 475, 3, 375, 187, 0, 475, + 476, 3, 333, 166, 0, 476, 64, 1, 0, 0, 0, 477, 478, 3, 325, 162, 0, 478, + 479, 3, 351, 175, 0, 479, 480, 3, 331, 165, 0, 480, 66, 1, 0, 0, 0, 481, + 482, 3, 325, 162, 0, 482, 483, 3, 361, 180, 0, 483, 68, 1, 0, 0, 0, 484, + 485, 3, 325, 162, 0, 485, 486, 3, 361, 180, 0, 486, 487, 3, 329, 164, 0, + 487, 70, 1, 0, 0, 0, 488, 489, 3, 325, 162, 0, 489, 490, 3, 363, 181, 0, + 490, 491, 3, 363, 181, 0, 491, 492, 3, 325, 162, 0, 492, 493, 3, 329, 164, + 0, 493, 494, 3, 339, 169, 0, 494, 72, 1, 0, 0, 0, 495, 496, 3, 325, 162, + 0, 496, 497, 3, 365, 182, 0, 497, 498, 3, 363, 181, 0, 498, 499, 3, 353, + 176, 0, 499, 500, 3, 341, 170, 0, 500, 501, 3, 351, 175, 0, 501, 502, 3, + 329, 164, 0, 502, 503, 3, 359, 179, 0, 503, 504, 3, 333, 166, 0, 504, 505, + 3, 349, 174, 0, 505, 506, 3, 333, 166, 0, 506, 507, 3, 351, 175, 0, 507, + 508, 3, 363, 181, 0, 508, 74, 1, 0, 0, 0, 509, 510, 3, 327, 163, 0, 510, + 511, 3, 333, 166, 0, 511, 512, 3, 335, 167, 0, 512, 513, 3, 353, 176, 0, + 513, 514, 3, 359, 179, 0, 514, 515, 3, 333, 166, 0, 515, 76, 1, 0, 0, 0, + 516, 517, 3, 327, 163, 0, 517, 518, 3, 333, 166, 0, 518, 519, 3, 337, 168, + 0, 519, 520, 3, 341, 170, 0, 520, 521, 3, 351, 175, 0, 521, 78, 1, 0, 0, + 0, 522, 523, 3, 327, 163, 0, 523, 524, 3, 333, 166, 0, 524, 525, 3, 363, + 181, 0, 525, 526, 3, 369, 184, 0, 526, 527, 3, 333, 166, 0, 527, 528, 3, + 333, 166, 0, 528, 529, 3, 351, 175, 0, 529, 80, 1, 0, 0, 0, 530, 531, 3, + 327, 163, 0, 531, 532, 3, 373, 186, 0, 532, 82, 1, 0, 0, 0, 533, 534, 3, + 329, 164, 0, 534, 535, 3, 325, 162, 0, 535, 536, 3, 361, 180, 0, 536, 537, + 3, 329, 164, 0, 537, 538, 3, 325, 162, 0, 538, 539, 3, 331, 165, 0, 539, + 540, 3, 333, 166, 0, 540, 84, 1, 0, 0, 0, 541, 542, 3, 329, 164, 0, 542, + 543, 3, 325, 162, 0, 543, 544, 3, 361, 180, 0, 544, 545, 3, 333, 166, 0, + 545, 86, 1, 0, 0, 0, 546, 547, 3, 329, 164, 0, 547, 548, 3, 325, 162, 0, + 548, 549, 3, 361, 180, 0, 549, 550, 3, 363, 181, 0, 550, 88, 1, 0, 0, 0, + 551, 552, 3, 329, 164, 0, 552, 553, 3, 339, 169, 0, 553, 554, 3, 333, 166, + 0, 554, 555, 3, 329, 164, 0, 555, 556, 3, 345, 172, 0, 556, 90, 1, 0, 0, + 0, 557, 558, 3, 329, 164, 0, 558, 559, 3, 353, 176, 0, 559, 560, 3, 347, + 173, 0, 560, 561, 3, 347, 173, 0, 561, 562, 3, 325, 162, 0, 562, 563, 3, + 363, 181, 0, 563, 564, 3, 333, 166, 0, 564, 92, 1, 0, 0, 0, 565, 566, 3, + 329, 164, 0, 566, 567, 3, 353, 176, 0, 567, 568, 3, 347, 173, 0, 568, 569, + 3, 365, 182, 0, 569, 570, 3, 349, 174, 0, 570, 571, 3, 351, 175, 0, 571, + 94, 1, 0, 0, 0, 572, 573, 3, 329, 164, 0, 573, 574, 3, 353, 176, 0, 574, + 575, 3, 349, 174, 0, 575, 576, 3, 349, 174, 0, 576, 577, 3, 341, 170, 0, + 577, 578, 3, 363, 181, 0, 578, 96, 1, 0, 0, 0, 579, 580, 3, 329, 164, 0, + 580, 581, 3, 353, 176, 0, 581, 582, 3, 351, 175, 0, 582, 583, 3, 335, 167, + 0, 583, 584, 3, 347, 173, 0, 584, 585, 3, 341, 170, 0, 585, 586, 3, 329, + 164, 0, 586, 587, 3, 363, 181, 0, 587, 98, 1, 0, 0, 0, 588, 589, 3, 329, + 164, 0, 589, 590, 3, 353, 176, 0, 590, 591, 3, 351, 175, 0, 591, 592, 3, + 361, 180, 0, 592, 593, 3, 363, 181, 0, 593, 594, 3, 359, 179, 0, 594, 595, + 3, 325, 162, 0, 595, 596, 3, 341, 170, 0, 596, 597, 3, 351, 175, 0, 597, + 598, 3, 363, 181, 0, 598, 100, 1, 0, 0, 0, 599, 600, 3, 329, 164, 0, 600, + 601, 3, 359, 179, 0, 601, 602, 3, 333, 166, 0, 602, 603, 3, 325, 162, 0, + 603, 604, 3, 363, 181, 0, 604, 605, 3, 333, 166, 0, 605, 102, 1, 0, 0, + 0, 606, 607, 3, 329, 164, 0, 607, 608, 3, 359, 179, 0, 608, 609, 3, 353, + 176, 0, 609, 610, 3, 361, 180, 0, 610, 611, 3, 361, 180, 0, 611, 104, 1, + 0, 0, 0, 612, 613, 3, 329, 164, 0, 613, 614, 3, 365, 182, 0, 614, 615, + 3, 359, 179, 0, 615, 616, 3, 359, 179, 0, 616, 617, 3, 333, 166, 0, 617, + 618, 3, 351, 175, 0, 618, 619, 3, 363, 181, 0, 619, 620, 5, 95, 0, 0, 620, + 621, 3, 331, 165, 0, 621, 622, 3, 325, 162, 0, 622, 623, 3, 363, 181, 0, + 623, 624, 3, 333, 166, 0, 624, 106, 1, 0, 0, 0, 625, 626, 3, 329, 164, + 0, 626, 627, 3, 365, 182, 0, 627, 628, 3, 359, 179, 0, 628, 629, 3, 359, + 179, 0, 629, 630, 3, 333, 166, 0, 630, 631, 3, 351, 175, 0, 631, 632, 3, + 363, 181, 0, 632, 633, 5, 95, 0, 0, 633, 634, 3, 363, 181, 0, 634, 635, + 3, 341, 170, 0, 635, 636, 3, 349, 174, 0, 636, 637, 3, 333, 166, 0, 637, + 108, 1, 0, 0, 0, 638, 639, 3, 329, 164, 0, 639, 640, 3, 365, 182, 0, 640, + 641, 3, 359, 179, 0, 641, 642, 3, 359, 179, 0, 642, 643, 3, 333, 166, 0, + 643, 644, 3, 351, 175, 0, 644, 645, 3, 363, 181, 0, 645, 646, 5, 95, 0, + 0, 646, 647, 3, 363, 181, 0, 647, 648, 3, 341, 170, 0, 648, 649, 3, 349, + 174, 0, 649, 650, 3, 333, 166, 0, 650, 651, 3, 361, 180, 0, 651, 652, 3, + 363, 181, 0, 652, 653, 3, 325, 162, 0, 653, 654, 3, 349, 174, 0, 654, 655, + 3, 355, 177, 0, 655, 110, 1, 0, 0, 0, 656, 657, 3, 331, 165, 0, 657, 658, + 3, 325, 162, 0, 658, 659, 3, 363, 181, 0, 659, 660, 3, 325, 162, 0, 660, + 661, 3, 327, 163, 0, 661, 662, 3, 325, 162, 0, 662, 663, 3, 361, 180, 0, + 663, 664, 3, 333, 166, 0, 664, 112, 1, 0, 0, 0, 665, 666, 3, 331, 165, + 0, 666, 667, 3, 333, 166, 0, 667, 668, 3, 335, 167, 0, 668, 669, 3, 325, + 162, 0, 669, 670, 3, 365, 182, 0, 670, 671, 3, 347, 173, 0, 671, 672, 3, + 363, 181, 0, 672, 114, 1, 0, 0, 0, 673, 674, 3, 331, 165, 0, 674, 675, + 3, 333, 166, 0, 675, 676, 3, 335, 167, 0, 676, 677, 3, 333, 166, 0, 677, + 678, 3, 359, 179, 0, 678, 679, 3, 359, 179, 0, 679, 680, 3, 325, 162, 0, + 680, 681, 3, 327, 163, 0, 681, 682, 3, 347, 173, 0, 682, 683, 3, 333, 166, + 0, 683, 116, 1, 0, 0, 0, 684, 685, 3, 331, 165, 0, 685, 686, 3, 333, 166, + 0, 686, 687, 3, 335, 167, 0, 687, 688, 3, 333, 166, 0, 688, 689, 3, 359, + 179, 0, 689, 690, 3, 359, 179, 0, 690, 691, 3, 333, 166, 0, 691, 692, 3, + 331, 165, 0, 692, 118, 1, 0, 0, 0, 693, 694, 3, 331, 165, 0, 694, 695, + 3, 333, 166, 0, 695, 696, 3, 347, 173, 0, 696, 697, 3, 333, 166, 0, 697, + 698, 3, 363, 181, 0, 698, 699, 3, 333, 166, 0, 699, 120, 1, 0, 0, 0, 700, + 701, 3, 331, 165, 0, 701, 702, 3, 333, 166, 0, 702, 703, 3, 361, 180, 0, + 703, 704, 3, 329, 164, 0, 704, 122, 1, 0, 0, 0, 705, 706, 3, 331, 165, + 0, 706, 707, 3, 333, 166, 0, 707, 708, 3, 363, 181, 0, 708, 709, 3, 325, + 162, 0, 709, 710, 3, 329, 164, 0, 710, 711, 3, 339, 169, 0, 711, 124, 1, + 0, 0, 0, 712, 713, 3, 331, 165, 0, 713, 714, 3, 341, 170, 0, 714, 715, + 3, 361, 180, 0, 715, 716, 3, 363, 181, 0, 716, 717, 3, 341, 170, 0, 717, + 718, 3, 351, 175, 0, 718, 719, 3, 329, 164, 0, 719, 720, 3, 363, 181, 0, + 720, 126, 1, 0, 0, 0, 721, 722, 3, 331, 165, 0, 722, 723, 3, 359, 179, + 0, 723, 724, 3, 353, 176, 0, 724, 725, 3, 355, 177, 0, 725, 128, 1, 0, + 0, 0, 726, 727, 3, 333, 166, 0, 727, 728, 3, 325, 162, 0, 728, 729, 3, + 329, 164, 0, 729, 730, 3, 339, 169, 0, 730, 130, 1, 0, 0, 0, 731, 732, + 3, 333, 166, 0, 732, 733, 3, 347, 173, 0, 733, 734, 3, 361, 180, 0, 734, + 735, 3, 333, 166, 0, 735, 132, 1, 0, 0, 0, 736, 737, 3, 333, 166, 0, 737, + 738, 3, 351, 175, 0, 738, 739, 3, 331, 165, 0, 739, 134, 1, 0, 0, 0, 740, + 741, 3, 333, 166, 0, 741, 742, 3, 351, 175, 0, 742, 743, 3, 325, 162, 0, + 743, 744, 3, 327, 163, 0, 744, 745, 3, 347, 173, 0, 745, 746, 3, 333, 166, + 0, 746, 136, 1, 0, 0, 0, 747, 748, 3, 333, 166, 0, 748, 749, 3, 361, 180, + 0, 749, 750, 3, 329, 164, 0, 750, 751, 3, 325, 162, 0, 751, 752, 3, 355, + 177, 0, 752, 753, 3, 333, 166, 0, 753, 138, 1, 0, 0, 0, 754, 755, 3, 333, + 166, 0, 755, 756, 3, 371, 185, 0, 756, 757, 3, 329, 164, 0, 757, 758, 3, + 333, 166, 0, 758, 759, 3, 355, 177, 0, 759, 760, 3, 363, 181, 0, 760, 140, + 1, 0, 0, 0, 761, 762, 3, 333, 166, 0, 762, 763, 3, 371, 185, 0, 763, 764, + 3, 329, 164, 0, 764, 765, 3, 347, 173, 0, 765, 766, 3, 365, 182, 0, 766, + 767, 3, 361, 180, 0, 767, 768, 3, 341, 170, 0, 768, 769, 3, 367, 183, 0, + 769, 770, 3, 333, 166, 0, 770, 142, 1, 0, 0, 0, 771, 772, 3, 333, 166, + 0, 772, 773, 3, 371, 185, 0, 773, 774, 3, 341, 170, 0, 774, 775, 3, 361, + 180, 0, 775, 776, 3, 363, 181, 0, 776, 777, 3, 361, 180, 0, 777, 144, 1, + 0, 0, 0, 778, 779, 3, 333, 166, 0, 779, 780, 3, 371, 185, 0, 780, 781, + 3, 355, 177, 0, 781, 782, 3, 347, 173, 0, 782, 783, 3, 325, 162, 0, 783, + 784, 3, 341, 170, 0, 784, 785, 3, 351, 175, 0, 785, 146, 1, 0, 0, 0, 786, + 787, 3, 335, 167, 0, 787, 788, 3, 325, 162, 0, 788, 789, 3, 341, 170, 0, + 789, 790, 3, 347, 173, 0, 790, 148, 1, 0, 0, 0, 791, 792, 3, 335, 167, + 0, 792, 793, 3, 353, 176, 0, 793, 794, 3, 359, 179, 0, 794, 150, 1, 0, + 0, 0, 795, 796, 3, 335, 167, 0, 796, 797, 3, 353, 176, 0, 797, 798, 3, + 359, 179, 0, 798, 799, 3, 333, 166, 0, 799, 800, 3, 341, 170, 0, 800, 801, + 3, 337, 168, 0, 801, 802, 3, 351, 175, 0, 802, 152, 1, 0, 0, 0, 803, 804, + 3, 335, 167, 0, 804, 805, 3, 359, 179, 0, 805, 806, 3, 353, 176, 0, 806, + 807, 3, 349, 174, 0, 807, 154, 1, 0, 0, 0, 808, 809, 3, 335, 167, 0, 809, + 810, 3, 365, 182, 0, 810, 811, 3, 347, 173, 0, 811, 812, 3, 347, 173, 0, + 812, 156, 1, 0, 0, 0, 813, 814, 3, 337, 168, 0, 814, 815, 3, 347, 173, + 0, 815, 816, 3, 353, 176, 0, 816, 817, 3, 327, 163, 0, 817, 158, 1, 0, + 0, 0, 818, 819, 3, 337, 168, 0, 819, 820, 3, 359, 179, 0, 820, 821, 3, + 353, 176, 0, 821, 822, 3, 365, 182, 0, 822, 823, 3, 355, 177, 0, 823, 160, + 1, 0, 0, 0, 824, 825, 3, 339, 169, 0, 825, 826, 3, 325, 162, 0, 826, 827, + 3, 367, 183, 0, 827, 828, 3, 341, 170, 0, 828, 829, 3, 351, 175, 0, 829, + 830, 3, 337, 168, 0, 830, 162, 1, 0, 0, 0, 831, 832, 3, 341, 170, 0, 832, + 833, 3, 335, 167, 0, 833, 164, 1, 0, 0, 0, 834, 835, 3, 341, 170, 0, 835, + 836, 3, 337, 168, 0, 836, 837, 3, 351, 175, 0, 837, 838, 3, 353, 176, 0, + 838, 839, 3, 359, 179, 0, 839, 840, 3, 333, 166, 0, 840, 166, 1, 0, 0, + 0, 841, 842, 3, 341, 170, 0, 842, 843, 3, 349, 174, 0, 843, 844, 3, 349, + 174, 0, 844, 845, 3, 333, 166, 0, 845, 846, 3, 331, 165, 0, 846, 847, 3, + 341, 170, 0, 847, 848, 3, 325, 162, 0, 848, 849, 3, 363, 181, 0, 849, 850, + 3, 333, 166, 0, 850, 168, 1, 0, 0, 0, 851, 852, 3, 341, 170, 0, 852, 853, + 3, 351, 175, 0, 853, 170, 1, 0, 0, 0, 854, 855, 3, 341, 170, 0, 855, 856, + 3, 351, 175, 0, 856, 857, 3, 331, 165, 0, 857, 858, 3, 333, 166, 0, 858, + 859, 3, 371, 185, 0, 859, 172, 1, 0, 0, 0, 860, 861, 3, 341, 170, 0, 861, + 862, 3, 351, 175, 0, 862, 863, 3, 331, 165, 0, 863, 864, 3, 333, 166, 0, + 864, 865, 3, 371, 185, 0, 865, 866, 3, 333, 166, 0, 866, 867, 3, 331, 165, + 0, 867, 174, 1, 0, 0, 0, 868, 869, 3, 341, 170, 0, 869, 870, 3, 351, 175, + 0, 870, 871, 3, 341, 170, 0, 871, 872, 3, 363, 181, 0, 872, 873, 3, 341, + 170, 0, 873, 874, 3, 325, 162, 0, 874, 875, 3, 347, 173, 0, 875, 876, 3, + 347, 173, 0, 876, 877, 3, 373, 186, 0, 877, 176, 1, 0, 0, 0, 878, 879, + 3, 341, 170, 0, 879, 880, 3, 351, 175, 0, 880, 881, 3, 351, 175, 0, 881, + 882, 3, 333, 166, 0, 882, 883, 3, 359, 179, 0, 883, 178, 1, 0, 0, 0, 884, + 885, 3, 341, 170, 0, 885, 886, 3, 351, 175, 0, 886, 887, 3, 361, 180, 0, + 887, 888, 3, 333, 166, 0, 888, 889, 3, 359, 179, 0, 889, 890, 3, 363, 181, + 0, 890, 180, 1, 0, 0, 0, 891, 892, 3, 341, 170, 0, 892, 893, 3, 351, 175, + 0, 893, 894, 3, 361, 180, 0, 894, 895, 3, 363, 181, 0, 895, 896, 3, 333, + 166, 0, 896, 897, 3, 325, 162, 0, 897, 898, 3, 331, 165, 0, 898, 182, 1, + 0, 0, 0, 899, 900, 3, 341, 170, 0, 900, 901, 3, 351, 175, 0, 901, 902, + 3, 363, 181, 0, 902, 903, 3, 333, 166, 0, 903, 904, 3, 359, 179, 0, 904, + 905, 3, 361, 180, 0, 905, 906, 3, 333, 166, 0, 906, 907, 3, 329, 164, 0, + 907, 908, 3, 363, 181, 0, 908, 184, 1, 0, 0, 0, 909, 910, 3, 341, 170, + 0, 910, 911, 3, 351, 175, 0, 911, 912, 3, 363, 181, 0, 912, 913, 3, 353, + 176, 0, 913, 186, 1, 0, 0, 0, 914, 915, 3, 341, 170, 0, 915, 916, 3, 361, + 180, 0, 916, 188, 1, 0, 0, 0, 917, 918, 3, 341, 170, 0, 918, 919, 3, 361, + 180, 0, 919, 920, 3, 351, 175, 0, 920, 921, 3, 365, 182, 0, 921, 922, 3, + 347, 173, 0, 922, 923, 3, 347, 173, 0, 923, 190, 1, 0, 0, 0, 924, 925, + 3, 343, 171, 0, 925, 926, 3, 353, 176, 0, 926, 927, 3, 341, 170, 0, 927, + 928, 3, 351, 175, 0, 928, 192, 1, 0, 0, 0, 929, 930, 3, 345, 172, 0, 930, + 931, 3, 333, 166, 0, 931, 932, 3, 373, 186, 0, 932, 194, 1, 0, 0, 0, 933, + 934, 3, 347, 173, 0, 934, 935, 3, 333, 166, 0, 935, 936, 3, 335, 167, 0, + 936, 937, 3, 363, 181, 0, 937, 196, 1, 0, 0, 0, 938, 939, 3, 347, 173, + 0, 939, 940, 3, 341, 170, 0, 940, 941, 3, 345, 172, 0, 941, 942, 3, 333, + 166, 0, 942, 198, 1, 0, 0, 0, 943, 944, 3, 347, 173, 0, 944, 945, 3, 341, + 170, 0, 945, 946, 3, 349, 174, 0, 946, 947, 3, 341, 170, 0, 947, 948, 3, + 363, 181, 0, 948, 200, 1, 0, 0, 0, 949, 950, 3, 349, 174, 0, 950, 951, + 3, 325, 162, 0, 951, 952, 3, 363, 181, 0, 952, 953, 3, 329, 164, 0, 953, + 954, 3, 339, 169, 0, 954, 202, 1, 0, 0, 0, 955, 956, 3, 351, 175, 0, 956, + 957, 3, 325, 162, 0, 957, 958, 3, 363, 181, 0, 958, 959, 3, 365, 182, 0, + 959, 960, 3, 359, 179, 0, 960, 961, 3, 325, 162, 0, 961, 962, 3, 347, 173, + 0, 962, 204, 1, 0, 0, 0, 963, 964, 3, 351, 175, 0, 964, 965, 3, 333, 166, + 0, 965, 966, 3, 371, 185, 0, 966, 967, 3, 363, 181, 0, 967, 968, 3, 367, + 183, 0, 968, 969, 3, 325, 162, 0, 969, 970, 3, 347, 173, 0, 970, 206, 1, + 0, 0, 0, 971, 972, 3, 351, 175, 0, 972, 973, 3, 353, 176, 0, 973, 208, + 1, 0, 0, 0, 974, 975, 3, 351, 175, 0, 975, 976, 3, 353, 176, 0, 976, 977, + 3, 363, 181, 0, 977, 210, 1, 0, 0, 0, 978, 979, 3, 351, 175, 0, 979, 980, + 3, 353, 176, 0, 980, 981, 3, 363, 181, 0, 981, 982, 3, 351, 175, 0, 982, + 983, 3, 365, 182, 0, 983, 984, 3, 347, 173, 0, 984, 985, 3, 347, 173, 0, + 985, 212, 1, 0, 0, 0, 986, 987, 3, 351, 175, 0, 987, 988, 3, 365, 182, + 0, 988, 989, 3, 347, 173, 0, 989, 990, 3, 347, 173, 0, 990, 214, 1, 0, + 0, 0, 991, 992, 3, 353, 176, 0, 992, 993, 3, 335, 167, 0, 993, 216, 1, + 0, 0, 0, 994, 995, 3, 353, 176, 0, 995, 996, 3, 335, 167, 0, 996, 997, + 3, 335, 167, 0, 997, 998, 3, 361, 180, 0, 998, 999, 3, 333, 166, 0, 999, + 1000, 3, 363, 181, 0, 1000, 218, 1, 0, 0, 0, 1001, 1002, 3, 353, 176, 0, + 1002, 1003, 3, 351, 175, 0, 1003, 220, 1, 0, 0, 0, 1004, 1005, 3, 353, + 176, 0, 1005, 1006, 3, 351, 175, 0, 1006, 1007, 3, 347, 173, 0, 1007, 1008, + 3, 373, 186, 0, 1008, 222, 1, 0, 0, 0, 1009, 1010, 3, 353, 176, 0, 1010, + 1011, 3, 359, 179, 0, 1011, 224, 1, 0, 0, 0, 1012, 1013, 3, 353, 176, 0, + 1013, 1014, 3, 359, 179, 0, 1014, 1015, 3, 331, 165, 0, 1015, 1016, 3, + 333, 166, 0, 1016, 1017, 3, 359, 179, 0, 1017, 226, 1, 0, 0, 0, 1018, 1019, + 3, 353, 176, 0, 1019, 1020, 3, 365, 182, 0, 1020, 1021, 3, 363, 181, 0, + 1021, 1022, 3, 333, 166, 0, 1022, 1023, 3, 359, 179, 0, 1023, 228, 1, 0, + 0, 0, 1024, 1025, 3, 355, 177, 0, 1025, 1026, 3, 347, 173, 0, 1026, 1027, + 3, 325, 162, 0, 1027, 1028, 3, 351, 175, 0, 1028, 230, 1, 0, 0, 0, 1029, + 1030, 3, 355, 177, 0, 1030, 1031, 3, 359, 179, 0, 1031, 1032, 3, 325, 162, + 0, 1032, 1033, 3, 337, 168, 0, 1033, 1034, 3, 349, 174, 0, 1034, 1035, + 3, 325, 162, 0, 1035, 232, 1, 0, 0, 0, 1036, 1037, 3, 355, 177, 0, 1037, + 1038, 3, 359, 179, 0, 1038, 1039, 3, 341, 170, 0, 1039, 1040, 3, 349, 174, + 0, 1040, 1041, 3, 325, 162, 0, 1041, 1042, 3, 359, 179, 0, 1042, 1043, + 3, 373, 186, 0, 1043, 234, 1, 0, 0, 0, 1044, 1045, 3, 357, 178, 0, 1045, + 1046, 3, 365, 182, 0, 1046, 1047, 3, 333, 166, 0, 1047, 1048, 3, 359, 179, + 0, 1048, 1049, 3, 373, 186, 0, 1049, 236, 1, 0, 0, 0, 1050, 1051, 3, 359, + 179, 0, 1051, 1052, 3, 325, 162, 0, 1052, 1053, 3, 341, 170, 0, 1053, 1054, + 3, 361, 180, 0, 1054, 1055, 3, 333, 166, 0, 1055, 238, 1, 0, 0, 0, 1056, + 1057, 3, 359, 179, 0, 1057, 1058, 3, 333, 166, 0, 1058, 1059, 3, 329, 164, + 0, 1059, 1060, 3, 365, 182, 0, 1060, 1061, 3, 359, 179, 0, 1061, 1062, + 3, 361, 180, 0, 1062, 1063, 3, 341, 170, 0, 1063, 1064, 3, 367, 183, 0, + 1064, 1065, 3, 333, 166, 0, 1065, 240, 1, 0, 0, 0, 1066, 1067, 3, 359, + 179, 0, 1067, 1068, 3, 333, 166, 0, 1068, 1069, 3, 335, 167, 0, 1069, 1070, + 3, 333, 166, 0, 1070, 1071, 3, 359, 179, 0, 1071, 1072, 3, 333, 166, 0, + 1072, 1073, 3, 351, 175, 0, 1073, 1074, 3, 329, 164, 0, 1074, 1075, 3, + 333, 166, 0, 1075, 1076, 3, 361, 180, 0, 1076, 242, 1, 0, 0, 0, 1077, 1078, + 3, 359, 179, 0, 1078, 1079, 3, 333, 166, 0, 1079, 1080, 3, 337, 168, 0, + 1080, 1081, 3, 333, 166, 0, 1081, 1082, 3, 371, 185, 0, 1082, 1083, 3, + 355, 177, 0, 1083, 244, 1, 0, 0, 0, 1084, 1085, 3, 359, 179, 0, 1085, 1086, + 3, 333, 166, 0, 1086, 1087, 3, 341, 170, 0, 1087, 1088, 3, 351, 175, 0, + 1088, 1089, 3, 331, 165, 0, 1089, 1090, 3, 333, 166, 0, 1090, 1091, 3, + 371, 185, 0, 1091, 246, 1, 0, 0, 0, 1092, 1093, 3, 359, 179, 0, 1093, 1094, + 3, 333, 166, 0, 1094, 1095, 3, 347, 173, 0, 1095, 1096, 3, 333, 166, 0, + 1096, 1097, 3, 325, 162, 0, 1097, 1098, 3, 361, 180, 0, 1098, 1099, 3, + 333, 166, 0, 1099, 248, 1, 0, 0, 0, 1100, 1101, 3, 359, 179, 0, 1101, 1102, + 3, 333, 166, 0, 1102, 1103, 3, 351, 175, 0, 1103, 1104, 3, 325, 162, 0, + 1104, 1105, 3, 349, 174, 0, 1105, 1106, 3, 333, 166, 0, 1106, 250, 1, 0, + 0, 0, 1107, 1108, 3, 359, 179, 0, 1108, 1109, 3, 333, 166, 0, 1109, 1110, + 3, 355, 177, 0, 1110, 1111, 3, 347, 173, 0, 1111, 1112, 3, 325, 162, 0, + 1112, 1113, 3, 329, 164, 0, 1113, 1114, 3, 333, 166, 0, 1114, 252, 1, 0, + 0, 0, 1115, 1116, 3, 359, 179, 0, 1116, 1117, 3, 333, 166, 0, 1117, 1118, + 3, 361, 180, 0, 1118, 1119, 3, 363, 181, 0, 1119, 1120, 3, 359, 179, 0, + 1120, 1121, 3, 341, 170, 0, 1121, 1122, 3, 329, 164, 0, 1122, 1123, 3, + 363, 181, 0, 1123, 254, 1, 0, 0, 0, 1124, 1125, 3, 359, 179, 0, 1125, 1126, + 3, 341, 170, 0, 1126, 1127, 3, 337, 168, 0, 1127, 1128, 3, 339, 169, 0, + 1128, 1129, 3, 363, 181, 0, 1129, 256, 1, 0, 0, 0, 1130, 1131, 3, 359, + 179, 0, 1131, 1132, 3, 353, 176, 0, 1132, 1133, 3, 347, 173, 0, 1133, 1134, + 3, 347, 173, 0, 1134, 1135, 3, 327, 163, 0, 1135, 1136, 3, 325, 162, 0, + 1136, 1137, 3, 329, 164, 0, 1137, 1138, 3, 345, 172, 0, 1138, 258, 1, 0, + 0, 0, 1139, 1140, 3, 359, 179, 0, 1140, 1141, 3, 353, 176, 0, 1141, 1142, + 3, 369, 184, 0, 1142, 260, 1, 0, 0, 0, 1143, 1144, 3, 361, 180, 0, 1144, + 1145, 3, 325, 162, 0, 1145, 1146, 3, 367, 183, 0, 1146, 1147, 3, 333, 166, + 0, 1147, 1148, 3, 355, 177, 0, 1148, 1149, 3, 353, 176, 0, 1149, 1150, + 3, 341, 170, 0, 1150, 1151, 3, 351, 175, 0, 1151, 1152, 3, 363, 181, 0, + 1152, 262, 1, 0, 0, 0, 1153, 1154, 3, 361, 180, 0, 1154, 1155, 3, 333, + 166, 0, 1155, 1156, 3, 347, 173, 0, 1156, 1157, 3, 333, 166, 0, 1157, 1158, + 3, 329, 164, 0, 1158, 1159, 3, 363, 181, 0, 1159, 264, 1, 0, 0, 0, 1160, + 1161, 3, 361, 180, 0, 1161, 1162, 3, 333, 166, 0, 1162, 1163, 3, 363, 181, + 0, 1163, 266, 1, 0, 0, 0, 1164, 1165, 3, 363, 181, 0, 1165, 1166, 3, 325, + 162, 0, 1166, 1167, 3, 327, 163, 0, 1167, 1168, 3, 347, 173, 0, 1168, 1169, + 3, 333, 166, 0, 1169, 268, 1, 0, 0, 0, 1170, 1171, 3, 363, 181, 0, 1171, + 1172, 3, 333, 166, 0, 1172, 1173, 3, 349, 174, 0, 1173, 1174, 3, 355, 177, + 0, 1174, 270, 1, 0, 0, 0, 1175, 1176, 3, 363, 181, 0, 1176, 1177, 3, 333, + 166, 0, 1177, 1178, 3, 349, 174, 0, 1178, 1179, 3, 355, 177, 0, 1179, 1180, + 3, 353, 176, 0, 1180, 1181, 3, 359, 179, 0, 1181, 1182, 3, 325, 162, 0, + 1182, 1183, 3, 359, 179, 0, 1183, 1184, 3, 373, 186, 0, 1184, 272, 1, 0, + 0, 0, 1185, 1186, 3, 363, 181, 0, 1186, 1187, 3, 339, 169, 0, 1187, 1188, + 3, 333, 166, 0, 1188, 1189, 3, 351, 175, 0, 1189, 274, 1, 0, 0, 0, 1190, + 1191, 3, 363, 181, 0, 1191, 1192, 3, 353, 176, 0, 1192, 276, 1, 0, 0, 0, + 1193, 1194, 3, 363, 181, 0, 1194, 1195, 3, 359, 179, 0, 1195, 1196, 3, + 325, 162, 0, 1196, 1197, 3, 351, 175, 0, 1197, 1198, 3, 361, 180, 0, 1198, + 1199, 3, 325, 162, 0, 1199, 1200, 3, 329, 164, 0, 1200, 1201, 3, 363, 181, + 0, 1201, 1202, 3, 341, 170, 0, 1202, 1203, 3, 353, 176, 0, 1203, 1204, + 3, 351, 175, 0, 1204, 278, 1, 0, 0, 0, 1205, 1206, 3, 363, 181, 0, 1206, + 1207, 3, 359, 179, 0, 1207, 1208, 3, 341, 170, 0, 1208, 1209, 3, 337, 168, + 0, 1209, 1210, 3, 337, 168, 0, 1210, 1211, 3, 333, 166, 0, 1211, 1212, + 3, 359, 179, 0, 1212, 280, 1, 0, 0, 0, 1213, 1214, 3, 365, 182, 0, 1214, + 1215, 3, 351, 175, 0, 1215, 1216, 3, 341, 170, 0, 1216, 1217, 3, 353, 176, + 0, 1217, 1218, 3, 351, 175, 0, 1218, 282, 1, 0, 0, 0, 1219, 1220, 3, 365, + 182, 0, 1220, 1221, 3, 351, 175, 0, 1221, 1222, 3, 341, 170, 0, 1222, 1223, + 3, 357, 178, 0, 1223, 1224, 3, 365, 182, 0, 1224, 1225, 3, 333, 166, 0, + 1225, 284, 1, 0, 0, 0, 1226, 1227, 3, 365, 182, 0, 1227, 1228, 3, 355, + 177, 0, 1228, 1229, 3, 331, 165, 0, 1229, 1230, 3, 325, 162, 0, 1230, 1231, + 3, 363, 181, 0, 1231, 1232, 3, 333, 166, 0, 1232, 286, 1, 0, 0, 0, 1233, + 1234, 3, 365, 182, 0, 1234, 1235, 3, 361, 180, 0, 1235, 1236, 3, 341, 170, + 0, 1236, 1237, 3, 351, 175, 0, 1237, 1238, 3, 337, 168, 0, 1238, 288, 1, + 0, 0, 0, 1239, 1240, 3, 367, 183, 0, 1240, 1241, 3, 325, 162, 0, 1241, + 1242, 3, 329, 164, 0, 1242, 1243, 3, 365, 182, 0, 1243, 1244, 3, 365, 182, + 0, 1244, 1245, 3, 349, 174, 0, 1245, 290, 1, 0, 0, 0, 1246, 1247, 3, 367, + 183, 0, 1247, 1248, 3, 325, 162, 0, 1248, 1249, 3, 347, 173, 0, 1249, 1250, + 3, 365, 182, 0, 1250, 1251, 3, 333, 166, 0, 1251, 1252, 3, 361, 180, 0, + 1252, 292, 1, 0, 0, 0, 1253, 1254, 3, 367, 183, 0, 1254, 1255, 3, 341, + 170, 0, 1255, 1256, 3, 333, 166, 0, 1256, 1257, 3, 369, 184, 0, 1257, 294, + 1, 0, 0, 0, 1258, 1259, 3, 367, 183, 0, 1259, 1260, 3, 341, 170, 0, 1260, + 1261, 3, 359, 179, 0, 1261, 1262, 3, 363, 181, 0, 1262, 1263, 3, 365, 182, + 0, 1263, 1264, 3, 325, 162, 0, 1264, 1265, 3, 347, 173, 0, 1265, 296, 1, + 0, 0, 0, 1266, 1267, 3, 369, 184, 0, 1267, 1268, 3, 339, 169, 0, 1268, + 1269, 3, 333, 166, 0, 1269, 1270, 3, 351, 175, 0, 1270, 298, 1, 0, 0, 0, + 1271, 1272, 3, 369, 184, 0, 1272, 1273, 3, 339, 169, 0, 1273, 1274, 3, + 333, 166, 0, 1274, 1275, 3, 359, 179, 0, 1275, 1276, 3, 333, 166, 0, 1276, + 300, 1, 0, 0, 0, 1277, 1278, 3, 369, 184, 0, 1278, 1279, 3, 341, 170, 0, + 1279, 1280, 3, 363, 181, 0, 1280, 1281, 3, 339, 169, 0, 1281, 302, 1, 0, + 0, 0, 1282, 1283, 3, 369, 184, 0, 1283, 1284, 3, 341, 170, 0, 1284, 1285, + 3, 363, 181, 0, 1285, 1286, 3, 339, 169, 0, 1286, 1287, 3, 353, 176, 0, + 1287, 1288, 3, 365, 182, 0, 1288, 1289, 3, 363, 181, 0, 1289, 304, 1, 0, + 0, 0, 1290, 1296, 5, 34, 0, 0, 1291, 1295, 8, 0, 0, 0, 1292, 1293, 5, 34, + 0, 0, 1293, 1295, 5, 34, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, + 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, + 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1326, 5, 34, + 0, 0, 1300, 1306, 5, 96, 0, 0, 1301, 1305, 8, 1, 0, 0, 1302, 1303, 5, 96, + 0, 0, 1303, 1305, 5, 96, 0, 0, 1304, 1301, 1, 0, 0, 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, 1309, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1326, 5, 96, + 0, 0, 1310, 1314, 5, 91, 0, 0, 1311, 1313, 8, 2, 0, 0, 1312, 1311, 1, 0, + 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, + 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1326, 5, 93, + 0, 0, 1318, 1322, 7, 3, 0, 0, 1319, 1321, 7, 4, 0, 0, 1320, 1319, 1, 0, + 0, 0, 1321, 1324, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, + 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1325, 1290, 1, 0, + 0, 0, 1325, 1300, 1, 0, 0, 0, 1325, 1310, 1, 0, 0, 0, 1325, 1318, 1, 0, + 0, 0, 1326, 306, 1, 0, 0, 0, 1327, 1329, 3, 323, 161, 0, 1328, 1327, 1, + 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, + 0, 0, 0, 1331, 1339, 1, 0, 0, 0, 1332, 1336, 5, 46, 0, 0, 1333, 1335, 3, + 323, 161, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, + 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, + 1, 0, 0, 0, 1339, 1332, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1350, + 1, 0, 0, 0, 1341, 1343, 3, 333, 166, 0, 1342, 1344, 7, 5, 0, 0, 1343, 1342, + 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1347, + 3, 323, 161, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1346, + 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1341, + 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1370, 1, 0, 0, 0, 1352, 1354, + 5, 46, 0, 0, 1353, 1355, 3, 323, 161, 0, 1354, 1353, 1, 0, 0, 0, 1355, + 1356, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, + 1367, 1, 0, 0, 0, 1358, 1360, 3, 333, 166, 0, 1359, 1361, 7, 5, 0, 0, 1360, + 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, + 1364, 3, 323, 161, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, + 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, + 1358, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 1, 0, 0, 0, 1369, + 1328, 1, 0, 0, 0, 1369, 1352, 1, 0, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, + 1375, 5, 63, 0, 0, 1372, 1374, 3, 323, 161, 0, 1373, 1372, 1, 0, 0, 0, + 1374, 1377, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, + 1376, 1381, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1379, 7, 6, 0, 0, + 1379, 1381, 3, 305, 152, 0, 1380, 1371, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, + 0, 1381, 310, 1, 0, 0, 0, 1382, 1388, 5, 39, 0, 0, 1383, 1387, 8, 7, 0, + 0, 1384, 1385, 5, 39, 0, 0, 1385, 1387, 5, 39, 0, 0, 1386, 1383, 1, 0, + 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1390, 1, 0, 0, 0, 1388, 1386, 1, 0, + 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1388, 1, 0, + 0, 0, 1391, 1392, 5, 39, 0, 0, 1392, 312, 1, 0, 0, 0, 1393, 1394, 3, 371, + 185, 0, 1394, 1395, 3, 311, 155, 0, 1395, 314, 1, 0, 0, 0, 1396, 1397, + 5, 45, 0, 0, 1397, 1398, 5, 45, 0, 0, 1398, 1402, 1, 0, 0, 0, 1399, 1401, + 8, 8, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, + 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, + 1, 0, 0, 0, 1405, 1406, 6, 157, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, + 5, 47, 0, 0, 1408, 1409, 5, 42, 0, 0, 1409, 1413, 1, 0, 0, 0, 1410, 1412, + 9, 0, 0, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, 0, 0, 0, 1413, 1414, + 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1419, 1, 0, 0, 0, 1415, 1413, + 1, 0, 0, 0, 1416, 1417, 5, 42, 0, 0, 1417, 1420, 5, 47, 0, 0, 1418, 1420, + 5, 0, 0, 1, 1419, 1416, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 1421, + 1, 0, 0, 0, 1421, 1422, 6, 158, 0, 0, 1422, 318, 1, 0, 0, 0, 1423, 1424, + 7, 9, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 159, 0, 0, 1426, 320, + 1, 0, 0, 0, 1427, 1428, 9, 0, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, + 7, 10, 0, 0, 1430, 324, 1, 0, 0, 0, 1431, 1432, 7, 11, 0, 0, 1432, 326, + 1, 0, 0, 0, 1433, 1434, 7, 12, 0, 0, 1434, 328, 1, 0, 0, 0, 1435, 1436, + 7, 13, 0, 0, 1436, 330, 1, 0, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 332, + 1, 0, 0, 0, 1439, 1440, 7, 15, 0, 0, 1440, 334, 1, 0, 0, 0, 1441, 1442, + 7, 16, 0, 0, 1442, 336, 1, 0, 0, 0, 1443, 1444, 7, 17, 0, 0, 1444, 338, + 1, 0, 0, 0, 1445, 1446, 7, 18, 0, 0, 1446, 340, 1, 0, 0, 0, 1447, 1448, + 7, 19, 0, 0, 1448, 342, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 344, + 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 346, 1, 0, 0, 0, 1453, 1454, + 7, 22, 0, 0, 1454, 348, 1, 0, 0, 0, 1455, 1456, 7, 23, 0, 0, 1456, 350, + 1, 0, 0, 0, 1457, 1458, 7, 24, 0, 0, 1458, 352, 1, 0, 0, 0, 1459, 1460, + 7, 25, 0, 0, 1460, 354, 1, 0, 0, 0, 1461, 1462, 7, 26, 0, 0, 1462, 356, + 1, 0, 0, 0, 1463, 1464, 7, 27, 0, 0, 1464, 358, 1, 0, 0, 0, 1465, 1466, + 7, 28, 0, 0, 1466, 360, 1, 0, 0, 0, 1467, 1468, 7, 29, 0, 0, 1468, 362, + 1, 0, 0, 0, 1469, 1470, 7, 30, 0, 0, 1470, 364, 1, 0, 0, 0, 1471, 1472, + 7, 31, 0, 0, 1472, 366, 1, 0, 0, 0, 1473, 1474, 7, 32, 0, 0, 1474, 368, + 1, 0, 0, 0, 1475, 1476, 7, 33, 0, 0, 1476, 370, 1, 0, 0, 0, 1477, 1478, + 7, 34, 0, 0, 1478, 372, 1, 0, 0, 0, 1479, 1480, 7, 35, 0, 0, 1480, 374, + 1, 0, 0, 0, 1481, 1482, 7, 36, 0, 0, 1482, 376, 1, 0, 0, 0, 26, 0, 1294, + 1296, 1304, 1306, 1314, 1322, 1325, 1330, 1336, 1339, 1343, 1348, 1350, + 1356, 1360, 1365, 1367, 1369, 1375, 1380, 1386, 1388, 1402, 1413, 1419, + 1, 0, 1, 0, + } + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// SqlLexerInit initializes any static state used to implement SqlLexer. By default the +// static state used to implement the lexer is lazily initialized during the first call to +// NewSqlLexer(). You can call this function if you wish to initialize the static state ahead +// of time. +func SqlLexerInit() { + staticData := &sqllexerLexerStaticData + staticData.once.Do(sqllexerLexerInit) +} + +// NewSqlLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewSqlLexer(input antlr.CharStream) *SqlLexer { + SqlLexerInit() + l := new(SqlLexer) + l.BaseLexer = antlr.NewBaseLexer(input) + staticData := &sqllexerLexerStaticData + l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + l.channelNames = staticData.channelNames + l.modeNames = staticData.modeNames + l.RuleNames = staticData.ruleNames + l.LiteralNames = staticData.literalNames + l.SymbolicNames = staticData.symbolicNames + l.GrammarFileName = "Sql.g4" + // TODO: l.EOF = antlr.TokenEOF + + return l +} + +// SqlLexer tokens. +const ( + SqlLexerT__0 = 1 + SqlLexerSCOL = 2 + SqlLexerDOT = 3 + SqlLexerOPEN_PAR = 4 + SqlLexerCLOSE_PAR = 5 + SqlLexerCOMMA = 6 + SqlLexerASSIGN = 7 + SqlLexerSTAR = 8 + SqlLexerPLUS = 9 + SqlLexerMINUS = 10 + SqlLexerTILDE = 11 + SqlLexerPIPE2 = 12 + SqlLexerDIV = 13 + SqlLexerMOD = 14 + SqlLexerLT2 = 15 + SqlLexerGT2 = 16 + SqlLexerAMP = 17 + SqlLexerPIPE = 18 + SqlLexerLT = 19 + SqlLexerLT_EQ = 20 + SqlLexerGT = 21 + SqlLexerGT_EQ = 22 + SqlLexerEQ = 23 + SqlLexerNOT_EQ1 = 24 + SqlLexerNOT_EQ2 = 25 + SqlLexerK_ABORT = 26 + SqlLexerK_ACTION = 27 + SqlLexerK_ADD = 28 + SqlLexerK_AFTER = 29 + SqlLexerK_ALL = 30 + SqlLexerK_ALTER = 31 + SqlLexerK_ANALYZE = 32 + SqlLexerK_AND = 33 + SqlLexerK_AS = 34 + SqlLexerK_ASC = 35 + SqlLexerK_ATTACH = 36 + SqlLexerK_AUTOINCREMENT = 37 + SqlLexerK_BEFORE = 38 + SqlLexerK_BEGIN = 39 + SqlLexerK_BETWEEN = 40 + SqlLexerK_BY = 41 + SqlLexerK_CASCADE = 42 + SqlLexerK_CASE = 43 + SqlLexerK_CAST = 44 + SqlLexerK_CHECK = 45 + SqlLexerK_COLLATE = 46 + SqlLexerK_COLUMN = 47 + SqlLexerK_COMMIT = 48 + SqlLexerK_CONFLICT = 49 + SqlLexerK_CONSTRAINT = 50 + SqlLexerK_CREATE = 51 + SqlLexerK_CROSS = 52 + SqlLexerK_CURRENT_DATE = 53 + SqlLexerK_CURRENT_TIME = 54 + SqlLexerK_CURRENT_TIMESTAMP = 55 + SqlLexerK_DATABASE = 56 + SqlLexerK_DEFAULT = 57 + SqlLexerK_DEFERRABLE = 58 + SqlLexerK_DEFERRED = 59 + SqlLexerK_DELETE = 60 + SqlLexerK_DESC = 61 + SqlLexerK_DETACH = 62 + SqlLexerK_DISTINCT = 63 + SqlLexerK_DROP = 64 + SqlLexerK_EACH = 65 + SqlLexerK_ELSE = 66 + SqlLexerK_END = 67 + SqlLexerK_ENABLE = 68 + SqlLexerK_ESCAPE = 69 + SqlLexerK_EXCEPT = 70 + SqlLexerK_EXCLUSIVE = 71 + SqlLexerK_EXISTS = 72 + SqlLexerK_EXPLAIN = 73 + SqlLexerK_FAIL = 74 + SqlLexerK_FOR = 75 + SqlLexerK_FOREIGN = 76 + SqlLexerK_FROM = 77 + SqlLexerK_FULL = 78 + SqlLexerK_GLOB = 79 + SqlLexerK_GROUP = 80 + SqlLexerK_HAVING = 81 + SqlLexerK_IF = 82 + SqlLexerK_IGNORE = 83 + SqlLexerK_IMMEDIATE = 84 + SqlLexerK_IN = 85 + SqlLexerK_INDEX = 86 + SqlLexerK_INDEXED = 87 + SqlLexerK_INITIALLY = 88 + SqlLexerK_INNER = 89 + SqlLexerK_INSERT = 90 + SqlLexerK_INSTEAD = 91 + SqlLexerK_INTERSECT = 92 + SqlLexerK_INTO = 93 + SqlLexerK_IS = 94 + SqlLexerK_ISNULL = 95 + SqlLexerK_JOIN = 96 + SqlLexerK_KEY = 97 + SqlLexerK_LEFT = 98 + SqlLexerK_LIKE = 99 + SqlLexerK_LIMIT = 100 + SqlLexerK_MATCH = 101 + SqlLexerK_NATURAL = 102 + SqlLexerK_NEXTVAL = 103 + SqlLexerK_NO = 104 + SqlLexerK_NOT = 105 + SqlLexerK_NOTNULL = 106 + SqlLexerK_NULL = 107 + SqlLexerK_OF = 108 + SqlLexerK_OFFSET = 109 + SqlLexerK_ON = 110 + SqlLexerK_ONLY = 111 + SqlLexerK_OR = 112 + SqlLexerK_ORDER = 113 + SqlLexerK_OUTER = 114 + SqlLexerK_PLAN = 115 + SqlLexerK_PRAGMA = 116 + SqlLexerK_PRIMARY = 117 + SqlLexerK_QUERY = 118 + SqlLexerK_RAISE = 119 + SqlLexerK_RECURSIVE = 120 + SqlLexerK_REFERENCES = 121 + SqlLexerK_REGEXP = 122 + SqlLexerK_REINDEX = 123 + SqlLexerK_RELEASE = 124 + SqlLexerK_RENAME = 125 + SqlLexerK_REPLACE = 126 + SqlLexerK_RESTRICT = 127 + SqlLexerK_RIGHT = 128 + SqlLexerK_ROLLBACK = 129 + SqlLexerK_ROW = 130 + SqlLexerK_SAVEPOINT = 131 + SqlLexerK_SELECT = 132 + SqlLexerK_SET = 133 + SqlLexerK_TABLE = 134 + SqlLexerK_TEMP = 135 + SqlLexerK_TEMPORARY = 136 + SqlLexerK_THEN = 137 + SqlLexerK_TO = 138 + SqlLexerK_TRANSACTION = 139 + SqlLexerK_TRIGGER = 140 + SqlLexerK_UNION = 141 + SqlLexerK_UNIQUE = 142 + SqlLexerK_UPDATE = 143 + SqlLexerK_USING = 144 + SqlLexerK_VACUUM = 145 + SqlLexerK_VALUES = 146 + SqlLexerK_VIEW = 147 + SqlLexerK_VIRTUAL = 148 + SqlLexerK_WHEN = 149 + SqlLexerK_WHERE = 150 + SqlLexerK_WITH = 151 + SqlLexerK_WITHOUT = 152 + SqlLexerIDENTIFIER = 153 + SqlLexerNUMERIC_LITERAL = 154 + SqlLexerBIND_PARAMETER = 155 + SqlLexerSTRING_LITERAL = 156 + SqlLexerBLOB_LITERAL = 157 + SqlLexerSINGLE_LINE_COMMENT = 158 + SqlLexerMULTILINE_COMMENT = 159 + SqlLexerSPACES = 160 + SqlLexerUNEXPECTED_CHAR = 161 +) diff --git a/processor/stream_processor/test/parser/sql_lexer_test.go b/processor/stream_processor/test/parser/sql_lexer_test.go new file mode 100644 index 000000000000..4603c91a3798 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_lexer_test.go @@ -0,0 +1,22 @@ +package parser + +import ( + "fmt" + "github.com/antlr/antlr4/runtime/Go/antlr" + "testing" +) + +func TestSelectExpr(t *testing.T) { + is := antlr.NewInputStream(`SELEct field1, field2 WHERE field3 > 3 and field4 IS 'test';`) + lexer := NewSqlLexer(is) + + for { + t := lexer.NextToken() + if t.GetTokenType() == antlr.TokenEOF { + break + } + fmt.Printf("%s (%q)\n", + lexer.SymbolicNames[t.GetTokenType()], t.GetText()) + } + +} diff --git a/processor/stream_processor/test/parser/sql_listener.go b/processor/stream_processor/test/parser/sql_listener.go new file mode 100644 index 000000000000..ba0842380a66 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_listener.go @@ -0,0 +1,598 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // Sql + +import "github.com/antlr/antlr4/runtime/Go/antlr" + +// SqlListener is a complete listener for a parse tree produced by SqlParser. +type SqlListener interface { + antlr.ParseTreeListener + + // EnterParse is called when entering the parse production. + EnterParse(c *ParseContext) + + // EnterError is called when entering the error production. + EnterError(c *ErrorContext) + + // EnterSql_stmt_list is called when entering the sql_stmt_list production. + EnterSql_stmt_list(c *Sql_stmt_listContext) + + // EnterSql_stmt is called when entering the sql_stmt production. + EnterSql_stmt(c *Sql_stmtContext) + + // EnterAlter_table_stmt is called when entering the alter_table_stmt production. + EnterAlter_table_stmt(c *Alter_table_stmtContext) + + // EnterAlter_table_add_constraint is called when entering the alter_table_add_constraint production. + EnterAlter_table_add_constraint(c *Alter_table_add_constraintContext) + + // EnterAlter_table_add is called when entering the alter_table_add production. + EnterAlter_table_add(c *Alter_table_addContext) + + // EnterAnalyze_stmt is called when entering the analyze_stmt production. + EnterAnalyze_stmt(c *Analyze_stmtContext) + + // EnterAttach_stmt is called when entering the attach_stmt production. + EnterAttach_stmt(c *Attach_stmtContext) + + // EnterBegin_stmt is called when entering the begin_stmt production. + EnterBegin_stmt(c *Begin_stmtContext) + + // EnterCommit_stmt is called when entering the commit_stmt production. + EnterCommit_stmt(c *Commit_stmtContext) + + // EnterCompound_select_stmt is called when entering the compound_select_stmt production. + EnterCompound_select_stmt(c *Compound_select_stmtContext) + + // EnterCreate_index_stmt is called when entering the create_index_stmt production. + EnterCreate_index_stmt(c *Create_index_stmtContext) + + // EnterCreate_table_stmt is called when entering the create_table_stmt production. + EnterCreate_table_stmt(c *Create_table_stmtContext) + + // EnterCreate_trigger_stmt is called when entering the create_trigger_stmt production. + EnterCreate_trigger_stmt(c *Create_trigger_stmtContext) + + // EnterCreate_view_stmt is called when entering the create_view_stmt production. + EnterCreate_view_stmt(c *Create_view_stmtContext) + + // EnterCreate_virtual_table_stmt is called when entering the create_virtual_table_stmt production. + EnterCreate_virtual_table_stmt(c *Create_virtual_table_stmtContext) + + // EnterDelete_stmt is called when entering the delete_stmt production. + EnterDelete_stmt(c *Delete_stmtContext) + + // EnterDelete_stmt_limited is called when entering the delete_stmt_limited production. + EnterDelete_stmt_limited(c *Delete_stmt_limitedContext) + + // EnterDetach_stmt is called when entering the detach_stmt production. + EnterDetach_stmt(c *Detach_stmtContext) + + // EnterDrop_index_stmt is called when entering the drop_index_stmt production. + EnterDrop_index_stmt(c *Drop_index_stmtContext) + + // EnterDrop_table_stmt is called when entering the drop_table_stmt production. + EnterDrop_table_stmt(c *Drop_table_stmtContext) + + // EnterDrop_trigger_stmt is called when entering the drop_trigger_stmt production. + EnterDrop_trigger_stmt(c *Drop_trigger_stmtContext) + + // EnterDrop_view_stmt is called when entering the drop_view_stmt production. + EnterDrop_view_stmt(c *Drop_view_stmtContext) + + // EnterFactored_select_stmt is called when entering the factored_select_stmt production. + EnterFactored_select_stmt(c *Factored_select_stmtContext) + + // EnterInsert_stmt is called when entering the insert_stmt production. + EnterInsert_stmt(c *Insert_stmtContext) + + // EnterPragma_stmt is called when entering the pragma_stmt production. + EnterPragma_stmt(c *Pragma_stmtContext) + + // EnterReindex_stmt is called when entering the reindex_stmt production. + EnterReindex_stmt(c *Reindex_stmtContext) + + // EnterRelease_stmt is called when entering the release_stmt production. + EnterRelease_stmt(c *Release_stmtContext) + + // EnterRollback_stmt is called when entering the rollback_stmt production. + EnterRollback_stmt(c *Rollback_stmtContext) + + // EnterSavepoint_stmt is called when entering the savepoint_stmt production. + EnterSavepoint_stmt(c *Savepoint_stmtContext) + + // EnterSimple_select_stmt is called when entering the simple_select_stmt production. + EnterSimple_select_stmt(c *Simple_select_stmtContext) + + // EnterSelect_stmt is called when entering the select_stmt production. + EnterSelect_stmt(c *Select_stmtContext) + + // EnterSelect_or_values is called when entering the select_or_values production. + EnterSelect_or_values(c *Select_or_valuesContext) + + // EnterUpdate_stmt is called when entering the update_stmt production. + EnterUpdate_stmt(c *Update_stmtContext) + + // EnterUpdate_stmt_limited is called when entering the update_stmt_limited production. + EnterUpdate_stmt_limited(c *Update_stmt_limitedContext) + + // EnterVacuum_stmt is called when entering the vacuum_stmt production. + EnterVacuum_stmt(c *Vacuum_stmtContext) + + // EnterColumn_def is called when entering the column_def production. + EnterColumn_def(c *Column_defContext) + + // EnterType_name is called when entering the type_name production. + EnterType_name(c *Type_nameContext) + + // EnterColumn_constraint is called when entering the column_constraint production. + EnterColumn_constraint(c *Column_constraintContext) + + // EnterColumn_constraint_primary_key is called when entering the column_constraint_primary_key production. + EnterColumn_constraint_primary_key(c *Column_constraint_primary_keyContext) + + // EnterColumn_constraint_foreign_key is called when entering the column_constraint_foreign_key production. + EnterColumn_constraint_foreign_key(c *Column_constraint_foreign_keyContext) + + // EnterColumn_constraint_not_null is called when entering the column_constraint_not_null production. + EnterColumn_constraint_not_null(c *Column_constraint_not_nullContext) + + // EnterColumn_constraint_null is called when entering the column_constraint_null production. + EnterColumn_constraint_null(c *Column_constraint_nullContext) + + // EnterColumn_default is called when entering the column_default production. + EnterColumn_default(c *Column_defaultContext) + + // EnterColumn_default_value is called when entering the column_default_value production. + EnterColumn_default_value(c *Column_default_valueContext) + + // EnterConflict_clause is called when entering the conflict_clause production. + EnterConflict_clause(c *Conflict_clauseContext) + + // EnterExpr is called when entering the expr production. + EnterExpr(c *ExprContext) + + // EnterForeign_key_clause is called when entering the foreign_key_clause production. + EnterForeign_key_clause(c *Foreign_key_clauseContext) + + // EnterFk_target_column_name is called when entering the fk_target_column_name production. + EnterFk_target_column_name(c *Fk_target_column_nameContext) + + // EnterRaise_function is called when entering the raise_function production. + EnterRaise_function(c *Raise_functionContext) + + // EnterIndexed_column is called when entering the indexed_column production. + EnterIndexed_column(c *Indexed_columnContext) + + // EnterTable_constraint is called when entering the table_constraint production. + EnterTable_constraint(c *Table_constraintContext) + + // EnterTable_constraint_primary_key is called when entering the table_constraint_primary_key production. + EnterTable_constraint_primary_key(c *Table_constraint_primary_keyContext) + + // EnterTable_constraint_foreign_key is called when entering the table_constraint_foreign_key production. + EnterTable_constraint_foreign_key(c *Table_constraint_foreign_keyContext) + + // EnterTable_constraint_unique is called when entering the table_constraint_unique production. + EnterTable_constraint_unique(c *Table_constraint_uniqueContext) + + // EnterTable_constraint_key is called when entering the table_constraint_key production. + EnterTable_constraint_key(c *Table_constraint_keyContext) + + // EnterFk_origin_column_name is called when entering the fk_origin_column_name production. + EnterFk_origin_column_name(c *Fk_origin_column_nameContext) + + // EnterWith_clause is called when entering the with_clause production. + EnterWith_clause(c *With_clauseContext) + + // EnterQualified_table_name is called when entering the qualified_table_name production. + EnterQualified_table_name(c *Qualified_table_nameContext) + + // EnterOrdering_term is called when entering the ordering_term production. + EnterOrdering_term(c *Ordering_termContext) + + // EnterPragma_value is called when entering the pragma_value production. + EnterPragma_value(c *Pragma_valueContext) + + // EnterCommon_table_expression is called when entering the common_table_expression production. + EnterCommon_table_expression(c *Common_table_expressionContext) + + // EnterResult_column is called when entering the result_column production. + EnterResult_column(c *Result_columnContext) + + // EnterTable_or_subquery is called when entering the table_or_subquery production. + EnterTable_or_subquery(c *Table_or_subqueryContext) + + // EnterJoin_clause is called when entering the join_clause production. + EnterJoin_clause(c *Join_clauseContext) + + // EnterJoin_operator is called when entering the join_operator production. + EnterJoin_operator(c *Join_operatorContext) + + // EnterJoin_constraint is called when entering the join_constraint production. + EnterJoin_constraint(c *Join_constraintContext) + + // EnterSelect_core is called when entering the select_core production. + EnterSelect_core(c *Select_coreContext) + + // EnterCompound_operator is called when entering the compound_operator production. + EnterCompound_operator(c *Compound_operatorContext) + + // EnterCte_table_name is called when entering the cte_table_name production. + EnterCte_table_name(c *Cte_table_nameContext) + + // EnterSigned_number is called when entering the signed_number production. + EnterSigned_number(c *Signed_numberContext) + + // EnterLiteral_value is called when entering the literal_value production. + EnterLiteral_value(c *Literal_valueContext) + + // EnterUnary_operator is called when entering the unary_operator production. + EnterUnary_operator(c *Unary_operatorContext) + + // EnterError_message is called when entering the error_message production. + EnterError_message(c *Error_messageContext) + + // EnterModule_argument is called when entering the module_argument production. + EnterModule_argument(c *Module_argumentContext) + + // EnterColumn_alias is called when entering the column_alias production. + EnterColumn_alias(c *Column_aliasContext) + + // EnterKeyword is called when entering the keyword production. + EnterKeyword(c *KeywordContext) + + // EnterUnknown is called when entering the unknown production. + EnterUnknown(c *UnknownContext) + + // EnterName is called when entering the name production. + EnterName(c *NameContext) + + // EnterFunction_name is called when entering the function_name production. + EnterFunction_name(c *Function_nameContext) + + // EnterDatabase_name is called when entering the database_name production. + EnterDatabase_name(c *Database_nameContext) + + // EnterSource_table_name is called when entering the source_table_name production. + EnterSource_table_name(c *Source_table_nameContext) + + // EnterTable_name is called when entering the table_name production. + EnterTable_name(c *Table_nameContext) + + // EnterTable_or_index_name is called when entering the table_or_index_name production. + EnterTable_or_index_name(c *Table_or_index_nameContext) + + // EnterNew_table_name is called when entering the new_table_name production. + EnterNew_table_name(c *New_table_nameContext) + + // EnterColumn_name is called when entering the column_name production. + EnterColumn_name(c *Column_nameContext) + + // EnterCollation_name is called when entering the collation_name production. + EnterCollation_name(c *Collation_nameContext) + + // EnterForeign_table is called when entering the foreign_table production. + EnterForeign_table(c *Foreign_tableContext) + + // EnterIndex_name is called when entering the index_name production. + EnterIndex_name(c *Index_nameContext) + + // EnterTrigger_name is called when entering the trigger_name production. + EnterTrigger_name(c *Trigger_nameContext) + + // EnterView_name is called when entering the view_name production. + EnterView_name(c *View_nameContext) + + // EnterModule_name is called when entering the module_name production. + EnterModule_name(c *Module_nameContext) + + // EnterPragma_name is called when entering the pragma_name production. + EnterPragma_name(c *Pragma_nameContext) + + // EnterSavepoint_name is called when entering the savepoint_name production. + EnterSavepoint_name(c *Savepoint_nameContext) + + // EnterTable_alias is called when entering the table_alias production. + EnterTable_alias(c *Table_aliasContext) + + // EnterTransaction_name is called when entering the transaction_name production. + EnterTransaction_name(c *Transaction_nameContext) + + // EnterAny_name is called when entering the any_name production. + EnterAny_name(c *Any_nameContext) + + // ExitParse is called when exiting the parse production. + ExitParse(c *ParseContext) + + // ExitError is called when exiting the error production. + ExitError(c *ErrorContext) + + // ExitSql_stmt_list is called when exiting the sql_stmt_list production. + ExitSql_stmt_list(c *Sql_stmt_listContext) + + // ExitSql_stmt is called when exiting the sql_stmt production. + ExitSql_stmt(c *Sql_stmtContext) + + // ExitAlter_table_stmt is called when exiting the alter_table_stmt production. + ExitAlter_table_stmt(c *Alter_table_stmtContext) + + // ExitAlter_table_add_constraint is called when exiting the alter_table_add_constraint production. + ExitAlter_table_add_constraint(c *Alter_table_add_constraintContext) + + // ExitAlter_table_add is called when exiting the alter_table_add production. + ExitAlter_table_add(c *Alter_table_addContext) + + // ExitAnalyze_stmt is called when exiting the analyze_stmt production. + ExitAnalyze_stmt(c *Analyze_stmtContext) + + // ExitAttach_stmt is called when exiting the attach_stmt production. + ExitAttach_stmt(c *Attach_stmtContext) + + // ExitBegin_stmt is called when exiting the begin_stmt production. + ExitBegin_stmt(c *Begin_stmtContext) + + // ExitCommit_stmt is called when exiting the commit_stmt production. + ExitCommit_stmt(c *Commit_stmtContext) + + // ExitCompound_select_stmt is called when exiting the compound_select_stmt production. + ExitCompound_select_stmt(c *Compound_select_stmtContext) + + // ExitCreate_index_stmt is called when exiting the create_index_stmt production. + ExitCreate_index_stmt(c *Create_index_stmtContext) + + // ExitCreate_table_stmt is called when exiting the create_table_stmt production. + ExitCreate_table_stmt(c *Create_table_stmtContext) + + // ExitCreate_trigger_stmt is called when exiting the create_trigger_stmt production. + ExitCreate_trigger_stmt(c *Create_trigger_stmtContext) + + // ExitCreate_view_stmt is called when exiting the create_view_stmt production. + ExitCreate_view_stmt(c *Create_view_stmtContext) + + // ExitCreate_virtual_table_stmt is called when exiting the create_virtual_table_stmt production. + ExitCreate_virtual_table_stmt(c *Create_virtual_table_stmtContext) + + // ExitDelete_stmt is called when exiting the delete_stmt production. + ExitDelete_stmt(c *Delete_stmtContext) + + // ExitDelete_stmt_limited is called when exiting the delete_stmt_limited production. + ExitDelete_stmt_limited(c *Delete_stmt_limitedContext) + + // ExitDetach_stmt is called when exiting the detach_stmt production. + ExitDetach_stmt(c *Detach_stmtContext) + + // ExitDrop_index_stmt is called when exiting the drop_index_stmt production. + ExitDrop_index_stmt(c *Drop_index_stmtContext) + + // ExitDrop_table_stmt is called when exiting the drop_table_stmt production. + ExitDrop_table_stmt(c *Drop_table_stmtContext) + + // ExitDrop_trigger_stmt is called when exiting the drop_trigger_stmt production. + ExitDrop_trigger_stmt(c *Drop_trigger_stmtContext) + + // ExitDrop_view_stmt is called when exiting the drop_view_stmt production. + ExitDrop_view_stmt(c *Drop_view_stmtContext) + + // ExitFactored_select_stmt is called when exiting the factored_select_stmt production. + ExitFactored_select_stmt(c *Factored_select_stmtContext) + + // ExitInsert_stmt is called when exiting the insert_stmt production. + ExitInsert_stmt(c *Insert_stmtContext) + + // ExitPragma_stmt is called when exiting the pragma_stmt production. + ExitPragma_stmt(c *Pragma_stmtContext) + + // ExitReindex_stmt is called when exiting the reindex_stmt production. + ExitReindex_stmt(c *Reindex_stmtContext) + + // ExitRelease_stmt is called when exiting the release_stmt production. + ExitRelease_stmt(c *Release_stmtContext) + + // ExitRollback_stmt is called when exiting the rollback_stmt production. + ExitRollback_stmt(c *Rollback_stmtContext) + + // ExitSavepoint_stmt is called when exiting the savepoint_stmt production. + ExitSavepoint_stmt(c *Savepoint_stmtContext) + + // ExitSimple_select_stmt is called when exiting the simple_select_stmt production. + ExitSimple_select_stmt(c *Simple_select_stmtContext) + + // ExitSelect_stmt is called when exiting the select_stmt production. + ExitSelect_stmt(c *Select_stmtContext) + + // ExitSelect_or_values is called when exiting the select_or_values production. + ExitSelect_or_values(c *Select_or_valuesContext) + + // ExitUpdate_stmt is called when exiting the update_stmt production. + ExitUpdate_stmt(c *Update_stmtContext) + + // ExitUpdate_stmt_limited is called when exiting the update_stmt_limited production. + ExitUpdate_stmt_limited(c *Update_stmt_limitedContext) + + // ExitVacuum_stmt is called when exiting the vacuum_stmt production. + ExitVacuum_stmt(c *Vacuum_stmtContext) + + // ExitColumn_def is called when exiting the column_def production. + ExitColumn_def(c *Column_defContext) + + // ExitType_name is called when exiting the type_name production. + ExitType_name(c *Type_nameContext) + + // ExitColumn_constraint is called when exiting the column_constraint production. + ExitColumn_constraint(c *Column_constraintContext) + + // ExitColumn_constraint_primary_key is called when exiting the column_constraint_primary_key production. + ExitColumn_constraint_primary_key(c *Column_constraint_primary_keyContext) + + // ExitColumn_constraint_foreign_key is called when exiting the column_constraint_foreign_key production. + ExitColumn_constraint_foreign_key(c *Column_constraint_foreign_keyContext) + + // ExitColumn_constraint_not_null is called when exiting the column_constraint_not_null production. + ExitColumn_constraint_not_null(c *Column_constraint_not_nullContext) + + // ExitColumn_constraint_null is called when exiting the column_constraint_null production. + ExitColumn_constraint_null(c *Column_constraint_nullContext) + + // ExitColumn_default is called when exiting the column_default production. + ExitColumn_default(c *Column_defaultContext) + + // ExitColumn_default_value is called when exiting the column_default_value production. + ExitColumn_default_value(c *Column_default_valueContext) + + // ExitConflict_clause is called when exiting the conflict_clause production. + ExitConflict_clause(c *Conflict_clauseContext) + + // ExitExpr is called when exiting the expr production. + ExitExpr(c *ExprContext) + + // ExitForeign_key_clause is called when exiting the foreign_key_clause production. + ExitForeign_key_clause(c *Foreign_key_clauseContext) + + // ExitFk_target_column_name is called when exiting the fk_target_column_name production. + ExitFk_target_column_name(c *Fk_target_column_nameContext) + + // ExitRaise_function is called when exiting the raise_function production. + ExitRaise_function(c *Raise_functionContext) + + // ExitIndexed_column is called when exiting the indexed_column production. + ExitIndexed_column(c *Indexed_columnContext) + + // ExitTable_constraint is called when exiting the table_constraint production. + ExitTable_constraint(c *Table_constraintContext) + + // ExitTable_constraint_primary_key is called when exiting the table_constraint_primary_key production. + ExitTable_constraint_primary_key(c *Table_constraint_primary_keyContext) + + // ExitTable_constraint_foreign_key is called when exiting the table_constraint_foreign_key production. + ExitTable_constraint_foreign_key(c *Table_constraint_foreign_keyContext) + + // ExitTable_constraint_unique is called when exiting the table_constraint_unique production. + ExitTable_constraint_unique(c *Table_constraint_uniqueContext) + + // ExitTable_constraint_key is called when exiting the table_constraint_key production. + ExitTable_constraint_key(c *Table_constraint_keyContext) + + // ExitFk_origin_column_name is called when exiting the fk_origin_column_name production. + ExitFk_origin_column_name(c *Fk_origin_column_nameContext) + + // ExitWith_clause is called when exiting the with_clause production. + ExitWith_clause(c *With_clauseContext) + + // ExitQualified_table_name is called when exiting the qualified_table_name production. + ExitQualified_table_name(c *Qualified_table_nameContext) + + // ExitOrdering_term is called when exiting the ordering_term production. + ExitOrdering_term(c *Ordering_termContext) + + // ExitPragma_value is called when exiting the pragma_value production. + ExitPragma_value(c *Pragma_valueContext) + + // ExitCommon_table_expression is called when exiting the common_table_expression production. + ExitCommon_table_expression(c *Common_table_expressionContext) + + // ExitResult_column is called when exiting the result_column production. + ExitResult_column(c *Result_columnContext) + + // ExitTable_or_subquery is called when exiting the table_or_subquery production. + ExitTable_or_subquery(c *Table_or_subqueryContext) + + // ExitJoin_clause is called when exiting the join_clause production. + ExitJoin_clause(c *Join_clauseContext) + + // ExitJoin_operator is called when exiting the join_operator production. + ExitJoin_operator(c *Join_operatorContext) + + // ExitJoin_constraint is called when exiting the join_constraint production. + ExitJoin_constraint(c *Join_constraintContext) + + // ExitSelect_core is called when exiting the select_core production. + ExitSelect_core(c *Select_coreContext) + + // ExitCompound_operator is called when exiting the compound_operator production. + ExitCompound_operator(c *Compound_operatorContext) + + // ExitCte_table_name is called when exiting the cte_table_name production. + ExitCte_table_name(c *Cte_table_nameContext) + + // ExitSigned_number is called when exiting the signed_number production. + ExitSigned_number(c *Signed_numberContext) + + // ExitLiteral_value is called when exiting the literal_value production. + ExitLiteral_value(c *Literal_valueContext) + + // ExitUnary_operator is called when exiting the unary_operator production. + ExitUnary_operator(c *Unary_operatorContext) + + // ExitError_message is called when exiting the error_message production. + ExitError_message(c *Error_messageContext) + + // ExitModule_argument is called when exiting the module_argument production. + ExitModule_argument(c *Module_argumentContext) + + // ExitColumn_alias is called when exiting the column_alias production. + ExitColumn_alias(c *Column_aliasContext) + + // ExitKeyword is called when exiting the keyword production. + ExitKeyword(c *KeywordContext) + + // ExitUnknown is called when exiting the unknown production. + ExitUnknown(c *UnknownContext) + + // ExitName is called when exiting the name production. + ExitName(c *NameContext) + + // ExitFunction_name is called when exiting the function_name production. + ExitFunction_name(c *Function_nameContext) + + // ExitDatabase_name is called when exiting the database_name production. + ExitDatabase_name(c *Database_nameContext) + + // ExitSource_table_name is called when exiting the source_table_name production. + ExitSource_table_name(c *Source_table_nameContext) + + // ExitTable_name is called when exiting the table_name production. + ExitTable_name(c *Table_nameContext) + + // ExitTable_or_index_name is called when exiting the table_or_index_name production. + ExitTable_or_index_name(c *Table_or_index_nameContext) + + // ExitNew_table_name is called when exiting the new_table_name production. + ExitNew_table_name(c *New_table_nameContext) + + // ExitColumn_name is called when exiting the column_name production. + ExitColumn_name(c *Column_nameContext) + + // ExitCollation_name is called when exiting the collation_name production. + ExitCollation_name(c *Collation_nameContext) + + // ExitForeign_table is called when exiting the foreign_table production. + ExitForeign_table(c *Foreign_tableContext) + + // ExitIndex_name is called when exiting the index_name production. + ExitIndex_name(c *Index_nameContext) + + // ExitTrigger_name is called when exiting the trigger_name production. + ExitTrigger_name(c *Trigger_nameContext) + + // ExitView_name is called when exiting the view_name production. + ExitView_name(c *View_nameContext) + + // ExitModule_name is called when exiting the module_name production. + ExitModule_name(c *Module_nameContext) + + // ExitPragma_name is called when exiting the pragma_name production. + ExitPragma_name(c *Pragma_nameContext) + + // ExitSavepoint_name is called when exiting the savepoint_name production. + ExitSavepoint_name(c *Savepoint_nameContext) + + // ExitTable_alias is called when exiting the table_alias production. + ExitTable_alias(c *Table_aliasContext) + + // ExitTransaction_name is called when exiting the transaction_name production. + ExitTransaction_name(c *Transaction_nameContext) + + // ExitAny_name is called when exiting the any_name production. + ExitAny_name(c *Any_nameContext) +} diff --git a/processor/stream_processor/test/parser/sql_parser.go b/processor/stream_processor/test/parser/sql_parser.go new file mode 100644 index 000000000000..0670d6c28003 --- /dev/null +++ b/processor/stream_processor/test/parser/sql_parser.go @@ -0,0 +1,25479 @@ +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. + +package parser // Sql + +import ( + "fmt" + "strconv" + "sync" + + "github.com/antlr/antlr4/runtime/Go/antlr" +) + +// Suppress unused import errors +var _ = fmt.Printf +var _ = strconv.Itoa +var _ = sync.Once{} + + +type SqlParser struct { + *antlr.BaseParser +} + +var sqlParserStaticData struct { + once sync.Once + serializedATN []int32 + literalNames []string + symbolicNames []string + ruleNames []string + predictionContextCache *antlr.PredictionContextCache + atn *antlr.ATN + decisionToDFA []*antlr.DFA +} + +func sqlParserInit() { + staticData := &sqlParserStaticData + staticData.literalNames = []string{ + "", "'::'", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", + "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", + "'<='", "'>'", "'>='", "'=='", "'!='", "'<>'", + } + staticData.symbolicNames = []string{ + "", "", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", + "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", + "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", + "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", + "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", + "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", + "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", + "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", + "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", + "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", + "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", + "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", + "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", + "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", + "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", + "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", + "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", + "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", + "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", + "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", + "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", + "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", + "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", + "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", + "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", + "UNEXPECTED_CHAR", + } + staticData.ruleNames = []string{ + "parse", "error", "sql_stmt_list", "sql_stmt", "alter_table_stmt", "alter_table_add_constraint", + "alter_table_add", "analyze_stmt", "attach_stmt", "begin_stmt", "commit_stmt", + "compound_select_stmt", "create_index_stmt", "create_table_stmt", "create_trigger_stmt", + "create_view_stmt", "create_virtual_table_stmt", "delete_stmt", "delete_stmt_limited", + "detach_stmt", "drop_index_stmt", "drop_table_stmt", "drop_trigger_stmt", + "drop_view_stmt", "factored_select_stmt", "insert_stmt", "pragma_stmt", + "reindex_stmt", "release_stmt", "rollback_stmt", "savepoint_stmt", "simple_select_stmt", + "select_stmt", "select_or_values", "update_stmt", "update_stmt_limited", + "vacuum_stmt", "column_def", "type_name", "column_constraint", "column_constraint_primary_key", + "column_constraint_foreign_key", "column_constraint_not_null", "column_constraint_null", + "column_default", "column_default_value", "conflict_clause", "expr", + "foreign_key_clause", "fk_target_column_name", "raise_function", "indexed_column", + "table_constraint", "table_constraint_primary_key", "table_constraint_foreign_key", + "table_constraint_unique", "table_constraint_key", "fk_origin_column_name", + "with_clause", "qualified_table_name", "ordering_term", "pragma_value", + "common_table_expression", "result_column", "table_or_subquery", "join_clause", + "join_operator", "join_constraint", "select_core", "compound_operator", + "cte_table_name", "signed_number", "literal_value", "unary_operator", + "error_message", "module_argument", "column_alias", "keyword", "unknown", + "name", "function_name", "database_name", "source_table_name", "table_name", + "table_or_index_name", "new_table_name", "column_name", "collation_name", + "foreign_table", "index_name", "trigger_name", "view_name", "module_name", + "pragma_name", "savepoint_name", "table_alias", "transaction_name", + "any_name", + } + staticData.predictionContextCache = antlr.NewPredictionContextCache() + staticData.serializedATN = []int32{ + 4, 1, 161, 1866, 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, 1, 0, 1, 0, 5, 0, 199, + 8, 0, 10, 0, 12, 0, 202, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, + 210, 8, 2, 10, 2, 12, 2, 213, 9, 2, 1, 2, 1, 2, 4, 2, 217, 8, 2, 11, 2, + 12, 2, 218, 1, 2, 5, 2, 222, 8, 2, 10, 2, 12, 2, 225, 9, 2, 1, 2, 5, 2, + 228, 8, 2, 10, 2, 12, 2, 231, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 236, 8, 3, + 3, 3, 238, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 270, 8, 3, + 1, 4, 1, 4, 1, 4, 3, 4, 275, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 280, 8, 4, 1, + 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 290, 8, 4, 1, 4, 3, + 4, 293, 8, 4, 1, 4, 3, 4, 296, 8, 4, 1, 4, 3, 4, 299, 8, 4, 1, 5, 1, 5, + 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, + 1, 7, 3, 7, 316, 8, 7, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 8, 1, 8, 1, 8, 1, + 8, 1, 9, 1, 9, 3, 9, 328, 8, 9, 1, 9, 1, 9, 3, 9, 332, 8, 9, 3, 9, 334, + 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 339, 8, 10, 3, 10, 341, 8, 10, 1, 11, + 1, 11, 3, 11, 345, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 350, 8, 11, 10, 11, + 12, 11, 353, 9, 11, 3, 11, 355, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 360, + 8, 11, 1, 11, 1, 11, 3, 11, 364, 8, 11, 1, 11, 4, 11, 367, 8, 11, 11, 11, + 12, 11, 368, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 376, 8, 11, 10, + 11, 12, 11, 379, 9, 11, 3, 11, 381, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, + 3, 11, 387, 8, 11, 3, 11, 389, 8, 11, 1, 12, 1, 12, 3, 12, 393, 8, 12, + 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 399, 8, 12, 1, 12, 1, 12, 1, 12, 3, + 12, 404, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, + 413, 8, 12, 10, 12, 12, 12, 416, 9, 12, 1, 12, 1, 12, 1, 12, 3, 12, 421, + 8, 12, 1, 13, 1, 13, 3, 13, 425, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, + 13, 431, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 436, 8, 13, 1, 13, 1, 13, 1, + 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 445, 8, 13, 10, 13, 12, 13, 448, + 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 453, 8, 13, 1, 13, 1, 13, 3, 13, 457, + 8, 13, 1, 13, 3, 13, 460, 8, 13, 1, 14, 1, 14, 3, 14, 464, 8, 14, 1, 14, + 1, 14, 1, 14, 1, 14, 3, 14, 470, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 475, + 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 482, 8, 14, 1, 14, 1, + 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 491, 8, 14, 10, 14, 12, 14, + 494, 9, 14, 3, 14, 496, 8, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 1, 14, + 1, 14, 3, 14, 504, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 510, 8, 14, + 1, 14, 1, 14, 3, 14, 514, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, + 14, 521, 8, 14, 1, 14, 1, 14, 4, 14, 525, 8, 14, 11, 14, 12, 14, 526, 1, + 14, 1, 14, 1, 15, 1, 15, 3, 15, 533, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, + 3, 15, 539, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 544, 8, 15, 1, 15, 1, 15, + 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 556, 8, + 16, 1, 16, 1, 16, 1, 16, 3, 16, 561, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, + 1, 16, 1, 16, 1, 16, 5, 16, 570, 8, 16, 10, 16, 12, 16, 573, 9, 16, 1, + 16, 1, 16, 3, 16, 577, 8, 16, 1, 17, 3, 17, 580, 8, 17, 1, 17, 1, 17, 1, + 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 18, 3, 18, 590, 8, 18, 1, 18, 1, + 18, 1, 18, 1, 18, 1, 18, 3, 18, 597, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, + 1, 18, 5, 18, 604, 8, 18, 10, 18, 12, 18, 607, 9, 18, 3, 18, 609, 8, 18, + 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 615, 8, 18, 3, 18, 617, 8, 18, 1, 19, + 1, 19, 3, 19, 621, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, + 20, 629, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 634, 8, 20, 1, 20, 1, 20, 1, + 21, 1, 21, 1, 21, 1, 21, 3, 21, 642, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, + 647, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 655, 8, 22, + 1, 22, 1, 22, 1, 22, 3, 22, 660, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, + 23, 1, 23, 3, 23, 668, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 673, 8, 23, 1, + 23, 1, 23, 1, 24, 1, 24, 3, 24, 679, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, + 684, 8, 24, 10, 24, 12, 24, 687, 9, 24, 3, 24, 689, 8, 24, 1, 24, 1, 24, + 1, 24, 1, 24, 5, 24, 695, 8, 24, 10, 24, 12, 24, 698, 9, 24, 1, 24, 1, + 24, 1, 24, 1, 24, 1, 24, 5, 24, 705, 8, 24, 10, 24, 12, 24, 708, 9, 24, + 3, 24, 710, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 716, 8, 24, 3, 24, + 718, 8, 24, 1, 25, 3, 25, 721, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, + 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, + 25, 1, 25, 3, 25, 740, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 746, 8, + 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 753, 8, 25, 10, 25, 12, 25, + 756, 9, 25, 1, 25, 1, 25, 3, 25, 760, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, + 1, 25, 5, 25, 767, 8, 25, 10, 25, 12, 25, 770, 9, 25, 1, 25, 1, 25, 1, + 25, 1, 25, 1, 25, 1, 25, 5, 25, 778, 8, 25, 10, 25, 12, 25, 781, 9, 25, + 1, 25, 1, 25, 5, 25, 785, 8, 25, 10, 25, 12, 25, 788, 9, 25, 1, 25, 1, + 25, 1, 25, 3, 25, 793, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 799, 8, + 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 808, 8, 26, + 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 815, 8, 27, 1, 27, 1, 27, 3, + 27, 819, 8, 27, 3, 27, 821, 8, 27, 1, 28, 1, 28, 3, 28, 825, 8, 28, 1, + 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 832, 8, 29, 3, 29, 834, 8, 29, 1, + 29, 1, 29, 3, 29, 838, 8, 29, 1, 29, 3, 29, 841, 8, 29, 1, 30, 1, 30, 1, + 30, 1, 31, 1, 31, 3, 31, 848, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 853, 8, + 31, 10, 31, 12, 31, 856, 9, 31, 3, 31, 858, 8, 31, 1, 31, 1, 31, 1, 31, + 1, 31, 1, 31, 1, 31, 5, 31, 866, 8, 31, 10, 31, 12, 31, 869, 9, 31, 3, + 31, 871, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 877, 8, 31, 3, 31, 879, + 8, 31, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 888, + 8, 32, 10, 32, 12, 32, 891, 9, 32, 3, 32, 893, 8, 32, 1, 32, 1, 32, 1, + 32, 1, 32, 5, 32, 899, 8, 32, 10, 32, 12, 32, 902, 9, 32, 1, 32, 1, 32, + 1, 32, 1, 32, 1, 32, 5, 32, 909, 8, 32, 10, 32, 12, 32, 912, 9, 32, 3, + 32, 914, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 920, 8, 32, 3, 32, 922, + 8, 32, 1, 33, 1, 33, 3, 33, 926, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 931, + 8, 33, 10, 33, 12, 33, 934, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 940, + 8, 33, 10, 33, 12, 33, 943, 9, 33, 1, 33, 3, 33, 946, 8, 33, 3, 33, 948, + 8, 33, 1, 33, 1, 33, 3, 33, 952, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, + 33, 5, 33, 959, 8, 33, 10, 33, 12, 33, 962, 9, 33, 1, 33, 1, 33, 3, 33, + 966, 8, 33, 3, 33, 968, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, + 975, 8, 33, 10, 33, 12, 33, 978, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, + 33, 1, 33, 5, 33, 986, 8, 33, 10, 33, 12, 33, 989, 9, 33, 1, 33, 1, 33, + 5, 33, 993, 8, 33, 10, 33, 12, 33, 996, 9, 33, 3, 33, 998, 8, 33, 1, 34, + 3, 34, 1001, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, + 34, 1, 34, 1, 34, 1, 34, 3, 34, 1014, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, + 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 1026, 8, 34, 10, 34, 12, + 34, 1029, 9, 34, 1, 34, 1, 34, 3, 34, 1033, 8, 34, 1, 35, 3, 35, 1036, + 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, + 35, 1, 35, 3, 35, 1049, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, + 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1061, 8, 35, 10, 35, 12, 35, 1064, 9, + 35, 1, 35, 1, 35, 3, 35, 1068, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, + 5, 35, 1075, 8, 35, 10, 35, 12, 35, 1078, 9, 35, 3, 35, 1080, 8, 35, 1, + 35, 1, 35, 1, 35, 1, 35, 3, 35, 1086, 8, 35, 3, 35, 1088, 8, 35, 1, 36, + 1, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1095, 8, 37, 10, 37, 12, 37, 1098, 9, + 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1104, 8, 38, 1, 38, 1, 38, 1, 38, + 1, 38, 1, 38, 3, 38, 1111, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1116, 8, + 38, 1, 38, 1, 38, 3, 38, 1120, 8, 38, 1, 39, 1, 39, 3, 39, 1124, 8, 39, + 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, + 39, 1, 39, 1, 39, 1, 39, 3, 39, 1140, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, + 1145, 8, 40, 1, 40, 1, 40, 3, 40, 1149, 8, 40, 1, 41, 1, 41, 1, 42, 1, + 42, 1, 42, 1, 42, 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, 44, 1, 44, 3, 44, 1172, 8, 44, 1, + 44, 1, 44, 4, 44, 1176, 8, 44, 11, 44, 12, 44, 1177, 3, 44, 1180, 8, 44, + 1, 45, 1, 45, 3, 45, 1184, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1189, 8, + 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1197, 8, 47, 1, 47, + 1, 47, 1, 47, 3, 47, 1202, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 3, 47, 1211, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1216, 8, 47, + 10, 47, 12, 47, 1219, 9, 47, 1, 47, 3, 47, 1222, 8, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 3, 47, 1238, 8, 47, 1, 47, 3, 47, 1241, 8, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 47, 3, 47, 1249, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 4, 47, 1256, 8, 47, 11, 47, 12, 47, 1257, 1, 47, 1, 47, 3, 47, 1262, + 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1267, 8, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 1, 47, 1, 47, 3, 47, 1297, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1309, 8, 47, 1, 47, 1, + 47, 1, 47, 3, 47, 1314, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, + 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1326, 8, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 3, 47, 1332, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1339, + 8, 47, 1, 47, 1, 47, 3, 47, 1343, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, + 47, 1, 47, 5, 47, 1351, 8, 47, 10, 47, 12, 47, 1354, 9, 47, 3, 47, 1356, + 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 47, 3, 47, 1365, + 8, 47, 5, 47, 1367, 8, 47, 10, 47, 12, 47, 1370, 9, 47, 1, 48, 1, 48, 1, + 48, 1, 48, 3, 48, 1376, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, + 1383, 8, 48, 10, 48, 12, 48, 1386, 9, 48, 1, 48, 1, 48, 3, 48, 1390, 8, + 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, + 3, 48, 1402, 8, 48, 1, 48, 1, 48, 3, 48, 1406, 8, 48, 5, 48, 1408, 8, 48, + 10, 48, 12, 48, 1411, 9, 48, 1, 48, 3, 48, 1414, 8, 48, 1, 48, 1, 48, 1, + 48, 1, 48, 1, 48, 3, 48, 1421, 8, 48, 1, 48, 3, 48, 1424, 8, 48, 3, 48, + 1426, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, + 50, 1436, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, + 1, 51, 3, 51, 1446, 8, 51, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, + 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1461, 8, 52, + 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1469, 8, 53, 10, 53, 12, + 53, 1472, 9, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, + 1, 54, 5, 54, 1483, 8, 54, 10, 54, 12, 54, 1486, 9, 54, 1, 54, 1, 54, 1, + 54, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 55, + 1, 55, 1, 55, 1, 55, 5, 55, 1502, 8, 55, 10, 55, 12, 55, 1505, 9, 55, 1, + 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1512, 8, 56, 1, 56, 1, 56, 1, 56, + 1, 56, 5, 56, 1518, 8, 56, 10, 56, 12, 56, 1521, 9, 56, 1, 56, 1, 56, 1, + 56, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1530, 8, 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, 5, 58, 1544, + 8, 58, 10, 58, 12, 58, 1547, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1552, 8, + 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1560, 8, 59, 1, 60, + 1, 60, 1, 60, 3, 60, 1565, 8, 60, 1, 60, 3, 60, 1568, 8, 60, 1, 61, 1, + 61, 1, 61, 3, 61, 1573, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, + 1580, 8, 62, 10, 62, 12, 62, 1583, 9, 62, 1, 62, 1, 62, 3, 62, 1587, 8, + 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, + 1, 63, 1, 63, 3, 63, 1601, 8, 63, 1, 63, 3, 63, 1604, 8, 63, 3, 63, 1606, + 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1611, 8, 64, 1, 64, 1, 64, 3, 64, 1615, + 8, 64, 1, 64, 3, 64, 1618, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, + 64, 1625, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1631, 8, 64, 10, 64, + 12, 64, 1634, 9, 64, 1, 64, 3, 64, 1637, 8, 64, 1, 64, 1, 64, 3, 64, 1641, + 8, 64, 1, 64, 3, 64, 1644, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1650, + 8, 64, 1, 64, 3, 64, 1653, 8, 64, 3, 64, 1655, 8, 64, 1, 65, 1, 65, 1, + 65, 1, 65, 1, 65, 5, 65, 1662, 8, 65, 10, 65, 12, 65, 1665, 9, 65, 1, 66, + 1, 66, 3, 66, 1669, 8, 66, 1, 66, 1, 66, 3, 66, 1673, 8, 66, 1, 66, 1, + 66, 3, 66, 1677, 8, 66, 1, 66, 3, 66, 1680, 8, 66, 1, 67, 1, 67, 1, 67, + 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1689, 8, 67, 10, 67, 12, 67, 1692, 9, + 67, 1, 67, 1, 67, 3, 67, 1696, 8, 67, 1, 68, 1, 68, 3, 68, 1700, 8, 68, + 1, 68, 1, 68, 1, 68, 5, 68, 1705, 8, 68, 10, 68, 12, 68, 1708, 9, 68, 1, + 68, 1, 68, 1, 68, 1, 68, 5, 68, 1714, 8, 68, 10, 68, 12, 68, 1717, 9, 68, + 1, 68, 3, 68, 1720, 8, 68, 3, 68, 1722, 8, 68, 1, 68, 1, 68, 3, 68, 1726, + 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1733, 8, 68, 10, 68, 12, + 68, 1736, 9, 68, 1, 68, 1, 68, 3, 68, 1740, 8, 68, 3, 68, 1742, 8, 68, + 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1749, 8, 68, 10, 68, 12, 68, + 1752, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1760, 8, + 68, 10, 68, 12, 68, 1763, 9, 68, 1, 68, 1, 68, 5, 68, 1767, 8, 68, 10, + 68, 12, 68, 1770, 9, 68, 3, 68, 1772, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, + 1, 69, 3, 69, 1779, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1786, + 8, 70, 10, 70, 12, 70, 1789, 9, 70, 1, 70, 1, 70, 3, 70, 1793, 8, 70, 1, + 71, 3, 71, 1796, 8, 71, 1, 71, 1, 71, 3, 71, 1800, 8, 71, 1, 72, 1, 72, + 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1810, 8, 75, 1, 76, 1, + 76, 1, 77, 1, 77, 1, 78, 4, 78, 1817, 8, 78, 11, 78, 12, 78, 1818, 1, 79, + 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, + 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, + 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, + 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, + 3, 97, 1864, 8, 97, 1, 97, 0, 1, 94, 98, 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, 0, 18, 3, 0, 59, 59, 71, 71, 84, 84, + 2, 0, 48, 48, 67, 67, 2, 0, 6, 6, 109, 109, 1, 0, 135, 136, 2, 0, 30, 30, + 63, 63, 2, 0, 35, 35, 61, 61, 5, 0, 26, 26, 74, 74, 83, 83, 126, 126, 129, + 129, 2, 0, 8, 8, 13, 14, 1, 0, 9, 10, 1, 0, 15, 18, 1, 0, 19, 22, 4, 0, + 79, 79, 99, 99, 101, 101, 122, 122, 2, 0, 60, 60, 143, 143, 3, 0, 26, 26, + 74, 74, 129, 129, 4, 0, 53, 55, 107, 107, 154, 154, 156, 157, 2, 0, 9, + 11, 105, 105, 2, 0, 153, 153, 156, 156, 2, 0, 26, 110, 112, 152, 2141, + 0, 200, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 6, 237, 1, + 0, 0, 0, 8, 271, 1, 0, 0, 0, 10, 300, 1, 0, 0, 0, 12, 305, 1, 0, 0, 0, + 14, 308, 1, 0, 0, 0, 16, 317, 1, 0, 0, 0, 18, 325, 1, 0, 0, 0, 20, 335, + 1, 0, 0, 0, 22, 354, 1, 0, 0, 0, 24, 390, 1, 0, 0, 0, 26, 422, 1, 0, 0, + 0, 28, 461, 1, 0, 0, 0, 30, 530, 1, 0, 0, 0, 32, 549, 1, 0, 0, 0, 34, 579, + 1, 0, 0, 0, 36, 589, 1, 0, 0, 0, 38, 618, 1, 0, 0, 0, 40, 624, 1, 0, 0, + 0, 42, 637, 1, 0, 0, 0, 44, 650, 1, 0, 0, 0, 46, 663, 1, 0, 0, 0, 48, 688, + 1, 0, 0, 0, 50, 720, 1, 0, 0, 0, 52, 794, 1, 0, 0, 0, 54, 809, 1, 0, 0, + 0, 56, 822, 1, 0, 0, 0, 58, 828, 1, 0, 0, 0, 60, 842, 1, 0, 0, 0, 62, 857, + 1, 0, 0, 0, 64, 892, 1, 0, 0, 0, 66, 997, 1, 0, 0, 0, 68, 1000, 1, 0, 0, + 0, 70, 1035, 1, 0, 0, 0, 72, 1089, 1, 0, 0, 0, 74, 1091, 1, 0, 0, 0, 76, + 1099, 1, 0, 0, 0, 78, 1123, 1, 0, 0, 0, 80, 1141, 1, 0, 0, 0, 82, 1150, + 1, 0, 0, 0, 84, 1152, 1, 0, 0, 0, 86, 1156, 1, 0, 0, 0, 88, 1159, 1, 0, + 0, 0, 90, 1183, 1, 0, 0, 0, 92, 1188, 1, 0, 0, 0, 94, 1266, 1, 0, 0, 0, + 96, 1371, 1, 0, 0, 0, 98, 1427, 1, 0, 0, 0, 100, 1429, 1, 0, 0, 0, 102, + 1439, 1, 0, 0, 0, 104, 1449, 1, 0, 0, 0, 106, 1462, 1, 0, 0, 0, 108, 1476, + 1, 0, 0, 0, 110, 1490, 1, 0, 0, 0, 112, 1509, 1, 0, 0, 0, 114, 1525, 1, + 0, 0, 0, 116, 1527, 1, 0, 0, 0, 118, 1551, 1, 0, 0, 0, 120, 1561, 1, 0, + 0, 0, 122, 1572, 1, 0, 0, 0, 124, 1574, 1, 0, 0, 0, 126, 1605, 1, 0, 0, + 0, 128, 1654, 1, 0, 0, 0, 130, 1656, 1, 0, 0, 0, 132, 1679, 1, 0, 0, 0, + 134, 1695, 1, 0, 0, 0, 136, 1771, 1, 0, 0, 0, 138, 1778, 1, 0, 0, 0, 140, + 1780, 1, 0, 0, 0, 142, 1799, 1, 0, 0, 0, 144, 1801, 1, 0, 0, 0, 146, 1803, + 1, 0, 0, 0, 148, 1805, 1, 0, 0, 0, 150, 1809, 1, 0, 0, 0, 152, 1811, 1, + 0, 0, 0, 154, 1813, 1, 0, 0, 0, 156, 1816, 1, 0, 0, 0, 158, 1820, 1, 0, + 0, 0, 160, 1822, 1, 0, 0, 0, 162, 1824, 1, 0, 0, 0, 164, 1826, 1, 0, 0, + 0, 166, 1828, 1, 0, 0, 0, 168, 1830, 1, 0, 0, 0, 170, 1832, 1, 0, 0, 0, + 172, 1834, 1, 0, 0, 0, 174, 1836, 1, 0, 0, 0, 176, 1838, 1, 0, 0, 0, 178, + 1840, 1, 0, 0, 0, 180, 1842, 1, 0, 0, 0, 182, 1844, 1, 0, 0, 0, 184, 1846, + 1, 0, 0, 0, 186, 1848, 1, 0, 0, 0, 188, 1850, 1, 0, 0, 0, 190, 1852, 1, + 0, 0, 0, 192, 1854, 1, 0, 0, 0, 194, 1863, 1, 0, 0, 0, 196, 199, 3, 4, + 2, 0, 197, 199, 3, 2, 1, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, + 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, + 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 0, 0, 1, 204, 1, 1, + 0, 0, 0, 205, 206, 5, 161, 0, 0, 206, 207, 6, 1, -1, 0, 207, 3, 1, 0, 0, + 0, 208, 210, 5, 2, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, + 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 211, + 1, 0, 0, 0, 214, 223, 3, 6, 3, 0, 215, 217, 5, 2, 0, 0, 216, 215, 1, 0, + 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, + 219, 220, 1, 0, 0, 0, 220, 222, 3, 6, 3, 0, 221, 216, 1, 0, 0, 0, 222, + 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, + 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 2, 0, 0, 227, 226, 1, 0, + 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, + 230, 5, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 235, 5, 73, 0, 0, 233, 234, + 5, 118, 0, 0, 234, 236, 5, 115, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, + 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 232, 1, 0, 0, 0, 237, 238, 1, 0, 0, + 0, 238, 269, 1, 0, 0, 0, 239, 270, 3, 8, 4, 0, 240, 270, 3, 14, 7, 0, 241, + 270, 3, 16, 8, 0, 242, 270, 3, 18, 9, 0, 243, 270, 3, 20, 10, 0, 244, 270, + 3, 22, 11, 0, 245, 270, 3, 24, 12, 0, 246, 270, 3, 26, 13, 0, 247, 270, + 3, 28, 14, 0, 248, 270, 3, 30, 15, 0, 249, 270, 3, 32, 16, 0, 250, 270, + 3, 34, 17, 0, 251, 270, 3, 36, 18, 0, 252, 270, 3, 38, 19, 0, 253, 270, + 3, 40, 20, 0, 254, 270, 3, 42, 21, 0, 255, 270, 3, 44, 22, 0, 256, 270, + 3, 46, 23, 0, 257, 270, 3, 48, 24, 0, 258, 270, 3, 50, 25, 0, 259, 270, + 3, 52, 26, 0, 260, 270, 3, 54, 27, 0, 261, 270, 3, 56, 28, 0, 262, 270, + 3, 58, 29, 0, 263, 270, 3, 60, 30, 0, 264, 270, 3, 62, 31, 0, 265, 270, + 3, 64, 32, 0, 266, 270, 3, 68, 34, 0, 267, 270, 3, 70, 35, 0, 268, 270, + 3, 72, 36, 0, 269, 239, 1, 0, 0, 0, 269, 240, 1, 0, 0, 0, 269, 241, 1, + 0, 0, 0, 269, 242, 1, 0, 0, 0, 269, 243, 1, 0, 0, 0, 269, 244, 1, 0, 0, + 0, 269, 245, 1, 0, 0, 0, 269, 246, 1, 0, 0, 0, 269, 247, 1, 0, 0, 0, 269, + 248, 1, 0, 0, 0, 269, 249, 1, 0, 0, 0, 269, 250, 1, 0, 0, 0, 269, 251, + 1, 0, 0, 0, 269, 252, 1, 0, 0, 0, 269, 253, 1, 0, 0, 0, 269, 254, 1, 0, + 0, 0, 269, 255, 1, 0, 0, 0, 269, 256, 1, 0, 0, 0, 269, 257, 1, 0, 0, 0, + 269, 258, 1, 0, 0, 0, 269, 259, 1, 0, 0, 0, 269, 260, 1, 0, 0, 0, 269, + 261, 1, 0, 0, 0, 269, 262, 1, 0, 0, 0, 269, 263, 1, 0, 0, 0, 269, 264, + 1, 0, 0, 0, 269, 265, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, + 0, 0, 269, 268, 1, 0, 0, 0, 270, 7, 1, 0, 0, 0, 271, 272, 5, 31, 0, 0, + 272, 274, 5, 134, 0, 0, 273, 275, 5, 111, 0, 0, 274, 273, 1, 0, 0, 0, 274, + 275, 1, 0, 0, 0, 275, 279, 1, 0, 0, 0, 276, 277, 3, 162, 81, 0, 277, 278, + 5, 3, 0, 0, 278, 280, 1, 0, 0, 0, 279, 276, 1, 0, 0, 0, 279, 280, 1, 0, + 0, 0, 280, 281, 1, 0, 0, 0, 281, 292, 3, 164, 82, 0, 282, 283, 5, 125, + 0, 0, 283, 284, 5, 138, 0, 0, 284, 293, 3, 170, 85, 0, 285, 293, 3, 12, + 6, 0, 286, 293, 3, 10, 5, 0, 287, 289, 5, 28, 0, 0, 288, 290, 5, 47, 0, + 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, + 293, 3, 74, 37, 0, 292, 282, 1, 0, 0, 0, 292, 285, 1, 0, 0, 0, 292, 286, + 1, 0, 0, 0, 292, 287, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 296, 5, 68, + 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, + 297, 299, 3, 156, 78, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, + 9, 1, 0, 0, 0, 300, 301, 5, 28, 0, 0, 301, 302, 5, 50, 0, 0, 302, 303, + 3, 194, 97, 0, 303, 304, 3, 104, 52, 0, 304, 11, 1, 0, 0, 0, 305, 306, + 5, 28, 0, 0, 306, 307, 3, 104, 52, 0, 307, 13, 1, 0, 0, 0, 308, 315, 5, + 32, 0, 0, 309, 316, 3, 162, 81, 0, 310, 316, 3, 168, 84, 0, 311, 312, 3, + 162, 81, 0, 312, 313, 5, 3, 0, 0, 313, 314, 3, 168, 84, 0, 314, 316, 1, + 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, + 0, 315, 316, 1, 0, 0, 0, 316, 15, 1, 0, 0, 0, 317, 319, 5, 36, 0, 0, 318, + 320, 5, 56, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, + 1, 0, 0, 0, 321, 322, 3, 94, 47, 0, 322, 323, 5, 34, 0, 0, 323, 324, 3, + 162, 81, 0, 324, 17, 1, 0, 0, 0, 325, 327, 5, 39, 0, 0, 326, 328, 7, 0, + 0, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 333, 1, 0, 0, 0, + 329, 331, 5, 139, 0, 0, 330, 332, 3, 192, 96, 0, 331, 330, 1, 0, 0, 0, + 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, + 334, 1, 0, 0, 0, 334, 19, 1, 0, 0, 0, 335, 340, 7, 1, 0, 0, 336, 338, 5, + 139, 0, 0, 337, 339, 3, 192, 96, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, + 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 336, 1, 0, 0, 0, 340, 341, 1, 0, 0, + 0, 341, 21, 1, 0, 0, 0, 342, 344, 5, 151, 0, 0, 343, 345, 5, 120, 0, 0, + 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, + 351, 3, 124, 62, 0, 347, 348, 5, 6, 0, 0, 348, 350, 3, 124, 62, 0, 349, + 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, + 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 342, 1, 0, + 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 366, 3, 136, 68, + 0, 357, 359, 5, 141, 0, 0, 358, 360, 5, 30, 0, 0, 359, 358, 1, 0, 0, 0, + 359, 360, 1, 0, 0, 0, 360, 364, 1, 0, 0, 0, 361, 364, 5, 92, 0, 0, 362, + 364, 5, 70, 0, 0, 363, 357, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, + 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 3, 136, 68, 0, 366, 363, 1, + 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, + 0, 369, 380, 1, 0, 0, 0, 370, 371, 5, 113, 0, 0, 371, 372, 5, 41, 0, 0, + 372, 377, 3, 120, 60, 0, 373, 374, 5, 6, 0, 0, 374, 376, 3, 120, 60, 0, + 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, + 378, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 370, + 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 388, 1, 0, 0, 0, 382, 383, 5, 100, + 0, 0, 383, 386, 3, 94, 47, 0, 384, 385, 7, 2, 0, 0, 385, 387, 3, 94, 47, + 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, + 382, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 23, 1, 0, 0, 0, 390, 392, 5, + 51, 0, 0, 391, 393, 5, 142, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, + 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 5, 86, 0, 0, 395, 396, 5, 82, 0, + 0, 396, 397, 5, 105, 0, 0, 397, 399, 5, 72, 0, 0, 398, 395, 1, 0, 0, 0, + 398, 399, 1, 0, 0, 0, 399, 403, 1, 0, 0, 0, 400, 401, 3, 162, 81, 0, 401, + 402, 5, 3, 0, 0, 402, 404, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 404, + 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 3, 178, 89, 0, 406, 407, 5, + 110, 0, 0, 407, 408, 3, 166, 83, 0, 408, 409, 5, 4, 0, 0, 409, 414, 3, + 102, 51, 0, 410, 411, 5, 6, 0, 0, 411, 413, 3, 102, 51, 0, 412, 410, 1, + 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, + 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 420, 5, 5, 0, 0, 418, + 419, 5, 150, 0, 0, 419, 421, 3, 94, 47, 0, 420, 418, 1, 0, 0, 0, 420, 421, + 1, 0, 0, 0, 421, 25, 1, 0, 0, 0, 422, 424, 5, 51, 0, 0, 423, 425, 7, 3, + 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, + 426, 430, 5, 134, 0, 0, 427, 428, 5, 82, 0, 0, 428, 429, 5, 105, 0, 0, + 429, 431, 5, 72, 0, 0, 430, 427, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, + 435, 1, 0, 0, 0, 432, 433, 3, 162, 81, 0, 433, 434, 5, 3, 0, 0, 434, 436, + 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, + 0, 0, 437, 456, 3, 166, 83, 0, 438, 439, 5, 4, 0, 0, 439, 446, 3, 74, 37, + 0, 440, 441, 5, 6, 0, 0, 441, 445, 3, 104, 52, 0, 442, 443, 5, 6, 0, 0, + 443, 445, 3, 74, 37, 0, 444, 440, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, + 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, + 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 5, 5, 0, 0, 450, 451, 5, 152, + 0, 0, 451, 453, 5, 153, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, + 0, 453, 457, 1, 0, 0, 0, 454, 455, 5, 34, 0, 0, 455, 457, 3, 64, 32, 0, + 456, 438, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 459, 1, 0, 0, 0, 458, + 460, 3, 156, 78, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 27, + 1, 0, 0, 0, 461, 463, 5, 51, 0, 0, 462, 464, 7, 3, 0, 0, 463, 462, 1, 0, + 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 469, 5, 140, 0, + 0, 466, 467, 5, 82, 0, 0, 467, 468, 5, 105, 0, 0, 468, 470, 5, 72, 0, 0, + 469, 466, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 474, 1, 0, 0, 0, 471, + 472, 3, 162, 81, 0, 472, 473, 5, 3, 0, 0, 473, 475, 1, 0, 0, 0, 474, 471, + 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 3, 180, + 90, 0, 477, 482, 5, 38, 0, 0, 478, 482, 5, 29, 0, 0, 479, 480, 5, 91, 0, + 0, 480, 482, 5, 108, 0, 0, 481, 477, 1, 0, 0, 0, 481, 478, 1, 0, 0, 0, + 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 497, 1, 0, 0, 0, 483, + 498, 5, 60, 0, 0, 484, 498, 5, 90, 0, 0, 485, 495, 5, 143, 0, 0, 486, 487, + 5, 108, 0, 0, 487, 492, 3, 172, 86, 0, 488, 489, 5, 6, 0, 0, 489, 491, + 3, 172, 86, 0, 490, 488, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, + 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, + 0, 495, 486, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, + 483, 1, 0, 0, 0, 497, 484, 1, 0, 0, 0, 497, 485, 1, 0, 0, 0, 498, 499, + 1, 0, 0, 0, 499, 503, 5, 110, 0, 0, 500, 501, 3, 162, 81, 0, 501, 502, + 5, 3, 0, 0, 502, 504, 1, 0, 0, 0, 503, 500, 1, 0, 0, 0, 503, 504, 1, 0, + 0, 0, 504, 505, 1, 0, 0, 0, 505, 509, 3, 166, 83, 0, 506, 507, 5, 75, 0, + 0, 507, 508, 5, 65, 0, 0, 508, 510, 5, 130, 0, 0, 509, 506, 1, 0, 0, 0, + 509, 510, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 512, 5, 149, 0, 0, 512, + 514, 3, 94, 47, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, + 1, 0, 0, 0, 515, 524, 5, 39, 0, 0, 516, 521, 3, 68, 34, 0, 517, 521, 3, + 50, 25, 0, 518, 521, 3, 34, 17, 0, 519, 521, 3, 64, 32, 0, 520, 516, 1, + 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, + 0, 521, 522, 1, 0, 0, 0, 522, 523, 5, 2, 0, 0, 523, 525, 1, 0, 0, 0, 524, + 520, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, + 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 5, 67, 0, 0, 529, 29, 1, 0, + 0, 0, 530, 532, 5, 51, 0, 0, 531, 533, 7, 3, 0, 0, 532, 531, 1, 0, 0, 0, + 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 538, 5, 147, 0, 0, 535, + 536, 5, 82, 0, 0, 536, 537, 5, 105, 0, 0, 537, 539, 5, 72, 0, 0, 538, 535, + 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 1, 0, 0, 0, 540, 541, 3, 162, + 81, 0, 541, 542, 5, 3, 0, 0, 542, 544, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, + 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 3, 182, 91, 0, 546, + 547, 5, 34, 0, 0, 547, 548, 3, 64, 32, 0, 548, 31, 1, 0, 0, 0, 549, 550, + 5, 51, 0, 0, 550, 551, 5, 148, 0, 0, 551, 555, 5, 134, 0, 0, 552, 553, + 5, 82, 0, 0, 553, 554, 5, 105, 0, 0, 554, 556, 5, 72, 0, 0, 555, 552, 1, + 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 560, 1, 0, 0, 0, 557, 558, 3, 162, + 81, 0, 558, 559, 5, 3, 0, 0, 559, 561, 1, 0, 0, 0, 560, 557, 1, 0, 0, 0, + 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 166, 83, 0, 563, + 564, 5, 144, 0, 0, 564, 576, 3, 184, 92, 0, 565, 566, 5, 4, 0, 0, 566, + 571, 3, 150, 75, 0, 567, 568, 5, 6, 0, 0, 568, 570, 3, 150, 75, 0, 569, + 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, + 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 5, + 0, 0, 575, 577, 1, 0, 0, 0, 576, 565, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, + 577, 33, 1, 0, 0, 0, 578, 580, 3, 116, 58, 0, 579, 578, 1, 0, 0, 0, 579, + 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 60, 0, 0, 582, 583, + 5, 77, 0, 0, 583, 586, 3, 118, 59, 0, 584, 585, 5, 150, 0, 0, 585, 587, + 3, 94, 47, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 35, 1, 0, + 0, 0, 588, 590, 3, 116, 58, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, + 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 60, 0, 0, 592, 593, 5, 77, 0, 0, + 593, 596, 3, 118, 59, 0, 594, 595, 5, 150, 0, 0, 595, 597, 3, 94, 47, 0, + 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 616, 1, 0, 0, 0, 598, + 599, 5, 113, 0, 0, 599, 600, 5, 41, 0, 0, 600, 605, 3, 120, 60, 0, 601, + 602, 5, 6, 0, 0, 602, 604, 3, 120, 60, 0, 603, 601, 1, 0, 0, 0, 604, 607, + 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, + 0, 0, 607, 605, 1, 0, 0, 0, 608, 598, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, + 609, 610, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 614, 3, 94, 47, 0, 612, + 613, 7, 2, 0, 0, 613, 615, 3, 94, 47, 0, 614, 612, 1, 0, 0, 0, 614, 615, + 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 617, 1, 0, + 0, 0, 617, 37, 1, 0, 0, 0, 618, 620, 5, 62, 0, 0, 619, 621, 5, 56, 0, 0, + 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, + 623, 3, 162, 81, 0, 623, 39, 1, 0, 0, 0, 624, 625, 5, 64, 0, 0, 625, 628, + 5, 86, 0, 0, 626, 627, 5, 82, 0, 0, 627, 629, 5, 72, 0, 0, 628, 626, 1, + 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 633, 1, 0, 0, 0, 630, 631, 3, 162, + 81, 0, 631, 632, 5, 3, 0, 0, 632, 634, 1, 0, 0, 0, 633, 630, 1, 0, 0, 0, + 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 3, 178, 89, 0, 636, + 41, 1, 0, 0, 0, 637, 638, 5, 64, 0, 0, 638, 641, 5, 134, 0, 0, 639, 640, + 5, 82, 0, 0, 640, 642, 5, 72, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, + 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 3, 162, 81, 0, 644, 645, 5, 3, + 0, 0, 645, 647, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, + 647, 648, 1, 0, 0, 0, 648, 649, 3, 166, 83, 0, 649, 43, 1, 0, 0, 0, 650, + 651, 5, 64, 0, 0, 651, 654, 5, 140, 0, 0, 652, 653, 5, 82, 0, 0, 653, 655, + 5, 72, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 659, 1, 0, + 0, 0, 656, 657, 3, 162, 81, 0, 657, 658, 5, 3, 0, 0, 658, 660, 1, 0, 0, + 0, 659, 656, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, + 662, 3, 180, 90, 0, 662, 45, 1, 0, 0, 0, 663, 664, 5, 64, 0, 0, 664, 667, + 5, 147, 0, 0, 665, 666, 5, 82, 0, 0, 666, 668, 5, 72, 0, 0, 667, 665, 1, + 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 672, 1, 0, 0, 0, 669, 670, 3, 162, + 81, 0, 670, 671, 5, 3, 0, 0, 671, 673, 1, 0, 0, 0, 672, 669, 1, 0, 0, 0, + 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 3, 182, 91, 0, 675, + 47, 1, 0, 0, 0, 676, 678, 5, 151, 0, 0, 677, 679, 5, 120, 0, 0, 678, 677, + 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 685, 3, 124, + 62, 0, 681, 682, 5, 6, 0, 0, 682, 684, 3, 124, 62, 0, 683, 681, 1, 0, 0, + 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, + 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 676, 1, 0, 0, 0, 688, 689, + 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 696, 3, 136, 68, 0, 691, 692, 3, + 138, 69, 0, 692, 693, 3, 136, 68, 0, 693, 695, 1, 0, 0, 0, 694, 691, 1, + 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, + 0, 697, 709, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 700, 5, 113, 0, 0, + 700, 701, 5, 41, 0, 0, 701, 706, 3, 120, 60, 0, 702, 703, 5, 6, 0, 0, 703, + 705, 3, 120, 60, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, + 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, + 0, 0, 709, 699, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 717, 1, 0, 0, 0, + 711, 712, 5, 100, 0, 0, 712, 715, 3, 94, 47, 0, 713, 714, 7, 2, 0, 0, 714, + 716, 3, 94, 47, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, + 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 49, 1, 0, + 0, 0, 719, 721, 3, 116, 58, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, + 0, 721, 739, 1, 0, 0, 0, 722, 740, 5, 90, 0, 0, 723, 740, 5, 126, 0, 0, + 724, 725, 5, 90, 0, 0, 725, 726, 5, 112, 0, 0, 726, 740, 5, 126, 0, 0, + 727, 728, 5, 90, 0, 0, 728, 729, 5, 112, 0, 0, 729, 740, 5, 129, 0, 0, + 730, 731, 5, 90, 0, 0, 731, 732, 5, 112, 0, 0, 732, 740, 5, 26, 0, 0, 733, + 734, 5, 90, 0, 0, 734, 735, 5, 112, 0, 0, 735, 740, 5, 74, 0, 0, 736, 737, + 5, 90, 0, 0, 737, 738, 5, 112, 0, 0, 738, 740, 5, 83, 0, 0, 739, 722, 1, + 0, 0, 0, 739, 723, 1, 0, 0, 0, 739, 724, 1, 0, 0, 0, 739, 727, 1, 0, 0, + 0, 739, 730, 1, 0, 0, 0, 739, 733, 1, 0, 0, 0, 739, 736, 1, 0, 0, 0, 740, + 741, 1, 0, 0, 0, 741, 745, 5, 93, 0, 0, 742, 743, 3, 162, 81, 0, 743, 744, + 5, 3, 0, 0, 744, 746, 1, 0, 0, 0, 745, 742, 1, 0, 0, 0, 745, 746, 1, 0, + 0, 0, 746, 747, 1, 0, 0, 0, 747, 759, 3, 166, 83, 0, 748, 749, 5, 4, 0, + 0, 749, 754, 3, 172, 86, 0, 750, 751, 5, 6, 0, 0, 751, 753, 3, 172, 86, + 0, 752, 750, 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, 5, 0, 0, 758, 760, 1, 0, 0, 0, 759, 748, 1, 0, 0, 0, 759, 760, 1, 0, + 0, 0, 760, 792, 1, 0, 0, 0, 761, 762, 5, 146, 0, 0, 762, 763, 5, 4, 0, + 0, 763, 768, 3, 94, 47, 0, 764, 765, 5, 6, 0, 0, 765, 767, 3, 94, 47, 0, + 766, 764, 1, 0, 0, 0, 767, 770, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, + 769, 1, 0, 0, 0, 769, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 786, + 5, 5, 0, 0, 772, 773, 5, 6, 0, 0, 773, 774, 5, 4, 0, 0, 774, 779, 3, 94, + 47, 0, 775, 776, 5, 6, 0, 0, 776, 778, 3, 94, 47, 0, 777, 775, 1, 0, 0, + 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, + 782, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, 5, 5, 0, 0, 783, 785, + 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, + 0, 0, 786, 787, 1, 0, 0, 0, 787, 793, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, + 789, 793, 3, 64, 32, 0, 790, 791, 5, 57, 0, 0, 791, 793, 5, 146, 0, 0, + 792, 761, 1, 0, 0, 0, 792, 789, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, + 51, 1, 0, 0, 0, 794, 798, 5, 116, 0, 0, 795, 796, 3, 162, 81, 0, 796, 797, + 5, 3, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, + 0, 0, 799, 800, 1, 0, 0, 0, 800, 807, 3, 186, 93, 0, 801, 802, 5, 7, 0, + 0, 802, 808, 3, 122, 61, 0, 803, 804, 5, 4, 0, 0, 804, 805, 3, 122, 61, + 0, 805, 806, 5, 5, 0, 0, 806, 808, 1, 0, 0, 0, 807, 801, 1, 0, 0, 0, 807, + 803, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 53, 1, 0, 0, 0, 809, 820, 5, + 123, 0, 0, 810, 821, 3, 174, 87, 0, 811, 812, 3, 162, 81, 0, 812, 813, + 5, 3, 0, 0, 813, 815, 1, 0, 0, 0, 814, 811, 1, 0, 0, 0, 814, 815, 1, 0, + 0, 0, 815, 818, 1, 0, 0, 0, 816, 819, 3, 166, 83, 0, 817, 819, 3, 178, + 89, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, + 820, 810, 1, 0, 0, 0, 820, 814, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, + 55, 1, 0, 0, 0, 822, 824, 5, 124, 0, 0, 823, 825, 5, 131, 0, 0, 824, 823, + 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 188, + 94, 0, 827, 57, 1, 0, 0, 0, 828, 833, 5, 129, 0, 0, 829, 831, 5, 139, 0, + 0, 830, 832, 3, 192, 96, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, + 832, 834, 1, 0, 0, 0, 833, 829, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, + 840, 1, 0, 0, 0, 835, 837, 5, 138, 0, 0, 836, 838, 5, 131, 0, 0, 837, 836, + 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 188, + 94, 0, 840, 835, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 59, 1, 0, 0, 0, + 842, 843, 5, 131, 0, 0, 843, 844, 3, 188, 94, 0, 844, 61, 1, 0, 0, 0, 845, + 847, 5, 151, 0, 0, 846, 848, 5, 120, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, + 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 854, 3, 124, 62, 0, 850, 851, 5, + 6, 0, 0, 851, 853, 3, 124, 62, 0, 852, 850, 1, 0, 0, 0, 853, 856, 1, 0, + 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, + 856, 854, 1, 0, 0, 0, 857, 845, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, + 859, 1, 0, 0, 0, 859, 870, 3, 136, 68, 0, 860, 861, 5, 113, 0, 0, 861, + 862, 5, 41, 0, 0, 862, 867, 3, 120, 60, 0, 863, 864, 5, 6, 0, 0, 864, 866, + 3, 120, 60, 0, 865, 863, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, + 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, + 0, 870, 860, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 878, 1, 0, 0, 0, 872, + 873, 5, 100, 0, 0, 873, 876, 3, 94, 47, 0, 874, 875, 7, 2, 0, 0, 875, 877, + 3, 94, 47, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 879, 1, + 0, 0, 0, 878, 872, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 63, 1, 0, 0, + 0, 880, 882, 5, 151, 0, 0, 881, 883, 5, 120, 0, 0, 882, 881, 1, 0, 0, 0, + 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 889, 3, 124, 62, 0, 885, + 886, 5, 6, 0, 0, 886, 888, 3, 124, 62, 0, 887, 885, 1, 0, 0, 0, 888, 891, + 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, + 0, 0, 891, 889, 1, 0, 0, 0, 892, 880, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, + 893, 894, 1, 0, 0, 0, 894, 900, 3, 66, 33, 0, 895, 896, 3, 138, 69, 0, + 896, 897, 3, 66, 33, 0, 897, 899, 1, 0, 0, 0, 898, 895, 1, 0, 0, 0, 899, + 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 913, + 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 113, 0, 0, 904, 905, 5, + 41, 0, 0, 905, 910, 3, 120, 60, 0, 906, 907, 5, 6, 0, 0, 907, 909, 3, 120, + 60, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, + 910, 911, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, + 903, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 921, 1, 0, 0, 0, 915, 916, + 5, 100, 0, 0, 916, 919, 3, 94, 47, 0, 917, 918, 7, 2, 0, 0, 918, 920, 3, + 94, 47, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, + 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 65, 1, 0, 0, 0, + 923, 925, 5, 132, 0, 0, 924, 926, 7, 4, 0, 0, 925, 924, 1, 0, 0, 0, 925, + 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 932, 3, 126, 63, 0, 928, 929, + 5, 6, 0, 0, 929, 931, 3, 126, 63, 0, 930, 928, 1, 0, 0, 0, 931, 934, 1, + 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 947, 1, 0, 0, + 0, 934, 932, 1, 0, 0, 0, 935, 945, 5, 77, 0, 0, 936, 941, 3, 128, 64, 0, + 937, 938, 5, 6, 0, 0, 938, 940, 3, 128, 64, 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, 946, + 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 130, 65, 0, 945, 936, 1, + 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 935, 1, 0, 0, + 0, 947, 948, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 950, 5, 150, 0, 0, + 950, 952, 3, 94, 47, 0, 951, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, + 967, 1, 0, 0, 0, 953, 954, 5, 80, 0, 0, 954, 955, 5, 41, 0, 0, 955, 960, + 3, 94, 47, 0, 956, 957, 5, 6, 0, 0, 957, 959, 3, 94, 47, 0, 958, 956, 1, + 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, + 0, 961, 965, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 963, 964, 5, 81, 0, 0, 964, + 966, 3, 94, 47, 0, 965, 963, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, + 1, 0, 0, 0, 967, 953, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 998, 1, 0, + 0, 0, 969, 970, 5, 146, 0, 0, 970, 971, 5, 4, 0, 0, 971, 976, 3, 94, 47, + 0, 972, 973, 5, 6, 0, 0, 973, 975, 3, 94, 47, 0, 974, 972, 1, 0, 0, 0, + 975, 978, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, + 979, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 979, 994, 5, 5, 0, 0, 980, 981, + 5, 6, 0, 0, 981, 982, 5, 4, 0, 0, 982, 987, 3, 94, 47, 0, 983, 984, 5, + 6, 0, 0, 984, 986, 3, 94, 47, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, + 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 1, 0, 0, 0, + 989, 987, 1, 0, 0, 0, 990, 991, 5, 5, 0, 0, 991, 993, 1, 0, 0, 0, 992, + 980, 1, 0, 0, 0, 993, 996, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, + 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 923, 1, 0, + 0, 0, 997, 969, 1, 0, 0, 0, 998, 67, 1, 0, 0, 0, 999, 1001, 3, 116, 58, + 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, + 0, 1002, 1013, 5, 143, 0, 0, 1003, 1004, 5, 112, 0, 0, 1004, 1014, 5, 129, + 0, 0, 1005, 1006, 5, 112, 0, 0, 1006, 1014, 5, 26, 0, 0, 1007, 1008, 5, + 112, 0, 0, 1008, 1014, 5, 126, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1014, + 5, 74, 0, 0, 1011, 1012, 5, 112, 0, 0, 1012, 1014, 5, 83, 0, 0, 1013, 1003, + 1, 0, 0, 0, 1013, 1005, 1, 0, 0, 0, 1013, 1007, 1, 0, 0, 0, 1013, 1009, + 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1015, + 1, 0, 0, 0, 1015, 1016, 3, 118, 59, 0, 1016, 1017, 5, 133, 0, 0, 1017, + 1018, 3, 172, 86, 0, 1018, 1019, 5, 7, 0, 0, 1019, 1027, 3, 94, 47, 0, + 1020, 1021, 5, 6, 0, 0, 1021, 1022, 3, 172, 86, 0, 1022, 1023, 5, 7, 0, + 0, 1023, 1024, 3, 94, 47, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, + 0, 0, 1026, 1029, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, + 0, 0, 1028, 1032, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 1031, 5, 150, + 0, 0, 1031, 1033, 3, 94, 47, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, + 0, 0, 0, 1033, 69, 1, 0, 0, 0, 1034, 1036, 3, 116, 58, 0, 1035, 1034, 1, + 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1048, 5, + 143, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1049, 5, 129, 0, 0, 1040, 1041, + 5, 112, 0, 0, 1041, 1049, 5, 26, 0, 0, 1042, 1043, 5, 112, 0, 0, 1043, + 1049, 5, 126, 0, 0, 1044, 1045, 5, 112, 0, 0, 1045, 1049, 5, 74, 0, 0, + 1046, 1047, 5, 112, 0, 0, 1047, 1049, 5, 83, 0, 0, 1048, 1038, 1, 0, 0, + 0, 1048, 1040, 1, 0, 0, 0, 1048, 1042, 1, 0, 0, 0, 1048, 1044, 1, 0, 0, + 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, + 0, 1050, 1051, 3, 118, 59, 0, 1051, 1052, 5, 133, 0, 0, 1052, 1053, 3, + 172, 86, 0, 1053, 1054, 5, 7, 0, 0, 1054, 1062, 3, 94, 47, 0, 1055, 1056, + 5, 6, 0, 0, 1056, 1057, 3, 172, 86, 0, 1057, 1058, 5, 7, 0, 0, 1058, 1059, + 3, 94, 47, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1061, 1064, + 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1067, + 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 150, 0, 0, 1066, 1068, + 3, 94, 47, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1087, + 1, 0, 0, 0, 1069, 1070, 5, 113, 0, 0, 1070, 1071, 5, 41, 0, 0, 1071, 1076, + 3, 120, 60, 0, 1072, 1073, 5, 6, 0, 0, 1073, 1075, 3, 120, 60, 0, 1074, + 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, + 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, + 1069, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, + 1082, 5, 100, 0, 0, 1082, 1085, 3, 94, 47, 0, 1083, 1084, 7, 2, 0, 0, 1084, + 1086, 3, 94, 47, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, + 1088, 1, 0, 0, 0, 1087, 1079, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, + 71, 1, 0, 0, 0, 1089, 1090, 5, 145, 0, 0, 1090, 73, 1, 0, 0, 0, 1091, 1096, + 3, 172, 86, 0, 1092, 1095, 3, 78, 39, 0, 1093, 1095, 3, 76, 38, 0, 1094, + 1092, 1, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1098, 1, 0, 0, 0, 1096, + 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 75, 1, 0, 0, 0, 1098, 1096, + 1, 0, 0, 0, 1099, 1119, 3, 158, 79, 0, 1100, 1101, 5, 4, 0, 0, 1101, 1103, + 3, 142, 71, 0, 1102, 1104, 3, 194, 97, 0, 1103, 1102, 1, 0, 0, 0, 1103, + 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 5, 5, 0, 0, 1106, + 1120, 1, 0, 0, 0, 1107, 1108, 5, 4, 0, 0, 1108, 1110, 3, 142, 71, 0, 1109, + 1111, 3, 194, 97, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, + 1112, 1, 0, 0, 0, 1112, 1113, 5, 6, 0, 0, 1113, 1115, 3, 142, 71, 0, 1114, + 1116, 3, 194, 97, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, + 1117, 1, 0, 0, 0, 1117, 1118, 5, 5, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, + 1100, 1, 0, 0, 0, 1119, 1107, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, + 77, 1, 0, 0, 0, 1121, 1122, 5, 50, 0, 0, 1122, 1124, 3, 158, 79, 0, 1123, + 1121, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, + 1140, 3, 80, 40, 0, 1126, 1140, 3, 82, 41, 0, 1127, 1140, 3, 84, 42, 0, + 1128, 1140, 3, 86, 43, 0, 1129, 1130, 5, 142, 0, 0, 1130, 1140, 3, 92, + 46, 0, 1131, 1132, 5, 45, 0, 0, 1132, 1133, 5, 4, 0, 0, 1133, 1134, 3, + 94, 47, 0, 1134, 1135, 5, 5, 0, 0, 1135, 1140, 1, 0, 0, 0, 1136, 1140, + 3, 88, 44, 0, 1137, 1138, 5, 46, 0, 0, 1138, 1140, 3, 174, 87, 0, 1139, + 1125, 1, 0, 0, 0, 1139, 1126, 1, 0, 0, 0, 1139, 1127, 1, 0, 0, 0, 1139, + 1128, 1, 0, 0, 0, 1139, 1129, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, + 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 79, 1, 0, 0, 0, 1141, 1142, + 5, 117, 0, 0, 1142, 1144, 5, 97, 0, 0, 1143, 1145, 7, 5, 0, 0, 1144, 1143, + 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1148, + 3, 92, 46, 0, 1147, 1149, 5, 37, 0, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, + 1, 0, 0, 0, 1149, 81, 1, 0, 0, 0, 1150, 1151, 3, 96, 48, 0, 1151, 83, 1, + 0, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 1155, + 3, 92, 46, 0, 1155, 85, 1, 0, 0, 0, 1156, 1157, 5, 107, 0, 0, 1157, 1158, + 3, 92, 46, 0, 1158, 87, 1, 0, 0, 0, 1159, 1171, 5, 57, 0, 0, 1160, 1172, + 3, 90, 45, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 94, 47, 0, 1163, 1164, + 5, 5, 0, 0, 1164, 1172, 1, 0, 0, 0, 1165, 1166, 5, 103, 0, 0, 1166, 1167, + 5, 4, 0, 0, 1167, 1168, 3, 94, 47, 0, 1168, 1169, 5, 5, 0, 0, 1169, 1172, + 1, 0, 0, 0, 1170, 1172, 3, 194, 97, 0, 1171, 1160, 1, 0, 0, 0, 1171, 1161, + 1, 0, 0, 0, 1171, 1165, 1, 0, 0, 0, 1171, 1170, 1, 0, 0, 0, 1172, 1179, + 1, 0, 0, 0, 1173, 1175, 5, 1, 0, 0, 1174, 1176, 3, 194, 97, 0, 1175, 1174, + 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, + 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1173, 1, 0, 0, 0, 1179, 1180, + 1, 0, 0, 0, 1180, 89, 1, 0, 0, 0, 1181, 1184, 3, 142, 71, 0, 1182, 1184, + 3, 144, 72, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 91, + 1, 0, 0, 0, 1185, 1186, 5, 110, 0, 0, 1186, 1187, 5, 49, 0, 0, 1187, 1189, + 7, 6, 0, 0, 1188, 1185, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 93, 1, + 0, 0, 0, 1190, 1191, 6, 47, -1, 0, 1191, 1267, 3, 144, 72, 0, 1192, 1267, + 5, 155, 0, 0, 1193, 1194, 3, 162, 81, 0, 1194, 1195, 5, 3, 0, 0, 1195, + 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, + 1198, 1, 0, 0, 0, 1198, 1199, 3, 166, 83, 0, 1199, 1200, 5, 3, 0, 0, 1200, + 1202, 1, 0, 0, 0, 1201, 1196, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, + 1203, 1, 0, 0, 0, 1203, 1267, 3, 172, 86, 0, 1204, 1205, 3, 146, 73, 0, + 1205, 1206, 3, 94, 47, 21, 1206, 1267, 1, 0, 0, 0, 1207, 1208, 3, 160, + 80, 0, 1208, 1221, 5, 4, 0, 0, 1209, 1211, 5, 63, 0, 0, 1210, 1209, 1, + 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1217, 3, + 94, 47, 0, 1213, 1214, 5, 6, 0, 0, 1214, 1216, 3, 94, 47, 0, 1215, 1213, + 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, + 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, + 5, 8, 0, 0, 1221, 1210, 1, 0, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, + 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 5, 0, 0, 1224, 1267, + 1, 0, 0, 0, 1225, 1226, 5, 4, 0, 0, 1226, 1227, 3, 94, 47, 0, 1227, 1228, + 5, 5, 0, 0, 1228, 1267, 1, 0, 0, 0, 1229, 1230, 5, 44, 0, 0, 1230, 1231, + 5, 4, 0, 0, 1231, 1232, 3, 94, 47, 0, 1232, 1233, 5, 34, 0, 0, 1233, 1234, + 3, 76, 38, 0, 1234, 1235, 5, 5, 0, 0, 1235, 1267, 1, 0, 0, 0, 1236, 1238, + 5, 105, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, + 1, 0, 0, 0, 1239, 1241, 5, 72, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, + 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, + 3, 64, 32, 0, 1244, 1245, 5, 5, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1248, + 5, 43, 0, 0, 1247, 1249, 3, 94, 47, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, + 1, 0, 0, 0, 1249, 1255, 1, 0, 0, 0, 1250, 1251, 5, 149, 0, 0, 1251, 1252, + 3, 94, 47, 0, 1252, 1253, 5, 137, 0, 0, 1253, 1254, 3, 94, 47, 0, 1254, + 1256, 1, 0, 0, 0, 1255, 1250, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, + 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, + 1260, 5, 66, 0, 0, 1260, 1262, 3, 94, 47, 0, 1261, 1259, 1, 0, 0, 0, 1261, + 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 5, 67, 0, 0, 1264, + 1267, 1, 0, 0, 0, 1265, 1267, 3, 100, 50, 0, 1266, 1190, 1, 0, 0, 0, 1266, + 1192, 1, 0, 0, 0, 1266, 1201, 1, 0, 0, 0, 1266, 1204, 1, 0, 0, 0, 1266, + 1207, 1, 0, 0, 0, 1266, 1225, 1, 0, 0, 0, 1266, 1229, 1, 0, 0, 0, 1266, + 1240, 1, 0, 0, 0, 1266, 1246, 1, 0, 0, 0, 1266, 1265, 1, 0, 0, 0, 1267, + 1368, 1, 0, 0, 0, 1268, 1269, 10, 20, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, + 1367, 3, 94, 47, 21, 1271, 1272, 10, 19, 0, 0, 1272, 1273, 7, 7, 0, 0, + 1273, 1367, 3, 94, 47, 20, 1274, 1275, 10, 18, 0, 0, 1275, 1276, 7, 8, + 0, 0, 1276, 1367, 3, 94, 47, 19, 1277, 1278, 10, 17, 0, 0, 1278, 1279, + 7, 9, 0, 0, 1279, 1367, 3, 94, 47, 18, 1280, 1281, 10, 16, 0, 0, 1281, + 1282, 7, 10, 0, 0, 1282, 1367, 3, 94, 47, 17, 1283, 1296, 10, 15, 0, 0, + 1284, 1297, 5, 7, 0, 0, 1285, 1297, 5, 23, 0, 0, 1286, 1297, 5, 24, 0, + 0, 1287, 1297, 5, 25, 0, 0, 1288, 1297, 5, 94, 0, 0, 1289, 1290, 5, 94, + 0, 0, 1290, 1297, 5, 105, 0, 0, 1291, 1297, 5, 85, 0, 0, 1292, 1297, 5, + 99, 0, 0, 1293, 1297, 5, 79, 0, 0, 1294, 1297, 5, 101, 0, 0, 1295, 1297, + 5, 122, 0, 0, 1296, 1284, 1, 0, 0, 0, 1296, 1285, 1, 0, 0, 0, 1296, 1286, + 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1288, 1, 0, 0, 0, 1296, 1289, + 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, + 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, + 1, 0, 0, 0, 1298, 1367, 3, 94, 47, 16, 1299, 1300, 10, 14, 0, 0, 1300, + 1301, 5, 33, 0, 0, 1301, 1367, 3, 94, 47, 15, 1302, 1303, 10, 13, 0, 0, + 1303, 1304, 5, 112, 0, 0, 1304, 1367, 3, 94, 47, 14, 1305, 1306, 10, 6, + 0, 0, 1306, 1308, 5, 94, 0, 0, 1307, 1309, 5, 105, 0, 0, 1308, 1307, 1, + 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1367, 3, + 94, 47, 7, 1311, 1313, 10, 5, 0, 0, 1312, 1314, 5, 105, 0, 0, 1313, 1312, + 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, + 5, 40, 0, 0, 1316, 1317, 3, 94, 47, 0, 1317, 1318, 5, 33, 0, 0, 1318, 1319, + 3, 94, 47, 6, 1319, 1367, 1, 0, 0, 0, 1320, 1321, 10, 9, 0, 0, 1321, 1322, + 5, 46, 0, 0, 1322, 1367, 3, 174, 87, 0, 1323, 1325, 10, 8, 0, 0, 1324, + 1326, 5, 105, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, + 1327, 1, 0, 0, 0, 1327, 1328, 7, 11, 0, 0, 1328, 1331, 3, 94, 47, 0, 1329, + 1330, 5, 69, 0, 0, 1330, 1332, 3, 94, 47, 0, 1331, 1329, 1, 0, 0, 0, 1331, + 1332, 1, 0, 0, 0, 1332, 1367, 1, 0, 0, 0, 1333, 1338, 10, 7, 0, 0, 1334, + 1339, 5, 95, 0, 0, 1335, 1339, 5, 106, 0, 0, 1336, 1337, 5, 105, 0, 0, + 1337, 1339, 5, 107, 0, 0, 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, + 0, 1338, 1336, 1, 0, 0, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1342, 10, 4, 0, + 0, 1341, 1343, 5, 105, 0, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, + 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1364, 5, 85, 0, 0, 1345, 1355, 5, 4, + 0, 0, 1346, 1356, 3, 64, 32, 0, 1347, 1352, 3, 94, 47, 0, 1348, 1349, 5, + 6, 0, 0, 1349, 1351, 3, 94, 47, 0, 1350, 1348, 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, 1346, 1, 0, 0, 0, 1355, 1347, + 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1365, + 5, 5, 0, 0, 1358, 1359, 3, 162, 81, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1362, + 1, 0, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, + 1, 0, 0, 0, 1363, 1365, 3, 166, 83, 0, 1364, 1345, 1, 0, 0, 0, 1364, 1361, + 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1268, 1, 0, 0, 0, 1366, 1271, + 1, 0, 0, 0, 1366, 1274, 1, 0, 0, 0, 1366, 1277, 1, 0, 0, 0, 1366, 1280, + 1, 0, 0, 0, 1366, 1283, 1, 0, 0, 0, 1366, 1299, 1, 0, 0, 0, 1366, 1302, + 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1311, 1, 0, 0, 0, 1366, 1320, + 1, 0, 0, 0, 1366, 1323, 1, 0, 0, 0, 1366, 1333, 1, 0, 0, 0, 1366, 1340, + 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, + 1, 0, 0, 0, 1369, 95, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1375, 5, + 121, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 1374, 5, 3, 0, 0, 1374, 1376, + 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, + 1, 0, 0, 0, 1377, 1389, 3, 176, 88, 0, 1378, 1379, 5, 4, 0, 0, 1379, 1384, + 3, 98, 49, 0, 1380, 1381, 5, 6, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, + 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, + 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, + 5, 5, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1378, 1, 0, 0, 0, 1389, 1390, + 1, 0, 0, 0, 1390, 1409, 1, 0, 0, 0, 1391, 1392, 5, 110, 0, 0, 1392, 1401, + 7, 12, 0, 0, 1393, 1394, 5, 133, 0, 0, 1394, 1402, 5, 107, 0, 0, 1395, + 1396, 5, 133, 0, 0, 1396, 1402, 5, 57, 0, 0, 1397, 1402, 5, 42, 0, 0, 1398, + 1402, 5, 127, 0, 0, 1399, 1400, 5, 104, 0, 0, 1400, 1402, 5, 27, 0, 0, + 1401, 1393, 1, 0, 0, 0, 1401, 1395, 1, 0, 0, 0, 1401, 1397, 1, 0, 0, 0, + 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1406, 1, 0, 0, 0, + 1403, 1404, 5, 101, 0, 0, 1404, 1406, 3, 158, 79, 0, 1405, 1391, 1, 0, + 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1408, 1, 0, 0, 0, 1407, 1405, 1, 0, + 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, + 0, 0, 1410, 1425, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1414, 5, 105, + 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 1, 0, + 0, 0, 1415, 1420, 5, 58, 0, 0, 1416, 1417, 5, 88, 0, 0, 1417, 1421, 5, + 59, 0, 0, 1418, 1419, 5, 88, 0, 0, 1419, 1421, 5, 84, 0, 0, 1420, 1416, + 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, + 1, 0, 0, 0, 1422, 1424, 5, 68, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, + 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1413, 1, 0, 0, 0, 1425, 1426, + 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 3, 158, 79, 0, 1428, 99, + 1, 0, 0, 0, 1429, 1430, 5, 119, 0, 0, 1430, 1435, 5, 4, 0, 0, 1431, 1436, + 5, 83, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 5, 6, 0, 0, 1434, 1436, + 3, 148, 74, 0, 1435, 1431, 1, 0, 0, 0, 1435, 1432, 1, 0, 0, 0, 1436, 1437, + 1, 0, 0, 0, 1437, 1438, 5, 5, 0, 0, 1438, 101, 1, 0, 0, 0, 1439, 1442, + 3, 172, 86, 0, 1440, 1441, 5, 46, 0, 0, 1441, 1443, 3, 174, 87, 0, 1442, + 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, + 1446, 7, 5, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, + 103, 1, 0, 0, 0, 1447, 1448, 5, 50, 0, 0, 1448, 1450, 3, 158, 79, 0, 1449, + 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1460, 1, 0, 0, 0, 1451, + 1461, 3, 106, 53, 0, 1452, 1461, 3, 112, 56, 0, 1453, 1461, 3, 110, 55, + 0, 1454, 1455, 5, 45, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 94, + 47, 0, 1457, 1458, 5, 5, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1461, 3, 108, + 54, 0, 1460, 1451, 1, 0, 0, 0, 1460, 1452, 1, 0, 0, 0, 1460, 1453, 1, 0, + 0, 0, 1460, 1454, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 105, 1, 0, + 0, 0, 1462, 1463, 5, 117, 0, 0, 1463, 1464, 5, 97, 0, 0, 1464, 1465, 5, + 4, 0, 0, 1465, 1470, 3, 102, 51, 0, 1466, 1467, 5, 6, 0, 0, 1467, 1469, + 3, 102, 51, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, + 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, + 1, 0, 0, 0, 1473, 1474, 5, 5, 0, 0, 1474, 1475, 3, 92, 46, 0, 1475, 107, + 1, 0, 0, 0, 1476, 1477, 5, 76, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, + 5, 4, 0, 0, 1479, 1484, 3, 114, 57, 0, 1480, 1481, 5, 6, 0, 0, 1481, 1483, + 3, 114, 57, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, + 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1484, + 1, 0, 0, 0, 1487, 1488, 5, 5, 0, 0, 1488, 1489, 3, 96, 48, 0, 1489, 109, + 1, 0, 0, 0, 1490, 1492, 5, 142, 0, 0, 1491, 1493, 5, 97, 0, 0, 1492, 1491, + 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1496, + 3, 158, 79, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, + 1, 0, 0, 0, 1497, 1498, 5, 4, 0, 0, 1498, 1503, 3, 102, 51, 0, 1499, 1500, + 5, 6, 0, 0, 1500, 1502, 3, 102, 51, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, + 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, + 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 5, 5, 0, 0, 1507, 1508, + 3, 92, 46, 0, 1508, 111, 1, 0, 0, 0, 1509, 1511, 5, 97, 0, 0, 1510, 1512, + 3, 158, 79, 0, 1511, 1510, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, + 1, 0, 0, 0, 1513, 1514, 5, 4, 0, 0, 1514, 1519, 3, 102, 51, 0, 1515, 1516, + 5, 6, 0, 0, 1516, 1518, 3, 102, 51, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, + 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, + 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 5, 0, 0, 1523, 1524, + 3, 92, 46, 0, 1524, 113, 1, 0, 0, 0, 1525, 1526, 3, 172, 86, 0, 1526, 115, + 1, 0, 0, 0, 1527, 1529, 5, 151, 0, 0, 1528, 1530, 5, 120, 0, 0, 1529, 1528, + 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, + 3, 140, 70, 0, 1532, 1533, 5, 34, 0, 0, 1533, 1534, 5, 4, 0, 0, 1534, 1535, + 3, 64, 32, 0, 1535, 1545, 5, 5, 0, 0, 1536, 1537, 5, 6, 0, 0, 1537, 1538, + 3, 140, 70, 0, 1538, 1539, 5, 34, 0, 0, 1539, 1540, 5, 4, 0, 0, 1540, 1541, + 3, 64, 32, 0, 1541, 1542, 5, 5, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1536, + 1, 0, 0, 0, 1544, 1547, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, + 1, 0, 0, 0, 1546, 117, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1549, + 3, 162, 81, 0, 1549, 1550, 5, 3, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1548, + 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1559, + 3, 166, 83, 0, 1554, 1555, 5, 87, 0, 0, 1555, 1556, 5, 41, 0, 0, 1556, + 1560, 3, 178, 89, 0, 1557, 1558, 5, 105, 0, 0, 1558, 1560, 5, 87, 0, 0, + 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, + 1560, 119, 1, 0, 0, 0, 1561, 1564, 3, 94, 47, 0, 1562, 1563, 5, 46, 0, + 0, 1563, 1565, 3, 174, 87, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, + 0, 0, 1565, 1567, 1, 0, 0, 0, 1566, 1568, 7, 5, 0, 0, 1567, 1566, 1, 0, + 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 121, 1, 0, 0, 0, 1569, 1573, 3, 142, + 71, 0, 1570, 1573, 3, 158, 79, 0, 1571, 1573, 5, 156, 0, 0, 1572, 1569, + 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1571, 1, 0, 0, 0, 1573, 123, + 1, 0, 0, 0, 1574, 1586, 3, 166, 83, 0, 1575, 1576, 5, 4, 0, 0, 1576, 1581, + 3, 172, 86, 0, 1577, 1578, 5, 6, 0, 0, 1578, 1580, 3, 172, 86, 0, 1579, + 1577, 1, 0, 0, 0, 1580, 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, + 1582, 1, 0, 0, 0, 1582, 1584, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, + 1585, 5, 5, 0, 0, 1585, 1587, 1, 0, 0, 0, 1586, 1575, 1, 0, 0, 0, 1586, + 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, + 1590, 5, 4, 0, 0, 1590, 1591, 3, 64, 32, 0, 1591, 1592, 5, 5, 0, 0, 1592, + 125, 1, 0, 0, 0, 1593, 1606, 5, 8, 0, 0, 1594, 1595, 3, 166, 83, 0, 1595, + 1596, 5, 3, 0, 0, 1596, 1597, 5, 8, 0, 0, 1597, 1606, 1, 0, 0, 0, 1598, + 1603, 3, 94, 47, 0, 1599, 1601, 5, 34, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, + 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 3, 152, 76, 0, 1603, + 1600, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, + 1593, 1, 0, 0, 0, 1605, 1594, 1, 0, 0, 0, 1605, 1598, 1, 0, 0, 0, 1606, + 127, 1, 0, 0, 0, 1607, 1608, 3, 162, 81, 0, 1608, 1609, 5, 3, 0, 0, 1609, + 1611, 1, 0, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, + 1612, 1, 0, 0, 0, 1612, 1617, 3, 166, 83, 0, 1613, 1615, 5, 34, 0, 0, 1614, + 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, + 1618, 3, 190, 95, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, + 1624, 1, 0, 0, 0, 1619, 1620, 5, 87, 0, 0, 1620, 1621, 5, 41, 0, 0, 1621, + 1625, 3, 178, 89, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1625, 5, 87, 0, 0, + 1624, 1619, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, + 1625, 1655, 1, 0, 0, 0, 1626, 1636, 5, 4, 0, 0, 1627, 1632, 3, 128, 64, + 0, 1628, 1629, 5, 6, 0, 0, 1629, 1631, 3, 128, 64, 0, 1630, 1628, 1, 0, + 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, + 0, 0, 1633, 1637, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 3, 130, + 65, 0, 1636, 1627, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, + 0, 0, 1638, 1643, 5, 5, 0, 0, 1639, 1641, 5, 34, 0, 0, 1640, 1639, 1, 0, + 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 3, 190, + 95, 0, 1643, 1640, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1655, 1, 0, + 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 1647, 3, 64, 32, 0, 1647, 1652, 5, + 5, 0, 0, 1648, 1650, 5, 34, 0, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, + 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1653, 3, 190, 95, 0, 1652, 1649, + 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1655, 1, 0, 0, 0, 1654, 1610, + 1, 0, 0, 0, 1654, 1626, 1, 0, 0, 0, 1654, 1645, 1, 0, 0, 0, 1655, 129, + 1, 0, 0, 0, 1656, 1663, 3, 128, 64, 0, 1657, 1658, 3, 132, 66, 0, 1658, + 1659, 3, 128, 64, 0, 1659, 1660, 3, 134, 67, 0, 1660, 1662, 1, 0, 0, 0, + 1661, 1657, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, + 1663, 1664, 1, 0, 0, 0, 1664, 131, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, + 1666, 1680, 5, 6, 0, 0, 1667, 1669, 5, 102, 0, 0, 1668, 1667, 1, 0, 0, + 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1672, 5, 98, 0, + 0, 1671, 1673, 5, 114, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, + 0, 0, 1673, 1677, 1, 0, 0, 0, 1674, 1677, 5, 89, 0, 0, 1675, 1677, 5, 52, + 0, 0, 1676, 1670, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, + 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1680, 5, 96, + 0, 0, 1679, 1666, 1, 0, 0, 0, 1679, 1668, 1, 0, 0, 0, 1680, 133, 1, 0, + 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 1696, 3, 94, 47, 0, 1683, 1684, 5, + 144, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 1690, 3, 172, 86, 0, 1686, 1687, + 5, 6, 0, 0, 1687, 1689, 3, 172, 86, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, + 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, + 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 5, 5, 0, 0, 1694, 1696, + 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1695, 1683, 1, 0, 0, 0, 1695, 1696, + 1, 0, 0, 0, 1696, 135, 1, 0, 0, 0, 1697, 1699, 5, 132, 0, 0, 1698, 1700, + 7, 4, 0, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, + 1, 0, 0, 0, 1701, 1706, 3, 126, 63, 0, 1702, 1703, 5, 6, 0, 0, 1703, 1705, + 3, 126, 63, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, + 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1721, 1, 0, 0, 0, 1708, 1706, + 1, 0, 0, 0, 1709, 1719, 5, 77, 0, 0, 1710, 1715, 3, 128, 64, 0, 1711, 1712, + 5, 6, 0, 0, 1712, 1714, 3, 128, 64, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, + 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1720, + 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 130, 65, 0, 1719, 1710, + 1, 0, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1709, + 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1725, 1, 0, 0, 0, 1723, 1724, + 5, 150, 0, 0, 1724, 1726, 3, 94, 47, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1726, + 1, 0, 0, 0, 1726, 1741, 1, 0, 0, 0, 1727, 1728, 5, 80, 0, 0, 1728, 1729, + 5, 41, 0, 0, 1729, 1734, 3, 94, 47, 0, 1730, 1731, 5, 6, 0, 0, 1731, 1733, + 3, 94, 47, 0, 1732, 1730, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, + 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1739, 1, 0, 0, 0, 1736, 1734, + 1, 0, 0, 0, 1737, 1738, 5, 81, 0, 0, 1738, 1740, 3, 94, 47, 0, 1739, 1737, + 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1727, + 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1772, 1, 0, 0, 0, 1743, 1744, + 5, 146, 0, 0, 1744, 1745, 5, 4, 0, 0, 1745, 1750, 3, 94, 47, 0, 1746, 1747, + 5, 6, 0, 0, 1747, 1749, 3, 94, 47, 0, 1748, 1746, 1, 0, 0, 0, 1749, 1752, + 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, + 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1768, 5, 5, 0, 0, 1754, 1755, + 5, 6, 0, 0, 1755, 1756, 5, 4, 0, 0, 1756, 1761, 3, 94, 47, 0, 1757, 1758, + 5, 6, 0, 0, 1758, 1760, 3, 94, 47, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, + 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1764, + 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1765, 5, 5, 0, 0, 1765, 1767, + 1, 0, 0, 0, 1766, 1754, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, + 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1768, + 1, 0, 0, 0, 1771, 1697, 1, 0, 0, 0, 1771, 1743, 1, 0, 0, 0, 1772, 137, + 1, 0, 0, 0, 1773, 1779, 5, 141, 0, 0, 1774, 1775, 5, 141, 0, 0, 1775, 1779, + 5, 30, 0, 0, 1776, 1779, 5, 92, 0, 0, 1777, 1779, 5, 70, 0, 0, 1778, 1773, + 1, 0, 0, 0, 1778, 1774, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1778, 1777, + 1, 0, 0, 0, 1779, 139, 1, 0, 0, 0, 1780, 1792, 3, 166, 83, 0, 1781, 1782, + 5, 4, 0, 0, 1782, 1787, 3, 172, 86, 0, 1783, 1784, 5, 6, 0, 0, 1784, 1786, + 3, 172, 86, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, + 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1787, + 1, 0, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1793, 1, 0, 0, 0, 1792, 1781, + 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 141, 1, 0, 0, 0, 1794, 1796, + 7, 8, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, + 1, 0, 0, 0, 1797, 1800, 5, 154, 0, 0, 1798, 1800, 5, 8, 0, 0, 1799, 1795, + 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 143, 1, 0, 0, 0, 1801, 1802, + 7, 14, 0, 0, 1802, 145, 1, 0, 0, 0, 1803, 1804, 7, 15, 0, 0, 1804, 147, + 1, 0, 0, 0, 1805, 1806, 5, 156, 0, 0, 1806, 149, 1, 0, 0, 0, 1807, 1810, + 3, 94, 47, 0, 1808, 1810, 3, 74, 37, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1808, + 1, 0, 0, 0, 1810, 151, 1, 0, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 153, + 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 155, 1, 0, 0, 0, 1815, 1817, + 9, 0, 0, 0, 1816, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1816, + 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 157, 1, 0, 0, 0, 1820, 1821, + 3, 194, 97, 0, 1821, 159, 1, 0, 0, 0, 1822, 1823, 3, 194, 97, 0, 1823, + 161, 1, 0, 0, 0, 1824, 1825, 3, 194, 97, 0, 1825, 163, 1, 0, 0, 0, 1826, + 1827, 3, 194, 97, 0, 1827, 165, 1, 0, 0, 0, 1828, 1829, 3, 194, 97, 0, + 1829, 167, 1, 0, 0, 0, 1830, 1831, 3, 194, 97, 0, 1831, 169, 1, 0, 0, 0, + 1832, 1833, 3, 194, 97, 0, 1833, 171, 1, 0, 0, 0, 1834, 1835, 3, 194, 97, + 0, 1835, 173, 1, 0, 0, 0, 1836, 1837, 3, 194, 97, 0, 1837, 175, 1, 0, 0, + 0, 1838, 1839, 3, 194, 97, 0, 1839, 177, 1, 0, 0, 0, 1840, 1841, 3, 194, + 97, 0, 1841, 179, 1, 0, 0, 0, 1842, 1843, 3, 194, 97, 0, 1843, 181, 1, + 0, 0, 0, 1844, 1845, 3, 194, 97, 0, 1845, 183, 1, 0, 0, 0, 1846, 1847, + 3, 194, 97, 0, 1847, 185, 1, 0, 0, 0, 1848, 1849, 3, 194, 97, 0, 1849, + 187, 1, 0, 0, 0, 1850, 1851, 3, 194, 97, 0, 1851, 189, 1, 0, 0, 0, 1852, + 1853, 3, 194, 97, 0, 1853, 191, 1, 0, 0, 0, 1854, 1855, 3, 194, 97, 0, + 1855, 193, 1, 0, 0, 0, 1856, 1864, 5, 153, 0, 0, 1857, 1864, 3, 154, 77, + 0, 1858, 1864, 5, 156, 0, 0, 1859, 1860, 5, 4, 0, 0, 1860, 1861, 3, 194, + 97, 0, 1861, 1862, 5, 5, 0, 0, 1862, 1864, 1, 0, 0, 0, 1863, 1856, 1, 0, + 0, 0, 1863, 1857, 1, 0, 0, 0, 1863, 1858, 1, 0, 0, 0, 1863, 1859, 1, 0, + 0, 0, 1864, 195, 1, 0, 0, 0, 260, 198, 200, 211, 218, 223, 229, 235, 237, + 269, 274, 279, 289, 292, 295, 298, 315, 319, 327, 331, 333, 338, 340, 344, + 351, 354, 359, 363, 368, 377, 380, 386, 388, 392, 398, 403, 414, 420, 424, + 430, 435, 444, 446, 452, 456, 459, 463, 469, 474, 481, 492, 495, 497, 503, + 509, 513, 520, 526, 532, 538, 543, 555, 560, 571, 576, 579, 586, 589, 596, + 605, 608, 614, 616, 620, 628, 633, 641, 646, 654, 659, 667, 672, 678, 685, + 688, 696, 706, 709, 715, 717, 720, 739, 745, 754, 759, 768, 779, 786, 792, + 798, 807, 814, 818, 820, 824, 831, 833, 837, 840, 847, 854, 857, 867, 870, + 876, 878, 882, 889, 892, 900, 910, 913, 919, 921, 925, 932, 941, 945, 947, + 951, 960, 965, 967, 976, 987, 994, 997, 1000, 1013, 1027, 1032, 1035, 1048, + 1062, 1067, 1076, 1079, 1085, 1087, 1094, 1096, 1103, 1110, 1115, 1119, + 1123, 1139, 1144, 1148, 1171, 1177, 1179, 1183, 1188, 1196, 1201, 1210, + 1217, 1221, 1237, 1240, 1248, 1257, 1261, 1266, 1296, 1308, 1313, 1325, + 1331, 1338, 1342, 1352, 1355, 1361, 1364, 1366, 1368, 1375, 1384, 1389, + 1401, 1405, 1409, 1413, 1420, 1423, 1425, 1435, 1442, 1445, 1449, 1460, + 1470, 1484, 1492, 1495, 1503, 1511, 1519, 1529, 1545, 1551, 1559, 1564, + 1567, 1572, 1581, 1586, 1600, 1603, 1605, 1610, 1614, 1617, 1624, 1632, + 1636, 1640, 1643, 1649, 1652, 1654, 1663, 1668, 1672, 1676, 1679, 1690, + 1695, 1699, 1706, 1715, 1719, 1721, 1725, 1734, 1739, 1741, 1750, 1761, + 1768, 1771, 1778, 1787, 1792, 1795, 1799, 1809, 1818, 1863, +} + deserializer := antlr.NewATNDeserializer(nil) + staticData.atn = deserializer.Deserialize(staticData.serializedATN) + atn := staticData.atn + staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) + decisionToDFA := staticData.decisionToDFA + for index, state := range atn.DecisionToState { + decisionToDFA[index] = antlr.NewDFA(state, index) + } +} + +// SqlParserInit initializes any static state used to implement SqlParser. By default the +// static state used to implement the parser is lazily initialized during the first call to +// NewSqlParser(). You can call this function if you wish to initialize the static state ahead +// of time. +func SqlParserInit() { + staticData := &sqlParserStaticData + staticData.once.Do(sqlParserInit) +} + +// NewSqlParser produces a new parser instance for the optional input antlr.TokenStream. +func NewSqlParser(input antlr.TokenStream) *SqlParser { + SqlParserInit() + this := new(SqlParser) + this.BaseParser = antlr.NewBaseParser(input) + staticData := &sqlParserStaticData + this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) + this.RuleNames = staticData.ruleNames + this.LiteralNames = staticData.literalNames + this.SymbolicNames = staticData.symbolicNames + this.GrammarFileName = "Sql.g4" + + return this +} + + +// SqlParser tokens. +const ( + SqlParserEOF = antlr.TokenEOF + SqlParserT__0 = 1 + SqlParserSCOL = 2 + SqlParserDOT = 3 + SqlParserOPEN_PAR = 4 + SqlParserCLOSE_PAR = 5 + SqlParserCOMMA = 6 + SqlParserASSIGN = 7 + SqlParserSTAR = 8 + SqlParserPLUS = 9 + SqlParserMINUS = 10 + SqlParserTILDE = 11 + SqlParserPIPE2 = 12 + SqlParserDIV = 13 + SqlParserMOD = 14 + SqlParserLT2 = 15 + SqlParserGT2 = 16 + SqlParserAMP = 17 + SqlParserPIPE = 18 + SqlParserLT = 19 + SqlParserLT_EQ = 20 + SqlParserGT = 21 + SqlParserGT_EQ = 22 + SqlParserEQ = 23 + SqlParserNOT_EQ1 = 24 + SqlParserNOT_EQ2 = 25 + SqlParserK_ABORT = 26 + SqlParserK_ACTION = 27 + SqlParserK_ADD = 28 + SqlParserK_AFTER = 29 + SqlParserK_ALL = 30 + SqlParserK_ALTER = 31 + SqlParserK_ANALYZE = 32 + SqlParserK_AND = 33 + SqlParserK_AS = 34 + SqlParserK_ASC = 35 + SqlParserK_ATTACH = 36 + SqlParserK_AUTOINCREMENT = 37 + SqlParserK_BEFORE = 38 + SqlParserK_BEGIN = 39 + SqlParserK_BETWEEN = 40 + SqlParserK_BY = 41 + SqlParserK_CASCADE = 42 + SqlParserK_CASE = 43 + SqlParserK_CAST = 44 + SqlParserK_CHECK = 45 + SqlParserK_COLLATE = 46 + SqlParserK_COLUMN = 47 + SqlParserK_COMMIT = 48 + SqlParserK_CONFLICT = 49 + SqlParserK_CONSTRAINT = 50 + SqlParserK_CREATE = 51 + SqlParserK_CROSS = 52 + SqlParserK_CURRENT_DATE = 53 + SqlParserK_CURRENT_TIME = 54 + SqlParserK_CURRENT_TIMESTAMP = 55 + SqlParserK_DATABASE = 56 + SqlParserK_DEFAULT = 57 + SqlParserK_DEFERRABLE = 58 + SqlParserK_DEFERRED = 59 + SqlParserK_DELETE = 60 + SqlParserK_DESC = 61 + SqlParserK_DETACH = 62 + SqlParserK_DISTINCT = 63 + SqlParserK_DROP = 64 + SqlParserK_EACH = 65 + SqlParserK_ELSE = 66 + SqlParserK_END = 67 + SqlParserK_ENABLE = 68 + SqlParserK_ESCAPE = 69 + SqlParserK_EXCEPT = 70 + SqlParserK_EXCLUSIVE = 71 + SqlParserK_EXISTS = 72 + SqlParserK_EXPLAIN = 73 + SqlParserK_FAIL = 74 + SqlParserK_FOR = 75 + SqlParserK_FOREIGN = 76 + SqlParserK_FROM = 77 + SqlParserK_FULL = 78 + SqlParserK_GLOB = 79 + SqlParserK_GROUP = 80 + SqlParserK_HAVING = 81 + SqlParserK_IF = 82 + SqlParserK_IGNORE = 83 + SqlParserK_IMMEDIATE = 84 + SqlParserK_IN = 85 + SqlParserK_INDEX = 86 + SqlParserK_INDEXED = 87 + SqlParserK_INITIALLY = 88 + SqlParserK_INNER = 89 + SqlParserK_INSERT = 90 + SqlParserK_INSTEAD = 91 + SqlParserK_INTERSECT = 92 + SqlParserK_INTO = 93 + SqlParserK_IS = 94 + SqlParserK_ISNULL = 95 + SqlParserK_JOIN = 96 + SqlParserK_KEY = 97 + SqlParserK_LEFT = 98 + SqlParserK_LIKE = 99 + SqlParserK_LIMIT = 100 + SqlParserK_MATCH = 101 + SqlParserK_NATURAL = 102 + SqlParserK_NEXTVAL = 103 + SqlParserK_NO = 104 + SqlParserK_NOT = 105 + SqlParserK_NOTNULL = 106 + SqlParserK_NULL = 107 + SqlParserK_OF = 108 + SqlParserK_OFFSET = 109 + SqlParserK_ON = 110 + SqlParserK_ONLY = 111 + SqlParserK_OR = 112 + SqlParserK_ORDER = 113 + SqlParserK_OUTER = 114 + SqlParserK_PLAN = 115 + SqlParserK_PRAGMA = 116 + SqlParserK_PRIMARY = 117 + SqlParserK_QUERY = 118 + SqlParserK_RAISE = 119 + SqlParserK_RECURSIVE = 120 + SqlParserK_REFERENCES = 121 + SqlParserK_REGEXP = 122 + SqlParserK_REINDEX = 123 + SqlParserK_RELEASE = 124 + SqlParserK_RENAME = 125 + SqlParserK_REPLACE = 126 + SqlParserK_RESTRICT = 127 + SqlParserK_RIGHT = 128 + SqlParserK_ROLLBACK = 129 + SqlParserK_ROW = 130 + SqlParserK_SAVEPOINT = 131 + SqlParserK_SELECT = 132 + SqlParserK_SET = 133 + SqlParserK_TABLE = 134 + SqlParserK_TEMP = 135 + SqlParserK_TEMPORARY = 136 + SqlParserK_THEN = 137 + SqlParserK_TO = 138 + SqlParserK_TRANSACTION = 139 + SqlParserK_TRIGGER = 140 + SqlParserK_UNION = 141 + SqlParserK_UNIQUE = 142 + SqlParserK_UPDATE = 143 + SqlParserK_USING = 144 + SqlParserK_VACUUM = 145 + SqlParserK_VALUES = 146 + SqlParserK_VIEW = 147 + SqlParserK_VIRTUAL = 148 + SqlParserK_WHEN = 149 + SqlParserK_WHERE = 150 + SqlParserK_WITH = 151 + SqlParserK_WITHOUT = 152 + SqlParserIDENTIFIER = 153 + SqlParserNUMERIC_LITERAL = 154 + SqlParserBIND_PARAMETER = 155 + SqlParserSTRING_LITERAL = 156 + SqlParserBLOB_LITERAL = 157 + SqlParserSINGLE_LINE_COMMENT = 158 + SqlParserMULTILINE_COMMENT = 159 + SqlParserSPACES = 160 + SqlParserUNEXPECTED_CHAR = 161 +) + +// SqlParser rules. +const ( + SqlParserRULE_parse = 0 + SqlParserRULE_error = 1 + SqlParserRULE_sql_stmt_list = 2 + SqlParserRULE_sql_stmt = 3 + SqlParserRULE_alter_table_stmt = 4 + SqlParserRULE_alter_table_add_constraint = 5 + SqlParserRULE_alter_table_add = 6 + SqlParserRULE_analyze_stmt = 7 + SqlParserRULE_attach_stmt = 8 + SqlParserRULE_begin_stmt = 9 + SqlParserRULE_commit_stmt = 10 + SqlParserRULE_compound_select_stmt = 11 + SqlParserRULE_create_index_stmt = 12 + SqlParserRULE_create_table_stmt = 13 + SqlParserRULE_create_trigger_stmt = 14 + SqlParserRULE_create_view_stmt = 15 + SqlParserRULE_create_virtual_table_stmt = 16 + SqlParserRULE_delete_stmt = 17 + SqlParserRULE_delete_stmt_limited = 18 + SqlParserRULE_detach_stmt = 19 + SqlParserRULE_drop_index_stmt = 20 + SqlParserRULE_drop_table_stmt = 21 + SqlParserRULE_drop_trigger_stmt = 22 + SqlParserRULE_drop_view_stmt = 23 + SqlParserRULE_factored_select_stmt = 24 + SqlParserRULE_insert_stmt = 25 + SqlParserRULE_pragma_stmt = 26 + SqlParserRULE_reindex_stmt = 27 + SqlParserRULE_release_stmt = 28 + SqlParserRULE_rollback_stmt = 29 + SqlParserRULE_savepoint_stmt = 30 + SqlParserRULE_simple_select_stmt = 31 + SqlParserRULE_select_stmt = 32 + SqlParserRULE_select_or_values = 33 + SqlParserRULE_update_stmt = 34 + SqlParserRULE_update_stmt_limited = 35 + SqlParserRULE_vacuum_stmt = 36 + SqlParserRULE_column_def = 37 + SqlParserRULE_type_name = 38 + SqlParserRULE_column_constraint = 39 + SqlParserRULE_column_constraint_primary_key = 40 + SqlParserRULE_column_constraint_foreign_key = 41 + SqlParserRULE_column_constraint_not_null = 42 + SqlParserRULE_column_constraint_null = 43 + SqlParserRULE_column_default = 44 + SqlParserRULE_column_default_value = 45 + SqlParserRULE_conflict_clause = 46 + SqlParserRULE_expr = 47 + SqlParserRULE_foreign_key_clause = 48 + SqlParserRULE_fk_target_column_name = 49 + SqlParserRULE_raise_function = 50 + SqlParserRULE_indexed_column = 51 + SqlParserRULE_table_constraint = 52 + SqlParserRULE_table_constraint_primary_key = 53 + SqlParserRULE_table_constraint_foreign_key = 54 + SqlParserRULE_table_constraint_unique = 55 + SqlParserRULE_table_constraint_key = 56 + SqlParserRULE_fk_origin_column_name = 57 + SqlParserRULE_with_clause = 58 + SqlParserRULE_qualified_table_name = 59 + SqlParserRULE_ordering_term = 60 + SqlParserRULE_pragma_value = 61 + SqlParserRULE_common_table_expression = 62 + SqlParserRULE_result_column = 63 + SqlParserRULE_table_or_subquery = 64 + SqlParserRULE_join_clause = 65 + SqlParserRULE_join_operator = 66 + SqlParserRULE_join_constraint = 67 + SqlParserRULE_select_core = 68 + SqlParserRULE_compound_operator = 69 + SqlParserRULE_cte_table_name = 70 + SqlParserRULE_signed_number = 71 + SqlParserRULE_literal_value = 72 + SqlParserRULE_unary_operator = 73 + SqlParserRULE_error_message = 74 + SqlParserRULE_module_argument = 75 + SqlParserRULE_column_alias = 76 + SqlParserRULE_keyword = 77 + SqlParserRULE_unknown = 78 + SqlParserRULE_name = 79 + SqlParserRULE_function_name = 80 + SqlParserRULE_database_name = 81 + SqlParserRULE_source_table_name = 82 + SqlParserRULE_table_name = 83 + SqlParserRULE_table_or_index_name = 84 + SqlParserRULE_new_table_name = 85 + SqlParserRULE_column_name = 86 + SqlParserRULE_collation_name = 87 + SqlParserRULE_foreign_table = 88 + SqlParserRULE_index_name = 89 + SqlParserRULE_trigger_name = 90 + SqlParserRULE_view_name = 91 + SqlParserRULE_module_name = 92 + SqlParserRULE_pragma_name = 93 + SqlParserRULE_savepoint_name = 94 + SqlParserRULE_table_alias = 95 + SqlParserRULE_transaction_name = 96 + SqlParserRULE_any_name = 97 +) + +// IParseContext is an interface to support dynamic dispatch. +type IParseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsParseContext differentiates from other interfaces. + IsParseContext() +} + +type ParseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyParseContext() *ParseContext { + var p = new(ParseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_parse + return p +} + +func (*ParseContext) IsParseContext() {} + +func NewParseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParseContext { + var p = new(ParseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_parse + + return p +} + +func (s *ParseContext) GetParser() antlr.Parser { return s.parser } + +func (s *ParseContext) EOF() antlr.TerminalNode { + return s.GetToken(SqlParserEOF, 0) +} + +func (s *ParseContext) AllSql_stmt_list() []ISql_stmt_listContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISql_stmt_listContext); ok { + len++ + } + } + + tst := make([]ISql_stmt_listContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISql_stmt_listContext); ok { + tst[i] = t.(ISql_stmt_listContext) + i++ + } + } + + return tst +} + +func (s *ParseContext) Sql_stmt_list(i int) ISql_stmt_listContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISql_stmt_listContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISql_stmt_listContext) +} + +func (s *ParseContext) AllError() []IErrorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IErrorContext); ok { + len++ + } + } + + tst := make([]IErrorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IErrorContext); ok { + tst[i] = t.(IErrorContext) + i++ + } + } + + return tst +} + +func (s *ParseContext) Error(i int) IErrorContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IErrorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IErrorContext) +} + +func (s *ParseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ParseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *ParseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterParse(s) + } +} + +func (s *ParseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitParse(s) + } +} + + + + +func (p *SqlParser) Parse() (localctx IParseContext) { + this := p + _ = this + + localctx = NewParseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 0, SqlParserRULE_parse) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(200) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserSCOL || _la == SqlParserK_ALTER || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DETACH - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_INSERT - 64)))) != 0) || ((((_la - 116)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 116))) & ((1 << (SqlParserK_PRAGMA - 116)) | (1 << (SqlParserK_REINDEX - 116)) | (1 << (SqlParserK_RELEASE - 116)) | (1 << (SqlParserK_REPLACE - 116)) | (1 << (SqlParserK_ROLLBACK - 116)) | (1 << (SqlParserK_SAVEPOINT - 116)) | (1 << (SqlParserK_SELECT - 116)) | (1 << (SqlParserK_UPDATE - 116)) | (1 << (SqlParserK_VACUUM - 116)) | (1 << (SqlParserK_VALUES - 116)))) != 0) || _la == SqlParserK_WITH || _la == SqlParserUNEXPECTED_CHAR { + p.SetState(198) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WITH: + { + p.SetState(196) + p.Sql_stmt_list() + } + + + case SqlParserUNEXPECTED_CHAR: + { + p.SetState(197) + p.Error() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + p.SetState(202) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(203) + p.Match(SqlParserEOF) + } + + + + return localctx +} + + +// IErrorContext is an interface to support dynamic dispatch. +type IErrorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // Get_UNEXPECTED_CHAR returns the _UNEXPECTED_CHAR token. + Get_UNEXPECTED_CHAR() antlr.Token + + + // Set_UNEXPECTED_CHAR sets the _UNEXPECTED_CHAR token. + Set_UNEXPECTED_CHAR(antlr.Token) + + + // IsErrorContext differentiates from other interfaces. + IsErrorContext() +} + +type ErrorContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser + _UNEXPECTED_CHAR antlr.Token +} + +func NewEmptyErrorContext() *ErrorContext { + var p = new(ErrorContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_error + return p +} + +func (*ErrorContext) IsErrorContext() {} + +func NewErrorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ErrorContext { + var p = new(ErrorContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_error + + return p +} + +func (s *ErrorContext) GetParser() antlr.Parser { return s.parser } + +func (s *ErrorContext) Get_UNEXPECTED_CHAR() antlr.Token { return s._UNEXPECTED_CHAR } + + +func (s *ErrorContext) Set_UNEXPECTED_CHAR(v antlr.Token) { s._UNEXPECTED_CHAR = v } + + +func (s *ErrorContext) UNEXPECTED_CHAR() antlr.TerminalNode { + return s.GetToken(SqlParserUNEXPECTED_CHAR, 0) +} + +func (s *ErrorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ErrorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *ErrorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterError(s) + } +} + +func (s *ErrorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitError(s) + } +} + + + + +func (p *SqlParser) Error() (localctx IErrorContext) { + this := p + _ = this + + localctx = NewErrorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 2, SqlParserRULE_error) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(205) + + var _m = p.Match(SqlParserUNEXPECTED_CHAR) + + localctx.(*ErrorContext)._UNEXPECTED_CHAR = _m + } + + + + + + return localctx +} + + +// ISql_stmt_listContext is an interface to support dynamic dispatch. +type ISql_stmt_listContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSql_stmt_listContext differentiates from other interfaces. + IsSql_stmt_listContext() +} + +type Sql_stmt_listContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySql_stmt_listContext() *Sql_stmt_listContext { + var p = new(Sql_stmt_listContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_sql_stmt_list + return p +} + +func (*Sql_stmt_listContext) IsSql_stmt_listContext() {} + +func NewSql_stmt_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmt_listContext { + var p = new(Sql_stmt_listContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_sql_stmt_list + + return p +} + +func (s *Sql_stmt_listContext) GetParser() antlr.Parser { return s.parser } + +func (s *Sql_stmt_listContext) AllSql_stmt() []ISql_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISql_stmtContext); ok { + len++ + } + } + + tst := make([]ISql_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISql_stmtContext); ok { + tst[i] = t.(ISql_stmtContext) + i++ + } + } + + return tst +} + +func (s *Sql_stmt_listContext) Sql_stmt(i int) ISql_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISql_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISql_stmtContext) +} + +func (s *Sql_stmt_listContext) AllSCOL() []antlr.TerminalNode { + return s.GetTokens(SqlParserSCOL) +} + +func (s *Sql_stmt_listContext) SCOL(i int) antlr.TerminalNode { + return s.GetToken(SqlParserSCOL, i) +} + +func (s *Sql_stmt_listContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Sql_stmt_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Sql_stmt_listContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSql_stmt_list(s) + } +} + +func (s *Sql_stmt_listContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSql_stmt_list(s) + } +} + + + + +func (p *SqlParser) Sql_stmt_list() (localctx ISql_stmt_listContext) { + this := p + _ = this + + localctx = NewSql_stmt_listContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 4, SqlParserRULE_sql_stmt_list) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(211) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserSCOL { + { + p.SetState(208) + p.Match(SqlParserSCOL) + } + + + p.SetState(213) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(214) + p.Sql_stmt() + } + p.SetState(223) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + p.SetState(216) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for ok := true; ok; ok = _la == SqlParserSCOL { + { + p.SetState(215) + p.Match(SqlParserSCOL) + } + + + p.SetState(218) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(220) + p.Sql_stmt() + } + + + } + p.SetState(225) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) + } + p.SetState(229) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(226) + p.Match(SqlParserSCOL) + } + + + } + p.SetState(231) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// ISql_stmtContext is an interface to support dynamic dispatch. +type ISql_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSql_stmtContext differentiates from other interfaces. + IsSql_stmtContext() +} + +type Sql_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySql_stmtContext() *Sql_stmtContext { + var p = new(Sql_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_sql_stmt + return p +} + +func (*Sql_stmtContext) IsSql_stmtContext() {} + +func NewSql_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmtContext { + var p = new(Sql_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_sql_stmt + + return p +} + +func (s *Sql_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Sql_stmtContext) Alter_table_stmt() IAlter_table_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAlter_table_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAlter_table_stmtContext) +} + +func (s *Sql_stmtContext) Analyze_stmt() IAnalyze_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAnalyze_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAnalyze_stmtContext) +} + +func (s *Sql_stmtContext) Attach_stmt() IAttach_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAttach_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAttach_stmtContext) +} + +func (s *Sql_stmtContext) Begin_stmt() IBegin_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IBegin_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IBegin_stmtContext) +} + +func (s *Sql_stmtContext) Commit_stmt() ICommit_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommit_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICommit_stmtContext) +} + +func (s *Sql_stmtContext) Compound_select_stmt() ICompound_select_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompound_select_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICompound_select_stmtContext) +} + +func (s *Sql_stmtContext) Create_index_stmt() ICreate_index_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_index_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_index_stmtContext) +} + +func (s *Sql_stmtContext) Create_table_stmt() ICreate_table_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_table_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_table_stmtContext) +} + +func (s *Sql_stmtContext) Create_trigger_stmt() ICreate_trigger_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_trigger_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_trigger_stmtContext) +} + +func (s *Sql_stmtContext) Create_view_stmt() ICreate_view_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_view_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_view_stmtContext) +} + +func (s *Sql_stmtContext) Create_virtual_table_stmt() ICreate_virtual_table_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICreate_virtual_table_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICreate_virtual_table_stmtContext) +} + +func (s *Sql_stmtContext) Delete_stmt() IDelete_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelete_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDelete_stmtContext) +} + +func (s *Sql_stmtContext) Delete_stmt_limited() IDelete_stmt_limitedContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelete_stmt_limitedContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDelete_stmt_limitedContext) +} + +func (s *Sql_stmtContext) Detach_stmt() IDetach_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDetach_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDetach_stmtContext) +} + +func (s *Sql_stmtContext) Drop_index_stmt() IDrop_index_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_index_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_index_stmtContext) +} + +func (s *Sql_stmtContext) Drop_table_stmt() IDrop_table_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_table_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_table_stmtContext) +} + +func (s *Sql_stmtContext) Drop_trigger_stmt() IDrop_trigger_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_trigger_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_trigger_stmtContext) +} + +func (s *Sql_stmtContext) Drop_view_stmt() IDrop_view_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDrop_view_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDrop_view_stmtContext) +} + +func (s *Sql_stmtContext) Factored_select_stmt() IFactored_select_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFactored_select_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IFactored_select_stmtContext) +} + +func (s *Sql_stmtContext) Insert_stmt() IInsert_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsert_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IInsert_stmtContext) +} + +func (s *Sql_stmtContext) Pragma_stmt() IPragma_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPragma_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IPragma_stmtContext) +} + +func (s *Sql_stmtContext) Reindex_stmt() IReindex_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IReindex_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IReindex_stmtContext) +} + +func (s *Sql_stmtContext) Release_stmt() IRelease_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRelease_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IRelease_stmtContext) +} + +func (s *Sql_stmtContext) Rollback_stmt() IRollback_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRollback_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IRollback_stmtContext) +} + +func (s *Sql_stmtContext) Savepoint_stmt() ISavepoint_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISavepoint_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISavepoint_stmtContext) +} + +func (s *Sql_stmtContext) Simple_select_stmt() ISimple_select_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISimple_select_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISimple_select_stmtContext) +} + +func (s *Sql_stmtContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Sql_stmtContext) Update_stmt() IUpdate_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUpdate_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUpdate_stmtContext) +} + +func (s *Sql_stmtContext) Update_stmt_limited() IUpdate_stmt_limitedContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUpdate_stmt_limitedContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUpdate_stmt_limitedContext) +} + +func (s *Sql_stmtContext) Vacuum_stmt() IVacuum_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IVacuum_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IVacuum_stmtContext) +} + +func (s *Sql_stmtContext) K_EXPLAIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXPLAIN, 0) +} + +func (s *Sql_stmtContext) K_QUERY() antlr.TerminalNode { + return s.GetToken(SqlParserK_QUERY, 0) +} + +func (s *Sql_stmtContext) K_PLAN() antlr.TerminalNode { + return s.GetToken(SqlParserK_PLAN, 0) +} + +func (s *Sql_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Sql_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Sql_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSql_stmt(s) + } +} + +func (s *Sql_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSql_stmt(s) + } +} + + + + +func (p *SqlParser) Sql_stmt() (localctx ISql_stmtContext) { + this := p + _ = this + + localctx = NewSql_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 6, SqlParserRULE_sql_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(237) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_EXPLAIN { + { + p.SetState(232) + p.Match(SqlParserK_EXPLAIN) + } + p.SetState(235) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_QUERY { + { + p.SetState(233) + p.Match(SqlParserK_QUERY) + } + { + p.SetState(234) + p.Match(SqlParserK_PLAN) + } + + } + + } + p.SetState(269) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { + case 1: + { + p.SetState(239) + p.Alter_table_stmt() + } + + + case 2: + { + p.SetState(240) + p.Analyze_stmt() + } + + + case 3: + { + p.SetState(241) + p.Attach_stmt() + } + + + case 4: + { + p.SetState(242) + p.Begin_stmt() + } + + + case 5: + { + p.SetState(243) + p.Commit_stmt() + } + + + case 6: + { + p.SetState(244) + p.Compound_select_stmt() + } + + + case 7: + { + p.SetState(245) + p.Create_index_stmt() + } + + + case 8: + { + p.SetState(246) + p.Create_table_stmt() + } + + + case 9: + { + p.SetState(247) + p.Create_trigger_stmt() + } + + + case 10: + { + p.SetState(248) + p.Create_view_stmt() + } + + + case 11: + { + p.SetState(249) + p.Create_virtual_table_stmt() + } + + + case 12: + { + p.SetState(250) + p.Delete_stmt() + } + + + case 13: + { + p.SetState(251) + p.Delete_stmt_limited() + } + + + case 14: + { + p.SetState(252) + p.Detach_stmt() + } + + + case 15: + { + p.SetState(253) + p.Drop_index_stmt() + } + + + case 16: + { + p.SetState(254) + p.Drop_table_stmt() + } + + + case 17: + { + p.SetState(255) + p.Drop_trigger_stmt() + } + + + case 18: + { + p.SetState(256) + p.Drop_view_stmt() + } + + + case 19: + { + p.SetState(257) + p.Factored_select_stmt() + } + + + case 20: + { + p.SetState(258) + p.Insert_stmt() + } + + + case 21: + { + p.SetState(259) + p.Pragma_stmt() + } + + + case 22: + { + p.SetState(260) + p.Reindex_stmt() + } + + + case 23: + { + p.SetState(261) + p.Release_stmt() + } + + + case 24: + { + p.SetState(262) + p.Rollback_stmt() + } + + + case 25: + { + p.SetState(263) + p.Savepoint_stmt() + } + + + case 26: + { + p.SetState(264) + p.Simple_select_stmt() + } + + + case 27: + { + p.SetState(265) + p.Select_stmt() + } + + + case 28: + { + p.SetState(266) + p.Update_stmt() + } + + + case 29: + { + p.SetState(267) + p.Update_stmt_limited() + } + + + case 30: + { + p.SetState(268) + p.Vacuum_stmt() + } + + } + + + + return localctx +} + + +// IAlter_table_stmtContext is an interface to support dynamic dispatch. +type IAlter_table_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAlter_table_stmtContext differentiates from other interfaces. + IsAlter_table_stmtContext() +} + +type Alter_table_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAlter_table_stmtContext() *Alter_table_stmtContext { + var p = new(Alter_table_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_alter_table_stmt + return p +} + +func (*Alter_table_stmtContext) IsAlter_table_stmtContext() {} + +func NewAlter_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_stmtContext { + var p = new(Alter_table_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_alter_table_stmt + + return p +} + +func (s *Alter_table_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Alter_table_stmtContext) K_ALTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALTER, 0) +} + +func (s *Alter_table_stmtContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *Alter_table_stmtContext) Source_table_name() ISource_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISource_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISource_table_nameContext) +} + +func (s *Alter_table_stmtContext) K_RENAME() antlr.TerminalNode { + return s.GetToken(SqlParserK_RENAME, 0) +} + +func (s *Alter_table_stmtContext) K_TO() antlr.TerminalNode { + return s.GetToken(SqlParserK_TO, 0) +} + +func (s *Alter_table_stmtContext) New_table_name() INew_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INew_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INew_table_nameContext) +} + +func (s *Alter_table_stmtContext) Alter_table_add() IAlter_table_addContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAlter_table_addContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAlter_table_addContext) +} + +func (s *Alter_table_stmtContext) Alter_table_add_constraint() IAlter_table_add_constraintContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAlter_table_add_constraintContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAlter_table_add_constraintContext) +} + +func (s *Alter_table_stmtContext) K_ADD() antlr.TerminalNode { + return s.GetToken(SqlParserK_ADD, 0) +} + +func (s *Alter_table_stmtContext) Column_def() IColumn_defContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_defContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_defContext) +} + +func (s *Alter_table_stmtContext) K_ONLY() antlr.TerminalNode { + return s.GetToken(SqlParserK_ONLY, 0) +} + +func (s *Alter_table_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Alter_table_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Alter_table_stmtContext) K_ENABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ENABLE, 0) +} + +func (s *Alter_table_stmtContext) Unknown() IUnknownContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnknownContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUnknownContext) +} + +func (s *Alter_table_stmtContext) K_COLUMN() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLUMN, 0) +} + +func (s *Alter_table_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Alter_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Alter_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAlter_table_stmt(s) + } +} + +func (s *Alter_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAlter_table_stmt(s) + } +} + + + + +func (p *SqlParser) Alter_table_stmt() (localctx IAlter_table_stmtContext) { + this := p + _ = this + + localctx = NewAlter_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 8, SqlParserRULE_alter_table_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(271) + p.Match(SqlParserK_ALTER) + } + { + p.SetState(272) + p.Match(SqlParserK_TABLE) + } + p.SetState(274) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ONLY { + { + p.SetState(273) + p.Match(SqlParserK_ONLY) + } + + } + p.SetState(279) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) == 1 { + { + p.SetState(276) + p.Database_name() + } + { + p.SetState(277) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(281) + p.Source_table_name() + } + p.SetState(292) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 12, p.GetParserRuleContext()) { + case 1: + { + p.SetState(282) + p.Match(SqlParserK_RENAME) + } + { + p.SetState(283) + p.Match(SqlParserK_TO) + } + { + p.SetState(284) + p.New_table_name() + } + + + case 2: + { + p.SetState(285) + p.Alter_table_add() + } + + + case 3: + { + p.SetState(286) + p.Alter_table_add_constraint() + } + + + case 4: + { + p.SetState(287) + p.Match(SqlParserK_ADD) + } + p.SetState(289) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 11, p.GetParserRuleContext()) == 1 { + { + p.SetState(288) + p.Match(SqlParserK_COLUMN) + } + + + } + { + p.SetState(291) + p.Column_def() + } + + } + p.SetState(295) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 13, p.GetParserRuleContext()) == 1 { + { + p.SetState(294) + p.Match(SqlParserK_ENABLE) + } + + + } + p.SetState(298) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 14, p.GetParserRuleContext()) == 1 { + { + p.SetState(297) + p.Unknown() + } + + + } + + + + return localctx +} + + +// IAlter_table_add_constraintContext is an interface to support dynamic dispatch. +type IAlter_table_add_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAlter_table_add_constraintContext differentiates from other interfaces. + IsAlter_table_add_constraintContext() +} + +type Alter_table_add_constraintContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAlter_table_add_constraintContext() *Alter_table_add_constraintContext { + var p = new(Alter_table_add_constraintContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_alter_table_add_constraint + return p +} + +func (*Alter_table_add_constraintContext) IsAlter_table_add_constraintContext() {} + +func NewAlter_table_add_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_add_constraintContext { + var p = new(Alter_table_add_constraintContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_alter_table_add_constraint + + return p +} + +func (s *Alter_table_add_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Alter_table_add_constraintContext) K_ADD() antlr.TerminalNode { + return s.GetToken(SqlParserK_ADD, 0) +} + +func (s *Alter_table_add_constraintContext) K_CONSTRAINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONSTRAINT, 0) +} + +func (s *Alter_table_add_constraintContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Alter_table_add_constraintContext) Table_constraint() ITable_constraintContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraintContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraintContext) +} + +func (s *Alter_table_add_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Alter_table_add_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Alter_table_add_constraintContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAlter_table_add_constraint(s) + } +} + +func (s *Alter_table_add_constraintContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAlter_table_add_constraint(s) + } +} + + + + +func (p *SqlParser) Alter_table_add_constraint() (localctx IAlter_table_add_constraintContext) { + this := p + _ = this + + localctx = NewAlter_table_add_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, SqlParserRULE_alter_table_add_constraint) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(300) + p.Match(SqlParserK_ADD) + } + { + p.SetState(301) + p.Match(SqlParserK_CONSTRAINT) + } + { + p.SetState(302) + p.Any_name() + } + { + p.SetState(303) + p.Table_constraint() + } + + + + return localctx +} + + +// IAlter_table_addContext is an interface to support dynamic dispatch. +type IAlter_table_addContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAlter_table_addContext differentiates from other interfaces. + IsAlter_table_addContext() +} + +type Alter_table_addContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAlter_table_addContext() *Alter_table_addContext { + var p = new(Alter_table_addContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_alter_table_add + return p +} + +func (*Alter_table_addContext) IsAlter_table_addContext() {} + +func NewAlter_table_addContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_addContext { + var p = new(Alter_table_addContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_alter_table_add + + return p +} + +func (s *Alter_table_addContext) GetParser() antlr.Parser { return s.parser } + +func (s *Alter_table_addContext) K_ADD() antlr.TerminalNode { + return s.GetToken(SqlParserK_ADD, 0) +} + +func (s *Alter_table_addContext) Table_constraint() ITable_constraintContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraintContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraintContext) +} + +func (s *Alter_table_addContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Alter_table_addContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Alter_table_addContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAlter_table_add(s) + } +} + +func (s *Alter_table_addContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAlter_table_add(s) + } +} + + + + +func (p *SqlParser) Alter_table_add() (localctx IAlter_table_addContext) { + this := p + _ = this + + localctx = NewAlter_table_addContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 12, SqlParserRULE_alter_table_add) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(305) + p.Match(SqlParserK_ADD) + } + { + p.SetState(306) + p.Table_constraint() + } + + + + return localctx +} + + +// IAnalyze_stmtContext is an interface to support dynamic dispatch. +type IAnalyze_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAnalyze_stmtContext differentiates from other interfaces. + IsAnalyze_stmtContext() +} + +type Analyze_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAnalyze_stmtContext() *Analyze_stmtContext { + var p = new(Analyze_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_analyze_stmt + return p +} + +func (*Analyze_stmtContext) IsAnalyze_stmtContext() {} + +func NewAnalyze_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Analyze_stmtContext { + var p = new(Analyze_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_analyze_stmt + + return p +} + +func (s *Analyze_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Analyze_stmtContext) K_ANALYZE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ANALYZE, 0) +} + +func (s *Analyze_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Analyze_stmtContext) Table_or_index_name() ITable_or_index_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_index_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_index_nameContext) +} + +func (s *Analyze_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Analyze_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Analyze_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Analyze_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAnalyze_stmt(s) + } +} + +func (s *Analyze_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAnalyze_stmt(s) + } +} + + + + +func (p *SqlParser) Analyze_stmt() (localctx IAnalyze_stmtContext) { + this := p + _ = this + + localctx = NewAnalyze_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 14, SqlParserRULE_analyze_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(308) + p.Match(SqlParserK_ANALYZE) + } + p.SetState(315) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 1 { + { + p.SetState(309) + p.Database_name() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 2 { + { + p.SetState(310) + p.Table_or_index_name() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 3 { + { + p.SetState(311) + p.Database_name() + } + { + p.SetState(312) + p.Match(SqlParserDOT) + } + { + p.SetState(313) + p.Table_or_index_name() + } + + + } + + + + return localctx +} + + +// IAttach_stmtContext is an interface to support dynamic dispatch. +type IAttach_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAttach_stmtContext differentiates from other interfaces. + IsAttach_stmtContext() +} + +type Attach_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAttach_stmtContext() *Attach_stmtContext { + var p = new(Attach_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_attach_stmt + return p +} + +func (*Attach_stmtContext) IsAttach_stmtContext() {} + +func NewAttach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Attach_stmtContext { + var p = new(Attach_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_attach_stmt + + return p +} + +func (s *Attach_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Attach_stmtContext) K_ATTACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_ATTACH, 0) +} + +func (s *Attach_stmtContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Attach_stmtContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Attach_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Attach_stmtContext) K_DATABASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DATABASE, 0) +} + +func (s *Attach_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Attach_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Attach_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAttach_stmt(s) + } +} + +func (s *Attach_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAttach_stmt(s) + } +} + + + + +func (p *SqlParser) Attach_stmt() (localctx IAttach_stmtContext) { + this := p + _ = this + + localctx = NewAttach_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 16, SqlParserRULE_attach_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(317) + p.Match(SqlParserK_ATTACH) + } + p.SetState(319) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 16, p.GetParserRuleContext()) == 1 { + { + p.SetState(318) + p.Match(SqlParserK_DATABASE) + } + + + } + { + p.SetState(321) + p.expr(0) + } + { + p.SetState(322) + p.Match(SqlParserK_AS) + } + { + p.SetState(323) + p.Database_name() + } + + + + return localctx +} + + +// IBegin_stmtContext is an interface to support dynamic dispatch. +type IBegin_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsBegin_stmtContext differentiates from other interfaces. + IsBegin_stmtContext() +} + +type Begin_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyBegin_stmtContext() *Begin_stmtContext { + var p = new(Begin_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_begin_stmt + return p +} + +func (*Begin_stmtContext) IsBegin_stmtContext() {} + +func NewBegin_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Begin_stmtContext { + var p = new(Begin_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_begin_stmt + + return p +} + +func (s *Begin_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Begin_stmtContext) K_BEGIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEGIN, 0) +} + +func (s *Begin_stmtContext) K_TRANSACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRANSACTION, 0) +} + +func (s *Begin_stmtContext) K_DEFERRED() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRED, 0) +} + +func (s *Begin_stmtContext) K_IMMEDIATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IMMEDIATE, 0) +} + +func (s *Begin_stmtContext) K_EXCLUSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCLUSIVE, 0) +} + +func (s *Begin_stmtContext) Transaction_name() ITransaction_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransaction_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITransaction_nameContext) +} + +func (s *Begin_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Begin_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Begin_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterBegin_stmt(s) + } +} + +func (s *Begin_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitBegin_stmt(s) + } +} + + + + +func (p *SqlParser) Begin_stmt() (localctx IBegin_stmtContext) { + this := p + _ = this + + localctx = NewBegin_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 18, SqlParserRULE_begin_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(325) + p.Match(SqlParserK_BEGIN) + } + p.SetState(327) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if ((((_la - 59)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 59))) & ((1 << (SqlParserK_DEFERRED - 59)) | (1 << (SqlParserK_EXCLUSIVE - 59)) | (1 << (SqlParserK_IMMEDIATE - 59)))) != 0) { + { + p.SetState(326) + _la = p.GetTokenStream().LA(1) + + if !(((((_la - 59)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 59))) & ((1 << (SqlParserK_DEFERRED - 59)) | (1 << (SqlParserK_EXCLUSIVE - 59)) | (1 << (SqlParserK_IMMEDIATE - 59)))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + p.SetState(333) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TRANSACTION { + { + p.SetState(329) + p.Match(SqlParserK_TRANSACTION) + } + p.SetState(331) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 18, p.GetParserRuleContext()) == 1 { + { + p.SetState(330) + p.Transaction_name() + } + + + } + + } + + + + return localctx +} + + +// ICommit_stmtContext is an interface to support dynamic dispatch. +type ICommit_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCommit_stmtContext differentiates from other interfaces. + IsCommit_stmtContext() +} + +type Commit_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCommit_stmtContext() *Commit_stmtContext { + var p = new(Commit_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_commit_stmt + return p +} + +func (*Commit_stmtContext) IsCommit_stmtContext() {} + +func NewCommit_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Commit_stmtContext { + var p = new(Commit_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_commit_stmt + + return p +} + +func (s *Commit_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Commit_stmtContext) K_COMMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_COMMIT, 0) +} + +func (s *Commit_stmtContext) K_END() antlr.TerminalNode { + return s.GetToken(SqlParserK_END, 0) +} + +func (s *Commit_stmtContext) K_TRANSACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRANSACTION, 0) +} + +func (s *Commit_stmtContext) Transaction_name() ITransaction_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransaction_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITransaction_nameContext) +} + +func (s *Commit_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Commit_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Commit_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCommit_stmt(s) + } +} + +func (s *Commit_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCommit_stmt(s) + } +} + + + + +func (p *SqlParser) Commit_stmt() (localctx ICommit_stmtContext) { + this := p + _ = this + + localctx = NewCommit_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 20, SqlParserRULE_commit_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(335) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_COMMIT || _la == SqlParserK_END) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + p.SetState(340) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TRANSACTION { + { + p.SetState(336) + p.Match(SqlParserK_TRANSACTION) + } + p.SetState(338) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 20, p.GetParserRuleContext()) == 1 { + { + p.SetState(337) + p.Transaction_name() + } + + + } + + } + + + + return localctx +} + + +// ICompound_select_stmtContext is an interface to support dynamic dispatch. +type ICompound_select_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCompound_select_stmtContext differentiates from other interfaces. + IsCompound_select_stmtContext() +} + +type Compound_select_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCompound_select_stmtContext() *Compound_select_stmtContext { + var p = new(Compound_select_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_compound_select_stmt + return p +} + +func (*Compound_select_stmtContext) IsCompound_select_stmtContext() {} + +func NewCompound_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_select_stmtContext { + var p = new(Compound_select_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_compound_select_stmt + + return p +} + +func (s *Compound_select_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Compound_select_stmtContext) AllSelect_core() []ISelect_coreContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_coreContext); ok { + len++ + } + } + + tst := make([]ISelect_coreContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_coreContext); ok { + tst[i] = t.(ISelect_coreContext) + i++ + } + } + + return tst +} + +func (s *Compound_select_stmtContext) Select_core(i int) ISelect_coreContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_coreContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_coreContext) +} + +func (s *Compound_select_stmtContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *Compound_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Compound_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Compound_select_stmtContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Compound_select_stmtContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Compound_select_stmtContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Compound_select_stmtContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Compound_select_stmtContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Compound_select_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Compound_select_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Compound_select_stmtContext) AllK_UNION() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_UNION) +} + +func (s *Compound_select_stmtContext) K_UNION(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_UNION, i) +} + +func (s *Compound_select_stmtContext) AllK_INTERSECT() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_INTERSECT) +} + +func (s *Compound_select_stmtContext) K_INTERSECT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_INTERSECT, i) +} + +func (s *Compound_select_stmtContext) AllK_EXCEPT() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_EXCEPT) +} + +func (s *Compound_select_stmtContext) K_EXCEPT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCEPT, i) +} + +func (s *Compound_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *Compound_select_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Compound_select_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Compound_select_stmtContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Compound_select_stmtContext) AllK_ALL() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_ALL) +} + +func (s *Compound_select_stmtContext) K_ALL(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, i) +} + +func (s *Compound_select_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Compound_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Compound_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCompound_select_stmt(s) + } +} + +func (s *Compound_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCompound_select_stmt(s) + } +} + + + + +func (p *SqlParser) Compound_select_stmt() (localctx ICompound_select_stmtContext) { + this := p + _ = this + + localctx = NewCompound_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 22, SqlParserRULE_compound_select_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(354) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(342) + p.Match(SqlParserK_WITH) + } + p.SetState(344) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 22, p.GetParserRuleContext()) == 1 { + { + p.SetState(343) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(346) + p.Common_table_expression() + } + p.SetState(351) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(347) + p.Match(SqlParserCOMMA) + } + { + p.SetState(348) + p.Common_table_expression() + } + + + p.SetState(353) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(356) + p.Select_core() + } + p.SetState(366) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for ok := true; ok; ok = _la == SqlParserK_EXCEPT || _la == SqlParserK_INTERSECT || _la == SqlParserK_UNION { + p.SetState(363) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_UNION: + { + p.SetState(357) + p.Match(SqlParserK_UNION) + } + p.SetState(359) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ALL { + { + p.SetState(358) + p.Match(SqlParserK_ALL) + } + + } + + + case SqlParserK_INTERSECT: + { + p.SetState(361) + p.Match(SqlParserK_INTERSECT) + } + + + case SqlParserK_EXCEPT: + { + p.SetState(362) + p.Match(SqlParserK_EXCEPT) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + { + p.SetState(365) + p.Select_core() + } + + + p.SetState(368) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(380) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(370) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(371) + p.Match(SqlParserK_BY) + } + { + p.SetState(372) + p.Ordering_term() + } + p.SetState(377) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(373) + p.Match(SqlParserCOMMA) + } + { + p.SetState(374) + p.Ordering_term() + } + + + p.SetState(379) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + p.SetState(388) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT { + { + p.SetState(382) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(383) + p.expr(0) + } + p.SetState(386) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(384) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(385) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// ICreate_index_stmtContext is an interface to support dynamic dispatch. +type ICreate_index_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_index_stmtContext differentiates from other interfaces. + IsCreate_index_stmtContext() +} + +type Create_index_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_index_stmtContext() *Create_index_stmtContext { + var p = new(Create_index_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_index_stmt + return p +} + +func (*Create_index_stmtContext) IsCreate_index_stmtContext() {} + +func NewCreate_index_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_index_stmtContext { + var p = new(Create_index_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_index_stmt + + return p +} + +func (s *Create_index_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_index_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_index_stmtContext) K_INDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEX, 0) +} + +func (s *Create_index_stmtContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Create_index_stmtContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *Create_index_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Create_index_stmtContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Create_index_stmtContext) AllIndexed_column() []IIndexed_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIndexed_columnContext); ok { + len++ + } + } + + tst := make([]IIndexed_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIndexed_columnContext); ok { + tst[i] = t.(IIndexed_columnContext) + i++ + } + } + + return tst +} + +func (s *Create_index_stmtContext) Indexed_column(i int) IIndexed_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndexed_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIndexed_columnContext) +} + +func (s *Create_index_stmtContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Create_index_stmtContext) K_UNIQUE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNIQUE, 0) +} + +func (s *Create_index_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_index_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_index_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_index_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_index_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Create_index_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Create_index_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Create_index_stmtContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Create_index_stmtContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Create_index_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_index_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_index_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_index_stmt(s) + } +} + +func (s *Create_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_index_stmt(s) + } +} + + + + +func (p *SqlParser) Create_index_stmt() (localctx ICreate_index_stmtContext) { + this := p + _ = this + + localctx = NewCreate_index_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 24, SqlParserRULE_create_index_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(390) + p.Match(SqlParserK_CREATE) + } + p.SetState(392) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_UNIQUE { + { + p.SetState(391) + p.Match(SqlParserK_UNIQUE) + } + + } + { + p.SetState(394) + p.Match(SqlParserK_INDEX) + } + p.SetState(398) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 33, p.GetParserRuleContext()) == 1 { + { + p.SetState(395) + p.Match(SqlParserK_IF) + } + { + p.SetState(396) + p.Match(SqlParserK_NOT) + } + { + p.SetState(397) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(403) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 34, p.GetParserRuleContext()) == 1 { + { + p.SetState(400) + p.Database_name() + } + { + p.SetState(401) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(405) + p.Index_name() + } + { + p.SetState(406) + p.Match(SqlParserK_ON) + } + { + p.SetState(407) + p.Table_name() + } + { + p.SetState(408) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(409) + p.Indexed_column() + } + p.SetState(414) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(410) + p.Match(SqlParserCOMMA) + } + { + p.SetState(411) + p.Indexed_column() + } + + + p.SetState(416) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(417) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(420) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(418) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(419) + p.expr(0) + } + + } + + + + return localctx +} + + +// ICreate_table_stmtContext is an interface to support dynamic dispatch. +type ICreate_table_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_table_stmtContext differentiates from other interfaces. + IsCreate_table_stmtContext() +} + +type Create_table_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_table_stmtContext() *Create_table_stmtContext { + var p = new(Create_table_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_table_stmt + return p +} + +func (*Create_table_stmtContext) IsCreate_table_stmtContext() {} + +func NewCreate_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_table_stmtContext { + var p = new(Create_table_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_table_stmt + + return p +} + +func (s *Create_table_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_table_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_table_stmtContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *Create_table_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Create_table_stmtContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Create_table_stmtContext) AllColumn_def() []IColumn_defContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_defContext); ok { + len++ + } + } + + tst := make([]IColumn_defContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_defContext); ok { + tst[i] = t.(IColumn_defContext) + i++ + } + } + + return tst +} + +func (s *Create_table_stmtContext) Column_def(i int) IColumn_defContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_defContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_defContext) +} + +func (s *Create_table_stmtContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Create_table_stmtContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Create_table_stmtContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Create_table_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_table_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_table_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_table_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_table_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Create_table_stmtContext) Unknown() IUnknownContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnknownContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUnknownContext) +} + +func (s *Create_table_stmtContext) K_TEMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMP, 0) +} + +func (s *Create_table_stmtContext) K_TEMPORARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMPORARY, 0) +} + +func (s *Create_table_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Create_table_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Create_table_stmtContext) AllTable_constraint() []ITable_constraintContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_constraintContext); ok { + len++ + } + } + + tst := make([]ITable_constraintContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_constraintContext); ok { + tst[i] = t.(ITable_constraintContext) + i++ + } + } + + return tst +} + +func (s *Create_table_stmtContext) Table_constraint(i int) ITable_constraintContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraintContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraintContext) +} + +func (s *Create_table_stmtContext) K_WITHOUT() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITHOUT, 0) +} + +func (s *Create_table_stmtContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *Create_table_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_table_stmt(s) + } +} + +func (s *Create_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_table_stmt(s) + } +} + + + + +func (p *SqlParser) Create_table_stmt() (localctx ICreate_table_stmtContext) { + this := p + _ = this + + localctx = NewCreate_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 26, SqlParserRULE_create_table_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(422) + p.Match(SqlParserK_CREATE) + } + p.SetState(424) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { + { + p.SetState(423) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(426) + p.Match(SqlParserK_TABLE) + } + p.SetState(430) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 38, p.GetParserRuleContext()) == 1 { + { + p.SetState(427) + p.Match(SqlParserK_IF) + } + { + p.SetState(428) + p.Match(SqlParserK_NOT) + } + { + p.SetState(429) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(435) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 39, p.GetParserRuleContext()) == 1 { + { + p.SetState(432) + p.Database_name() + } + { + p.SetState(433) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(437) + p.Table_name() + } + p.SetState(456) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserOPEN_PAR: + { + p.SetState(438) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(439) + p.Column_def() + } + p.SetState(446) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + p.SetState(444) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 40, p.GetParserRuleContext()) { + case 1: + { + p.SetState(440) + p.Match(SqlParserCOMMA) + } + { + p.SetState(441) + p.Table_constraint() + } + + + case 2: + { + p.SetState(442) + p.Match(SqlParserCOMMA) + } + { + p.SetState(443) + p.Column_def() + } + + } + + p.SetState(448) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(449) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(452) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 42, p.GetParserRuleContext()) == 1 { + { + p.SetState(450) + p.Match(SqlParserK_WITHOUT) + } + { + p.SetState(451) + p.Match(SqlParserIDENTIFIER) + } + + + } + + + case SqlParserK_AS: + { + p.SetState(454) + p.Match(SqlParserK_AS) + } + { + p.SetState(455) + p.Select_stmt() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + p.SetState(459) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 44, p.GetParserRuleContext()) == 1 { + { + p.SetState(458) + p.Unknown() + } + + + } + + + + return localctx +} + + +// ICreate_trigger_stmtContext is an interface to support dynamic dispatch. +type ICreate_trigger_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_trigger_stmtContext differentiates from other interfaces. + IsCreate_trigger_stmtContext() +} + +type Create_trigger_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_trigger_stmtContext() *Create_trigger_stmtContext { + var p = new(Create_trigger_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_trigger_stmt + return p +} + +func (*Create_trigger_stmtContext) IsCreate_trigger_stmtContext() {} + +func NewCreate_trigger_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_trigger_stmtContext { + var p = new(Create_trigger_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_trigger_stmt + + return p +} + +func (s *Create_trigger_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_trigger_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_trigger_stmtContext) K_TRIGGER() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRIGGER, 0) +} + +func (s *Create_trigger_stmtContext) Trigger_name() ITrigger_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrigger_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITrigger_nameContext) +} + +func (s *Create_trigger_stmtContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *Create_trigger_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Create_trigger_stmtContext) K_BEGIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEGIN, 0) +} + +func (s *Create_trigger_stmtContext) K_END() antlr.TerminalNode { + return s.GetToken(SqlParserK_END, 0) +} + +func (s *Create_trigger_stmtContext) K_DELETE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, 0) +} + +func (s *Create_trigger_stmtContext) K_INSERT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSERT, 0) +} + +func (s *Create_trigger_stmtContext) K_UPDATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, 0) +} + +func (s *Create_trigger_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_trigger_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_trigger_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_trigger_stmtContext) AllDatabase_name() []IDatabase_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IDatabase_nameContext); ok { + len++ + } + } + + tst := make([]IDatabase_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IDatabase_nameContext); ok { + tst[i] = t.(IDatabase_nameContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Database_name(i int) IDatabase_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_trigger_stmtContext) AllDOT() []antlr.TerminalNode { + return s.GetTokens(SqlParserDOT) +} + +func (s *Create_trigger_stmtContext) DOT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserDOT, i) +} + +func (s *Create_trigger_stmtContext) K_BEFORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEFORE, 0) +} + +func (s *Create_trigger_stmtContext) K_AFTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_AFTER, 0) +} + +func (s *Create_trigger_stmtContext) K_INSTEAD() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSTEAD, 0) +} + +func (s *Create_trigger_stmtContext) AllK_OF() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_OF) +} + +func (s *Create_trigger_stmtContext) K_OF(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_OF, i) +} + +func (s *Create_trigger_stmtContext) K_FOR() antlr.TerminalNode { + return s.GetToken(SqlParserK_FOR, 0) +} + +func (s *Create_trigger_stmtContext) K_EACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_EACH, 0) +} + +func (s *Create_trigger_stmtContext) K_ROW() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROW, 0) +} + +func (s *Create_trigger_stmtContext) K_WHEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHEN, 0) +} + +func (s *Create_trigger_stmtContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Create_trigger_stmtContext) AllSCOL() []antlr.TerminalNode { + return s.GetTokens(SqlParserSCOL) +} + +func (s *Create_trigger_stmtContext) SCOL(i int) antlr.TerminalNode { + return s.GetToken(SqlParserSCOL, i) +} + +func (s *Create_trigger_stmtContext) K_TEMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMP, 0) +} + +func (s *Create_trigger_stmtContext) K_TEMPORARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMPORARY, 0) +} + +func (s *Create_trigger_stmtContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Create_trigger_stmtContext) AllUpdate_stmt() []IUpdate_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IUpdate_stmtContext); ok { + len++ + } + } + + tst := make([]IUpdate_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IUpdate_stmtContext); ok { + tst[i] = t.(IUpdate_stmtContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Update_stmt(i int) IUpdate_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUpdate_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IUpdate_stmtContext) +} + +func (s *Create_trigger_stmtContext) AllInsert_stmt() []IInsert_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IInsert_stmtContext); ok { + len++ + } + } + + tst := make([]IInsert_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IInsert_stmtContext); ok { + tst[i] = t.(IInsert_stmtContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Insert_stmt(i int) IInsert_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IInsert_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IInsert_stmtContext) +} + +func (s *Create_trigger_stmtContext) AllDelete_stmt() []IDelete_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IDelete_stmtContext); ok { + len++ + } + } + + tst := make([]IDelete_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IDelete_stmtContext); ok { + tst[i] = t.(IDelete_stmtContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Delete_stmt(i int) IDelete_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDelete_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IDelete_stmtContext) +} + +func (s *Create_trigger_stmtContext) AllSelect_stmt() []ISelect_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_stmtContext); ok { + len++ + } + } + + tst := make([]ISelect_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_stmtContext); ok { + tst[i] = t.(ISelect_stmtContext) + i++ + } + } + + return tst +} + +func (s *Create_trigger_stmtContext) Select_stmt(i int) ISelect_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Create_trigger_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Create_trigger_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Create_trigger_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_trigger_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_trigger_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_trigger_stmt(s) + } +} + +func (s *Create_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_trigger_stmt(s) + } +} + + + + +func (p *SqlParser) Create_trigger_stmt() (localctx ICreate_trigger_stmtContext) { + this := p + _ = this + + localctx = NewCreate_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 28, SqlParserRULE_create_trigger_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(461) + p.Match(SqlParserK_CREATE) + } + p.SetState(463) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { + { + p.SetState(462) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(465) + p.Match(SqlParserK_TRIGGER) + } + p.SetState(469) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 46, p.GetParserRuleContext()) == 1 { + { + p.SetState(466) + p.Match(SqlParserK_IF) + } + { + p.SetState(467) + p.Match(SqlParserK_NOT) + } + { + p.SetState(468) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(474) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 47, p.GetParserRuleContext()) == 1 { + { + p.SetState(471) + p.Database_name() + } + { + p.SetState(472) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(476) + p.Trigger_name() + } + p.SetState(481) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_BEFORE: + { + p.SetState(477) + p.Match(SqlParserK_BEFORE) + } + + + case SqlParserK_AFTER: + { + p.SetState(478) + p.Match(SqlParserK_AFTER) + } + + + case SqlParserK_INSTEAD: + { + p.SetState(479) + p.Match(SqlParserK_INSTEAD) + } + { + p.SetState(480) + p.Match(SqlParserK_OF) + } + + + case SqlParserK_DELETE, SqlParserK_INSERT, SqlParserK_UPDATE: + + + + default: + } + p.SetState(497) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_DELETE: + { + p.SetState(483) + p.Match(SqlParserK_DELETE) + } + + + case SqlParserK_INSERT: + { + p.SetState(484) + p.Match(SqlParserK_INSERT) + } + + + case SqlParserK_UPDATE: + { + p.SetState(485) + p.Match(SqlParserK_UPDATE) + } + p.SetState(495) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_OF { + { + p.SetState(486) + p.Match(SqlParserK_OF) + } + { + p.SetState(487) + p.Column_name() + } + p.SetState(492) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(488) + p.Match(SqlParserCOMMA) + } + { + p.SetState(489) + p.Column_name() + } + + + p.SetState(494) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + { + p.SetState(499) + p.Match(SqlParserK_ON) + } + p.SetState(503) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 52, p.GetParserRuleContext()) == 1 { + { + p.SetState(500) + p.Database_name() + } + { + p.SetState(501) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(505) + p.Table_name() + } + p.SetState(509) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_FOR { + { + p.SetState(506) + p.Match(SqlParserK_FOR) + } + { + p.SetState(507) + p.Match(SqlParserK_EACH) + } + { + p.SetState(508) + p.Match(SqlParserK_ROW) + } + + } + p.SetState(513) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHEN { + { + p.SetState(511) + p.Match(SqlParserK_WHEN) + } + { + p.SetState(512) + p.expr(0) + } + + } + { + p.SetState(515) + p.Match(SqlParserK_BEGIN) + } + p.SetState(524) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for ok := true; ok; ok = _la == SqlParserK_DELETE || _la == SqlParserK_INSERT || ((((_la - 126)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 126))) & ((1 << (SqlParserK_REPLACE - 126)) | (1 << (SqlParserK_SELECT - 126)) | (1 << (SqlParserK_UPDATE - 126)) | (1 << (SqlParserK_VALUES - 126)) | (1 << (SqlParserK_WITH - 126)))) != 0) { + p.SetState(520) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 55, p.GetParserRuleContext()) { + case 1: + { + p.SetState(516) + p.Update_stmt() + } + + + case 2: + { + p.SetState(517) + p.Insert_stmt() + } + + + case 3: + { + p.SetState(518) + p.Delete_stmt() + } + + + case 4: + { + p.SetState(519) + p.Select_stmt() + } + + } + { + p.SetState(522) + p.Match(SqlParserSCOL) + } + + + p.SetState(526) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(528) + p.Match(SqlParserK_END) + } + + + + return localctx +} + + +// ICreate_view_stmtContext is an interface to support dynamic dispatch. +type ICreate_view_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_view_stmtContext differentiates from other interfaces. + IsCreate_view_stmtContext() +} + +type Create_view_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_view_stmtContext() *Create_view_stmtContext { + var p = new(Create_view_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_view_stmt + return p +} + +func (*Create_view_stmtContext) IsCreate_view_stmtContext() {} + +func NewCreate_view_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_view_stmtContext { + var p = new(Create_view_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_view_stmt + + return p +} + +func (s *Create_view_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_view_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_view_stmtContext) K_VIEW() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIEW, 0) +} + +func (s *Create_view_stmtContext) View_name() IView_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IView_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IView_nameContext) +} + +func (s *Create_view_stmtContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Create_view_stmtContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Create_view_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_view_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_view_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_view_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_view_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Create_view_stmtContext) K_TEMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMP, 0) +} + +func (s *Create_view_stmtContext) K_TEMPORARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMPORARY, 0) +} + +func (s *Create_view_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_view_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_view_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_view_stmt(s) + } +} + +func (s *Create_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_view_stmt(s) + } +} + + + + +func (p *SqlParser) Create_view_stmt() (localctx ICreate_view_stmtContext) { + this := p + _ = this + + localctx = NewCreate_view_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 30, SqlParserRULE_create_view_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(530) + p.Match(SqlParserK_CREATE) + } + p.SetState(532) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { + { + p.SetState(531) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(534) + p.Match(SqlParserK_VIEW) + } + p.SetState(538) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 58, p.GetParserRuleContext()) == 1 { + { + p.SetState(535) + p.Match(SqlParserK_IF) + } + { + p.SetState(536) + p.Match(SqlParserK_NOT) + } + { + p.SetState(537) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(543) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 59, p.GetParserRuleContext()) == 1 { + { + p.SetState(540) + p.Database_name() + } + { + p.SetState(541) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(545) + p.View_name() + } + { + p.SetState(546) + p.Match(SqlParserK_AS) + } + { + p.SetState(547) + p.Select_stmt() + } + + + + return localctx +} + + +// ICreate_virtual_table_stmtContext is an interface to support dynamic dispatch. +type ICreate_virtual_table_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCreate_virtual_table_stmtContext differentiates from other interfaces. + IsCreate_virtual_table_stmtContext() +} + +type Create_virtual_table_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCreate_virtual_table_stmtContext() *Create_virtual_table_stmtContext { + var p = new(Create_virtual_table_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_create_virtual_table_stmt + return p +} + +func (*Create_virtual_table_stmtContext) IsCreate_virtual_table_stmtContext() {} + +func NewCreate_virtual_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_virtual_table_stmtContext { + var p = new(Create_virtual_table_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_create_virtual_table_stmt + + return p +} + +func (s *Create_virtual_table_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Create_virtual_table_stmtContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *Create_virtual_table_stmtContext) K_VIRTUAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIRTUAL, 0) +} + +func (s *Create_virtual_table_stmtContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *Create_virtual_table_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Create_virtual_table_stmtContext) K_USING() antlr.TerminalNode { + return s.GetToken(SqlParserK_USING, 0) +} + +func (s *Create_virtual_table_stmtContext) Module_name() IModule_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IModule_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IModule_nameContext) +} + +func (s *Create_virtual_table_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Create_virtual_table_stmtContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Create_virtual_table_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Create_virtual_table_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Create_virtual_table_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Create_virtual_table_stmtContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Create_virtual_table_stmtContext) AllModule_argument() []IModule_argumentContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IModule_argumentContext); ok { + len++ + } + } + + tst := make([]IModule_argumentContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IModule_argumentContext); ok { + tst[i] = t.(IModule_argumentContext) + i++ + } + } + + return tst +} + +func (s *Create_virtual_table_stmtContext) Module_argument(i int) IModule_argumentContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IModule_argumentContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IModule_argumentContext) +} + +func (s *Create_virtual_table_stmtContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Create_virtual_table_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Create_virtual_table_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Create_virtual_table_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Create_virtual_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Create_virtual_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCreate_virtual_table_stmt(s) + } +} + +func (s *Create_virtual_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCreate_virtual_table_stmt(s) + } +} + + + + +func (p *SqlParser) Create_virtual_table_stmt() (localctx ICreate_virtual_table_stmtContext) { + this := p + _ = this + + localctx = NewCreate_virtual_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 32, SqlParserRULE_create_virtual_table_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(549) + p.Match(SqlParserK_CREATE) + } + { + p.SetState(550) + p.Match(SqlParserK_VIRTUAL) + } + { + p.SetState(551) + p.Match(SqlParserK_TABLE) + } + p.SetState(555) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 60, p.GetParserRuleContext()) == 1 { + { + p.SetState(552) + p.Match(SqlParserK_IF) + } + { + p.SetState(553) + p.Match(SqlParserK_NOT) + } + { + p.SetState(554) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(560) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 61, p.GetParserRuleContext()) == 1 { + { + p.SetState(557) + p.Database_name() + } + { + p.SetState(558) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(562) + p.Table_name() + } + { + p.SetState(563) + p.Match(SqlParserK_USING) + } + { + p.SetState(564) + p.Module_name() + } + p.SetState(576) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserOPEN_PAR { + { + p.SetState(565) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(566) + p.Module_argument() + } + p.SetState(571) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(567) + p.Match(SqlParserCOMMA) + } + { + p.SetState(568) + p.Module_argument() + } + + + p.SetState(573) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(574) + p.Match(SqlParserCLOSE_PAR) + } + + } + + + + return localctx +} + + +// IDelete_stmtContext is an interface to support dynamic dispatch. +type IDelete_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDelete_stmtContext differentiates from other interfaces. + IsDelete_stmtContext() +} + +type Delete_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDelete_stmtContext() *Delete_stmtContext { + var p = new(Delete_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_delete_stmt + return p +} + +func (*Delete_stmtContext) IsDelete_stmtContext() {} + +func NewDelete_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmtContext { + var p = new(Delete_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_delete_stmt + + return p +} + +func (s *Delete_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Delete_stmtContext) K_DELETE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, 0) +} + +func (s *Delete_stmtContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *Delete_stmtContext) Qualified_table_name() IQualified_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQualified_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IQualified_table_nameContext) +} + +func (s *Delete_stmtContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Delete_stmtContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Delete_stmtContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Delete_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Delete_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Delete_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDelete_stmt(s) + } +} + +func (s *Delete_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDelete_stmt(s) + } +} + + + + +func (p *SqlParser) Delete_stmt() (localctx IDelete_stmtContext) { + this := p + _ = this + + localctx = NewDelete_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 34, SqlParserRULE_delete_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(579) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(578) + p.With_clause() + } + + } + { + p.SetState(581) + p.Match(SqlParserK_DELETE) + } + { + p.SetState(582) + p.Match(SqlParserK_FROM) + } + { + p.SetState(583) + p.Qualified_table_name() + } + p.SetState(586) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(584) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(585) + p.expr(0) + } + + } + + + + return localctx +} + + +// IDelete_stmt_limitedContext is an interface to support dynamic dispatch. +type IDelete_stmt_limitedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDelete_stmt_limitedContext differentiates from other interfaces. + IsDelete_stmt_limitedContext() +} + +type Delete_stmt_limitedContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDelete_stmt_limitedContext() *Delete_stmt_limitedContext { + var p = new(Delete_stmt_limitedContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_delete_stmt_limited + return p +} + +func (*Delete_stmt_limitedContext) IsDelete_stmt_limitedContext() {} + +func NewDelete_stmt_limitedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmt_limitedContext { + var p = new(Delete_stmt_limitedContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_delete_stmt_limited + + return p +} + +func (s *Delete_stmt_limitedContext) GetParser() antlr.Parser { return s.parser } + +func (s *Delete_stmt_limitedContext) K_DELETE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, 0) +} + +func (s *Delete_stmt_limitedContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *Delete_stmt_limitedContext) Qualified_table_name() IQualified_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQualified_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IQualified_table_nameContext) +} + +func (s *Delete_stmt_limitedContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Delete_stmt_limitedContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Delete_stmt_limitedContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Delete_stmt_limitedContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Delete_stmt_limitedContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Delete_stmt_limitedContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Delete_stmt_limitedContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Delete_stmt_limitedContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Delete_stmt_limitedContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Delete_stmt_limitedContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Delete_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Delete_stmt_limitedContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Delete_stmt_limitedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Delete_stmt_limitedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Delete_stmt_limitedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDelete_stmt_limited(s) + } +} + +func (s *Delete_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDelete_stmt_limited(s) + } +} + + + + +func (p *SqlParser) Delete_stmt_limited() (localctx IDelete_stmt_limitedContext) { + this := p + _ = this + + localctx = NewDelete_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 36, SqlParserRULE_delete_stmt_limited) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(589) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(588) + p.With_clause() + } + + } + { + p.SetState(591) + p.Match(SqlParserK_DELETE) + } + { + p.SetState(592) + p.Match(SqlParserK_FROM) + } + { + p.SetState(593) + p.Qualified_table_name() + } + p.SetState(596) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(594) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(595) + p.expr(0) + } + + } + p.SetState(616) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT || _la == SqlParserK_ORDER { + p.SetState(608) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(598) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(599) + p.Match(SqlParserK_BY) + } + { + p.SetState(600) + p.Ordering_term() + } + p.SetState(605) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(601) + p.Match(SqlParserCOMMA) + } + { + p.SetState(602) + p.Ordering_term() + } + + + p.SetState(607) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(610) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(611) + p.expr(0) + } + p.SetState(614) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(612) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(613) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// IDetach_stmtContext is an interface to support dynamic dispatch. +type IDetach_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDetach_stmtContext differentiates from other interfaces. + IsDetach_stmtContext() +} + +type Detach_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDetach_stmtContext() *Detach_stmtContext { + var p = new(Detach_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_detach_stmt + return p +} + +func (*Detach_stmtContext) IsDetach_stmtContext() {} + +func NewDetach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Detach_stmtContext { + var p = new(Detach_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_detach_stmt + + return p +} + +func (s *Detach_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Detach_stmtContext) K_DETACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_DETACH, 0) +} + +func (s *Detach_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Detach_stmtContext) K_DATABASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DATABASE, 0) +} + +func (s *Detach_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Detach_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Detach_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDetach_stmt(s) + } +} + +func (s *Detach_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDetach_stmt(s) + } +} + + + + +func (p *SqlParser) Detach_stmt() (localctx IDetach_stmtContext) { + this := p + _ = this + + localctx = NewDetach_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 38, SqlParserRULE_detach_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(618) + p.Match(SqlParserK_DETACH) + } + p.SetState(620) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 72, p.GetParserRuleContext()) == 1 { + { + p.SetState(619) + p.Match(SqlParserK_DATABASE) + } + + + } + { + p.SetState(622) + p.Database_name() + } + + + + return localctx +} + + +// IDrop_index_stmtContext is an interface to support dynamic dispatch. +type IDrop_index_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDrop_index_stmtContext differentiates from other interfaces. + IsDrop_index_stmtContext() +} + +type Drop_index_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDrop_index_stmtContext() *Drop_index_stmtContext { + var p = new(Drop_index_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_drop_index_stmt + return p +} + +func (*Drop_index_stmtContext) IsDrop_index_stmtContext() {} + +func NewDrop_index_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_index_stmtContext { + var p = new(Drop_index_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_drop_index_stmt + + return p +} + +func (s *Drop_index_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_index_stmtContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *Drop_index_stmtContext) K_INDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEX, 0) +} + +func (s *Drop_index_stmtContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Drop_index_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Drop_index_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Drop_index_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Drop_index_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Drop_index_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_index_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Drop_index_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDrop_index_stmt(s) + } +} + +func (s *Drop_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDrop_index_stmt(s) + } +} + + + + +func (p *SqlParser) Drop_index_stmt() (localctx IDrop_index_stmtContext) { + this := p + _ = this + + localctx = NewDrop_index_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 40, SqlParserRULE_drop_index_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(624) + p.Match(SqlParserK_DROP) + } + { + p.SetState(625) + p.Match(SqlParserK_INDEX) + } + p.SetState(628) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 73, p.GetParserRuleContext()) == 1 { + { + p.SetState(626) + p.Match(SqlParserK_IF) + } + { + p.SetState(627) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(633) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 74, p.GetParserRuleContext()) == 1 { + { + p.SetState(630) + p.Database_name() + } + { + p.SetState(631) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(635) + p.Index_name() + } + + + + return localctx +} + + +// IDrop_table_stmtContext is an interface to support dynamic dispatch. +type IDrop_table_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDrop_table_stmtContext differentiates from other interfaces. + IsDrop_table_stmtContext() +} + +type Drop_table_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDrop_table_stmtContext() *Drop_table_stmtContext { + var p = new(Drop_table_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_drop_table_stmt + return p +} + +func (*Drop_table_stmtContext) IsDrop_table_stmtContext() {} + +func NewDrop_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_table_stmtContext { + var p = new(Drop_table_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_drop_table_stmt + + return p +} + +func (s *Drop_table_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_table_stmtContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *Drop_table_stmtContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *Drop_table_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Drop_table_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Drop_table_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Drop_table_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Drop_table_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Drop_table_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Drop_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDrop_table_stmt(s) + } +} + +func (s *Drop_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDrop_table_stmt(s) + } +} + + + + +func (p *SqlParser) Drop_table_stmt() (localctx IDrop_table_stmtContext) { + this := p + _ = this + + localctx = NewDrop_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 42, SqlParserRULE_drop_table_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(637) + p.Match(SqlParserK_DROP) + } + { + p.SetState(638) + p.Match(SqlParserK_TABLE) + } + p.SetState(641) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 75, p.GetParserRuleContext()) == 1 { + { + p.SetState(639) + p.Match(SqlParserK_IF) + } + { + p.SetState(640) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(646) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 76, p.GetParserRuleContext()) == 1 { + { + p.SetState(643) + p.Database_name() + } + { + p.SetState(644) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(648) + p.Table_name() + } + + + + return localctx +} + + +// IDrop_trigger_stmtContext is an interface to support dynamic dispatch. +type IDrop_trigger_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDrop_trigger_stmtContext differentiates from other interfaces. + IsDrop_trigger_stmtContext() +} + +type Drop_trigger_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDrop_trigger_stmtContext() *Drop_trigger_stmtContext { + var p = new(Drop_trigger_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_drop_trigger_stmt + return p +} + +func (*Drop_trigger_stmtContext) IsDrop_trigger_stmtContext() {} + +func NewDrop_trigger_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_trigger_stmtContext { + var p = new(Drop_trigger_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_drop_trigger_stmt + + return p +} + +func (s *Drop_trigger_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_trigger_stmtContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *Drop_trigger_stmtContext) K_TRIGGER() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRIGGER, 0) +} + +func (s *Drop_trigger_stmtContext) Trigger_name() ITrigger_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITrigger_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITrigger_nameContext) +} + +func (s *Drop_trigger_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Drop_trigger_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Drop_trigger_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Drop_trigger_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Drop_trigger_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_trigger_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Drop_trigger_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDrop_trigger_stmt(s) + } +} + +func (s *Drop_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDrop_trigger_stmt(s) + } +} + + + + +func (p *SqlParser) Drop_trigger_stmt() (localctx IDrop_trigger_stmtContext) { + this := p + _ = this + + localctx = NewDrop_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 44, SqlParserRULE_drop_trigger_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(650) + p.Match(SqlParserK_DROP) + } + { + p.SetState(651) + p.Match(SqlParserK_TRIGGER) + } + p.SetState(654) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 77, p.GetParserRuleContext()) == 1 { + { + p.SetState(652) + p.Match(SqlParserK_IF) + } + { + p.SetState(653) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(659) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 78, p.GetParserRuleContext()) == 1 { + { + p.SetState(656) + p.Database_name() + } + { + p.SetState(657) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(661) + p.Trigger_name() + } + + + + return localctx +} + + +// IDrop_view_stmtContext is an interface to support dynamic dispatch. +type IDrop_view_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDrop_view_stmtContext differentiates from other interfaces. + IsDrop_view_stmtContext() +} + +type Drop_view_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDrop_view_stmtContext() *Drop_view_stmtContext { + var p = new(Drop_view_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_drop_view_stmt + return p +} + +func (*Drop_view_stmtContext) IsDrop_view_stmtContext() {} + +func NewDrop_view_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_view_stmtContext { + var p = new(Drop_view_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_drop_view_stmt + + return p +} + +func (s *Drop_view_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Drop_view_stmtContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *Drop_view_stmtContext) K_VIEW() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIEW, 0) +} + +func (s *Drop_view_stmtContext) View_name() IView_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IView_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IView_nameContext) +} + +func (s *Drop_view_stmtContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *Drop_view_stmtContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *Drop_view_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Drop_view_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Drop_view_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Drop_view_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Drop_view_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDrop_view_stmt(s) + } +} + +func (s *Drop_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDrop_view_stmt(s) + } +} + + + + +func (p *SqlParser) Drop_view_stmt() (localctx IDrop_view_stmtContext) { + this := p + _ = this + + localctx = NewDrop_view_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 46, SqlParserRULE_drop_view_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(663) + p.Match(SqlParserK_DROP) + } + { + p.SetState(664) + p.Match(SqlParserK_VIEW) + } + p.SetState(667) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 79, p.GetParserRuleContext()) == 1 { + { + p.SetState(665) + p.Match(SqlParserK_IF) + } + { + p.SetState(666) + p.Match(SqlParserK_EXISTS) + } + + + } + p.SetState(672) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 80, p.GetParserRuleContext()) == 1 { + { + p.SetState(669) + p.Database_name() + } + { + p.SetState(670) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(674) + p.View_name() + } + + + + return localctx +} + + +// IFactored_select_stmtContext is an interface to support dynamic dispatch. +type IFactored_select_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFactored_select_stmtContext differentiates from other interfaces. + IsFactored_select_stmtContext() +} + +type Factored_select_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFactored_select_stmtContext() *Factored_select_stmtContext { + var p = new(Factored_select_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_factored_select_stmt + return p +} + +func (*Factored_select_stmtContext) IsFactored_select_stmtContext() {} + +func NewFactored_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Factored_select_stmtContext { + var p = new(Factored_select_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_factored_select_stmt + + return p +} + +func (s *Factored_select_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Factored_select_stmtContext) AllSelect_core() []ISelect_coreContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_coreContext); ok { + len++ + } + } + + tst := make([]ISelect_coreContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_coreContext); ok { + tst[i] = t.(ISelect_coreContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Select_core(i int) ISelect_coreContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_coreContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_coreContext) +} + +func (s *Factored_select_stmtContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *Factored_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Factored_select_stmtContext) AllCompound_operator() []ICompound_operatorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICompound_operatorContext); ok { + len++ + } + } + + tst := make([]ICompound_operatorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICompound_operatorContext); ok { + tst[i] = t.(ICompound_operatorContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Compound_operator(i int) ICompound_operatorContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompound_operatorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICompound_operatorContext) +} + +func (s *Factored_select_stmtContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Factored_select_stmtContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Factored_select_stmtContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Factored_select_stmtContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Factored_select_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Factored_select_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Factored_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *Factored_select_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Factored_select_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Factored_select_stmtContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Factored_select_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Factored_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Factored_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterFactored_select_stmt(s) + } +} + +func (s *Factored_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitFactored_select_stmt(s) + } +} + + + + +func (p *SqlParser) Factored_select_stmt() (localctx IFactored_select_stmtContext) { + this := p + _ = this + + localctx = NewFactored_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 48, SqlParserRULE_factored_select_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(688) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(676) + p.Match(SqlParserK_WITH) + } + p.SetState(678) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 81, p.GetParserRuleContext()) == 1 { + { + p.SetState(677) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(680) + p.Common_table_expression() + } + p.SetState(685) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(681) + p.Match(SqlParserCOMMA) + } + { + p.SetState(682) + p.Common_table_expression() + } + + + p.SetState(687) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(690) + p.Select_core() + } + p.SetState(696) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserK_EXCEPT || _la == SqlParserK_INTERSECT || _la == SqlParserK_UNION { + { + p.SetState(691) + p.Compound_operator() + } + { + p.SetState(692) + p.Select_core() + } + + + p.SetState(698) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(709) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(699) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(700) + p.Match(SqlParserK_BY) + } + { + p.SetState(701) + p.Ordering_term() + } + p.SetState(706) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(702) + p.Match(SqlParserCOMMA) + } + { + p.SetState(703) + p.Ordering_term() + } + + + p.SetState(708) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + p.SetState(717) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT { + { + p.SetState(711) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(712) + p.expr(0) + } + p.SetState(715) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(713) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(714) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// IInsert_stmtContext is an interface to support dynamic dispatch. +type IInsert_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsInsert_stmtContext differentiates from other interfaces. + IsInsert_stmtContext() +} + +type Insert_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyInsert_stmtContext() *Insert_stmtContext { + var p = new(Insert_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_insert_stmt + return p +} + +func (*Insert_stmtContext) IsInsert_stmtContext() {} + +func NewInsert_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Insert_stmtContext { + var p = new(Insert_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_insert_stmt + + return p +} + +func (s *Insert_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Insert_stmtContext) K_INTO() antlr.TerminalNode { + return s.GetToken(SqlParserK_INTO, 0) +} + +func (s *Insert_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Insert_stmtContext) K_INSERT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSERT, 0) +} + +func (s *Insert_stmtContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *Insert_stmtContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *Insert_stmtContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Insert_stmtContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Insert_stmtContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Insert_stmtContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Insert_stmtContext) K_VALUES() antlr.TerminalNode { + return s.GetToken(SqlParserK_VALUES, 0) +} + +func (s *Insert_stmtContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *Insert_stmtContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *Insert_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Insert_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Insert_stmtContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *Insert_stmtContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *Insert_stmtContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Insert_stmtContext) K_DEFAULT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFAULT, 0) +} + +func (s *Insert_stmtContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Insert_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Insert_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Insert_stmtContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Insert_stmtContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Insert_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Insert_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Insert_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Insert_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Insert_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterInsert_stmt(s) + } +} + +func (s *Insert_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitInsert_stmt(s) + } +} + + + + +func (p *SqlParser) Insert_stmt() (localctx IInsert_stmtContext) { + this := p + _ = this + + localctx = NewInsert_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 50, SqlParserRULE_insert_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(720) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(719) + p.With_clause() + } + + } + p.SetState(739) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 90, p.GetParserRuleContext()) { + case 1: + { + p.SetState(722) + p.Match(SqlParserK_INSERT) + } + + + case 2: + { + p.SetState(723) + p.Match(SqlParserK_REPLACE) + } + + + case 3: + { + p.SetState(724) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(725) + p.Match(SqlParserK_OR) + } + { + p.SetState(726) + p.Match(SqlParserK_REPLACE) + } + + + case 4: + { + p.SetState(727) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(728) + p.Match(SqlParserK_OR) + } + { + p.SetState(729) + p.Match(SqlParserK_ROLLBACK) + } + + + case 5: + { + p.SetState(730) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(731) + p.Match(SqlParserK_OR) + } + { + p.SetState(732) + p.Match(SqlParserK_ABORT) + } + + + case 6: + { + p.SetState(733) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(734) + p.Match(SqlParserK_OR) + } + { + p.SetState(735) + p.Match(SqlParserK_FAIL) + } + + + case 7: + { + p.SetState(736) + p.Match(SqlParserK_INSERT) + } + { + p.SetState(737) + p.Match(SqlParserK_OR) + } + { + p.SetState(738) + p.Match(SqlParserK_IGNORE) + } + + } + { + p.SetState(741) + p.Match(SqlParserK_INTO) + } + p.SetState(745) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 91, p.GetParserRuleContext()) == 1 { + { + p.SetState(742) + p.Database_name() + } + { + p.SetState(743) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(747) + p.Table_name() + } + p.SetState(759) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserOPEN_PAR { + { + p.SetState(748) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(749) + p.Column_name() + } + p.SetState(754) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(750) + p.Match(SqlParserCOMMA) + } + { + p.SetState(751) + p.Column_name() + } + + + p.SetState(756) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(757) + p.Match(SqlParserCLOSE_PAR) + } + + } + p.SetState(792) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 97, p.GetParserRuleContext()) { + case 1: + { + p.SetState(761) + p.Match(SqlParserK_VALUES) + } + { + p.SetState(762) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(763) + p.expr(0) + } + p.SetState(768) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(764) + p.Match(SqlParserCOMMA) + } + { + p.SetState(765) + p.expr(0) + } + + + p.SetState(770) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(771) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(786) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(772) + p.Match(SqlParserCOMMA) + } + { + p.SetState(773) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(774) + p.expr(0) + } + p.SetState(779) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(775) + p.Match(SqlParserCOMMA) + } + { + p.SetState(776) + p.expr(0) + } + + + p.SetState(781) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(782) + p.Match(SqlParserCLOSE_PAR) + } + + + p.SetState(788) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + case 2: + { + p.SetState(789) + p.Select_stmt() + } + + + case 3: + { + p.SetState(790) + p.Match(SqlParserK_DEFAULT) + } + { + p.SetState(791) + p.Match(SqlParserK_VALUES) + } + + } + + + + return localctx +} + + +// IPragma_stmtContext is an interface to support dynamic dispatch. +type IPragma_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsPragma_stmtContext differentiates from other interfaces. + IsPragma_stmtContext() +} + +type Pragma_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPragma_stmtContext() *Pragma_stmtContext { + var p = new(Pragma_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_pragma_stmt + return p +} + +func (*Pragma_stmtContext) IsPragma_stmtContext() {} + +func NewPragma_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_stmtContext { + var p = new(Pragma_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_pragma_stmt + + return p +} + +func (s *Pragma_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Pragma_stmtContext) K_PRAGMA() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRAGMA, 0) +} + +func (s *Pragma_stmtContext) Pragma_name() IPragma_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPragma_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IPragma_nameContext) +} + +func (s *Pragma_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Pragma_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Pragma_stmtContext) ASSIGN() antlr.TerminalNode { + return s.GetToken(SqlParserASSIGN, 0) +} + +func (s *Pragma_stmtContext) Pragma_value() IPragma_valueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IPragma_valueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IPragma_valueContext) +} + +func (s *Pragma_stmtContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Pragma_stmtContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Pragma_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Pragma_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Pragma_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterPragma_stmt(s) + } +} + +func (s *Pragma_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitPragma_stmt(s) + } +} + + + + +func (p *SqlParser) Pragma_stmt() (localctx IPragma_stmtContext) { + this := p + _ = this + + localctx = NewPragma_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 52, SqlParserRULE_pragma_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(794) + p.Match(SqlParserK_PRAGMA) + } + p.SetState(798) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 98, p.GetParserRuleContext()) == 1 { + { + p.SetState(795) + p.Database_name() + } + { + p.SetState(796) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(800) + p.Pragma_name() + } + p.SetState(807) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserASSIGN: + { + p.SetState(801) + p.Match(SqlParserASSIGN) + } + { + p.SetState(802) + p.Pragma_value() + } + + + case SqlParserOPEN_PAR: + { + p.SetState(803) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(804) + p.Pragma_value() + } + { + p.SetState(805) + p.Match(SqlParserCLOSE_PAR) + } + + + case SqlParserEOF, SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WITH, SqlParserUNEXPECTED_CHAR: + + + + default: + } + + + + return localctx +} + + +// IReindex_stmtContext is an interface to support dynamic dispatch. +type IReindex_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsReindex_stmtContext differentiates from other interfaces. + IsReindex_stmtContext() +} + +type Reindex_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyReindex_stmtContext() *Reindex_stmtContext { + var p = new(Reindex_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_reindex_stmt + return p +} + +func (*Reindex_stmtContext) IsReindex_stmtContext() {} + +func NewReindex_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Reindex_stmtContext { + var p = new(Reindex_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_reindex_stmt + + return p +} + +func (s *Reindex_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Reindex_stmtContext) K_REINDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_REINDEX, 0) +} + +func (s *Reindex_stmtContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *Reindex_stmtContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Reindex_stmtContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Reindex_stmtContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Reindex_stmtContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Reindex_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Reindex_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Reindex_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterReindex_stmt(s) + } +} + +func (s *Reindex_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitReindex_stmt(s) + } +} + + + + +func (p *SqlParser) Reindex_stmt() (localctx IReindex_stmtContext) { + this := p + _ = this + + localctx = NewReindex_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 54, SqlParserRULE_reindex_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(809) + p.Match(SqlParserK_REINDEX) + } + p.SetState(820) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 102, p.GetParserRuleContext()) == 1 { + { + p.SetState(810) + p.Collation_name() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 102, p.GetParserRuleContext()) == 2 { + p.SetState(814) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 100, p.GetParserRuleContext()) == 1 { + { + p.SetState(811) + p.Database_name() + } + { + p.SetState(812) + p.Match(SqlParserDOT) + } + + + } + p.SetState(818) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 101, p.GetParserRuleContext()) { + case 1: + { + p.SetState(816) + p.Table_name() + } + + + case 2: + { + p.SetState(817) + p.Index_name() + } + + } + + + } + + + + return localctx +} + + +// IRelease_stmtContext is an interface to support dynamic dispatch. +type IRelease_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsRelease_stmtContext differentiates from other interfaces. + IsRelease_stmtContext() +} + +type Release_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRelease_stmtContext() *Release_stmtContext { + var p = new(Release_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_release_stmt + return p +} + +func (*Release_stmtContext) IsRelease_stmtContext() {} + +func NewRelease_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Release_stmtContext { + var p = new(Release_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_release_stmt + + return p +} + +func (s *Release_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Release_stmtContext) K_RELEASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RELEASE, 0) +} + +func (s *Release_stmtContext) Savepoint_name() ISavepoint_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISavepoint_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISavepoint_nameContext) +} + +func (s *Release_stmtContext) K_SAVEPOINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SAVEPOINT, 0) +} + +func (s *Release_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Release_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Release_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterRelease_stmt(s) + } +} + +func (s *Release_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitRelease_stmt(s) + } +} + + + + +func (p *SqlParser) Release_stmt() (localctx IRelease_stmtContext) { + this := p + _ = this + + localctx = NewRelease_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 56, SqlParserRULE_release_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(822) + p.Match(SqlParserK_RELEASE) + } + p.SetState(824) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 103, p.GetParserRuleContext()) == 1 { + { + p.SetState(823) + p.Match(SqlParserK_SAVEPOINT) + } + + + } + { + p.SetState(826) + p.Savepoint_name() + } + + + + return localctx +} + + +// IRollback_stmtContext is an interface to support dynamic dispatch. +type IRollback_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsRollback_stmtContext differentiates from other interfaces. + IsRollback_stmtContext() +} + +type Rollback_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRollback_stmtContext() *Rollback_stmtContext { + var p = new(Rollback_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_rollback_stmt + return p +} + +func (*Rollback_stmtContext) IsRollback_stmtContext() {} + +func NewRollback_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rollback_stmtContext { + var p = new(Rollback_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_rollback_stmt + + return p +} + +func (s *Rollback_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Rollback_stmtContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Rollback_stmtContext) K_TRANSACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRANSACTION, 0) +} + +func (s *Rollback_stmtContext) K_TO() antlr.TerminalNode { + return s.GetToken(SqlParserK_TO, 0) +} + +func (s *Rollback_stmtContext) Savepoint_name() ISavepoint_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISavepoint_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISavepoint_nameContext) +} + +func (s *Rollback_stmtContext) Transaction_name() ITransaction_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITransaction_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITransaction_nameContext) +} + +func (s *Rollback_stmtContext) K_SAVEPOINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SAVEPOINT, 0) +} + +func (s *Rollback_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Rollback_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Rollback_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterRollback_stmt(s) + } +} + +func (s *Rollback_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitRollback_stmt(s) + } +} + + + + +func (p *SqlParser) Rollback_stmt() (localctx IRollback_stmtContext) { + this := p + _ = this + + localctx = NewRollback_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 58, SqlParserRULE_rollback_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(828) + p.Match(SqlParserK_ROLLBACK) + } + p.SetState(833) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TRANSACTION { + { + p.SetState(829) + p.Match(SqlParserK_TRANSACTION) + } + p.SetState(831) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 104, p.GetParserRuleContext()) == 1 { + { + p.SetState(830) + p.Transaction_name() + } + + + } + + } + p.SetState(840) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_TO { + { + p.SetState(835) + p.Match(SqlParserK_TO) + } + p.SetState(837) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 106, p.GetParserRuleContext()) == 1 { + { + p.SetState(836) + p.Match(SqlParserK_SAVEPOINT) + } + + + } + { + p.SetState(839) + p.Savepoint_name() + } + + } + + + + return localctx +} + + +// ISavepoint_stmtContext is an interface to support dynamic dispatch. +type ISavepoint_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSavepoint_stmtContext differentiates from other interfaces. + IsSavepoint_stmtContext() +} + +type Savepoint_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySavepoint_stmtContext() *Savepoint_stmtContext { + var p = new(Savepoint_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_savepoint_stmt + return p +} + +func (*Savepoint_stmtContext) IsSavepoint_stmtContext() {} + +func NewSavepoint_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_stmtContext { + var p = new(Savepoint_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_savepoint_stmt + + return p +} + +func (s *Savepoint_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Savepoint_stmtContext) K_SAVEPOINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SAVEPOINT, 0) +} + +func (s *Savepoint_stmtContext) Savepoint_name() ISavepoint_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISavepoint_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISavepoint_nameContext) +} + +func (s *Savepoint_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Savepoint_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Savepoint_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSavepoint_stmt(s) + } +} + +func (s *Savepoint_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSavepoint_stmt(s) + } +} + + + + +func (p *SqlParser) Savepoint_stmt() (localctx ISavepoint_stmtContext) { + this := p + _ = this + + localctx = NewSavepoint_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 60, SqlParserRULE_savepoint_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(842) + p.Match(SqlParserK_SAVEPOINT) + } + { + p.SetState(843) + p.Savepoint_name() + } + + + + return localctx +} + + +// ISimple_select_stmtContext is an interface to support dynamic dispatch. +type ISimple_select_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSimple_select_stmtContext differentiates from other interfaces. + IsSimple_select_stmtContext() +} + +type Simple_select_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySimple_select_stmtContext() *Simple_select_stmtContext { + var p = new(Simple_select_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_simple_select_stmt + return p +} + +func (*Simple_select_stmtContext) IsSimple_select_stmtContext() {} + +func NewSimple_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Simple_select_stmtContext { + var p = new(Simple_select_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_simple_select_stmt + + return p +} + +func (s *Simple_select_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Simple_select_stmtContext) Select_core() ISelect_coreContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_coreContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_coreContext) +} + +func (s *Simple_select_stmtContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *Simple_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Simple_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Simple_select_stmtContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Simple_select_stmtContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Simple_select_stmtContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Simple_select_stmtContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Simple_select_stmtContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Simple_select_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Simple_select_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Simple_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *Simple_select_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Simple_select_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Simple_select_stmtContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Simple_select_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Simple_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Simple_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSimple_select_stmt(s) + } +} + +func (s *Simple_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSimple_select_stmt(s) + } +} + + + + +func (p *SqlParser) Simple_select_stmt() (localctx ISimple_select_stmtContext) { + this := p + _ = this + + localctx = NewSimple_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 62, SqlParserRULE_simple_select_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(857) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(845) + p.Match(SqlParserK_WITH) + } + p.SetState(847) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 108, p.GetParserRuleContext()) == 1 { + { + p.SetState(846) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(849) + p.Common_table_expression() + } + p.SetState(854) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(850) + p.Match(SqlParserCOMMA) + } + { + p.SetState(851) + p.Common_table_expression() + } + + + p.SetState(856) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(859) + p.Select_core() + } + p.SetState(870) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(860) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(861) + p.Match(SqlParserK_BY) + } + { + p.SetState(862) + p.Ordering_term() + } + p.SetState(867) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(863) + p.Match(SqlParserCOMMA) + } + { + p.SetState(864) + p.Ordering_term() + } + + + p.SetState(869) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + p.SetState(878) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT { + { + p.SetState(872) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(873) + p.expr(0) + } + p.SetState(876) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(874) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(875) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// ISelect_stmtContext is an interface to support dynamic dispatch. +type ISelect_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSelect_stmtContext differentiates from other interfaces. + IsSelect_stmtContext() +} + +type Select_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelect_stmtContext() *Select_stmtContext { + var p = new(Select_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_select_stmt + return p +} + +func (*Select_stmtContext) IsSelect_stmtContext() {} + +func NewSelect_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_stmtContext { + var p = new(Select_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_select_stmt + + return p +} + +func (s *Select_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Select_stmtContext) AllSelect_or_values() []ISelect_or_valuesContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_or_valuesContext); ok { + len++ + } + } + + tst := make([]ISelect_or_valuesContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_or_valuesContext); ok { + tst[i] = t.(ISelect_or_valuesContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Select_or_values(i int) ISelect_or_valuesContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_or_valuesContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_or_valuesContext) +} + +func (s *Select_stmtContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *Select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + len++ + } + } + + tst := make([]ICommon_table_expressionContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICommon_table_expressionContext); ok { + tst[i] = t.(ICommon_table_expressionContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICommon_table_expressionContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICommon_table_expressionContext) +} + +func (s *Select_stmtContext) AllCompound_operator() []ICompound_operatorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICompound_operatorContext); ok { + len++ + } + } + + tst := make([]ICompound_operatorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICompound_operatorContext); ok { + tst[i] = t.(ICompound_operatorContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Compound_operator(i int) ICompound_operatorContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICompound_operatorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICompound_operatorContext) +} + +func (s *Select_stmtContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Select_stmtContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Select_stmtContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Select_stmtContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Select_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Select_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Select_stmtContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *Select_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Select_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Select_stmtContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Select_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSelect_stmt(s) + } +} + +func (s *Select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSelect_stmt(s) + } +} + + + + +func (p *SqlParser) Select_stmt() (localctx ISelect_stmtContext) { + this := p + _ = this + + localctx = NewSelect_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 64, SqlParserRULE_select_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(892) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(880) + p.Match(SqlParserK_WITH) + } + p.SetState(882) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { + { + p.SetState(881) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(884) + p.Common_table_expression() + } + p.SetState(889) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(885) + p.Match(SqlParserCOMMA) + } + { + p.SetState(886) + p.Common_table_expression() + } + + + p.SetState(891) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(894) + p.Select_or_values() + } + p.SetState(900) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(895) + p.Compound_operator() + } + { + p.SetState(896) + p.Select_or_values() + } + + + } + p.SetState(902) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) + } + p.SetState(913) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { + { + p.SetState(903) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(904) + p.Match(SqlParserK_BY) + } + { + p.SetState(905) + p.Ordering_term() + } + p.SetState(910) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 119, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(906) + p.Match(SqlParserCOMMA) + } + { + p.SetState(907) + p.Ordering_term() + } + + + } + p.SetState(912) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 119, p.GetParserRuleContext()) + } + + + } + p.SetState(921) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { + { + p.SetState(915) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(916) + p.expr(0) + } + p.SetState(919) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { + { + p.SetState(917) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(918) + p.expr(0) + } + + + } + + + } + + + + return localctx +} + + +// ISelect_or_valuesContext is an interface to support dynamic dispatch. +type ISelect_or_valuesContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSelect_or_valuesContext differentiates from other interfaces. + IsSelect_or_valuesContext() +} + +type Select_or_valuesContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelect_or_valuesContext() *Select_or_valuesContext { + var p = new(Select_or_valuesContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_select_or_values + return p +} + +func (*Select_or_valuesContext) IsSelect_or_valuesContext() {} + +func NewSelect_or_valuesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_or_valuesContext { + var p = new(Select_or_valuesContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_select_or_values + + return p +} + +func (s *Select_or_valuesContext) GetParser() antlr.Parser { return s.parser } + +func (s *Select_or_valuesContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) +} + +func (s *Select_or_valuesContext) AllResult_column() []IResult_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IResult_columnContext); ok { + len++ + } + } + + tst := make([]IResult_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IResult_columnContext); ok { + tst[i] = t.(IResult_columnContext) + i++ + } + } + + return tst +} + +func (s *Select_or_valuesContext) Result_column(i int) IResult_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResult_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IResult_columnContext) +} + +func (s *Select_or_valuesContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Select_or_valuesContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Select_or_valuesContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *Select_or_valuesContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Select_or_valuesContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Select_or_valuesContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Select_or_valuesContext) K_GROUP() antlr.TerminalNode { + return s.GetToken(SqlParserK_GROUP, 0) +} + +func (s *Select_or_valuesContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Select_or_valuesContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DISTINCT, 0) +} + +func (s *Select_or_valuesContext) K_ALL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, 0) +} + +func (s *Select_or_valuesContext) AllTable_or_subquery() []ITable_or_subqueryContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + len++ + } + } + + tst := make([]ITable_or_subqueryContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_or_subqueryContext); ok { + tst[i] = t.(ITable_or_subqueryContext) + i++ + } + } + + return tst +} + +func (s *Select_or_valuesContext) Table_or_subquery(i int) ITable_or_subqueryContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_subqueryContext) +} + +func (s *Select_or_valuesContext) Join_clause() IJoin_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IJoin_clauseContext) +} + +func (s *Select_or_valuesContext) K_HAVING() antlr.TerminalNode { + return s.GetToken(SqlParserK_HAVING, 0) +} + +func (s *Select_or_valuesContext) K_VALUES() antlr.TerminalNode { + return s.GetToken(SqlParserK_VALUES, 0) +} + +func (s *Select_or_valuesContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *Select_or_valuesContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *Select_or_valuesContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *Select_or_valuesContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *Select_or_valuesContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Select_or_valuesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Select_or_valuesContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSelect_or_values(s) + } +} + +func (s *Select_or_valuesContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSelect_or_values(s) + } +} + + + + +func (p *SqlParser) Select_or_values() (localctx ISelect_or_valuesContext) { + this := p + _ = this + + localctx = NewSelect_or_valuesContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 66, SqlParserRULE_select_or_values) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.SetState(997) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_SELECT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(923) + p.Match(SqlParserK_SELECT) + } + p.SetState(925) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 { + { + p.SetState(924) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ALL || _la == SqlParserK_DISTINCT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + { + p.SetState(927) + p.Result_column() + } + p.SetState(932) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 124, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(928) + p.Match(SqlParserCOMMA) + } + { + p.SetState(929) + p.Result_column() + } + + + } + p.SetState(934) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 124, p.GetParserRuleContext()) + } + p.SetState(947) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { + { + p.SetState(935) + p.Match(SqlParserK_FROM) + } + p.SetState(945) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 126, p.GetParserRuleContext()) { + case 1: + { + p.SetState(936) + p.Table_or_subquery() + } + p.SetState(941) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 125, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(937) + p.Match(SqlParserCOMMA) + } + { + p.SetState(938) + p.Table_or_subquery() + } + + + } + p.SetState(943) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 125, p.GetParserRuleContext()) + } + + + case 2: + { + p.SetState(944) + p.Join_clause() + } + + } + + + } + p.SetState(951) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 128, p.GetParserRuleContext()) == 1 { + { + p.SetState(949) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(950) + p.expr(0) + } + + + } + p.SetState(967) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { + { + p.SetState(953) + p.Match(SqlParserK_GROUP) + } + { + p.SetState(954) + p.Match(SqlParserK_BY) + } + { + p.SetState(955) + p.expr(0) + } + p.SetState(960) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 129, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(956) + p.Match(SqlParserCOMMA) + } + { + p.SetState(957) + p.expr(0) + } + + + } + p.SetState(962) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 129, p.GetParserRuleContext()) + } + p.SetState(965) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 130, p.GetParserRuleContext()) == 1 { + { + p.SetState(963) + p.Match(SqlParserK_HAVING) + } + { + p.SetState(964) + p.expr(0) + } + + + } + + + } + + + case SqlParserK_VALUES: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(969) + p.Match(SqlParserK_VALUES) + } + { + p.SetState(970) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(971) + p.expr(0) + } + p.SetState(976) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(972) + p.Match(SqlParserCOMMA) + } + { + p.SetState(973) + p.expr(0) + } + + + p.SetState(978) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(979) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(994) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 134, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(980) + p.Match(SqlParserCOMMA) + } + { + p.SetState(981) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(982) + p.expr(0) + } + p.SetState(987) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(983) + p.Match(SqlParserCOMMA) + } + { + p.SetState(984) + p.expr(0) + } + + + p.SetState(989) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(990) + p.Match(SqlParserCLOSE_PAR) + } + + + } + p.SetState(996) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 134, p.GetParserRuleContext()) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + return localctx +} + + +// IUpdate_stmtContext is an interface to support dynamic dispatch. +type IUpdate_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsUpdate_stmtContext differentiates from other interfaces. + IsUpdate_stmtContext() +} + +type Update_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUpdate_stmtContext() *Update_stmtContext { + var p = new(Update_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_update_stmt + return p +} + +func (*Update_stmtContext) IsUpdate_stmtContext() {} + +func NewUpdate_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmtContext { + var p = new(Update_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_update_stmt + + return p +} + +func (s *Update_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Update_stmtContext) K_UPDATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, 0) +} + +func (s *Update_stmtContext) Qualified_table_name() IQualified_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQualified_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IQualified_table_nameContext) +} + +func (s *Update_stmtContext) K_SET() antlr.TerminalNode { + return s.GetToken(SqlParserK_SET, 0) +} + +func (s *Update_stmtContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Update_stmtContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Update_stmtContext) AllASSIGN() []antlr.TerminalNode { + return s.GetTokens(SqlParserASSIGN) +} + +func (s *Update_stmtContext) ASSIGN(i int) antlr.TerminalNode { + return s.GetToken(SqlParserASSIGN, i) +} + +func (s *Update_stmtContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Update_stmtContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Update_stmtContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Update_stmtContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *Update_stmtContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Update_stmtContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Update_stmtContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *Update_stmtContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Update_stmtContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Update_stmtContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Update_stmtContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Update_stmtContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Update_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Update_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Update_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterUpdate_stmt(s) + } +} + +func (s *Update_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitUpdate_stmt(s) + } +} + + + + +func (p *SqlParser) Update_stmt() (localctx IUpdate_stmtContext) { + this := p + _ = this + + localctx = NewUpdate_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 68, SqlParserRULE_update_stmt) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1000) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(999) + p.With_clause() + } + + } + { + p.SetState(1002) + p.Match(SqlParserK_UPDATE) + } + p.SetState(1013) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 1 { + { + p.SetState(1003) + p.Match(SqlParserK_OR) + } + { + p.SetState(1004) + p.Match(SqlParserK_ROLLBACK) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 2 { + { + p.SetState(1005) + p.Match(SqlParserK_OR) + } + { + p.SetState(1006) + p.Match(SqlParserK_ABORT) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 3 { + { + p.SetState(1007) + p.Match(SqlParserK_OR) + } + { + p.SetState(1008) + p.Match(SqlParserK_REPLACE) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 4 { + { + p.SetState(1009) + p.Match(SqlParserK_OR) + } + { + p.SetState(1010) + p.Match(SqlParserK_FAIL) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 5 { + { + p.SetState(1011) + p.Match(SqlParserK_OR) + } + { + p.SetState(1012) + p.Match(SqlParserK_IGNORE) + } + + + } + { + p.SetState(1015) + p.Qualified_table_name() + } + { + p.SetState(1016) + p.Match(SqlParserK_SET) + } + { + p.SetState(1017) + p.Column_name() + } + { + p.SetState(1018) + p.Match(SqlParserASSIGN) + } + { + p.SetState(1019) + p.expr(0) + } + p.SetState(1027) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1020) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1021) + p.Column_name() + } + { + p.SetState(1022) + p.Match(SqlParserASSIGN) + } + { + p.SetState(1023) + p.expr(0) + } + + + p.SetState(1029) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1032) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(1030) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(1031) + p.expr(0) + } + + } + + + + return localctx +} + + +// IUpdate_stmt_limitedContext is an interface to support dynamic dispatch. +type IUpdate_stmt_limitedContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsUpdate_stmt_limitedContext differentiates from other interfaces. + IsUpdate_stmt_limitedContext() +} + +type Update_stmt_limitedContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUpdate_stmt_limitedContext() *Update_stmt_limitedContext { + var p = new(Update_stmt_limitedContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_update_stmt_limited + return p +} + +func (*Update_stmt_limitedContext) IsUpdate_stmt_limitedContext() {} + +func NewUpdate_stmt_limitedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmt_limitedContext { + var p = new(Update_stmt_limitedContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_update_stmt_limited + + return p +} + +func (s *Update_stmt_limitedContext) GetParser() antlr.Parser { return s.parser } + +func (s *Update_stmt_limitedContext) K_UPDATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, 0) +} + +func (s *Update_stmt_limitedContext) Qualified_table_name() IQualified_table_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IQualified_table_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IQualified_table_nameContext) +} + +func (s *Update_stmt_limitedContext) K_SET() antlr.TerminalNode { + return s.GetToken(SqlParserK_SET, 0) +} + +func (s *Update_stmt_limitedContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Update_stmt_limitedContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Update_stmt_limitedContext) AllASSIGN() []antlr.TerminalNode { + return s.GetTokens(SqlParserASSIGN) +} + +func (s *Update_stmt_limitedContext) ASSIGN(i int) antlr.TerminalNode { + return s.GetToken(SqlParserASSIGN, i) +} + +func (s *Update_stmt_limitedContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Update_stmt_limitedContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Update_stmt_limitedContext) With_clause() IWith_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IWith_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IWith_clauseContext) +} + +func (s *Update_stmt_limitedContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *Update_stmt_limitedContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Update_stmt_limitedContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Update_stmt_limitedContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *Update_stmt_limitedContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Update_stmt_limitedContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Update_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Update_stmt_limitedContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Update_stmt_limitedContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Update_stmt_limitedContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *Update_stmt_limitedContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *Update_stmt_limitedContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Update_stmt_limitedContext) AllOrdering_term() []IOrdering_termContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IOrdering_termContext); ok { + len++ + } + } + + tst := make([]IOrdering_termContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IOrdering_termContext); ok { + tst[i] = t.(IOrdering_termContext) + i++ + } + } + + return tst +} + +func (s *Update_stmt_limitedContext) Ordering_term(i int) IOrdering_termContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IOrdering_termContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IOrdering_termContext) +} + +func (s *Update_stmt_limitedContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *Update_stmt_limitedContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Update_stmt_limitedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Update_stmt_limitedContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterUpdate_stmt_limited(s) + } +} + +func (s *Update_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitUpdate_stmt_limited(s) + } +} + + + + +func (p *SqlParser) Update_stmt_limited() (localctx IUpdate_stmt_limitedContext) { + this := p + _ = this + + localctx = NewUpdate_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 70, SqlParserRULE_update_stmt_limited) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1035) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WITH { + { + p.SetState(1034) + p.With_clause() + } + + } + { + p.SetState(1037) + p.Match(SqlParserK_UPDATE) + } + p.SetState(1048) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 1 { + { + p.SetState(1038) + p.Match(SqlParserK_OR) + } + { + p.SetState(1039) + p.Match(SqlParserK_ROLLBACK) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 2 { + { + p.SetState(1040) + p.Match(SqlParserK_OR) + } + { + p.SetState(1041) + p.Match(SqlParserK_ABORT) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 3 { + { + p.SetState(1042) + p.Match(SqlParserK_OR) + } + { + p.SetState(1043) + p.Match(SqlParserK_REPLACE) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 4 { + { + p.SetState(1044) + p.Match(SqlParserK_OR) + } + { + p.SetState(1045) + p.Match(SqlParserK_FAIL) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 5 { + { + p.SetState(1046) + p.Match(SqlParserK_OR) + } + { + p.SetState(1047) + p.Match(SqlParserK_IGNORE) + } + + + } + { + p.SetState(1050) + p.Qualified_table_name() + } + { + p.SetState(1051) + p.Match(SqlParserK_SET) + } + { + p.SetState(1052) + p.Column_name() + } + { + p.SetState(1053) + p.Match(SqlParserASSIGN) + } + { + p.SetState(1054) + p.expr(0) + } + p.SetState(1062) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1055) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1056) + p.Column_name() + } + { + p.SetState(1057) + p.Match(SqlParserASSIGN) + } + { + p.SetState(1058) + p.expr(0) + } + + + p.SetState(1064) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1067) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(1065) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(1066) + p.expr(0) + } + + } + p.SetState(1087) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_LIMIT || _la == SqlParserK_ORDER { + p.SetState(1079) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ORDER { + { + p.SetState(1069) + p.Match(SqlParserK_ORDER) + } + { + p.SetState(1070) + p.Match(SqlParserK_BY) + } + { + p.SetState(1071) + p.Ordering_term() + } + p.SetState(1076) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1072) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1073) + p.Ordering_term() + } + + + p.SetState(1078) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + } + { + p.SetState(1081) + p.Match(SqlParserK_LIMIT) + } + { + p.SetState(1082) + p.expr(0) + } + p.SetState(1085) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { + { + p.SetState(1083) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1084) + p.expr(0) + } + + } + + } + + + + return localctx +} + + +// IVacuum_stmtContext is an interface to support dynamic dispatch. +type IVacuum_stmtContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsVacuum_stmtContext differentiates from other interfaces. + IsVacuum_stmtContext() +} + +type Vacuum_stmtContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyVacuum_stmtContext() *Vacuum_stmtContext { + var p = new(Vacuum_stmtContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_vacuum_stmt + return p +} + +func (*Vacuum_stmtContext) IsVacuum_stmtContext() {} + +func NewVacuum_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Vacuum_stmtContext { + var p = new(Vacuum_stmtContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_vacuum_stmt + + return p +} + +func (s *Vacuum_stmtContext) GetParser() antlr.Parser { return s.parser } + +func (s *Vacuum_stmtContext) K_VACUUM() antlr.TerminalNode { + return s.GetToken(SqlParserK_VACUUM, 0) +} + +func (s *Vacuum_stmtContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Vacuum_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Vacuum_stmtContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterVacuum_stmt(s) + } +} + +func (s *Vacuum_stmtContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitVacuum_stmt(s) + } +} + + + + +func (p *SqlParser) Vacuum_stmt() (localctx IVacuum_stmtContext) { + this := p + _ = this + + localctx = NewVacuum_stmtContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 72, SqlParserRULE_vacuum_stmt) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1089) + p.Match(SqlParserK_VACUUM) + } + + + + return localctx +} + + +// IColumn_defContext is an interface to support dynamic dispatch. +type IColumn_defContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_defContext differentiates from other interfaces. + IsColumn_defContext() +} + +type Column_defContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_defContext() *Column_defContext { + var p = new(Column_defContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_def + return p +} + +func (*Column_defContext) IsColumn_defContext() {} + +func NewColumn_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defContext { + var p = new(Column_defContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_def + + return p +} + +func (s *Column_defContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_defContext) Column_name() IColumn_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Column_defContext) AllColumn_constraint() []IColumn_constraintContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_constraintContext); ok { + len++ + } + } + + tst := make([]IColumn_constraintContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_constraintContext); ok { + tst[i] = t.(IColumn_constraintContext) + i++ + } + } + + return tst +} + +func (s *Column_defContext) Column_constraint(i int) IColumn_constraintContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraintContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraintContext) +} + +func (s *Column_defContext) AllType_name() []IType_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IType_nameContext); ok { + len++ + } + } + + tst := make([]IType_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IType_nameContext); ok { + tst[i] = t.(IType_nameContext) + i++ + } + } + + return tst +} + +func (s *Column_defContext) Type_name(i int) IType_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IType_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IType_nameContext) +} + +func (s *Column_defContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_defContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_def(s) + } +} + +func (s *Column_defContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_def(s) + } +} + + + + +func (p *SqlParser) Column_def() (localctx IColumn_defContext) { + this := p + _ = this + + localctx = NewColumn_defContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 74, SqlParserRULE_column_def) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1091) + p.Column_name() + } + p.SetState(1096) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 149, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + p.SetState(1094) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 148, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1092) + p.Column_constraint() + } + + + case 2: + { + p.SetState(1093) + p.Type_name() + } + + } + + } + p.SetState(1098) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 149, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// IType_nameContext is an interface to support dynamic dispatch. +type IType_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsType_nameContext differentiates from other interfaces. + IsType_nameContext() +} + +type Type_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyType_nameContext() *Type_nameContext { + var p = new(Type_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_type_name + return p +} + +func (*Type_nameContext) IsType_nameContext() {} + +func NewType_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Type_nameContext { + var p = new(Type_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_type_name + + return p +} + +func (s *Type_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Type_nameContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Type_nameContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Type_nameContext) AllSigned_number() []ISigned_numberContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISigned_numberContext); ok { + len++ + } + } + + tst := make([]ISigned_numberContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISigned_numberContext); ok { + tst[i] = t.(ISigned_numberContext) + i++ + } + } + + return tst +} + +func (s *Type_nameContext) Signed_number(i int) ISigned_numberContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISigned_numberContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISigned_numberContext) +} + +func (s *Type_nameContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Type_nameContext) COMMA() antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, 0) +} + +func (s *Type_nameContext) AllAny_name() []IAny_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAny_nameContext); ok { + len++ + } + } + + tst := make([]IAny_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAny_nameContext); ok { + tst[i] = t.(IAny_nameContext) + i++ + } + } + + return tst +} + +func (s *Type_nameContext) Any_name(i int) IAny_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Type_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Type_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Type_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterType_name(s) + } +} + +func (s *Type_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitType_name(s) + } +} + + + + +func (p *SqlParser) Type_name() (localctx IType_nameContext) { + this := p + _ = this + + localctx = NewType_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 76, SqlParserRULE_type_name) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1099) + p.Name() + } + p.SetState(1119) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 153, p.GetParserRuleContext()) == 1 { + { + p.SetState(1100) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1101) + p.Signed_number() + } + p.SetState(1103) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { + { + p.SetState(1102) + p.Any_name() + } + + } + { + p.SetState(1105) + p.Match(SqlParserCLOSE_PAR) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 153, p.GetParserRuleContext()) == 2 { + { + p.SetState(1107) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1108) + p.Signed_number() + } + p.SetState(1110) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { + { + p.SetState(1109) + p.Any_name() + } + + } + { + p.SetState(1112) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1113) + p.Signed_number() + } + p.SetState(1115) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { + { + p.SetState(1114) + p.Any_name() + } + + } + { + p.SetState(1117) + p.Match(SqlParserCLOSE_PAR) + } + + + } + + + + return localctx +} + + +// IColumn_constraintContext is an interface to support dynamic dispatch. +type IColumn_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraintContext differentiates from other interfaces. + IsColumn_constraintContext() +} + +type Column_constraintContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraintContext() *Column_constraintContext { + var p = new(Column_constraintContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint + return p +} + +func (*Column_constraintContext) IsColumn_constraintContext() {} + +func NewColumn_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraintContext { + var p = new(Column_constraintContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint + + return p +} + +func (s *Column_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraintContext) Column_constraint_primary_key() IColumn_constraint_primary_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraint_primary_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraint_primary_keyContext) +} + +func (s *Column_constraintContext) Column_constraint_foreign_key() IColumn_constraint_foreign_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraint_foreign_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraint_foreign_keyContext) +} + +func (s *Column_constraintContext) Column_constraint_not_null() IColumn_constraint_not_nullContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraint_not_nullContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraint_not_nullContext) +} + +func (s *Column_constraintContext) Column_constraint_null() IColumn_constraint_nullContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_constraint_nullContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_constraint_nullContext) +} + +func (s *Column_constraintContext) K_UNIQUE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNIQUE, 0) +} + +func (s *Column_constraintContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Column_constraintContext) K_CHECK() antlr.TerminalNode { + return s.GetToken(SqlParserK_CHECK, 0) +} + +func (s *Column_constraintContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Column_constraintContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Column_constraintContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Column_constraintContext) Column_default() IColumn_defaultContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_defaultContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_defaultContext) +} + +func (s *Column_constraintContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *Column_constraintContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *Column_constraintContext) K_CONSTRAINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONSTRAINT, 0) +} + +func (s *Column_constraintContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Column_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraintContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint(s) + } +} + +func (s *Column_constraintContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint(s) + } +} + + + + +func (p *SqlParser) Column_constraint() (localctx IColumn_constraintContext) { + this := p + _ = this + + localctx = NewColumn_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 78, SqlParserRULE_column_constraint) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1123) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_CONSTRAINT { + { + p.SetState(1121) + p.Match(SqlParserK_CONSTRAINT) + } + { + p.SetState(1122) + p.Name() + } + + } + p.SetState(1139) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_PRIMARY: + { + p.SetState(1125) + p.Column_constraint_primary_key() + } + + + case SqlParserK_REFERENCES: + { + p.SetState(1126) + p.Column_constraint_foreign_key() + } + + + case SqlParserK_NOT: + { + p.SetState(1127) + p.Column_constraint_not_null() + } + + + case SqlParserK_NULL: + { + p.SetState(1128) + p.Column_constraint_null() + } + + + case SqlParserK_UNIQUE: + { + p.SetState(1129) + p.Match(SqlParserK_UNIQUE) + } + { + p.SetState(1130) + p.Conflict_clause() + } + + + case SqlParserK_CHECK: + { + p.SetState(1131) + p.Match(SqlParserK_CHECK) + } + { + p.SetState(1132) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1133) + p.expr(0) + } + { + p.SetState(1134) + p.Match(SqlParserCLOSE_PAR) + } + + + case SqlParserK_DEFAULT: + { + p.SetState(1136) + p.Column_default() + } + + + case SqlParserK_COLLATE: + { + p.SetState(1137) + p.Match(SqlParserK_COLLATE) + } + { + p.SetState(1138) + p.Collation_name() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + + return localctx +} + + +// IColumn_constraint_primary_keyContext is an interface to support dynamic dispatch. +type IColumn_constraint_primary_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraint_primary_keyContext differentiates from other interfaces. + IsColumn_constraint_primary_keyContext() +} + +type Column_constraint_primary_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraint_primary_keyContext() *Column_constraint_primary_keyContext { + var p = new(Column_constraint_primary_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint_primary_key + return p +} + +func (*Column_constraint_primary_keyContext) IsColumn_constraint_primary_keyContext() {} + +func NewColumn_constraint_primary_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_primary_keyContext { + var p = new(Column_constraint_primary_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint_primary_key + + return p +} + +func (s *Column_constraint_primary_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraint_primary_keyContext) K_PRIMARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRIMARY, 0) +} + +func (s *Column_constraint_primary_keyContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Column_constraint_primary_keyContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Column_constraint_primary_keyContext) K_AUTOINCREMENT() antlr.TerminalNode { + return s.GetToken(SqlParserK_AUTOINCREMENT, 0) +} + +func (s *Column_constraint_primary_keyContext) K_ASC() antlr.TerminalNode { + return s.GetToken(SqlParserK_ASC, 0) +} + +func (s *Column_constraint_primary_keyContext) K_DESC() antlr.TerminalNode { + return s.GetToken(SqlParserK_DESC, 0) +} + +func (s *Column_constraint_primary_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraint_primary_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraint_primary_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint_primary_key(s) + } +} + +func (s *Column_constraint_primary_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint_primary_key(s) + } +} + + + + +func (p *SqlParser) Column_constraint_primary_key() (localctx IColumn_constraint_primary_keyContext) { + this := p + _ = this + + localctx = NewColumn_constraint_primary_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 80, SqlParserRULE_column_constraint_primary_key) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1141) + p.Match(SqlParserK_PRIMARY) + } + { + p.SetState(1142) + p.Match(SqlParserK_KEY) + } + p.SetState(1144) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { + { + p.SetState(1143) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + { + p.SetState(1146) + p.Conflict_clause() + } + p.SetState(1148) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { + { + p.SetState(1147) + p.Match(SqlParserK_AUTOINCREMENT) + } + + + } + + + + return localctx +} + + +// IColumn_constraint_foreign_keyContext is an interface to support dynamic dispatch. +type IColumn_constraint_foreign_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraint_foreign_keyContext differentiates from other interfaces. + IsColumn_constraint_foreign_keyContext() +} + +type Column_constraint_foreign_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraint_foreign_keyContext() *Column_constraint_foreign_keyContext { + var p = new(Column_constraint_foreign_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint_foreign_key + return p +} + +func (*Column_constraint_foreign_keyContext) IsColumn_constraint_foreign_keyContext() {} + +func NewColumn_constraint_foreign_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_foreign_keyContext { + var p = new(Column_constraint_foreign_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint_foreign_key + + return p +} + +func (s *Column_constraint_foreign_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraint_foreign_keyContext) Foreign_key_clause() IForeign_key_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForeign_key_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IForeign_key_clauseContext) +} + +func (s *Column_constraint_foreign_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraint_foreign_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraint_foreign_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint_foreign_key(s) + } +} + +func (s *Column_constraint_foreign_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint_foreign_key(s) + } +} + + + + +func (p *SqlParser) Column_constraint_foreign_key() (localctx IColumn_constraint_foreign_keyContext) { + this := p + _ = this + + localctx = NewColumn_constraint_foreign_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 82, SqlParserRULE_column_constraint_foreign_key) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1150) + p.Foreign_key_clause() + } + + + + return localctx +} + + +// IColumn_constraint_not_nullContext is an interface to support dynamic dispatch. +type IColumn_constraint_not_nullContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraint_not_nullContext differentiates from other interfaces. + IsColumn_constraint_not_nullContext() +} + +type Column_constraint_not_nullContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraint_not_nullContext() *Column_constraint_not_nullContext { + var p = new(Column_constraint_not_nullContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint_not_null + return p +} + +func (*Column_constraint_not_nullContext) IsColumn_constraint_not_nullContext() {} + +func NewColumn_constraint_not_nullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_not_nullContext { + var p = new(Column_constraint_not_nullContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint_not_null + + return p +} + +func (s *Column_constraint_not_nullContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraint_not_nullContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Column_constraint_not_nullContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *Column_constraint_not_nullContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Column_constraint_not_nullContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraint_not_nullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraint_not_nullContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint_not_null(s) + } +} + +func (s *Column_constraint_not_nullContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint_not_null(s) + } +} + + + + +func (p *SqlParser) Column_constraint_not_null() (localctx IColumn_constraint_not_nullContext) { + this := p + _ = this + + localctx = NewColumn_constraint_not_nullContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 84, SqlParserRULE_column_constraint_not_null) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1152) + p.Match(SqlParserK_NOT) + } + { + p.SetState(1153) + p.Match(SqlParserK_NULL) + } + { + p.SetState(1154) + p.Conflict_clause() + } + + + + return localctx +} + + +// IColumn_constraint_nullContext is an interface to support dynamic dispatch. +type IColumn_constraint_nullContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_constraint_nullContext differentiates from other interfaces. + IsColumn_constraint_nullContext() +} + +type Column_constraint_nullContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_constraint_nullContext() *Column_constraint_nullContext { + var p = new(Column_constraint_nullContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_constraint_null + return p +} + +func (*Column_constraint_nullContext) IsColumn_constraint_nullContext() {} + +func NewColumn_constraint_nullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_nullContext { + var p = new(Column_constraint_nullContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_constraint_null + + return p +} + +func (s *Column_constraint_nullContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_constraint_nullContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *Column_constraint_nullContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Column_constraint_nullContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_constraint_nullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_constraint_nullContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_constraint_null(s) + } +} + +func (s *Column_constraint_nullContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_constraint_null(s) + } +} + + + + +func (p *SqlParser) Column_constraint_null() (localctx IColumn_constraint_nullContext) { + this := p + _ = this + + localctx = NewColumn_constraint_nullContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 86, SqlParserRULE_column_constraint_null) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1156) + p.Match(SqlParserK_NULL) + } + { + p.SetState(1157) + p.Conflict_clause() + } + + + + return localctx +} + + +// IColumn_defaultContext is an interface to support dynamic dispatch. +type IColumn_defaultContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_defaultContext differentiates from other interfaces. + IsColumn_defaultContext() +} + +type Column_defaultContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_defaultContext() *Column_defaultContext { + var p = new(Column_defaultContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_default + return p +} + +func (*Column_defaultContext) IsColumn_defaultContext() {} + +func NewColumn_defaultContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defaultContext { + var p = new(Column_defaultContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_default + + return p +} + +func (s *Column_defaultContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_defaultContext) K_DEFAULT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFAULT, 0) +} + +func (s *Column_defaultContext) Column_default_value() IColumn_default_valueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_default_valueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_default_valueContext) +} + +func (s *Column_defaultContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Column_defaultContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Column_defaultContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Column_defaultContext) K_NEXTVAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NEXTVAL, 0) +} + +func (s *Column_defaultContext) AllAny_name() []IAny_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IAny_nameContext); ok { + len++ + } + } + + tst := make([]IAny_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IAny_nameContext); ok { + tst[i] = t.(IAny_nameContext) + i++ + } + } + + return tst +} + +func (s *Column_defaultContext) Any_name(i int) IAny_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Column_defaultContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_defaultContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_defaultContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_default(s) + } +} + +func (s *Column_defaultContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_default(s) + } +} + + + + +func (p *SqlParser) Column_default() (localctx IColumn_defaultContext) { + this := p + _ = this + + localctx = NewColumn_defaultContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 88, SqlParserRULE_column_default) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1159) + p.Match(SqlParserK_DEFAULT) + } + p.SetState(1171) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 158, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1160) + p.Column_default_value() + } + + + case 2: + { + p.SetState(1161) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1162) + p.expr(0) + } + { + p.SetState(1163) + p.Match(SqlParserCLOSE_PAR) + } + + + case 3: + { + p.SetState(1165) + p.Match(SqlParserK_NEXTVAL) + } + { + p.SetState(1166) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1167) + p.expr(0) + } + { + p.SetState(1168) + p.Match(SqlParserCLOSE_PAR) + } + + + case 4: + { + p.SetState(1170) + p.Any_name() + } + + } + p.SetState(1179) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { + { + p.SetState(1173) + p.Match(SqlParserT__0) + } + p.SetState(1175) + p.GetErrorHandler().Sync(p) + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + { + p.SetState(1174) + p.Any_name() + } + + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + p.SetState(1177) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 159, p.GetParserRuleContext()) + } + + + } + + + + return localctx +} + + +// IColumn_default_valueContext is an interface to support dynamic dispatch. +type IColumn_default_valueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_default_valueContext differentiates from other interfaces. + IsColumn_default_valueContext() +} + +type Column_default_valueContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_default_valueContext() *Column_default_valueContext { + var p = new(Column_default_valueContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_default_value + return p +} + +func (*Column_default_valueContext) IsColumn_default_valueContext() {} + +func NewColumn_default_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_default_valueContext { + var p = new(Column_default_valueContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_default_value + + return p +} + +func (s *Column_default_valueContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_default_valueContext) Signed_number() ISigned_numberContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISigned_numberContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISigned_numberContext) +} + +func (s *Column_default_valueContext) Literal_value() ILiteral_valueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteral_valueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ILiteral_valueContext) +} + +func (s *Column_default_valueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_default_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_default_valueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_default_value(s) + } +} + +func (s *Column_default_valueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_default_value(s) + } +} + + + + +func (p *SqlParser) Column_default_value() (localctx IColumn_default_valueContext) { + this := p + _ = this + + localctx = NewColumn_default_valueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 90, SqlParserRULE_column_default_value) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1183) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 161, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1181) + p.Signed_number() + } + + + case 2: + { + p.SetState(1182) + p.Literal_value() + } + + } + + + + return localctx +} + + +// IConflict_clauseContext is an interface to support dynamic dispatch. +type IConflict_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsConflict_clauseContext differentiates from other interfaces. + IsConflict_clauseContext() +} + +type Conflict_clauseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyConflict_clauseContext() *Conflict_clauseContext { + var p = new(Conflict_clauseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_conflict_clause + return p +} + +func (*Conflict_clauseContext) IsConflict_clauseContext() {} + +func NewConflict_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Conflict_clauseContext { + var p = new(Conflict_clauseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_conflict_clause + + return p +} + +func (s *Conflict_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *Conflict_clauseContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *Conflict_clauseContext) K_CONFLICT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONFLICT, 0) +} + +func (s *Conflict_clauseContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Conflict_clauseContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Conflict_clauseContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Conflict_clauseContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Conflict_clauseContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *Conflict_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Conflict_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Conflict_clauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterConflict_clause(s) + } +} + +func (s *Conflict_clauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitConflict_clause(s) + } +} + + + + +func (p *SqlParser) Conflict_clause() (localctx IConflict_clauseContext) { + this := p + _ = this + + localctx = NewConflict_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 92, SqlParserRULE_conflict_clause) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1188) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { + { + p.SetState(1185) + p.Match(SqlParserK_ON) + } + { + p.SetState(1186) + p.Match(SqlParserK_CONFLICT) + } + { + p.SetState(1187) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ABORT || _la == SqlParserK_FAIL || _la == SqlParserK_IGNORE || _la == SqlParserK_REPLACE || _la == SqlParserK_ROLLBACK) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + + + + return localctx +} + + +// IExprContext is an interface to support dynamic dispatch. +type IExprContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsExprContext differentiates from other interfaces. + IsExprContext() +} + +type ExprContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyExprContext() *ExprContext { + var p = new(ExprContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_expr + return p +} + +func (*ExprContext) IsExprContext() {} + +func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext { + var p = new(ExprContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_expr + + return p +} + +func (s *ExprContext) GetParser() antlr.Parser { return s.parser } + +func (s *ExprContext) Literal_value() ILiteral_valueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ILiteral_valueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ILiteral_valueContext) +} + +func (s *ExprContext) BIND_PARAMETER() antlr.TerminalNode { + return s.GetToken(SqlParserBIND_PARAMETER, 0) +} + +func (s *ExprContext) Column_name() IColumn_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *ExprContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *ExprContext) AllDOT() []antlr.TerminalNode { + return s.GetTokens(SqlParserDOT) +} + +func (s *ExprContext) DOT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserDOT, i) +} + +func (s *ExprContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *ExprContext) Unary_operator() IUnary_operatorContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IUnary_operatorContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IUnary_operatorContext) +} + +func (s *ExprContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *ExprContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *ExprContext) Function_name() IFunction_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFunction_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IFunction_nameContext) +} + +func (s *ExprContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *ExprContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *ExprContext) STAR() antlr.TerminalNode { + return s.GetToken(SqlParserSTAR, 0) +} + +func (s *ExprContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DISTINCT, 0) +} + +func (s *ExprContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *ExprContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *ExprContext) K_CAST() antlr.TerminalNode { + return s.GetToken(SqlParserK_CAST, 0) +} + +func (s *ExprContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *ExprContext) Type_name() IType_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IType_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IType_nameContext) +} + +func (s *ExprContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *ExprContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *ExprContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *ExprContext) K_CASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CASE, 0) +} + +func (s *ExprContext) K_END() antlr.TerminalNode { + return s.GetToken(SqlParserK_END, 0) +} + +func (s *ExprContext) AllK_WHEN() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_WHEN) +} + +func (s *ExprContext) K_WHEN(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_WHEN, i) +} + +func (s *ExprContext) AllK_THEN() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_THEN) +} + +func (s *ExprContext) K_THEN(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_THEN, i) +} + +func (s *ExprContext) K_ELSE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ELSE, 0) +} + +func (s *ExprContext) Raise_function() IRaise_functionContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IRaise_functionContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IRaise_functionContext) +} + +func (s *ExprContext) PIPE2() antlr.TerminalNode { + return s.GetToken(SqlParserPIPE2, 0) +} + +func (s *ExprContext) DIV() antlr.TerminalNode { + return s.GetToken(SqlParserDIV, 0) +} + +func (s *ExprContext) MOD() antlr.TerminalNode { + return s.GetToken(SqlParserMOD, 0) +} + +func (s *ExprContext) PLUS() antlr.TerminalNode { + return s.GetToken(SqlParserPLUS, 0) +} + +func (s *ExprContext) MINUS() antlr.TerminalNode { + return s.GetToken(SqlParserMINUS, 0) +} + +func (s *ExprContext) LT2() antlr.TerminalNode { + return s.GetToken(SqlParserLT2, 0) +} + +func (s *ExprContext) GT2() antlr.TerminalNode { + return s.GetToken(SqlParserGT2, 0) +} + +func (s *ExprContext) AMP() antlr.TerminalNode { + return s.GetToken(SqlParserAMP, 0) +} + +func (s *ExprContext) PIPE() antlr.TerminalNode { + return s.GetToken(SqlParserPIPE, 0) +} + +func (s *ExprContext) LT() antlr.TerminalNode { + return s.GetToken(SqlParserLT, 0) +} + +func (s *ExprContext) LT_EQ() antlr.TerminalNode { + return s.GetToken(SqlParserLT_EQ, 0) +} + +func (s *ExprContext) GT() antlr.TerminalNode { + return s.GetToken(SqlParserGT, 0) +} + +func (s *ExprContext) GT_EQ() antlr.TerminalNode { + return s.GetToken(SqlParserGT_EQ, 0) +} + +func (s *ExprContext) ASSIGN() antlr.TerminalNode { + return s.GetToken(SqlParserASSIGN, 0) +} + +func (s *ExprContext) EQ() antlr.TerminalNode { + return s.GetToken(SqlParserEQ, 0) +} + +func (s *ExprContext) NOT_EQ1() antlr.TerminalNode { + return s.GetToken(SqlParserNOT_EQ1, 0) +} + +func (s *ExprContext) NOT_EQ2() antlr.TerminalNode { + return s.GetToken(SqlParserNOT_EQ2, 0) +} + +func (s *ExprContext) K_IS() antlr.TerminalNode { + return s.GetToken(SqlParserK_IS, 0) +} + +func (s *ExprContext) K_IN() antlr.TerminalNode { + return s.GetToken(SqlParserK_IN, 0) +} + +func (s *ExprContext) K_LIKE() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIKE, 0) +} + +func (s *ExprContext) K_GLOB() antlr.TerminalNode { + return s.GetToken(SqlParserK_GLOB, 0) +} + +func (s *ExprContext) K_MATCH() antlr.TerminalNode { + return s.GetToken(SqlParserK_MATCH, 0) +} + +func (s *ExprContext) K_REGEXP() antlr.TerminalNode { + return s.GetToken(SqlParserK_REGEXP, 0) +} + +func (s *ExprContext) K_AND() antlr.TerminalNode { + return s.GetToken(SqlParserK_AND, 0) +} + +func (s *ExprContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *ExprContext) K_BETWEEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BETWEEN, 0) +} + +func (s *ExprContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *ExprContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *ExprContext) K_ESCAPE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ESCAPE, 0) +} + +func (s *ExprContext) K_ISNULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ISNULL, 0) +} + +func (s *ExprContext) K_NOTNULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOTNULL, 0) +} + +func (s *ExprContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *ExprContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *ExprContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterExpr(s) + } +} + +func (s *ExprContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitExpr(s) + } +} + + + + + +func (p *SqlParser) Expr() (localctx IExprContext) { + return p.expr(0) +} + +func (p *SqlParser) expr(_p int) (localctx IExprContext) { + this := p + _ = this + + var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() + _parentState := p.GetState() + localctx = NewExprContext(p, p.GetParserRuleContext(), _parentState) + var _prevctx IExprContext = localctx + var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. + _startState := 94 + p.EnterRecursionRule(localctx, 94, SqlParserRULE_expr, _p) + var _la int + + + defer func() { + p.UnrollRecursionContexts(_parentctx) + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1266) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 173, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1191) + p.Literal_value() + } + + + case 2: + { + p.SetState(1192) + p.Match(SqlParserBIND_PARAMETER) + } + + + case 3: + p.SetState(1201) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 164, p.GetParserRuleContext()) == 1 { + p.SetState(1196) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 163, p.GetParserRuleContext()) == 1 { + { + p.SetState(1193) + p.Database_name() + } + { + p.SetState(1194) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1198) + p.Table_name() + } + { + p.SetState(1199) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1203) + p.Column_name() + } + + + case 4: + { + p.SetState(1204) + p.Unary_operator() + } + { + p.SetState(1205) + p.expr(21) + } + + + case 5: + { + p.SetState(1207) + p.Function_name() + } + { + p.SetState(1208) + p.Match(SqlParserOPEN_PAR) + } + p.SetState(1221) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserOPEN_PAR, SqlParserPLUS, SqlParserMINUS, SqlParserTILDE, SqlParserK_ABORT, SqlParserK_ACTION, SqlParserK_ADD, SqlParserK_AFTER, SqlParserK_ALL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_AND, SqlParserK_AS, SqlParserK_ASC, SqlParserK_ATTACH, SqlParserK_AUTOINCREMENT, SqlParserK_BEFORE, SqlParserK_BEGIN, SqlParserK_BETWEEN, SqlParserK_BY, SqlParserK_CASCADE, SqlParserK_CASE, SqlParserK_CAST, SqlParserK_CHECK, SqlParserK_COLLATE, SqlParserK_COLUMN, SqlParserK_COMMIT, SqlParserK_CONFLICT, SqlParserK_CONSTRAINT, SqlParserK_CREATE, SqlParserK_CROSS, SqlParserK_CURRENT_DATE, SqlParserK_CURRENT_TIME, SqlParserK_CURRENT_TIMESTAMP, SqlParserK_DATABASE, SqlParserK_DEFAULT, SqlParserK_DEFERRABLE, SqlParserK_DEFERRED, SqlParserK_DELETE, SqlParserK_DESC, SqlParserK_DETACH, SqlParserK_DISTINCT, SqlParserK_DROP, SqlParserK_EACH, SqlParserK_ELSE, SqlParserK_END, SqlParserK_ENABLE, SqlParserK_ESCAPE, SqlParserK_EXCEPT, SqlParserK_EXCLUSIVE, SqlParserK_EXISTS, SqlParserK_EXPLAIN, SqlParserK_FAIL, SqlParserK_FOR, SqlParserK_FOREIGN, SqlParserK_FROM, SqlParserK_FULL, SqlParserK_GLOB, SqlParserK_GROUP, SqlParserK_HAVING, SqlParserK_IF, SqlParserK_IGNORE, SqlParserK_IMMEDIATE, SqlParserK_IN, SqlParserK_INDEX, SqlParserK_INDEXED, SqlParserK_INITIALLY, SqlParserK_INNER, SqlParserK_INSERT, SqlParserK_INSTEAD, SqlParserK_INTERSECT, SqlParserK_INTO, SqlParserK_IS, SqlParserK_ISNULL, SqlParserK_JOIN, SqlParserK_KEY, SqlParserK_LEFT, SqlParserK_LIKE, SqlParserK_LIMIT, SqlParserK_MATCH, SqlParserK_NATURAL, SqlParserK_NEXTVAL, SqlParserK_NO, SqlParserK_NOT, SqlParserK_NOTNULL, SqlParserK_NULL, SqlParserK_OF, SqlParserK_OFFSET, SqlParserK_ON, SqlParserK_OR, SqlParserK_ORDER, SqlParserK_OUTER, SqlParserK_PLAN, SqlParserK_PRAGMA, SqlParserK_PRIMARY, SqlParserK_QUERY, SqlParserK_RAISE, SqlParserK_RECURSIVE, SqlParserK_REFERENCES, SqlParserK_REGEXP, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_RENAME, SqlParserK_REPLACE, SqlParserK_RESTRICT, SqlParserK_RIGHT, SqlParserK_ROLLBACK, SqlParserK_ROW, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_TABLE, SqlParserK_TEMP, SqlParserK_TEMPORARY, SqlParserK_THEN, SqlParserK_TO, SqlParserK_TRANSACTION, SqlParserK_TRIGGER, SqlParserK_UNION, SqlParserK_UNIQUE, SqlParserK_UPDATE, SqlParserK_USING, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_VIEW, SqlParserK_VIRTUAL, SqlParserK_WHEN, SqlParserK_WHERE, SqlParserK_WITH, SqlParserK_WITHOUT, SqlParserIDENTIFIER, SqlParserNUMERIC_LITERAL, SqlParserBIND_PARAMETER, SqlParserSTRING_LITERAL, SqlParserBLOB_LITERAL: + p.SetState(1210) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { + { + p.SetState(1209) + p.Match(SqlParserK_DISTINCT) + } + + + } + { + p.SetState(1212) + p.expr(0) + } + p.SetState(1217) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1213) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1214) + p.expr(0) + } + + + p.SetState(1219) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + case SqlParserSTAR: + { + p.SetState(1220) + p.Match(SqlParserSTAR) + } + + + case SqlParserCLOSE_PAR: + + + + default: + } + { + p.SetState(1223) + p.Match(SqlParserCLOSE_PAR) + } + + + case 6: + { + p.SetState(1225) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1226) + p.expr(0) + } + { + p.SetState(1227) + p.Match(SqlParserCLOSE_PAR) + } + + + case 7: + { + p.SetState(1229) + p.Match(SqlParserK_CAST) + } + { + p.SetState(1230) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1231) + p.expr(0) + } + { + p.SetState(1232) + p.Match(SqlParserK_AS) + } + { + p.SetState(1233) + p.Type_name() + } + { + p.SetState(1234) + p.Match(SqlParserCLOSE_PAR) + } + + + case 8: + p.SetState(1240) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_EXISTS || _la == SqlParserK_NOT { + p.SetState(1237) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1236) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1239) + p.Match(SqlParserK_EXISTS) + } + + } + { + p.SetState(1242) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1243) + p.Select_stmt() + } + { + p.SetState(1244) + p.Match(SqlParserCLOSE_PAR) + } + + + case 9: + { + p.SetState(1246) + p.Match(SqlParserK_CASE) + } + p.SetState(1248) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 170, p.GetParserRuleContext()) == 1 { + { + p.SetState(1247) + p.expr(0) + } + + + } + p.SetState(1255) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for ok := true; ok; ok = _la == SqlParserK_WHEN { + { + p.SetState(1250) + p.Match(SqlParserK_WHEN) + } + { + p.SetState(1251) + p.expr(0) + } + { + p.SetState(1252) + p.Match(SqlParserK_THEN) + } + { + p.SetState(1253) + p.expr(0) + } + + + p.SetState(1257) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1261) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ELSE { + { + p.SetState(1259) + p.Match(SqlParserK_ELSE) + } + { + p.SetState(1260) + p.expr(0) + } + + } + { + p.SetState(1263) + p.Match(SqlParserK_END) + } + + + case 10: + { + p.SetState(1265) + p.Raise_function() + } + + } + p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) + p.SetState(1368) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 186, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + if p.GetParseListeners() != nil { + p.TriggerExitRuleEvent() + } + _prevctx = localctx + p.SetState(1366) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 185, p.GetParserRuleContext()) { + case 1: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1268) + + if !(p.Precpred(p.GetParserRuleContext(), 20)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 20)", "")) + } + { + p.SetState(1269) + p.Match(SqlParserPIPE2) + } + { + p.SetState(1270) + p.expr(21) + } + + + case 2: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1271) + + if !(p.Precpred(p.GetParserRuleContext(), 19)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) + } + { + p.SetState(1272) + _la = p.GetTokenStream().LA(1) + + if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserSTAR) | (1 << SqlParserDIV) | (1 << SqlParserMOD))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1273) + p.expr(20) + } + + + case 3: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1274) + + if !(p.Precpred(p.GetParserRuleContext(), 18)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) + } + { + p.SetState(1275) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserPLUS || _la == SqlParserMINUS) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1276) + p.expr(19) + } + + + case 4: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1277) + + if !(p.Precpred(p.GetParserRuleContext(), 17)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) + } + { + p.SetState(1278) + _la = p.GetTokenStream().LA(1) + + if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserLT2) | (1 << SqlParserGT2) | (1 << SqlParserAMP) | (1 << SqlParserPIPE))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1279) + p.expr(18) + } + + + case 5: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1280) + + if !(p.Precpred(p.GetParserRuleContext(), 16)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 16)", "")) + } + { + p.SetState(1281) + _la = p.GetTokenStream().LA(1) + + if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserLT) | (1 << SqlParserLT_EQ) | (1 << SqlParserGT) | (1 << SqlParserGT_EQ))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1282) + p.expr(17) + } + + + case 6: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1283) + + if !(p.Precpred(p.GetParserRuleContext(), 15)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) + } + p.SetState(1296) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 174, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1284) + p.Match(SqlParserASSIGN) + } + + + case 2: + { + p.SetState(1285) + p.Match(SqlParserEQ) + } + + + case 3: + { + p.SetState(1286) + p.Match(SqlParserNOT_EQ1) + } + + + case 4: + { + p.SetState(1287) + p.Match(SqlParserNOT_EQ2) + } + + + case 5: + { + p.SetState(1288) + p.Match(SqlParserK_IS) + } + + + case 6: + { + p.SetState(1289) + p.Match(SqlParserK_IS) + } + { + p.SetState(1290) + p.Match(SqlParserK_NOT) + } + + + case 7: + { + p.SetState(1291) + p.Match(SqlParserK_IN) + } + + + case 8: + { + p.SetState(1292) + p.Match(SqlParserK_LIKE) + } + + + case 9: + { + p.SetState(1293) + p.Match(SqlParserK_GLOB) + } + + + case 10: + { + p.SetState(1294) + p.Match(SqlParserK_MATCH) + } + + + case 11: + { + p.SetState(1295) + p.Match(SqlParserK_REGEXP) + } + + } + { + p.SetState(1298) + p.expr(16) + } + + + case 7: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1299) + + if !(p.Precpred(p.GetParserRuleContext(), 14)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) + } + { + p.SetState(1300) + p.Match(SqlParserK_AND) + } + { + p.SetState(1301) + p.expr(15) + } + + + case 8: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1302) + + if !(p.Precpred(p.GetParserRuleContext(), 13)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 13)", "")) + } + { + p.SetState(1303) + p.Match(SqlParserK_OR) + } + { + p.SetState(1304) + p.expr(14) + } + + + case 9: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1305) + + if !(p.Precpred(p.GetParserRuleContext(), 6)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) + } + { + p.SetState(1306) + p.Match(SqlParserK_IS) + } + p.SetState(1308) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 175, p.GetParserRuleContext()) == 1 { + { + p.SetState(1307) + p.Match(SqlParserK_NOT) + } + + + } + { + p.SetState(1310) + p.expr(7) + } + + + case 10: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1311) + + if !(p.Precpred(p.GetParserRuleContext(), 5)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) + } + p.SetState(1313) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1312) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1315) + p.Match(SqlParserK_BETWEEN) + } + { + p.SetState(1316) + p.expr(0) + } + { + p.SetState(1317) + p.Match(SqlParserK_AND) + } + { + p.SetState(1318) + p.expr(6) + } + + + case 11: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1320) + + if !(p.Precpred(p.GetParserRuleContext(), 9)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) + } + { + p.SetState(1321) + p.Match(SqlParserK_COLLATE) + } + { + p.SetState(1322) + p.Collation_name() + } + + + case 12: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1323) + + if !(p.Precpred(p.GetParserRuleContext(), 8)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) + } + p.SetState(1325) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1324) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1327) + _la = p.GetTokenStream().LA(1) + + if !(((((_la - 79)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 79))) & ((1 << (SqlParserK_GLOB - 79)) | (1 << (SqlParserK_LIKE - 79)) | (1 << (SqlParserK_MATCH - 79)))) != 0) || _la == SqlParserK_REGEXP) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1328) + p.expr(0) + } + p.SetState(1331) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 178, p.GetParserRuleContext()) == 1 { + { + p.SetState(1329) + p.Match(SqlParserK_ESCAPE) + } + { + p.SetState(1330) + p.expr(0) + } + + + } + + + case 13: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1333) + + if !(p.Precpred(p.GetParserRuleContext(), 7)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) + } + p.SetState(1338) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_ISNULL: + { + p.SetState(1334) + p.Match(SqlParserK_ISNULL) + } + + + case SqlParserK_NOTNULL: + { + p.SetState(1335) + p.Match(SqlParserK_NOTNULL) + } + + + case SqlParserK_NOT: + { + p.SetState(1336) + p.Match(SqlParserK_NOT) + } + { + p.SetState(1337) + p.Match(SqlParserK_NULL) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + case 14: + localctx = NewExprContext(p, _parentctx, _parentState) + p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) + p.SetState(1340) + + if !(p.Precpred(p.GetParserRuleContext(), 4)) { + panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) + } + p.SetState(1342) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1341) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1344) + p.Match(SqlParserK_IN) + } + p.SetState(1364) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 184, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1345) + p.Match(SqlParserOPEN_PAR) + } + p.SetState(1355) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 182, p.GetParserRuleContext()) == 1 { + { + p.SetState(1346) + p.Select_stmt() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 182, p.GetParserRuleContext()) == 2 { + { + p.SetState(1347) + p.expr(0) + } + p.SetState(1352) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1348) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1349) + p.expr(0) + } + + + p.SetState(1354) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + } + { + p.SetState(1357) + p.Match(SqlParserCLOSE_PAR) + } + + + case 2: + p.SetState(1361) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 183, p.GetParserRuleContext()) == 1 { + { + p.SetState(1358) + p.Database_name() + } + { + p.SetState(1359) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1363) + p.Table_name() + } + + } + + } + + } + p.SetState(1370) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 186, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// IForeign_key_clauseContext is an interface to support dynamic dispatch. +type IForeign_key_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsForeign_key_clauseContext differentiates from other interfaces. + IsForeign_key_clauseContext() +} + +type Foreign_key_clauseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForeign_key_clauseContext() *Foreign_key_clauseContext { + var p = new(Foreign_key_clauseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_foreign_key_clause + return p +} + +func (*Foreign_key_clauseContext) IsForeign_key_clauseContext() {} + +func NewForeign_key_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_key_clauseContext { + var p = new(Foreign_key_clauseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_foreign_key_clause + + return p +} + +func (s *Foreign_key_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *Foreign_key_clauseContext) K_REFERENCES() antlr.TerminalNode { + return s.GetToken(SqlParserK_REFERENCES, 0) +} + +func (s *Foreign_key_clauseContext) Foreign_table() IForeign_tableContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForeign_tableContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IForeign_tableContext) +} + +func (s *Foreign_key_clauseContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Foreign_key_clauseContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Foreign_key_clauseContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Foreign_key_clauseContext) AllFk_target_column_name() []IFk_target_column_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IFk_target_column_nameContext); ok { + len++ + } + } + + tst := make([]IFk_target_column_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IFk_target_column_nameContext); ok { + tst[i] = t.(IFk_target_column_nameContext) + i++ + } + } + + return tst +} + +func (s *Foreign_key_clauseContext) Fk_target_column_name(i int) IFk_target_column_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFk_target_column_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IFk_target_column_nameContext) +} + +func (s *Foreign_key_clauseContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Foreign_key_clauseContext) K_DEFERRABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRABLE, 0) +} + +func (s *Foreign_key_clauseContext) AllK_ON() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_ON) +} + +func (s *Foreign_key_clauseContext) K_ON(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, i) +} + +func (s *Foreign_key_clauseContext) AllK_MATCH() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_MATCH) +} + +func (s *Foreign_key_clauseContext) K_MATCH(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_MATCH, i) +} + +func (s *Foreign_key_clauseContext) AllName() []INameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(INameContext); ok { + len++ + } + } + + tst := make([]INameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(INameContext); ok { + tst[i] = t.(INameContext) + i++ + } + } + + return tst +} + +func (s *Foreign_key_clauseContext) Name(i int) INameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Foreign_key_clauseContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Foreign_key_clauseContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Foreign_key_clauseContext) AllK_DELETE() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_DELETE) +} + +func (s *Foreign_key_clauseContext) K_DELETE(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, i) +} + +func (s *Foreign_key_clauseContext) AllK_UPDATE() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_UPDATE) +} + +func (s *Foreign_key_clauseContext) K_UPDATE(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, i) +} + +func (s *Foreign_key_clauseContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Foreign_key_clauseContext) K_INITIALLY() antlr.TerminalNode { + return s.GetToken(SqlParserK_INITIALLY, 0) +} + +func (s *Foreign_key_clauseContext) K_DEFERRED() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRED, 0) +} + +func (s *Foreign_key_clauseContext) K_IMMEDIATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IMMEDIATE, 0) +} + +func (s *Foreign_key_clauseContext) K_ENABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ENABLE, 0) +} + +func (s *Foreign_key_clauseContext) AllK_SET() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_SET) +} + +func (s *Foreign_key_clauseContext) K_SET(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_SET, i) +} + +func (s *Foreign_key_clauseContext) AllK_NULL() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_NULL) +} + +func (s *Foreign_key_clauseContext) K_NULL(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, i) +} + +func (s *Foreign_key_clauseContext) AllK_DEFAULT() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_DEFAULT) +} + +func (s *Foreign_key_clauseContext) K_DEFAULT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFAULT, i) +} + +func (s *Foreign_key_clauseContext) AllK_CASCADE() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_CASCADE) +} + +func (s *Foreign_key_clauseContext) K_CASCADE(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_CASCADE, i) +} + +func (s *Foreign_key_clauseContext) AllK_RESTRICT() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_RESTRICT) +} + +func (s *Foreign_key_clauseContext) K_RESTRICT(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_RESTRICT, i) +} + +func (s *Foreign_key_clauseContext) AllK_NO() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_NO) +} + +func (s *Foreign_key_clauseContext) K_NO(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_NO, i) +} + +func (s *Foreign_key_clauseContext) AllK_ACTION() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_ACTION) +} + +func (s *Foreign_key_clauseContext) K_ACTION(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_ACTION, i) +} + +func (s *Foreign_key_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Foreign_key_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Foreign_key_clauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterForeign_key_clause(s) + } +} + +func (s *Foreign_key_clauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitForeign_key_clause(s) + } +} + + + + +func (p *SqlParser) Foreign_key_clause() (localctx IForeign_key_clauseContext) { + this := p + _ = this + + localctx = NewForeign_key_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 96, SqlParserRULE_foreign_key_clause) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1371) + p.Match(SqlParserK_REFERENCES) + } + p.SetState(1375) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 187, p.GetParserRuleContext()) == 1 { + { + p.SetState(1372) + p.Database_name() + } + { + p.SetState(1373) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1377) + p.Foreign_table() + } + p.SetState(1389) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 189, p.GetParserRuleContext()) == 1 { + { + p.SetState(1378) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1379) + p.Fk_target_column_name() + } + p.SetState(1384) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1380) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1381) + p.Fk_target_column_name() + } + + + p.SetState(1386) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1387) + p.Match(SqlParserCLOSE_PAR) + } + + + } + p.SetState(1409) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 192, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + p.SetState(1405) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_ON: + { + p.SetState(1391) + p.Match(SqlParserK_ON) + } + { + p.SetState(1392) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_DELETE || _la == SqlParserK_UPDATE) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + p.SetState(1401) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 190, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1393) + p.Match(SqlParserK_SET) + } + { + p.SetState(1394) + p.Match(SqlParserK_NULL) + } + + + case 2: + { + p.SetState(1395) + p.Match(SqlParserK_SET) + } + { + p.SetState(1396) + p.Match(SqlParserK_DEFAULT) + } + + + case 3: + { + p.SetState(1397) + p.Match(SqlParserK_CASCADE) + } + + + case 4: + { + p.SetState(1398) + p.Match(SqlParserK_RESTRICT) + } + + + case 5: + { + p.SetState(1399) + p.Match(SqlParserK_NO) + } + { + p.SetState(1400) + p.Match(SqlParserK_ACTION) + } + + } + + + case SqlParserK_MATCH: + { + p.SetState(1403) + p.Match(SqlParserK_MATCH) + } + { + p.SetState(1404) + p.Name() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + } + p.SetState(1411) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 192, p.GetParserRuleContext()) + } + p.SetState(1425) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 196, p.GetParserRuleContext()) == 1 { + p.SetState(1413) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NOT { + { + p.SetState(1412) + p.Match(SqlParserK_NOT) + } + + } + { + p.SetState(1415) + p.Match(SqlParserK_DEFERRABLE) + } + p.SetState(1420) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 194, p.GetParserRuleContext()) == 1 { + { + p.SetState(1416) + p.Match(SqlParserK_INITIALLY) + } + { + p.SetState(1417) + p.Match(SqlParserK_DEFERRED) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 194, p.GetParserRuleContext()) == 2 { + { + p.SetState(1418) + p.Match(SqlParserK_INITIALLY) + } + { + p.SetState(1419) + p.Match(SqlParserK_IMMEDIATE) + } + + + } + p.SetState(1423) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 195, p.GetParserRuleContext()) == 1 { + { + p.SetState(1422) + p.Match(SqlParserK_ENABLE) + } + + + } + + + } + + + + return localctx +} + + +// IFk_target_column_nameContext is an interface to support dynamic dispatch. +type IFk_target_column_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFk_target_column_nameContext differentiates from other interfaces. + IsFk_target_column_nameContext() +} + +type Fk_target_column_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFk_target_column_nameContext() *Fk_target_column_nameContext { + var p = new(Fk_target_column_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_fk_target_column_name + return p +} + +func (*Fk_target_column_nameContext) IsFk_target_column_nameContext() {} + +func NewFk_target_column_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_target_column_nameContext { + var p = new(Fk_target_column_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_fk_target_column_name + + return p +} + +func (s *Fk_target_column_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Fk_target_column_nameContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Fk_target_column_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Fk_target_column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Fk_target_column_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterFk_target_column_name(s) + } +} + +func (s *Fk_target_column_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitFk_target_column_name(s) + } +} + + + + +func (p *SqlParser) Fk_target_column_name() (localctx IFk_target_column_nameContext) { + this := p + _ = this + + localctx = NewFk_target_column_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 98, SqlParserRULE_fk_target_column_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1427) + p.Name() + } + + + + return localctx +} + + +// IRaise_functionContext is an interface to support dynamic dispatch. +type IRaise_functionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsRaise_functionContext differentiates from other interfaces. + IsRaise_functionContext() +} + +type Raise_functionContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyRaise_functionContext() *Raise_functionContext { + var p = new(Raise_functionContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_raise_function + return p +} + +func (*Raise_functionContext) IsRaise_functionContext() {} + +func NewRaise_functionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Raise_functionContext { + var p = new(Raise_functionContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_raise_function + + return p +} + +func (s *Raise_functionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Raise_functionContext) K_RAISE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RAISE, 0) +} + +func (s *Raise_functionContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Raise_functionContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Raise_functionContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *Raise_functionContext) COMMA() antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, 0) +} + +func (s *Raise_functionContext) Error_message() IError_messageContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IError_messageContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IError_messageContext) +} + +func (s *Raise_functionContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *Raise_functionContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *Raise_functionContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *Raise_functionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Raise_functionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Raise_functionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterRaise_function(s) + } +} + +func (s *Raise_functionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitRaise_function(s) + } +} + + + + +func (p *SqlParser) Raise_function() (localctx IRaise_functionContext) { + this := p + _ = this + + localctx = NewRaise_functionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 100, SqlParserRULE_raise_function) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1429) + p.Match(SqlParserK_RAISE) + } + { + p.SetState(1430) + p.Match(SqlParserOPEN_PAR) + } + p.SetState(1435) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_IGNORE: + { + p.SetState(1431) + p.Match(SqlParserK_IGNORE) + } + + + case SqlParserK_ABORT, SqlParserK_FAIL, SqlParserK_ROLLBACK: + { + p.SetState(1432) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ABORT || _la == SqlParserK_FAIL || _la == SqlParserK_ROLLBACK) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + { + p.SetState(1433) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1434) + p.Error_message() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + { + p.SetState(1437) + p.Match(SqlParserCLOSE_PAR) + } + + + + return localctx +} + + +// IIndexed_columnContext is an interface to support dynamic dispatch. +type IIndexed_columnContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsIndexed_columnContext differentiates from other interfaces. + IsIndexed_columnContext() +} + +type Indexed_columnContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIndexed_columnContext() *Indexed_columnContext { + var p = new(Indexed_columnContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_indexed_column + return p +} + +func (*Indexed_columnContext) IsIndexed_columnContext() {} + +func NewIndexed_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Indexed_columnContext { + var p = new(Indexed_columnContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_indexed_column + + return p +} + +func (s *Indexed_columnContext) GetParser() antlr.Parser { return s.parser } + +func (s *Indexed_columnContext) Column_name() IColumn_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Indexed_columnContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *Indexed_columnContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *Indexed_columnContext) K_ASC() antlr.TerminalNode { + return s.GetToken(SqlParserK_ASC, 0) +} + +func (s *Indexed_columnContext) K_DESC() antlr.TerminalNode { + return s.GetToken(SqlParserK_DESC, 0) +} + +func (s *Indexed_columnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Indexed_columnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Indexed_columnContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterIndexed_column(s) + } +} + +func (s *Indexed_columnContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitIndexed_column(s) + } +} + + + + +func (p *SqlParser) Indexed_column() (localctx IIndexed_columnContext) { + this := p + _ = this + + localctx = NewIndexed_columnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 102, SqlParserRULE_indexed_column) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1439) + p.Column_name() + } + p.SetState(1442) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_COLLATE { + { + p.SetState(1440) + p.Match(SqlParserK_COLLATE) + } + { + p.SetState(1441) + p.Collation_name() + } + + } + p.SetState(1445) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_ASC || _la == SqlParserK_DESC { + { + p.SetState(1444) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + + + + return localctx +} + + +// ITable_constraintContext is an interface to support dynamic dispatch. +type ITable_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraintContext differentiates from other interfaces. + IsTable_constraintContext() +} + +type Table_constraintContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraintContext() *Table_constraintContext { + var p = new(Table_constraintContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint + return p +} + +func (*Table_constraintContext) IsTable_constraintContext() {} + +func NewTable_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraintContext { + var p = new(Table_constraintContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint + + return p +} + +func (s *Table_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraintContext) Table_constraint_primary_key() ITable_constraint_primary_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraint_primary_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraint_primary_keyContext) +} + +func (s *Table_constraintContext) Table_constraint_key() ITable_constraint_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraint_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraint_keyContext) +} + +func (s *Table_constraintContext) Table_constraint_unique() ITable_constraint_uniqueContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraint_uniqueContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraint_uniqueContext) +} + +func (s *Table_constraintContext) K_CHECK() antlr.TerminalNode { + return s.GetToken(SqlParserK_CHECK, 0) +} + +func (s *Table_constraintContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraintContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Table_constraintContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraintContext) Table_constraint_foreign_key() ITable_constraint_foreign_keyContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_constraint_foreign_keyContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_constraint_foreign_keyContext) +} + +func (s *Table_constraintContext) K_CONSTRAINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONSTRAINT, 0) +} + +func (s *Table_constraintContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Table_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraintContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint(s) + } +} + +func (s *Table_constraintContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint(s) + } +} + + + + +func (p *SqlParser) Table_constraint() (localctx ITable_constraintContext) { + this := p + _ = this + + localctx = NewTable_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 104, SqlParserRULE_table_constraint) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1449) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_CONSTRAINT { + { + p.SetState(1447) + p.Match(SqlParserK_CONSTRAINT) + } + { + p.SetState(1448) + p.Name() + } + + } + p.SetState(1460) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_PRIMARY: + { + p.SetState(1451) + p.Table_constraint_primary_key() + } + + + case SqlParserK_KEY: + { + p.SetState(1452) + p.Table_constraint_key() + } + + + case SqlParserK_UNIQUE: + { + p.SetState(1453) + p.Table_constraint_unique() + } + + + case SqlParserK_CHECK: + { + p.SetState(1454) + p.Match(SqlParserK_CHECK) + } + { + p.SetState(1455) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1456) + p.expr(0) + } + { + p.SetState(1457) + p.Match(SqlParserCLOSE_PAR) + } + + + case SqlParserK_FOREIGN: + { + p.SetState(1459) + p.Table_constraint_foreign_key() + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + + return localctx +} + + +// ITable_constraint_primary_keyContext is an interface to support dynamic dispatch. +type ITable_constraint_primary_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraint_primary_keyContext differentiates from other interfaces. + IsTable_constraint_primary_keyContext() +} + +type Table_constraint_primary_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraint_primary_keyContext() *Table_constraint_primary_keyContext { + var p = new(Table_constraint_primary_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint_primary_key + return p +} + +func (*Table_constraint_primary_keyContext) IsTable_constraint_primary_keyContext() {} + +func NewTable_constraint_primary_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_primary_keyContext { + var p = new(Table_constraint_primary_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint_primary_key + + return p +} + +func (s *Table_constraint_primary_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_primary_keyContext) K_PRIMARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRIMARY, 0) +} + +func (s *Table_constraint_primary_keyContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Table_constraint_primary_keyContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraint_primary_keyContext) AllIndexed_column() []IIndexed_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIndexed_columnContext); ok { + len++ + } + } + + tst := make([]IIndexed_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIndexed_columnContext); ok { + tst[i] = t.(IIndexed_columnContext) + i++ + } + } + + return tst +} + +func (s *Table_constraint_primary_keyContext) Indexed_column(i int) IIndexed_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndexed_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIndexed_columnContext) +} + +func (s *Table_constraint_primary_keyContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraint_primary_keyContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Table_constraint_primary_keyContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_constraint_primary_keyContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_constraint_primary_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraint_primary_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraint_primary_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint_primary_key(s) + } +} + +func (s *Table_constraint_primary_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint_primary_key(s) + } +} + + + + +func (p *SqlParser) Table_constraint_primary_key() (localctx ITable_constraint_primary_keyContext) { + this := p + _ = this + + localctx = NewTable_constraint_primary_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 106, SqlParserRULE_table_constraint_primary_key) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1462) + p.Match(SqlParserK_PRIMARY) + } + { + p.SetState(1463) + p.Match(SqlParserK_KEY) + } + { + p.SetState(1464) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1465) + p.Indexed_column() + } + p.SetState(1470) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1466) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1467) + p.Indexed_column() + } + + + p.SetState(1472) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1473) + p.Match(SqlParserCLOSE_PAR) + } + { + p.SetState(1474) + p.Conflict_clause() + } + + + + return localctx +} + + +// ITable_constraint_foreign_keyContext is an interface to support dynamic dispatch. +type ITable_constraint_foreign_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraint_foreign_keyContext differentiates from other interfaces. + IsTable_constraint_foreign_keyContext() +} + +type Table_constraint_foreign_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraint_foreign_keyContext() *Table_constraint_foreign_keyContext { + var p = new(Table_constraint_foreign_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint_foreign_key + return p +} + +func (*Table_constraint_foreign_keyContext) IsTable_constraint_foreign_keyContext() {} + +func NewTable_constraint_foreign_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_foreign_keyContext { + var p = new(Table_constraint_foreign_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint_foreign_key + + return p +} + +func (s *Table_constraint_foreign_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_foreign_keyContext) K_FOREIGN() antlr.TerminalNode { + return s.GetToken(SqlParserK_FOREIGN, 0) +} + +func (s *Table_constraint_foreign_keyContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Table_constraint_foreign_keyContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraint_foreign_keyContext) AllFk_origin_column_name() []IFk_origin_column_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IFk_origin_column_nameContext); ok { + len++ + } + } + + tst := make([]IFk_origin_column_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IFk_origin_column_nameContext); ok { + tst[i] = t.(IFk_origin_column_nameContext) + i++ + } + } + + return tst +} + +func (s *Table_constraint_foreign_keyContext) Fk_origin_column_name(i int) IFk_origin_column_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IFk_origin_column_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IFk_origin_column_nameContext) +} + +func (s *Table_constraint_foreign_keyContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraint_foreign_keyContext) Foreign_key_clause() IForeign_key_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IForeign_key_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IForeign_key_clauseContext) +} + +func (s *Table_constraint_foreign_keyContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_constraint_foreign_keyContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_constraint_foreign_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraint_foreign_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraint_foreign_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint_foreign_key(s) + } +} + +func (s *Table_constraint_foreign_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint_foreign_key(s) + } +} + + + + +func (p *SqlParser) Table_constraint_foreign_key() (localctx ITable_constraint_foreign_keyContext) { + this := p + _ = this + + localctx = NewTable_constraint_foreign_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 108, SqlParserRULE_table_constraint_foreign_key) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1476) + p.Match(SqlParserK_FOREIGN) + } + { + p.SetState(1477) + p.Match(SqlParserK_KEY) + } + { + p.SetState(1478) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1479) + p.Fk_origin_column_name() + } + p.SetState(1484) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1480) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1481) + p.Fk_origin_column_name() + } + + + p.SetState(1486) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1487) + p.Match(SqlParserCLOSE_PAR) + } + { + p.SetState(1488) + p.Foreign_key_clause() + } + + + + return localctx +} + + +// ITable_constraint_uniqueContext is an interface to support dynamic dispatch. +type ITable_constraint_uniqueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraint_uniqueContext differentiates from other interfaces. + IsTable_constraint_uniqueContext() +} + +type Table_constraint_uniqueContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraint_uniqueContext() *Table_constraint_uniqueContext { + var p = new(Table_constraint_uniqueContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint_unique + return p +} + +func (*Table_constraint_uniqueContext) IsTable_constraint_uniqueContext() {} + +func NewTable_constraint_uniqueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_uniqueContext { + var p = new(Table_constraint_uniqueContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint_unique + + return p +} + +func (s *Table_constraint_uniqueContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_uniqueContext) K_UNIQUE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNIQUE, 0) +} + +func (s *Table_constraint_uniqueContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraint_uniqueContext) AllIndexed_column() []IIndexed_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIndexed_columnContext); ok { + len++ + } + } + + tst := make([]IIndexed_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIndexed_columnContext); ok { + tst[i] = t.(IIndexed_columnContext) + i++ + } + } + + return tst +} + +func (s *Table_constraint_uniqueContext) Indexed_column(i int) IIndexed_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndexed_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIndexed_columnContext) +} + +func (s *Table_constraint_uniqueContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraint_uniqueContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Table_constraint_uniqueContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Table_constraint_uniqueContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Table_constraint_uniqueContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_constraint_uniqueContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_constraint_uniqueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraint_uniqueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraint_uniqueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint_unique(s) + } +} + +func (s *Table_constraint_uniqueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint_unique(s) + } +} + + + + +func (p *SqlParser) Table_constraint_unique() (localctx ITable_constraint_uniqueContext) { + this := p + _ = this + + localctx = NewTable_constraint_uniqueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 110, SqlParserRULE_table_constraint_unique) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1490) + p.Match(SqlParserK_UNIQUE) + } + p.SetState(1492) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 204, p.GetParserRuleContext()) == 1 { + { + p.SetState(1491) + p.Match(SqlParserK_KEY) + } + + + } + p.SetState(1495) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 205, p.GetParserRuleContext()) == 1 { + { + p.SetState(1494) + p.Name() + } + + + } + { + p.SetState(1497) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1498) + p.Indexed_column() + } + p.SetState(1503) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1499) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1500) + p.Indexed_column() + } + + + p.SetState(1505) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1506) + p.Match(SqlParserCLOSE_PAR) + } + { + p.SetState(1507) + p.Conflict_clause() + } + + + + return localctx +} + + +// ITable_constraint_keyContext is an interface to support dynamic dispatch. +type ITable_constraint_keyContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_constraint_keyContext differentiates from other interfaces. + IsTable_constraint_keyContext() +} + +type Table_constraint_keyContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_constraint_keyContext() *Table_constraint_keyContext { + var p = new(Table_constraint_keyContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_constraint_key + return p +} + +func (*Table_constraint_keyContext) IsTable_constraint_keyContext() {} + +func NewTable_constraint_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_keyContext { + var p = new(Table_constraint_keyContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_constraint_key + + return p +} + +func (s *Table_constraint_keyContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_constraint_keyContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *Table_constraint_keyContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_constraint_keyContext) AllIndexed_column() []IIndexed_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IIndexed_columnContext); ok { + len++ + } + } + + tst := make([]IIndexed_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IIndexed_columnContext); ok { + tst[i] = t.(IIndexed_columnContext) + i++ + } + } + + return tst +} + +func (s *Table_constraint_keyContext) Indexed_column(i int) IIndexed_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndexed_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IIndexed_columnContext) +} + +func (s *Table_constraint_keyContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_constraint_keyContext) Conflict_clause() IConflict_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IConflict_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IConflict_clauseContext) +} + +func (s *Table_constraint_keyContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Table_constraint_keyContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_constraint_keyContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_constraint_keyContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_constraint_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_constraint_keyContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_constraint_key(s) + } +} + +func (s *Table_constraint_keyContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_constraint_key(s) + } +} + + + + +func (p *SqlParser) Table_constraint_key() (localctx ITable_constraint_keyContext) { + this := p + _ = this + + localctx = NewTable_constraint_keyContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 112, SqlParserRULE_table_constraint_key) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1509) + p.Match(SqlParserK_KEY) + } + p.SetState(1511) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 207, p.GetParserRuleContext()) == 1 { + { + p.SetState(1510) + p.Name() + } + + + } + { + p.SetState(1513) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1514) + p.Indexed_column() + } + p.SetState(1519) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1515) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1516) + p.Indexed_column() + } + + + p.SetState(1521) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1522) + p.Match(SqlParserCLOSE_PAR) + } + { + p.SetState(1523) + p.Conflict_clause() + } + + + + return localctx +} + + +// IFk_origin_column_nameContext is an interface to support dynamic dispatch. +type IFk_origin_column_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFk_origin_column_nameContext differentiates from other interfaces. + IsFk_origin_column_nameContext() +} + +type Fk_origin_column_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFk_origin_column_nameContext() *Fk_origin_column_nameContext { + var p = new(Fk_origin_column_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_fk_origin_column_name + return p +} + +func (*Fk_origin_column_nameContext) IsFk_origin_column_nameContext() {} + +func NewFk_origin_column_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_origin_column_nameContext { + var p = new(Fk_origin_column_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_fk_origin_column_name + + return p +} + +func (s *Fk_origin_column_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Fk_origin_column_nameContext) Column_name() IColumn_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Fk_origin_column_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Fk_origin_column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Fk_origin_column_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterFk_origin_column_name(s) + } +} + +func (s *Fk_origin_column_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitFk_origin_column_name(s) + } +} + + + + +func (p *SqlParser) Fk_origin_column_name() (localctx IFk_origin_column_nameContext) { + this := p + _ = this + + localctx = NewFk_origin_column_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 114, SqlParserRULE_fk_origin_column_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1525) + p.Column_name() + } + + + + return localctx +} + + +// IWith_clauseContext is an interface to support dynamic dispatch. +type IWith_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsWith_clauseContext differentiates from other interfaces. + IsWith_clauseContext() +} + +type With_clauseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyWith_clauseContext() *With_clauseContext { + var p = new(With_clauseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_with_clause + return p +} + +func (*With_clauseContext) IsWith_clauseContext() {} + +func NewWith_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *With_clauseContext { + var p = new(With_clauseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_with_clause + + return p +} + +func (s *With_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *With_clauseContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *With_clauseContext) AllCte_table_name() []ICte_table_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ICte_table_nameContext); ok { + len++ + } + } + + tst := make([]ICte_table_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ICte_table_nameContext); ok { + tst[i] = t.(ICte_table_nameContext) + i++ + } + } + + return tst +} + +func (s *With_clauseContext) Cte_table_name(i int) ICte_table_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICte_table_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ICte_table_nameContext) +} + +func (s *With_clauseContext) AllK_AS() []antlr.TerminalNode { + return s.GetTokens(SqlParserK_AS) +} + +func (s *With_clauseContext) K_AS(i int) antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, i) +} + +func (s *With_clauseContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *With_clauseContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *With_clauseContext) AllSelect_stmt() []ISelect_stmtContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ISelect_stmtContext); ok { + len++ + } + } + + tst := make([]ISelect_stmtContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ISelect_stmtContext); ok { + tst[i] = t.(ISelect_stmtContext) + i++ + } + } + + return tst +} + +func (s *With_clauseContext) Select_stmt(i int) ISelect_stmtContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *With_clauseContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *With_clauseContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *With_clauseContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *With_clauseContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *With_clauseContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *With_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *With_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *With_clauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterWith_clause(s) + } +} + +func (s *With_clauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitWith_clause(s) + } +} + + + + +func (p *SqlParser) With_clause() (localctx IWith_clauseContext) { + this := p + _ = this + + localctx = NewWith_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 116, SqlParserRULE_with_clause) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1527) + p.Match(SqlParserK_WITH) + } + p.SetState(1529) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 209, p.GetParserRuleContext()) == 1 { + { + p.SetState(1528) + p.Match(SqlParserK_RECURSIVE) + } + + + } + { + p.SetState(1531) + p.Cte_table_name() + } + { + p.SetState(1532) + p.Match(SqlParserK_AS) + } + { + p.SetState(1533) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1534) + p.Select_stmt() + } + { + p.SetState(1535) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(1545) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1536) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1537) + p.Cte_table_name() + } + { + p.SetState(1538) + p.Match(SqlParserK_AS) + } + { + p.SetState(1539) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1540) + p.Select_stmt() + } + { + p.SetState(1541) + p.Match(SqlParserCLOSE_PAR) + } + + + p.SetState(1547) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + + return localctx +} + + +// IQualified_table_nameContext is an interface to support dynamic dispatch. +type IQualified_table_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsQualified_table_nameContext differentiates from other interfaces. + IsQualified_table_nameContext() +} + +type Qualified_table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyQualified_table_nameContext() *Qualified_table_nameContext { + var p = new(Qualified_table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_qualified_table_name + return p +} + +func (*Qualified_table_nameContext) IsQualified_table_nameContext() {} + +func NewQualified_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Qualified_table_nameContext { + var p = new(Qualified_table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_qualified_table_name + + return p +} + +func (s *Qualified_table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Qualified_table_nameContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Qualified_table_nameContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Qualified_table_nameContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Qualified_table_nameContext) K_INDEXED() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEXED, 0) +} + +func (s *Qualified_table_nameContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Qualified_table_nameContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Qualified_table_nameContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Qualified_table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Qualified_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Qualified_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterQualified_table_name(s) + } +} + +func (s *Qualified_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitQualified_table_name(s) + } +} + + + + +func (p *SqlParser) Qualified_table_name() (localctx IQualified_table_nameContext) { + this := p + _ = this + + localctx = NewQualified_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 118, SqlParserRULE_qualified_table_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1551) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 211, p.GetParserRuleContext()) == 1 { + { + p.SetState(1548) + p.Database_name() + } + { + p.SetState(1549) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1553) + p.Table_name() + } + p.SetState(1559) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_INDEXED: + { + p.SetState(1554) + p.Match(SqlParserK_INDEXED) + } + { + p.SetState(1555) + p.Match(SqlParserK_BY) + } + { + p.SetState(1556) + p.Index_name() + } + + + case SqlParserK_NOT: + { + p.SetState(1557) + p.Match(SqlParserK_NOT) + } + { + p.SetState(1558) + p.Match(SqlParserK_INDEXED) + } + + + case SqlParserEOF, SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_LIMIT, SqlParserK_ORDER, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WHERE, SqlParserK_WITH, SqlParserUNEXPECTED_CHAR: + + + + default: + } + + + + return localctx +} + + +// IOrdering_termContext is an interface to support dynamic dispatch. +type IOrdering_termContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsOrdering_termContext differentiates from other interfaces. + IsOrdering_termContext() +} + +type Ordering_termContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyOrdering_termContext() *Ordering_termContext { + var p = new(Ordering_termContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_ordering_term + return p +} + +func (*Ordering_termContext) IsOrdering_termContext() {} + +func NewOrdering_termContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Ordering_termContext { + var p = new(Ordering_termContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_ordering_term + + return p +} + +func (s *Ordering_termContext) GetParser() antlr.Parser { return s.parser } + +func (s *Ordering_termContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Ordering_termContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *Ordering_termContext) Collation_name() ICollation_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ICollation_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ICollation_nameContext) +} + +func (s *Ordering_termContext) K_ASC() antlr.TerminalNode { + return s.GetToken(SqlParserK_ASC, 0) +} + +func (s *Ordering_termContext) K_DESC() antlr.TerminalNode { + return s.GetToken(SqlParserK_DESC, 0) +} + +func (s *Ordering_termContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Ordering_termContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Ordering_termContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterOrdering_term(s) + } +} + +func (s *Ordering_termContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitOrdering_term(s) + } +} + + + + +func (p *SqlParser) Ordering_term() (localctx IOrdering_termContext) { + this := p + _ = this + + localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 120, SqlParserRULE_ordering_term) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1561) + p.expr(0) + } + p.SetState(1564) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 213, p.GetParserRuleContext()) == 1 { + { + p.SetState(1562) + p.Match(SqlParserK_COLLATE) + } + { + p.SetState(1563) + p.Collation_name() + } + + + } + p.SetState(1567) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 214, p.GetParserRuleContext()) == 1 { + { + p.SetState(1566) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + + + + return localctx +} + + +// IPragma_valueContext is an interface to support dynamic dispatch. +type IPragma_valueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsPragma_valueContext differentiates from other interfaces. + IsPragma_valueContext() +} + +type Pragma_valueContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPragma_valueContext() *Pragma_valueContext { + var p = new(Pragma_valueContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_pragma_value + return p +} + +func (*Pragma_valueContext) IsPragma_valueContext() {} + +func NewPragma_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_valueContext { + var p = new(Pragma_valueContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_pragma_value + + return p +} + +func (s *Pragma_valueContext) GetParser() antlr.Parser { return s.parser } + +func (s *Pragma_valueContext) Signed_number() ISigned_numberContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISigned_numberContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISigned_numberContext) +} + +func (s *Pragma_valueContext) Name() INameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(INameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(INameContext) +} + +func (s *Pragma_valueContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Pragma_valueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Pragma_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Pragma_valueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterPragma_value(s) + } +} + +func (s *Pragma_valueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitPragma_value(s) + } +} + + + + +func (p *SqlParser) Pragma_value() (localctx IPragma_valueContext) { + this := p + _ = this + + localctx = NewPragma_valueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 122, SqlParserRULE_pragma_value) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1572) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 215, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1569) + p.Signed_number() + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1570) + p.Name() + } + + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1571) + p.Match(SqlParserSTRING_LITERAL) + } + + } + + + return localctx +} + + +// ICommon_table_expressionContext is an interface to support dynamic dispatch. +type ICommon_table_expressionContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCommon_table_expressionContext differentiates from other interfaces. + IsCommon_table_expressionContext() +} + +type Common_table_expressionContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCommon_table_expressionContext() *Common_table_expressionContext { + var p = new(Common_table_expressionContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_common_table_expression + return p +} + +func (*Common_table_expressionContext) IsCommon_table_expressionContext() {} + +func NewCommon_table_expressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Common_table_expressionContext { + var p = new(Common_table_expressionContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_common_table_expression + + return p +} + +func (s *Common_table_expressionContext) GetParser() antlr.Parser { return s.parser } + +func (s *Common_table_expressionContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Common_table_expressionContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Common_table_expressionContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *Common_table_expressionContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *Common_table_expressionContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Common_table_expressionContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *Common_table_expressionContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *Common_table_expressionContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Common_table_expressionContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Common_table_expressionContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Common_table_expressionContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Common_table_expressionContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Common_table_expressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Common_table_expressionContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCommon_table_expression(s) + } +} + +func (s *Common_table_expressionContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCommon_table_expression(s) + } +} + + + + +func (p *SqlParser) Common_table_expression() (localctx ICommon_table_expressionContext) { + this := p + _ = this + + localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 124, SqlParserRULE_common_table_expression) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1574) + p.Table_name() + } + p.SetState(1586) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserOPEN_PAR { + { + p.SetState(1575) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1576) + p.Column_name() + } + p.SetState(1581) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1577) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1578) + p.Column_name() + } + + + p.SetState(1583) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1584) + p.Match(SqlParserCLOSE_PAR) + } + + } + { + p.SetState(1588) + p.Match(SqlParserK_AS) + } + { + p.SetState(1589) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1590) + p.Select_stmt() + } + { + p.SetState(1591) + p.Match(SqlParserCLOSE_PAR) + } + + + + return localctx +} + + +// IResult_columnContext is an interface to support dynamic dispatch. +type IResult_columnContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsResult_columnContext differentiates from other interfaces. + IsResult_columnContext() +} + +type Result_columnContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyResult_columnContext() *Result_columnContext { + var p = new(Result_columnContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_result_column + return p +} + +func (*Result_columnContext) IsResult_columnContext() {} + +func NewResult_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Result_columnContext { + var p = new(Result_columnContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_result_column + + return p +} + +func (s *Result_columnContext) GetParser() antlr.Parser { return s.parser } + +func (s *Result_columnContext) STAR() antlr.TerminalNode { + return s.GetToken(SqlParserSTAR, 0) +} + +func (s *Result_columnContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Result_columnContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Result_columnContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Result_columnContext) Column_alias() IColumn_aliasContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_aliasContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_aliasContext) +} + +func (s *Result_columnContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Result_columnContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Result_columnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Result_columnContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterResult_column(s) + } +} + +func (s *Result_columnContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitResult_column(s) + } +} + + + + +func (p *SqlParser) Result_column() (localctx IResult_columnContext) { + this := p + _ = this + + localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 126, SqlParserRULE_result_column) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1605) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 220, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1593) + p.Match(SqlParserSTAR) + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1594) + p.Table_name() + } + { + p.SetState(1595) + p.Match(SqlParserDOT) + } + { + p.SetState(1596) + p.Match(SqlParserSTAR) + } + + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1598) + p.expr(0) + } + p.SetState(1603) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 219, p.GetParserRuleContext()) == 1 { + p.SetState(1600) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_AS { + { + p.SetState(1599) + p.Match(SqlParserK_AS) + } + + } + { + p.SetState(1602) + p.Column_alias() + } + + + } + + } + + + return localctx +} + + +// ITable_or_subqueryContext is an interface to support dynamic dispatch. +type ITable_or_subqueryContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_or_subqueryContext differentiates from other interfaces. + IsTable_or_subqueryContext() +} + +type Table_or_subqueryContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_or_subqueryContext() *Table_or_subqueryContext { + var p = new(Table_or_subqueryContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_or_subquery + return p +} + +func (*Table_or_subqueryContext) IsTable_or_subqueryContext() {} + +func NewTable_or_subqueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_or_subqueryContext { + var p = new(Table_or_subqueryContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_or_subquery + + return p +} + +func (s *Table_or_subqueryContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_or_subqueryContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Table_or_subqueryContext) Database_name() IDatabase_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IDatabase_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IDatabase_nameContext) +} + +func (s *Table_or_subqueryContext) DOT() antlr.TerminalNode { + return s.GetToken(SqlParserDOT, 0) +} + +func (s *Table_or_subqueryContext) Table_alias() ITable_aliasContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_aliasContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_aliasContext) +} + +func (s *Table_or_subqueryContext) K_INDEXED() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEXED, 0) +} + +func (s *Table_or_subqueryContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Table_or_subqueryContext) Index_name() IIndex_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IIndex_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IIndex_nameContext) +} + +func (s *Table_or_subqueryContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Table_or_subqueryContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *Table_or_subqueryContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Table_or_subqueryContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Table_or_subqueryContext) AllTable_or_subquery() []ITable_or_subqueryContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + len++ + } + } + + tst := make([]ITable_or_subqueryContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_or_subqueryContext); ok { + tst[i] = t.(ITable_or_subqueryContext) + i++ + } + } + + return tst +} + +func (s *Table_or_subqueryContext) Table_or_subquery(i int) ITable_or_subqueryContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_subqueryContext) +} + +func (s *Table_or_subqueryContext) Join_clause() IJoin_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IJoin_clauseContext) +} + +func (s *Table_or_subqueryContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Table_or_subqueryContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Table_or_subqueryContext) Select_stmt() ISelect_stmtContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ISelect_stmtContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ISelect_stmtContext) +} + +func (s *Table_or_subqueryContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_or_subqueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_or_subqueryContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_or_subquery(s) + } +} + +func (s *Table_or_subqueryContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_or_subquery(s) + } +} + + + + +func (p *SqlParser) Table_or_subquery() (localctx ITable_or_subqueryContext) { + this := p + _ = this + + localctx = NewTable_or_subqueryContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 128, SqlParserRULE_table_or_subquery) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1654) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 231, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + p.SetState(1610) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 221, p.GetParserRuleContext()) == 1 { + { + p.SetState(1607) + p.Database_name() + } + { + p.SetState(1608) + p.Match(SqlParserDOT) + } + + + } + { + p.SetState(1612) + p.Table_name() + } + p.SetState(1617) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 223, p.GetParserRuleContext()) == 1 { + p.SetState(1614) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 222, p.GetParserRuleContext()) == 1 { + { + p.SetState(1613) + p.Match(SqlParserK_AS) + } + + + } + { + p.SetState(1616) + p.Table_alias() + } + + + } + p.SetState(1624) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 224, p.GetParserRuleContext()) == 1 { + { + p.SetState(1619) + p.Match(SqlParserK_INDEXED) + } + { + p.SetState(1620) + p.Match(SqlParserK_BY) + } + { + p.SetState(1621) + p.Index_name() + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 224, p.GetParserRuleContext()) == 2 { + { + p.SetState(1622) + p.Match(SqlParserK_NOT) + } + { + p.SetState(1623) + p.Match(SqlParserK_INDEXED) + } + + + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1626) + p.Match(SqlParserOPEN_PAR) + } + p.SetState(1636) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 226, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1627) + p.Table_or_subquery() + } + p.SetState(1632) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1628) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1629) + p.Table_or_subquery() + } + + + p.SetState(1634) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + case 2: + { + p.SetState(1635) + p.Join_clause() + } + + } + { + p.SetState(1638) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(1643) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 228, p.GetParserRuleContext()) == 1 { + p.SetState(1640) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 227, p.GetParserRuleContext()) == 1 { + { + p.SetState(1639) + p.Match(SqlParserK_AS) + } + + + } + { + p.SetState(1642) + p.Table_alias() + } + + + } + + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1645) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1646) + p.Select_stmt() + } + { + p.SetState(1647) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(1652) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 230, p.GetParserRuleContext()) == 1 { + p.SetState(1649) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 229, p.GetParserRuleContext()) == 1 { + { + p.SetState(1648) + p.Match(SqlParserK_AS) + } + + + } + { + p.SetState(1651) + p.Table_alias() + } + + + } + + } + + + return localctx +} + + +// IJoin_clauseContext is an interface to support dynamic dispatch. +type IJoin_clauseContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsJoin_clauseContext differentiates from other interfaces. + IsJoin_clauseContext() +} + +type Join_clauseContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyJoin_clauseContext() *Join_clauseContext { + var p = new(Join_clauseContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_join_clause + return p +} + +func (*Join_clauseContext) IsJoin_clauseContext() {} + +func NewJoin_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_clauseContext { + var p = new(Join_clauseContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_join_clause + + return p +} + +func (s *Join_clauseContext) GetParser() antlr.Parser { return s.parser } + +func (s *Join_clauseContext) AllTable_or_subquery() []ITable_or_subqueryContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + len++ + } + } + + tst := make([]ITable_or_subqueryContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_or_subqueryContext); ok { + tst[i] = t.(ITable_or_subqueryContext) + i++ + } + } + + return tst +} + +func (s *Join_clauseContext) Table_or_subquery(i int) ITable_or_subqueryContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_subqueryContext) +} + +func (s *Join_clauseContext) AllJoin_operator() []IJoin_operatorContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IJoin_operatorContext); ok { + len++ + } + } + + tst := make([]IJoin_operatorContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IJoin_operatorContext); ok { + tst[i] = t.(IJoin_operatorContext) + i++ + } + } + + return tst +} + +func (s *Join_clauseContext) Join_operator(i int) IJoin_operatorContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_operatorContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IJoin_operatorContext) +} + +func (s *Join_clauseContext) AllJoin_constraint() []IJoin_constraintContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IJoin_constraintContext); ok { + len++ + } + } + + tst := make([]IJoin_constraintContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IJoin_constraintContext); ok { + tst[i] = t.(IJoin_constraintContext) + i++ + } + } + + return tst +} + +func (s *Join_clauseContext) Join_constraint(i int) IJoin_constraintContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_constraintContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IJoin_constraintContext) +} + +func (s *Join_clauseContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Join_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Join_clauseContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterJoin_clause(s) + } +} + +func (s *Join_clauseContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitJoin_clause(s) + } +} + + + + +func (p *SqlParser) Join_clause() (localctx IJoin_clauseContext) { + this := p + _ = this + + localctx = NewJoin_clauseContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 130, SqlParserRULE_join_clause) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1656) + p.Table_or_subquery() + } + p.SetState(1663) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 232, p.GetParserRuleContext()) + + for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + if _alt == 1 { + { + p.SetState(1657) + p.Join_operator() + } + { + p.SetState(1658) + p.Table_or_subquery() + } + { + p.SetState(1659) + p.Join_constraint() + } + + + } + p.SetState(1665) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 232, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// IJoin_operatorContext is an interface to support dynamic dispatch. +type IJoin_operatorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsJoin_operatorContext differentiates from other interfaces. + IsJoin_operatorContext() +} + +type Join_operatorContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyJoin_operatorContext() *Join_operatorContext { + var p = new(Join_operatorContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_join_operator + return p +} + +func (*Join_operatorContext) IsJoin_operatorContext() {} + +func NewJoin_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_operatorContext { + var p = new(Join_operatorContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_join_operator + + return p +} + +func (s *Join_operatorContext) GetParser() antlr.Parser { return s.parser } + +func (s *Join_operatorContext) COMMA() antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, 0) +} + +func (s *Join_operatorContext) K_JOIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_JOIN, 0) +} + +func (s *Join_operatorContext) K_NATURAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NATURAL, 0) +} + +func (s *Join_operatorContext) K_LEFT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LEFT, 0) +} + +func (s *Join_operatorContext) K_INNER() antlr.TerminalNode { + return s.GetToken(SqlParserK_INNER, 0) +} + +func (s *Join_operatorContext) K_CROSS() antlr.TerminalNode { + return s.GetToken(SqlParserK_CROSS, 0) +} + +func (s *Join_operatorContext) K_OUTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_OUTER, 0) +} + +func (s *Join_operatorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Join_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Join_operatorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterJoin_operator(s) + } +} + +func (s *Join_operatorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitJoin_operator(s) + } +} + + + + +func (p *SqlParser) Join_operator() (localctx IJoin_operatorContext) { + this := p + _ = this + + localctx = NewJoin_operatorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 132, SqlParserRULE_join_operator) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1679) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserCOMMA: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1666) + p.Match(SqlParserCOMMA) + } + + + case SqlParserK_CROSS, SqlParserK_INNER, SqlParserK_JOIN, SqlParserK_LEFT, SqlParserK_NATURAL: + p.EnterOuterAlt(localctx, 2) + p.SetState(1668) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_NATURAL { + { + p.SetState(1667) + p.Match(SqlParserK_NATURAL) + } + + } + p.SetState(1676) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_LEFT: + { + p.SetState(1670) + p.Match(SqlParserK_LEFT) + } + p.SetState(1672) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_OUTER { + { + p.SetState(1671) + p.Match(SqlParserK_OUTER) + } + + } + + + case SqlParserK_INNER: + { + p.SetState(1674) + p.Match(SqlParserK_INNER) + } + + + case SqlParserK_CROSS: + { + p.SetState(1675) + p.Match(SqlParserK_CROSS) + } + + + case SqlParserK_JOIN: + + + + default: + } + { + p.SetState(1678) + p.Match(SqlParserK_JOIN) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + return localctx +} + + +// IJoin_constraintContext is an interface to support dynamic dispatch. +type IJoin_constraintContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsJoin_constraintContext differentiates from other interfaces. + IsJoin_constraintContext() +} + +type Join_constraintContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyJoin_constraintContext() *Join_constraintContext { + var p = new(Join_constraintContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_join_constraint + return p +} + +func (*Join_constraintContext) IsJoin_constraintContext() {} + +func NewJoin_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_constraintContext { + var p = new(Join_constraintContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_join_constraint + + return p +} + +func (s *Join_constraintContext) GetParser() antlr.Parser { return s.parser } + +func (s *Join_constraintContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *Join_constraintContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Join_constraintContext) K_USING() antlr.TerminalNode { + return s.GetToken(SqlParserK_USING, 0) +} + +func (s *Join_constraintContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Join_constraintContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Join_constraintContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Join_constraintContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Join_constraintContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Join_constraintContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Join_constraintContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Join_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Join_constraintContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterJoin_constraint(s) + } +} + +func (s *Join_constraintContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitJoin_constraint(s) + } +} + + + + +func (p *SqlParser) Join_constraint() (localctx IJoin_constraintContext) { + this := p + _ = this + + localctx = NewJoin_constraintContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 134, SqlParserRULE_join_constraint) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1695) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 238, p.GetParserRuleContext()) == 1 { + { + p.SetState(1681) + p.Match(SqlParserK_ON) + } + { + p.SetState(1682) + p.expr(0) + } + + } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 238, p.GetParserRuleContext()) == 2 { + { + p.SetState(1683) + p.Match(SqlParserK_USING) + } + { + p.SetState(1684) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1685) + p.Column_name() + } + p.SetState(1690) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1686) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1687) + p.Column_name() + } + + + p.SetState(1692) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1693) + p.Match(SqlParserCLOSE_PAR) + } + + + } + + + + return localctx +} + + +// ISelect_coreContext is an interface to support dynamic dispatch. +type ISelect_coreContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSelect_coreContext differentiates from other interfaces. + IsSelect_coreContext() +} + +type Select_coreContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySelect_coreContext() *Select_coreContext { + var p = new(Select_coreContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_select_core + return p +} + +func (*Select_coreContext) IsSelect_coreContext() {} + +func NewSelect_coreContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_coreContext { + var p = new(Select_coreContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_select_core + + return p +} + +func (s *Select_coreContext) GetParser() antlr.Parser { return s.parser } + +func (s *Select_coreContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) +} + +func (s *Select_coreContext) AllResult_column() []IResult_columnContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IResult_columnContext); ok { + len++ + } + } + + tst := make([]IResult_columnContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IResult_columnContext); ok { + tst[i] = t.(IResult_columnContext) + i++ + } + } + + return tst +} + +func (s *Select_coreContext) Result_column(i int) IResult_columnContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IResult_columnContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IResult_columnContext) +} + +func (s *Select_coreContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Select_coreContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Select_coreContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *Select_coreContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *Select_coreContext) AllExpr() []IExprContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IExprContext); ok { + len++ + } + } + + tst := make([]IExprContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IExprContext); ok { + tst[i] = t.(IExprContext) + i++ + } + } + + return tst +} + +func (s *Select_coreContext) Expr(i int) IExprContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Select_coreContext) K_GROUP() antlr.TerminalNode { + return s.GetToken(SqlParserK_GROUP, 0) +} + +func (s *Select_coreContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *Select_coreContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DISTINCT, 0) +} + +func (s *Select_coreContext) K_ALL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, 0) +} + +func (s *Select_coreContext) AllTable_or_subquery() []ITable_or_subqueryContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + len++ + } + } + + tst := make([]ITable_or_subqueryContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(ITable_or_subqueryContext); ok { + tst[i] = t.(ITable_or_subqueryContext) + i++ + } + } + + return tst +} + +func (s *Select_coreContext) Table_or_subquery(i int) ITable_or_subqueryContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_or_subqueryContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(ITable_or_subqueryContext) +} + +func (s *Select_coreContext) Join_clause() IJoin_clauseContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IJoin_clauseContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IJoin_clauseContext) +} + +func (s *Select_coreContext) K_HAVING() antlr.TerminalNode { + return s.GetToken(SqlParserK_HAVING, 0) +} + +func (s *Select_coreContext) K_VALUES() antlr.TerminalNode { + return s.GetToken(SqlParserK_VALUES, 0) +} + +func (s *Select_coreContext) AllOPEN_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserOPEN_PAR) +} + +func (s *Select_coreContext) OPEN_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, i) +} + +func (s *Select_coreContext) AllCLOSE_PAR() []antlr.TerminalNode { + return s.GetTokens(SqlParserCLOSE_PAR) +} + +func (s *Select_coreContext) CLOSE_PAR(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, i) +} + +func (s *Select_coreContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Select_coreContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Select_coreContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSelect_core(s) + } +} + +func (s *Select_coreContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSelect_core(s) + } +} + + + + +func (p *SqlParser) Select_core() (localctx ISelect_coreContext) { + this := p + _ = this + + localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 136, SqlParserRULE_select_core) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1771) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserK_SELECT: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1697) + p.Match(SqlParserK_SELECT) + } + p.SetState(1699) + p.GetErrorHandler().Sync(p) + + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 239, p.GetParserRuleContext()) == 1 { + { + p.SetState(1698) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserK_ALL || _la == SqlParserK_DISTINCT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + } + { + p.SetState(1701) + p.Result_column() + } + p.SetState(1706) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1702) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1703) + p.Result_column() + } + + + p.SetState(1708) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1721) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_FROM { + { + p.SetState(1709) + p.Match(SqlParserK_FROM) + } + p.SetState(1719) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 242, p.GetParserRuleContext()) { + case 1: + { + p.SetState(1710) + p.Table_or_subquery() + } + p.SetState(1715) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1711) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1712) + p.Table_or_subquery() + } + + + p.SetState(1717) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + case 2: + { + p.SetState(1718) + p.Join_clause() + } + + } + + } + p.SetState(1725) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_WHERE { + { + p.SetState(1723) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(1724) + p.expr(0) + } + + } + p.SetState(1741) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_GROUP { + { + p.SetState(1727) + p.Match(SqlParserK_GROUP) + } + { + p.SetState(1728) + p.Match(SqlParserK_BY) + } + { + p.SetState(1729) + p.expr(0) + } + p.SetState(1734) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1730) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1731) + p.expr(0) + } + + + p.SetState(1736) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + p.SetState(1739) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserK_HAVING { + { + p.SetState(1737) + p.Match(SqlParserK_HAVING) + } + { + p.SetState(1738) + p.expr(0) + } + + } + + } + + + case SqlParserK_VALUES: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1743) + p.Match(SqlParserK_VALUES) + } + { + p.SetState(1744) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1745) + p.expr(0) + } + p.SetState(1750) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1746) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1747) + p.expr(0) + } + + + p.SetState(1752) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1753) + p.Match(SqlParserCLOSE_PAR) + } + p.SetState(1768) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1754) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1755) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1756) + p.expr(0) + } + p.SetState(1761) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1757) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1758) + p.expr(0) + } + + + p.SetState(1763) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1764) + p.Match(SqlParserCLOSE_PAR) + } + + + p.SetState(1770) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + return localctx +} + + +// ICompound_operatorContext is an interface to support dynamic dispatch. +type ICompound_operatorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCompound_operatorContext differentiates from other interfaces. + IsCompound_operatorContext() +} + +type Compound_operatorContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCompound_operatorContext() *Compound_operatorContext { + var p = new(Compound_operatorContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_compound_operator + return p +} + +func (*Compound_operatorContext) IsCompound_operatorContext() {} + +func NewCompound_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_operatorContext { + var p = new(Compound_operatorContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_compound_operator + + return p +} + +func (s *Compound_operatorContext) GetParser() antlr.Parser { return s.parser } + +func (s *Compound_operatorContext) K_UNION() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNION, 0) +} + +func (s *Compound_operatorContext) K_ALL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, 0) +} + +func (s *Compound_operatorContext) K_INTERSECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INTERSECT, 0) +} + +func (s *Compound_operatorContext) K_EXCEPT() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCEPT, 0) +} + +func (s *Compound_operatorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Compound_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Compound_operatorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCompound_operator(s) + } +} + +func (s *Compound_operatorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCompound_operator(s) + } +} + + + + +func (p *SqlParser) Compound_operator() (localctx ICompound_operatorContext) { + this := p + _ = this + + localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 138, SqlParserRULE_compound_operator) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1778) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 252, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1773) + p.Match(SqlParserK_UNION) + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1774) + p.Match(SqlParserK_UNION) + } + { + p.SetState(1775) + p.Match(SqlParserK_ALL) + } + + + case 3: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1776) + p.Match(SqlParserK_INTERSECT) + } + + + case 4: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1777) + p.Match(SqlParserK_EXCEPT) + } + + } + + + return localctx +} + + +// ICte_table_nameContext is an interface to support dynamic dispatch. +type ICte_table_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCte_table_nameContext differentiates from other interfaces. + IsCte_table_nameContext() +} + +type Cte_table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCte_table_nameContext() *Cte_table_nameContext { + var p = new(Cte_table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_cte_table_name + return p +} + +func (*Cte_table_nameContext) IsCte_table_nameContext() {} + +func NewCte_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Cte_table_nameContext { + var p = new(Cte_table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_cte_table_name + + return p +} + +func (s *Cte_table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Cte_table_nameContext) Table_name() ITable_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITable_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(ITable_nameContext) +} + +func (s *Cte_table_nameContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Cte_table_nameContext) AllColumn_name() []IColumn_nameContext { + children := s.GetChildren() + len := 0 + for _, ctx := range children { + if _, ok := ctx.(IColumn_nameContext); ok { + len++ + } + } + + tst := make([]IColumn_nameContext, len) + i := 0 + for _, ctx := range children { + if t, ok := ctx.(IColumn_nameContext); ok { + tst[i] = t.(IColumn_nameContext) + i++ + } + } + + return tst +} + +func (s *Cte_table_nameContext) Column_name(i int) IColumn_nameContext { + var t antlr.RuleContext; + j := 0 + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_nameContext); ok { + if j == i { + t = ctx.(antlr.RuleContext); + break + } + j++ + } + } + + if t == nil { + return nil + } + + return t.(IColumn_nameContext) +} + +func (s *Cte_table_nameContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Cte_table_nameContext) AllCOMMA() []antlr.TerminalNode { + return s.GetTokens(SqlParserCOMMA) +} + +func (s *Cte_table_nameContext) COMMA(i int) antlr.TerminalNode { + return s.GetToken(SqlParserCOMMA, i) +} + +func (s *Cte_table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Cte_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Cte_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCte_table_name(s) + } +} + +func (s *Cte_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCte_table_name(s) + } +} + + + + +func (p *SqlParser) Cte_table_name() (localctx ICte_table_nameContext) { + this := p + _ = this + + localctx = NewCte_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 140, SqlParserRULE_cte_table_name) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1780) + p.Table_name() + } + p.SetState(1792) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserOPEN_PAR { + { + p.SetState(1781) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1782) + p.Column_name() + } + p.SetState(1787) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + for _la == SqlParserCOMMA { + { + p.SetState(1783) + p.Match(SqlParserCOMMA) + } + { + p.SetState(1784) + p.Column_name() + } + + + p.SetState(1789) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + } + { + p.SetState(1790) + p.Match(SqlParserCLOSE_PAR) + } + + } + + + + return localctx +} + + +// ISigned_numberContext is an interface to support dynamic dispatch. +type ISigned_numberContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSigned_numberContext differentiates from other interfaces. + IsSigned_numberContext() +} + +type Signed_numberContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySigned_numberContext() *Signed_numberContext { + var p = new(Signed_numberContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_signed_number + return p +} + +func (*Signed_numberContext) IsSigned_numberContext() {} + +func NewSigned_numberContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Signed_numberContext { + var p = new(Signed_numberContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_signed_number + + return p +} + +func (s *Signed_numberContext) GetParser() antlr.Parser { return s.parser } + +func (s *Signed_numberContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserNUMERIC_LITERAL, 0) +} + +func (s *Signed_numberContext) STAR() antlr.TerminalNode { + return s.GetToken(SqlParserSTAR, 0) +} + +func (s *Signed_numberContext) PLUS() antlr.TerminalNode { + return s.GetToken(SqlParserPLUS, 0) +} + +func (s *Signed_numberContext) MINUS() antlr.TerminalNode { + return s.GetToken(SqlParserMINUS, 0) +} + +func (s *Signed_numberContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Signed_numberContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Signed_numberContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSigned_number(s) + } +} + +func (s *Signed_numberContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSigned_number(s) + } +} + + + + +func (p *SqlParser) Signed_number() (localctx ISigned_numberContext) { + this := p + _ = this + + localctx = NewSigned_numberContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 142, SqlParserRULE_signed_number) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + p.SetState(1799) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserPLUS, SqlParserMINUS, SqlParserNUMERIC_LITERAL: + p.SetState(1795) + p.GetErrorHandler().Sync(p) + _la = p.GetTokenStream().LA(1) + + + if _la == SqlParserPLUS || _la == SqlParserMINUS { + { + p.SetState(1794) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserPLUS || _la == SqlParserMINUS) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + } + { + p.SetState(1797) + p.Match(SqlParserNUMERIC_LITERAL) + } + + + case SqlParserSTAR: + { + p.SetState(1798) + p.Match(SqlParserSTAR) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + + return localctx +} + + +// ILiteral_valueContext is an interface to support dynamic dispatch. +type ILiteral_valueContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsLiteral_valueContext differentiates from other interfaces. + IsLiteral_valueContext() +} + +type Literal_valueContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyLiteral_valueContext() *Literal_valueContext { + var p = new(Literal_valueContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_literal_value + return p +} + +func (*Literal_valueContext) IsLiteral_valueContext() {} + +func NewLiteral_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Literal_valueContext { + var p = new(Literal_valueContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_literal_value + + return p +} + +func (s *Literal_valueContext) GetParser() antlr.Parser { return s.parser } + +func (s *Literal_valueContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserNUMERIC_LITERAL, 0) +} + +func (s *Literal_valueContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Literal_valueContext) BLOB_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserBLOB_LITERAL, 0) +} + +func (s *Literal_valueContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *Literal_valueContext) K_CURRENT_TIME() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_TIME, 0) +} + +func (s *Literal_valueContext) K_CURRENT_DATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_DATE, 0) +} + +func (s *Literal_valueContext) K_CURRENT_TIMESTAMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_TIMESTAMP, 0) +} + +func (s *Literal_valueContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Literal_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Literal_valueContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterLiteral_value(s) + } +} + +func (s *Literal_valueContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitLiteral_value(s) + } +} + + + + +func (p *SqlParser) Literal_value() (localctx ILiteral_valueContext) { + this := p + _ = this + + localctx = NewLiteral_valueContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 144, SqlParserRULE_literal_value) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1801) + _la = p.GetTokenStream().LA(1) + + if !(((((_la - 53)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 53))) & ((1 << (SqlParserK_CURRENT_DATE - 53)) | (1 << (SqlParserK_CURRENT_TIME - 53)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 53)))) != 0) || _la == SqlParserK_NULL || ((((_la - 154)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 154))) & ((1 << (SqlParserNUMERIC_LITERAL - 154)) | (1 << (SqlParserSTRING_LITERAL - 154)) | (1 << (SqlParserBLOB_LITERAL - 154)))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + + return localctx +} + + +// IUnary_operatorContext is an interface to support dynamic dispatch. +type IUnary_operatorContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsUnary_operatorContext differentiates from other interfaces. + IsUnary_operatorContext() +} + +type Unary_operatorContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnary_operatorContext() *Unary_operatorContext { + var p = new(Unary_operatorContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_unary_operator + return p +} + +func (*Unary_operatorContext) IsUnary_operatorContext() {} + +func NewUnary_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Unary_operatorContext { + var p = new(Unary_operatorContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_unary_operator + + return p +} + +func (s *Unary_operatorContext) GetParser() antlr.Parser { return s.parser } + +func (s *Unary_operatorContext) MINUS() antlr.TerminalNode { + return s.GetToken(SqlParserMINUS, 0) +} + +func (s *Unary_operatorContext) PLUS() antlr.TerminalNode { + return s.GetToken(SqlParserPLUS, 0) +} + +func (s *Unary_operatorContext) TILDE() antlr.TerminalNode { + return s.GetToken(SqlParserTILDE, 0) +} + +func (s *Unary_operatorContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *Unary_operatorContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Unary_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Unary_operatorContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterUnary_operator(s) + } +} + +func (s *Unary_operatorContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitUnary_operator(s) + } +} + + + + +func (p *SqlParser) Unary_operator() (localctx IUnary_operatorContext) { + this := p + _ = this + + localctx = NewUnary_operatorContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 146, SqlParserRULE_unary_operator) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1803) + _la = p.GetTokenStream().LA(1) + + if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserPLUS) | (1 << SqlParserMINUS) | (1 << SqlParserTILDE))) != 0) || _la == SqlParserK_NOT) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + + return localctx +} + + +// IError_messageContext is an interface to support dynamic dispatch. +type IError_messageContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsError_messageContext differentiates from other interfaces. + IsError_messageContext() +} + +type Error_messageContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyError_messageContext() *Error_messageContext { + var p = new(Error_messageContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_error_message + return p +} + +func (*Error_messageContext) IsError_messageContext() {} + +func NewError_messageContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Error_messageContext { + var p = new(Error_messageContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_error_message + + return p +} + +func (s *Error_messageContext) GetParser() antlr.Parser { return s.parser } + +func (s *Error_messageContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Error_messageContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Error_messageContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Error_messageContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterError_message(s) + } +} + +func (s *Error_messageContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitError_message(s) + } +} + + + + +func (p *SqlParser) Error_message() (localctx IError_messageContext) { + this := p + _ = this + + localctx = NewError_messageContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 148, SqlParserRULE_error_message) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1805) + p.Match(SqlParserSTRING_LITERAL) + } + + + + return localctx +} + + +// IModule_argumentContext is an interface to support dynamic dispatch. +type IModule_argumentContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsModule_argumentContext differentiates from other interfaces. + IsModule_argumentContext() +} + +type Module_argumentContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyModule_argumentContext() *Module_argumentContext { + var p = new(Module_argumentContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_module_argument + return p +} + +func (*Module_argumentContext) IsModule_argumentContext() {} + +func NewModule_argumentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_argumentContext { + var p = new(Module_argumentContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_module_argument + + return p +} + +func (s *Module_argumentContext) GetParser() antlr.Parser { return s.parser } + +func (s *Module_argumentContext) Expr() IExprContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *Module_argumentContext) Column_def() IColumn_defContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IColumn_defContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IColumn_defContext) +} + +func (s *Module_argumentContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Module_argumentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Module_argumentContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterModule_argument(s) + } +} + +func (s *Module_argumentContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitModule_argument(s) + } +} + + + + +func (p *SqlParser) Module_argument() (localctx IModule_argumentContext) { + this := p + _ = this + + localctx = NewModule_argumentContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 150, SqlParserRULE_module_argument) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1809) + p.GetErrorHandler().Sync(p) + switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 257, p.GetParserRuleContext()) { + case 1: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1807) + p.expr(0) + } + + + case 2: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1808) + p.Column_def() + } + + } + + + return localctx +} + + +// IColumn_aliasContext is an interface to support dynamic dispatch. +type IColumn_aliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_aliasContext differentiates from other interfaces. + IsColumn_aliasContext() +} + +type Column_aliasContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_aliasContext() *Column_aliasContext { + var p = new(Column_aliasContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_alias + return p +} + +func (*Column_aliasContext) IsColumn_aliasContext() {} + +func NewColumn_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_aliasContext { + var p = new(Column_aliasContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_alias + + return p +} + +func (s *Column_aliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_aliasContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *Column_aliasContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Column_aliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_aliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_aliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_alias(s) + } +} + +func (s *Column_aliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_alias(s) + } +} + + + + +func (p *SqlParser) Column_alias() (localctx IColumn_aliasContext) { + this := p + _ = this + + localctx = NewColumn_aliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 152, SqlParserRULE_column_alias) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1811) + _la = p.GetTokenStream().LA(1) + + if !(_la == SqlParserIDENTIFIER || _la == SqlParserSTRING_LITERAL) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + + return localctx +} + + +// IKeywordContext is an interface to support dynamic dispatch. +type IKeywordContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsKeywordContext differentiates from other interfaces. + IsKeywordContext() +} + +type KeywordContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyKeywordContext() *KeywordContext { + var p = new(KeywordContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_keyword + return p +} + +func (*KeywordContext) IsKeywordContext() {} + +func NewKeywordContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KeywordContext { + var p = new(KeywordContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_keyword + + return p +} + +func (s *KeywordContext) GetParser() antlr.Parser { return s.parser } + +func (s *KeywordContext) K_ABORT() antlr.TerminalNode { + return s.GetToken(SqlParserK_ABORT, 0) +} + +func (s *KeywordContext) K_ACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_ACTION, 0) +} + +func (s *KeywordContext) K_ADD() antlr.TerminalNode { + return s.GetToken(SqlParserK_ADD, 0) +} + +func (s *KeywordContext) K_AFTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_AFTER, 0) +} + +func (s *KeywordContext) K_ALL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALL, 0) +} + +func (s *KeywordContext) K_ALTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ALTER, 0) +} + +func (s *KeywordContext) K_ANALYZE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ANALYZE, 0) +} + +func (s *KeywordContext) K_AND() antlr.TerminalNode { + return s.GetToken(SqlParserK_AND, 0) +} + +func (s *KeywordContext) K_AS() antlr.TerminalNode { + return s.GetToken(SqlParserK_AS, 0) +} + +func (s *KeywordContext) K_ASC() antlr.TerminalNode { + return s.GetToken(SqlParserK_ASC, 0) +} + +func (s *KeywordContext) K_ATTACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_ATTACH, 0) +} + +func (s *KeywordContext) K_AUTOINCREMENT() antlr.TerminalNode { + return s.GetToken(SqlParserK_AUTOINCREMENT, 0) +} + +func (s *KeywordContext) K_BEFORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEFORE, 0) +} + +func (s *KeywordContext) K_BEGIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BEGIN, 0) +} + +func (s *KeywordContext) K_BETWEEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_BETWEEN, 0) +} + +func (s *KeywordContext) K_BY() antlr.TerminalNode { + return s.GetToken(SqlParserK_BY, 0) +} + +func (s *KeywordContext) K_CASCADE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CASCADE, 0) +} + +func (s *KeywordContext) K_CASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CASE, 0) +} + +func (s *KeywordContext) K_CAST() antlr.TerminalNode { + return s.GetToken(SqlParserK_CAST, 0) +} + +func (s *KeywordContext) K_CHECK() antlr.TerminalNode { + return s.GetToken(SqlParserK_CHECK, 0) +} + +func (s *KeywordContext) K_COLLATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLLATE, 0) +} + +func (s *KeywordContext) K_COLUMN() antlr.TerminalNode { + return s.GetToken(SqlParserK_COLUMN, 0) +} + +func (s *KeywordContext) K_COMMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_COMMIT, 0) +} + +func (s *KeywordContext) K_CONFLICT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONFLICT, 0) +} + +func (s *KeywordContext) K_CONSTRAINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_CONSTRAINT, 0) +} + +func (s *KeywordContext) K_CREATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CREATE, 0) +} + +func (s *KeywordContext) K_CROSS() antlr.TerminalNode { + return s.GetToken(SqlParserK_CROSS, 0) +} + +func (s *KeywordContext) K_CURRENT_DATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_DATE, 0) +} + +func (s *KeywordContext) K_CURRENT_TIME() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_TIME, 0) +} + +func (s *KeywordContext) K_CURRENT_TIMESTAMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_CURRENT_TIMESTAMP, 0) +} + +func (s *KeywordContext) K_DATABASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DATABASE, 0) +} + +func (s *KeywordContext) K_DEFAULT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFAULT, 0) +} + +func (s *KeywordContext) K_DEFERRABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRABLE, 0) +} + +func (s *KeywordContext) K_DEFERRED() antlr.TerminalNode { + return s.GetToken(SqlParserK_DEFERRED, 0) +} + +func (s *KeywordContext) K_DELETE() antlr.TerminalNode { + return s.GetToken(SqlParserK_DELETE, 0) +} + +func (s *KeywordContext) K_DESC() antlr.TerminalNode { + return s.GetToken(SqlParserK_DESC, 0) +} + +func (s *KeywordContext) K_DETACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_DETACH, 0) +} + +func (s *KeywordContext) K_DISTINCT() antlr.TerminalNode { + return s.GetToken(SqlParserK_DISTINCT, 0) +} + +func (s *KeywordContext) K_DROP() antlr.TerminalNode { + return s.GetToken(SqlParserK_DROP, 0) +} + +func (s *KeywordContext) K_EACH() antlr.TerminalNode { + return s.GetToken(SqlParserK_EACH, 0) +} + +func (s *KeywordContext) K_ELSE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ELSE, 0) +} + +func (s *KeywordContext) K_END() antlr.TerminalNode { + return s.GetToken(SqlParserK_END, 0) +} + +func (s *KeywordContext) K_ENABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ENABLE, 0) +} + +func (s *KeywordContext) K_ESCAPE() antlr.TerminalNode { + return s.GetToken(SqlParserK_ESCAPE, 0) +} + +func (s *KeywordContext) K_EXCEPT() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCEPT, 0) +} + +func (s *KeywordContext) K_EXCLUSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXCLUSIVE, 0) +} + +func (s *KeywordContext) K_EXISTS() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXISTS, 0) +} + +func (s *KeywordContext) K_EXPLAIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_EXPLAIN, 0) +} + +func (s *KeywordContext) K_FAIL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FAIL, 0) +} + +func (s *KeywordContext) K_FOR() antlr.TerminalNode { + return s.GetToken(SqlParserK_FOR, 0) +} + +func (s *KeywordContext) K_FOREIGN() antlr.TerminalNode { + return s.GetToken(SqlParserK_FOREIGN, 0) +} + +func (s *KeywordContext) K_FROM() antlr.TerminalNode { + return s.GetToken(SqlParserK_FROM, 0) +} + +func (s *KeywordContext) K_FULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_FULL, 0) +} + +func (s *KeywordContext) K_GLOB() antlr.TerminalNode { + return s.GetToken(SqlParserK_GLOB, 0) +} + +func (s *KeywordContext) K_GROUP() antlr.TerminalNode { + return s.GetToken(SqlParserK_GROUP, 0) +} + +func (s *KeywordContext) K_HAVING() antlr.TerminalNode { + return s.GetToken(SqlParserK_HAVING, 0) +} + +func (s *KeywordContext) K_IF() antlr.TerminalNode { + return s.GetToken(SqlParserK_IF, 0) +} + +func (s *KeywordContext) K_IGNORE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IGNORE, 0) +} + +func (s *KeywordContext) K_IMMEDIATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_IMMEDIATE, 0) +} + +func (s *KeywordContext) K_IN() antlr.TerminalNode { + return s.GetToken(SqlParserK_IN, 0) +} + +func (s *KeywordContext) K_INDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEX, 0) +} + +func (s *KeywordContext) K_INDEXED() antlr.TerminalNode { + return s.GetToken(SqlParserK_INDEXED, 0) +} + +func (s *KeywordContext) K_INITIALLY() antlr.TerminalNode { + return s.GetToken(SqlParserK_INITIALLY, 0) +} + +func (s *KeywordContext) K_INNER() antlr.TerminalNode { + return s.GetToken(SqlParserK_INNER, 0) +} + +func (s *KeywordContext) K_INSERT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSERT, 0) +} + +func (s *KeywordContext) K_INSTEAD() antlr.TerminalNode { + return s.GetToken(SqlParserK_INSTEAD, 0) +} + +func (s *KeywordContext) K_INTERSECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_INTERSECT, 0) +} + +func (s *KeywordContext) K_INTO() antlr.TerminalNode { + return s.GetToken(SqlParserK_INTO, 0) +} + +func (s *KeywordContext) K_IS() antlr.TerminalNode { + return s.GetToken(SqlParserK_IS, 0) +} + +func (s *KeywordContext) K_ISNULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_ISNULL, 0) +} + +func (s *KeywordContext) K_JOIN() antlr.TerminalNode { + return s.GetToken(SqlParserK_JOIN, 0) +} + +func (s *KeywordContext) K_KEY() antlr.TerminalNode { + return s.GetToken(SqlParserK_KEY, 0) +} + +func (s *KeywordContext) K_LEFT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LEFT, 0) +} + +func (s *KeywordContext) K_LIKE() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIKE, 0) +} + +func (s *KeywordContext) K_LIMIT() antlr.TerminalNode { + return s.GetToken(SqlParserK_LIMIT, 0) +} + +func (s *KeywordContext) K_MATCH() antlr.TerminalNode { + return s.GetToken(SqlParserK_MATCH, 0) +} + +func (s *KeywordContext) K_NATURAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NATURAL, 0) +} + +func (s *KeywordContext) K_NO() antlr.TerminalNode { + return s.GetToken(SqlParserK_NO, 0) +} + +func (s *KeywordContext) K_NOT() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOT, 0) +} + +func (s *KeywordContext) K_NOTNULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NOTNULL, 0) +} + +func (s *KeywordContext) K_NULL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NULL, 0) +} + +func (s *KeywordContext) K_OF() antlr.TerminalNode { + return s.GetToken(SqlParserK_OF, 0) +} + +func (s *KeywordContext) K_OFFSET() antlr.TerminalNode { + return s.GetToken(SqlParserK_OFFSET, 0) +} + +func (s *KeywordContext) K_ON() antlr.TerminalNode { + return s.GetToken(SqlParserK_ON, 0) +} + +func (s *KeywordContext) K_OR() antlr.TerminalNode { + return s.GetToken(SqlParserK_OR, 0) +} + +func (s *KeywordContext) K_ORDER() antlr.TerminalNode { + return s.GetToken(SqlParserK_ORDER, 0) +} + +func (s *KeywordContext) K_OUTER() antlr.TerminalNode { + return s.GetToken(SqlParserK_OUTER, 0) +} + +func (s *KeywordContext) K_PLAN() antlr.TerminalNode { + return s.GetToken(SqlParserK_PLAN, 0) +} + +func (s *KeywordContext) K_PRAGMA() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRAGMA, 0) +} + +func (s *KeywordContext) K_PRIMARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_PRIMARY, 0) +} + +func (s *KeywordContext) K_QUERY() antlr.TerminalNode { + return s.GetToken(SqlParserK_QUERY, 0) +} + +func (s *KeywordContext) K_RAISE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RAISE, 0) +} + +func (s *KeywordContext) K_RECURSIVE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RECURSIVE, 0) +} + +func (s *KeywordContext) K_REFERENCES() antlr.TerminalNode { + return s.GetToken(SqlParserK_REFERENCES, 0) +} + +func (s *KeywordContext) K_REGEXP() antlr.TerminalNode { + return s.GetToken(SqlParserK_REGEXP, 0) +} + +func (s *KeywordContext) K_REINDEX() antlr.TerminalNode { + return s.GetToken(SqlParserK_REINDEX, 0) +} + +func (s *KeywordContext) K_RELEASE() antlr.TerminalNode { + return s.GetToken(SqlParserK_RELEASE, 0) +} + +func (s *KeywordContext) K_RENAME() antlr.TerminalNode { + return s.GetToken(SqlParserK_RENAME, 0) +} + +func (s *KeywordContext) K_REPLACE() antlr.TerminalNode { + return s.GetToken(SqlParserK_REPLACE, 0) +} + +func (s *KeywordContext) K_RESTRICT() antlr.TerminalNode { + return s.GetToken(SqlParserK_RESTRICT, 0) +} + +func (s *KeywordContext) K_RIGHT() antlr.TerminalNode { + return s.GetToken(SqlParserK_RIGHT, 0) +} + +func (s *KeywordContext) K_ROLLBACK() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROLLBACK, 0) +} + +func (s *KeywordContext) K_ROW() antlr.TerminalNode { + return s.GetToken(SqlParserK_ROW, 0) +} + +func (s *KeywordContext) K_SAVEPOINT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SAVEPOINT, 0) +} + +func (s *KeywordContext) K_SELECT() antlr.TerminalNode { + return s.GetToken(SqlParserK_SELECT, 0) +} + +func (s *KeywordContext) K_SET() antlr.TerminalNode { + return s.GetToken(SqlParserK_SET, 0) +} + +func (s *KeywordContext) K_TABLE() antlr.TerminalNode { + return s.GetToken(SqlParserK_TABLE, 0) +} + +func (s *KeywordContext) K_TEMP() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMP, 0) +} + +func (s *KeywordContext) K_TEMPORARY() antlr.TerminalNode { + return s.GetToken(SqlParserK_TEMPORARY, 0) +} + +func (s *KeywordContext) K_THEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_THEN, 0) +} + +func (s *KeywordContext) K_TO() antlr.TerminalNode { + return s.GetToken(SqlParserK_TO, 0) +} + +func (s *KeywordContext) K_TRANSACTION() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRANSACTION, 0) +} + +func (s *KeywordContext) K_TRIGGER() antlr.TerminalNode { + return s.GetToken(SqlParserK_TRIGGER, 0) +} + +func (s *KeywordContext) K_UNION() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNION, 0) +} + +func (s *KeywordContext) K_UNIQUE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UNIQUE, 0) +} + +func (s *KeywordContext) K_UPDATE() antlr.TerminalNode { + return s.GetToken(SqlParserK_UPDATE, 0) +} + +func (s *KeywordContext) K_USING() antlr.TerminalNode { + return s.GetToken(SqlParserK_USING, 0) +} + +func (s *KeywordContext) K_VACUUM() antlr.TerminalNode { + return s.GetToken(SqlParserK_VACUUM, 0) +} + +func (s *KeywordContext) K_VALUES() antlr.TerminalNode { + return s.GetToken(SqlParserK_VALUES, 0) +} + +func (s *KeywordContext) K_VIEW() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIEW, 0) +} + +func (s *KeywordContext) K_VIRTUAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_VIRTUAL, 0) +} + +func (s *KeywordContext) K_WHEN() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHEN, 0) +} + +func (s *KeywordContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *KeywordContext) K_WITH() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITH, 0) +} + +func (s *KeywordContext) K_WITHOUT() antlr.TerminalNode { + return s.GetToken(SqlParserK_WITHOUT, 0) +} + +func (s *KeywordContext) K_NEXTVAL() antlr.TerminalNode { + return s.GetToken(SqlParserK_NEXTVAL, 0) +} + +func (s *KeywordContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *KeywordContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *KeywordContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterKeyword(s) + } +} + +func (s *KeywordContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitKeyword(s) + } +} + + + + +func (p *SqlParser) Keyword() (localctx IKeywordContext) { + this := p + _ = this + + localctx = NewKeywordContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 154, SqlParserRULE_keyword) + var _la int + + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1813) + _la = p.GetTokenStream().LA(1) + + if !(((((_la - 26)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 26))) & ((1 << (SqlParserK_ABORT - 26)) | (1 << (SqlParserK_ACTION - 26)) | (1 << (SqlParserK_ADD - 26)) | (1 << (SqlParserK_AFTER - 26)) | (1 << (SqlParserK_ALL - 26)) | (1 << (SqlParserK_ALTER - 26)) | (1 << (SqlParserK_ANALYZE - 26)) | (1 << (SqlParserK_AND - 26)) | (1 << (SqlParserK_AS - 26)) | (1 << (SqlParserK_ASC - 26)) | (1 << (SqlParserK_ATTACH - 26)) | (1 << (SqlParserK_AUTOINCREMENT - 26)) | (1 << (SqlParserK_BEFORE - 26)) | (1 << (SqlParserK_BEGIN - 26)) | (1 << (SqlParserK_BETWEEN - 26)) | (1 << (SqlParserK_BY - 26)) | (1 << (SqlParserK_CASCADE - 26)) | (1 << (SqlParserK_CASE - 26)) | (1 << (SqlParserK_CAST - 26)) | (1 << (SqlParserK_CHECK - 26)) | (1 << (SqlParserK_COLLATE - 26)) | (1 << (SqlParserK_COLUMN - 26)) | (1 << (SqlParserK_COMMIT - 26)) | (1 << (SqlParserK_CONFLICT - 26)) | (1 << (SqlParserK_CONSTRAINT - 26)) | (1 << (SqlParserK_CREATE - 26)) | (1 << (SqlParserK_CROSS - 26)) | (1 << (SqlParserK_CURRENT_DATE - 26)) | (1 << (SqlParserK_CURRENT_TIME - 26)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 26)) | (1 << (SqlParserK_DATABASE - 26)) | (1 << (SqlParserK_DEFAULT - 26)))) != 0) || ((((_la - 58)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 58))) & ((1 << (SqlParserK_DEFERRABLE - 58)) | (1 << (SqlParserK_DEFERRED - 58)) | (1 << (SqlParserK_DELETE - 58)) | (1 << (SqlParserK_DESC - 58)) | (1 << (SqlParserK_DETACH - 58)) | (1 << (SqlParserK_DISTINCT - 58)) | (1 << (SqlParserK_DROP - 58)) | (1 << (SqlParserK_EACH - 58)) | (1 << (SqlParserK_ELSE - 58)) | (1 << (SqlParserK_END - 58)) | (1 << (SqlParserK_ENABLE - 58)) | (1 << (SqlParserK_ESCAPE - 58)) | (1 << (SqlParserK_EXCEPT - 58)) | (1 << (SqlParserK_EXCLUSIVE - 58)) | (1 << (SqlParserK_EXISTS - 58)) | (1 << (SqlParserK_EXPLAIN - 58)) | (1 << (SqlParserK_FAIL - 58)) | (1 << (SqlParserK_FOR - 58)) | (1 << (SqlParserK_FOREIGN - 58)) | (1 << (SqlParserK_FROM - 58)) | (1 << (SqlParserK_FULL - 58)) | (1 << (SqlParserK_GLOB - 58)) | (1 << (SqlParserK_GROUP - 58)) | (1 << (SqlParserK_HAVING - 58)) | (1 << (SqlParserK_IF - 58)) | (1 << (SqlParserK_IGNORE - 58)) | (1 << (SqlParserK_IMMEDIATE - 58)) | (1 << (SqlParserK_IN - 58)) | (1 << (SqlParserK_INDEX - 58)) | (1 << (SqlParserK_INDEXED - 58)) | (1 << (SqlParserK_INITIALLY - 58)) | (1 << (SqlParserK_INNER - 58)))) != 0) || ((((_la - 90)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 90))) & ((1 << (SqlParserK_INSERT - 90)) | (1 << (SqlParserK_INSTEAD - 90)) | (1 << (SqlParserK_INTERSECT - 90)) | (1 << (SqlParserK_INTO - 90)) | (1 << (SqlParserK_IS - 90)) | (1 << (SqlParserK_ISNULL - 90)) | (1 << (SqlParserK_JOIN - 90)) | (1 << (SqlParserK_KEY - 90)) | (1 << (SqlParserK_LEFT - 90)) | (1 << (SqlParserK_LIKE - 90)) | (1 << (SqlParserK_LIMIT - 90)) | (1 << (SqlParserK_MATCH - 90)) | (1 << (SqlParserK_NATURAL - 90)) | (1 << (SqlParserK_NEXTVAL - 90)) | (1 << (SqlParserK_NO - 90)) | (1 << (SqlParserK_NOT - 90)) | (1 << (SqlParserK_NOTNULL - 90)) | (1 << (SqlParserK_NULL - 90)) | (1 << (SqlParserK_OF - 90)) | (1 << (SqlParserK_OFFSET - 90)) | (1 << (SqlParserK_ON - 90)) | (1 << (SqlParserK_OR - 90)) | (1 << (SqlParserK_ORDER - 90)) | (1 << (SqlParserK_OUTER - 90)) | (1 << (SqlParserK_PLAN - 90)) | (1 << (SqlParserK_PRAGMA - 90)) | (1 << (SqlParserK_PRIMARY - 90)) | (1 << (SqlParserK_QUERY - 90)) | (1 << (SqlParserK_RAISE - 90)) | (1 << (SqlParserK_RECURSIVE - 90)) | (1 << (SqlParserK_REFERENCES - 90)))) != 0) || ((((_la - 122)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 122))) & ((1 << (SqlParserK_REGEXP - 122)) | (1 << (SqlParserK_REINDEX - 122)) | (1 << (SqlParserK_RELEASE - 122)) | (1 << (SqlParserK_RENAME - 122)) | (1 << (SqlParserK_REPLACE - 122)) | (1 << (SqlParserK_RESTRICT - 122)) | (1 << (SqlParserK_RIGHT - 122)) | (1 << (SqlParserK_ROLLBACK - 122)) | (1 << (SqlParserK_ROW - 122)) | (1 << (SqlParserK_SAVEPOINT - 122)) | (1 << (SqlParserK_SELECT - 122)) | (1 << (SqlParserK_SET - 122)) | (1 << (SqlParserK_TABLE - 122)) | (1 << (SqlParserK_TEMP - 122)) | (1 << (SqlParserK_TEMPORARY - 122)) | (1 << (SqlParserK_THEN - 122)) | (1 << (SqlParserK_TO - 122)) | (1 << (SqlParserK_TRANSACTION - 122)) | (1 << (SqlParserK_TRIGGER - 122)) | (1 << (SqlParserK_UNION - 122)) | (1 << (SqlParserK_UNIQUE - 122)) | (1 << (SqlParserK_UPDATE - 122)) | (1 << (SqlParserK_USING - 122)) | (1 << (SqlParserK_VACUUM - 122)) | (1 << (SqlParserK_VALUES - 122)) | (1 << (SqlParserK_VIEW - 122)) | (1 << (SqlParserK_VIRTUAL - 122)) | (1 << (SqlParserK_WHEN - 122)) | (1 << (SqlParserK_WHERE - 122)) | (1 << (SqlParserK_WITH - 122)) | (1 << (SqlParserK_WITHOUT - 122)))) != 0)) { + p.GetErrorHandler().RecoverInline(p) + } else { + p.GetErrorHandler().ReportMatch(p) + p.Consume() + } + } + + + + return localctx +} + + +// IUnknownContext is an interface to support dynamic dispatch. +type IUnknownContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsUnknownContext differentiates from other interfaces. + IsUnknownContext() +} + +type UnknownContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyUnknownContext() *UnknownContext { + var p = new(UnknownContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_unknown + return p +} + +func (*UnknownContext) IsUnknownContext() {} + +func NewUnknownContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnknownContext { + var p = new(UnknownContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_unknown + + return p +} + +func (s *UnknownContext) GetParser() antlr.Parser { return s.parser } +func (s *UnknownContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *UnknownContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *UnknownContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterUnknown(s) + } +} + +func (s *UnknownContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitUnknown(s) + } +} + + + + +func (p *SqlParser) Unknown() (localctx IUnknownContext) { + this := p + _ = this + + localctx = NewUnknownContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 156, SqlParserRULE_unknown) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + var _alt int + + p.EnterOuterAlt(localctx, 1) + p.SetState(1816) + p.GetErrorHandler().Sync(p) + _alt = 1 + for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { + switch _alt { + case 1: + p.SetState(1815) + p.MatchWildcard() + + + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + p.SetState(1818) + p.GetErrorHandler().Sync(p) + _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 258, p.GetParserRuleContext()) + } + + + + return localctx +} + + +// INameContext is an interface to support dynamic dispatch. +type INameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsNameContext differentiates from other interfaces. + IsNameContext() +} + +type NameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNameContext() *NameContext { + var p = new(NameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_name + return p +} + +func (*NameContext) IsNameContext() {} + +func NewNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NameContext { + var p = new(NameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_name + + return p +} + +func (s *NameContext) GetParser() antlr.Parser { return s.parser } + +func (s *NameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *NameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *NameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *NameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterName(s) + } +} + +func (s *NameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitName(s) + } +} + + + + +func (p *SqlParser) Name() (localctx INameContext) { + this := p + _ = this + + localctx = NewNameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 158, SqlParserRULE_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1820) + p.Any_name() + } + + + + return localctx +} + + +// IFunction_nameContext is an interface to support dynamic dispatch. +type IFunction_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsFunction_nameContext differentiates from other interfaces. + IsFunction_nameContext() +} + +type Function_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyFunction_nameContext() *Function_nameContext { + var p = new(Function_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_function_name + return p +} + +func (*Function_nameContext) IsFunction_nameContext() {} + +func NewFunction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Function_nameContext { + var p = new(Function_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_function_name + + return p +} + +func (s *Function_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Function_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Function_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Function_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Function_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterFunction_name(s) + } +} + +func (s *Function_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitFunction_name(s) + } +} + + + + +func (p *SqlParser) Function_name() (localctx IFunction_nameContext) { + this := p + _ = this + + localctx = NewFunction_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 160, SqlParserRULE_function_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1822) + p.Any_name() + } + + + + return localctx +} + + +// IDatabase_nameContext is an interface to support dynamic dispatch. +type IDatabase_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsDatabase_nameContext differentiates from other interfaces. + IsDatabase_nameContext() +} + +type Database_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyDatabase_nameContext() *Database_nameContext { + var p = new(Database_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_database_name + return p +} + +func (*Database_nameContext) IsDatabase_nameContext() {} + +func NewDatabase_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Database_nameContext { + var p = new(Database_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_database_name + + return p +} + +func (s *Database_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Database_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Database_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Database_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Database_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterDatabase_name(s) + } +} + +func (s *Database_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitDatabase_name(s) + } +} + + + + +func (p *SqlParser) Database_name() (localctx IDatabase_nameContext) { + this := p + _ = this + + localctx = NewDatabase_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 162, SqlParserRULE_database_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1824) + p.Any_name() + } + + + + return localctx +} + + +// ISource_table_nameContext is an interface to support dynamic dispatch. +type ISource_table_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSource_table_nameContext differentiates from other interfaces. + IsSource_table_nameContext() +} + +type Source_table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySource_table_nameContext() *Source_table_nameContext { + var p = new(Source_table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_source_table_name + return p +} + +func (*Source_table_nameContext) IsSource_table_nameContext() {} + +func NewSource_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Source_table_nameContext { + var p = new(Source_table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_source_table_name + + return p +} + +func (s *Source_table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Source_table_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Source_table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Source_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Source_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSource_table_name(s) + } +} + +func (s *Source_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSource_table_name(s) + } +} + + + + +func (p *SqlParser) Source_table_name() (localctx ISource_table_nameContext) { + this := p + _ = this + + localctx = NewSource_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 164, SqlParserRULE_source_table_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1826) + p.Any_name() + } + + + + return localctx +} + + +// ITable_nameContext is an interface to support dynamic dispatch. +type ITable_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_nameContext differentiates from other interfaces. + IsTable_nameContext() +} + +type Table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_nameContext() *Table_nameContext { + var p = new(Table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_name + return p +} + +func (*Table_nameContext) IsTable_nameContext() {} + +func NewTable_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_nameContext { + var p = new(Table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_name + + return p +} + +func (s *Table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_name(s) + } +} + +func (s *Table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_name(s) + } +} + + + + +func (p *SqlParser) Table_name() (localctx ITable_nameContext) { + this := p + _ = this + + localctx = NewTable_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 166, SqlParserRULE_table_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1828) + p.Any_name() + } + + + + return localctx +} + + +// ITable_or_index_nameContext is an interface to support dynamic dispatch. +type ITable_or_index_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_or_index_nameContext differentiates from other interfaces. + IsTable_or_index_nameContext() +} + +type Table_or_index_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_or_index_nameContext() *Table_or_index_nameContext { + var p = new(Table_or_index_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_or_index_name + return p +} + +func (*Table_or_index_nameContext) IsTable_or_index_nameContext() {} + +func NewTable_or_index_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_or_index_nameContext { + var p = new(Table_or_index_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_or_index_name + + return p +} + +func (s *Table_or_index_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_or_index_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Table_or_index_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_or_index_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_or_index_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_or_index_name(s) + } +} + +func (s *Table_or_index_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_or_index_name(s) + } +} + + + + +func (p *SqlParser) Table_or_index_name() (localctx ITable_or_index_nameContext) { + this := p + _ = this + + localctx = NewTable_or_index_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 168, SqlParserRULE_table_or_index_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1830) + p.Any_name() + } + + + + return localctx +} + + +// INew_table_nameContext is an interface to support dynamic dispatch. +type INew_table_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsNew_table_nameContext differentiates from other interfaces. + IsNew_table_nameContext() +} + +type New_table_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyNew_table_nameContext() *New_table_nameContext { + var p = new(New_table_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_new_table_name + return p +} + +func (*New_table_nameContext) IsNew_table_nameContext() {} + +func NewNew_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *New_table_nameContext { + var p = new(New_table_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_new_table_name + + return p +} + +func (s *New_table_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *New_table_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *New_table_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *New_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *New_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterNew_table_name(s) + } +} + +func (s *New_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitNew_table_name(s) + } +} + + + + +func (p *SqlParser) New_table_name() (localctx INew_table_nameContext) { + this := p + _ = this + + localctx = NewNew_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 170, SqlParserRULE_new_table_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1832) + p.Any_name() + } + + + + return localctx +} + + +// IColumn_nameContext is an interface to support dynamic dispatch. +type IColumn_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsColumn_nameContext differentiates from other interfaces. + IsColumn_nameContext() +} + +type Column_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyColumn_nameContext() *Column_nameContext { + var p = new(Column_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_column_name + return p +} + +func (*Column_nameContext) IsColumn_nameContext() {} + +func NewColumn_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_nameContext { + var p = new(Column_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_column_name + + return p +} + +func (s *Column_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Column_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Column_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Column_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterColumn_name(s) + } +} + +func (s *Column_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitColumn_name(s) + } +} + + + + +func (p *SqlParser) Column_name() (localctx IColumn_nameContext) { + this := p + _ = this + + localctx = NewColumn_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 172, SqlParserRULE_column_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1834) + p.Any_name() + } + + + + return localctx +} + + +// ICollation_nameContext is an interface to support dynamic dispatch. +type ICollation_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsCollation_nameContext differentiates from other interfaces. + IsCollation_nameContext() +} + +type Collation_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyCollation_nameContext() *Collation_nameContext { + var p = new(Collation_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_collation_name + return p +} + +func (*Collation_nameContext) IsCollation_nameContext() {} + +func NewCollation_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Collation_nameContext { + var p = new(Collation_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_collation_name + + return p +} + +func (s *Collation_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Collation_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Collation_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Collation_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Collation_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterCollation_name(s) + } +} + +func (s *Collation_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitCollation_name(s) + } +} + + + + +func (p *SqlParser) Collation_name() (localctx ICollation_nameContext) { + this := p + _ = this + + localctx = NewCollation_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 174, SqlParserRULE_collation_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1836) + p.Any_name() + } + + + + return localctx +} + + +// IForeign_tableContext is an interface to support dynamic dispatch. +type IForeign_tableContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsForeign_tableContext differentiates from other interfaces. + IsForeign_tableContext() +} + +type Foreign_tableContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyForeign_tableContext() *Foreign_tableContext { + var p = new(Foreign_tableContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_foreign_table + return p +} + +func (*Foreign_tableContext) IsForeign_tableContext() {} + +func NewForeign_tableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_tableContext { + var p = new(Foreign_tableContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_foreign_table + + return p +} + +func (s *Foreign_tableContext) GetParser() antlr.Parser { return s.parser } + +func (s *Foreign_tableContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Foreign_tableContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Foreign_tableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Foreign_tableContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterForeign_table(s) + } +} + +func (s *Foreign_tableContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitForeign_table(s) + } +} + + + + +func (p *SqlParser) Foreign_table() (localctx IForeign_tableContext) { + this := p + _ = this + + localctx = NewForeign_tableContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 176, SqlParserRULE_foreign_table) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1838) + p.Any_name() + } + + + + return localctx +} + + +// IIndex_nameContext is an interface to support dynamic dispatch. +type IIndex_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsIndex_nameContext differentiates from other interfaces. + IsIndex_nameContext() +} + +type Index_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyIndex_nameContext() *Index_nameContext { + var p = new(Index_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_index_name + return p +} + +func (*Index_nameContext) IsIndex_nameContext() {} + +func NewIndex_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Index_nameContext { + var p = new(Index_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_index_name + + return p +} + +func (s *Index_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Index_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Index_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Index_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Index_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterIndex_name(s) + } +} + +func (s *Index_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitIndex_name(s) + } +} + + + + +func (p *SqlParser) Index_name() (localctx IIndex_nameContext) { + this := p + _ = this + + localctx = NewIndex_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 178, SqlParserRULE_index_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1840) + p.Any_name() + } + + + + return localctx +} + + +// ITrigger_nameContext is an interface to support dynamic dispatch. +type ITrigger_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTrigger_nameContext differentiates from other interfaces. + IsTrigger_nameContext() +} + +type Trigger_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTrigger_nameContext() *Trigger_nameContext { + var p = new(Trigger_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_trigger_name + return p +} + +func (*Trigger_nameContext) IsTrigger_nameContext() {} + +func NewTrigger_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Trigger_nameContext { + var p = new(Trigger_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_trigger_name + + return p +} + +func (s *Trigger_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Trigger_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Trigger_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Trigger_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Trigger_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTrigger_name(s) + } +} + +func (s *Trigger_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTrigger_name(s) + } +} + + + + +func (p *SqlParser) Trigger_name() (localctx ITrigger_nameContext) { + this := p + _ = this + + localctx = NewTrigger_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 180, SqlParserRULE_trigger_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1842) + p.Any_name() + } + + + + return localctx +} + + +// IView_nameContext is an interface to support dynamic dispatch. +type IView_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsView_nameContext differentiates from other interfaces. + IsView_nameContext() +} + +type View_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyView_nameContext() *View_nameContext { + var p = new(View_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_view_name + return p +} + +func (*View_nameContext) IsView_nameContext() {} + +func NewView_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *View_nameContext { + var p = new(View_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_view_name + + return p +} + +func (s *View_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *View_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *View_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *View_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *View_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterView_name(s) + } +} + +func (s *View_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitView_name(s) + } +} + + + + +func (p *SqlParser) View_name() (localctx IView_nameContext) { + this := p + _ = this + + localctx = NewView_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 182, SqlParserRULE_view_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1844) + p.Any_name() + } + + + + return localctx +} + + +// IModule_nameContext is an interface to support dynamic dispatch. +type IModule_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsModule_nameContext differentiates from other interfaces. + IsModule_nameContext() +} + +type Module_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyModule_nameContext() *Module_nameContext { + var p = new(Module_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_module_name + return p +} + +func (*Module_nameContext) IsModule_nameContext() {} + +func NewModule_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_nameContext { + var p = new(Module_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_module_name + + return p +} + +func (s *Module_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Module_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Module_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Module_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Module_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterModule_name(s) + } +} + +func (s *Module_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitModule_name(s) + } +} + + + + +func (p *SqlParser) Module_name() (localctx IModule_nameContext) { + this := p + _ = this + + localctx = NewModule_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 184, SqlParserRULE_module_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1846) + p.Any_name() + } + + + + return localctx +} + + +// IPragma_nameContext is an interface to support dynamic dispatch. +type IPragma_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsPragma_nameContext differentiates from other interfaces. + IsPragma_nameContext() +} + +type Pragma_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyPragma_nameContext() *Pragma_nameContext { + var p = new(Pragma_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_pragma_name + return p +} + +func (*Pragma_nameContext) IsPragma_nameContext() {} + +func NewPragma_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_nameContext { + var p = new(Pragma_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_pragma_name + + return p +} + +func (s *Pragma_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Pragma_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Pragma_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Pragma_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Pragma_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterPragma_name(s) + } +} + +func (s *Pragma_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitPragma_name(s) + } +} + + + + +func (p *SqlParser) Pragma_name() (localctx IPragma_nameContext) { + this := p + _ = this + + localctx = NewPragma_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 186, SqlParserRULE_pragma_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1848) + p.Any_name() + } + + + + return localctx +} + + +// ISavepoint_nameContext is an interface to support dynamic dispatch. +type ISavepoint_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsSavepoint_nameContext differentiates from other interfaces. + IsSavepoint_nameContext() +} + +type Savepoint_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptySavepoint_nameContext() *Savepoint_nameContext { + var p = new(Savepoint_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_savepoint_name + return p +} + +func (*Savepoint_nameContext) IsSavepoint_nameContext() {} + +func NewSavepoint_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_nameContext { + var p = new(Savepoint_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_savepoint_name + + return p +} + +func (s *Savepoint_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Savepoint_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Savepoint_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Savepoint_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Savepoint_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterSavepoint_name(s) + } +} + +func (s *Savepoint_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitSavepoint_name(s) + } +} + + + + +func (p *SqlParser) Savepoint_name() (localctx ISavepoint_nameContext) { + this := p + _ = this + + localctx = NewSavepoint_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 188, SqlParserRULE_savepoint_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1850) + p.Any_name() + } + + + + return localctx +} + + +// ITable_aliasContext is an interface to support dynamic dispatch. +type ITable_aliasContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTable_aliasContext differentiates from other interfaces. + IsTable_aliasContext() +} + +type Table_aliasContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTable_aliasContext() *Table_aliasContext { + var p = new(Table_aliasContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_table_alias + return p +} + +func (*Table_aliasContext) IsTable_aliasContext() {} + +func NewTable_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_aliasContext { + var p = new(Table_aliasContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_table_alias + + return p +} + +func (s *Table_aliasContext) GetParser() antlr.Parser { return s.parser } + +func (s *Table_aliasContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Table_aliasContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Table_aliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Table_aliasContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTable_alias(s) + } +} + +func (s *Table_aliasContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTable_alias(s) + } +} + + + + +func (p *SqlParser) Table_alias() (localctx ITable_aliasContext) { + this := p + _ = this + + localctx = NewTable_aliasContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 190, SqlParserRULE_table_alias) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1852) + p.Any_name() + } + + + + return localctx +} + + +// ITransaction_nameContext is an interface to support dynamic dispatch. +type ITransaction_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTransaction_nameContext differentiates from other interfaces. + IsTransaction_nameContext() +} + +type Transaction_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTransaction_nameContext() *Transaction_nameContext { + var p = new(Transaction_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_transaction_name + return p +} + +func (*Transaction_nameContext) IsTransaction_nameContext() {} + +func NewTransaction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Transaction_nameContext { + var p = new(Transaction_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_transaction_name + + return p +} + +func (s *Transaction_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Transaction_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Transaction_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Transaction_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Transaction_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTransaction_name(s) + } +} + +func (s *Transaction_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTransaction_name(s) + } +} + + + + +func (p *SqlParser) Transaction_name() (localctx ITransaction_nameContext) { + this := p + _ = this + + localctx = NewTransaction_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 192, SqlParserRULE_transaction_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1854) + p.Any_name() + } + + + + return localctx +} + + +// IAny_nameContext is an interface to support dynamic dispatch. +type IAny_nameContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsAny_nameContext differentiates from other interfaces. + IsAny_nameContext() +} + +type Any_nameContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyAny_nameContext() *Any_nameContext { + var p = new(Any_nameContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_any_name + return p +} + +func (*Any_nameContext) IsAny_nameContext() {} + +func NewAny_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Any_nameContext { + var p = new(Any_nameContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_any_name + + return p +} + +func (s *Any_nameContext) GetParser() antlr.Parser { return s.parser } + +func (s *Any_nameContext) IDENTIFIER() antlr.TerminalNode { + return s.GetToken(SqlParserIDENTIFIER, 0) +} + +func (s *Any_nameContext) Keyword() IKeywordContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IKeywordContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IKeywordContext) +} + +func (s *Any_nameContext) STRING_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserSTRING_LITERAL, 0) +} + +func (s *Any_nameContext) OPEN_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserOPEN_PAR, 0) +} + +func (s *Any_nameContext) Any_name() IAny_nameContext { + var t antlr.RuleContext; + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IAny_nameContext); ok { + t = ctx.(antlr.RuleContext); + break + } + } + + if t == nil { + return nil + } + + return t.(IAny_nameContext) +} + +func (s *Any_nameContext) CLOSE_PAR() antlr.TerminalNode { + return s.GetToken(SqlParserCLOSE_PAR, 0) +} + +func (s *Any_nameContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *Any_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + + +func (s *Any_nameContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterAny_name(s) + } +} + +func (s *Any_nameContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitAny_name(s) + } +} + + + + +func (p *SqlParser) Any_name() (localctx IAny_nameContext) { + this := p + _ = this + + localctx = NewAny_nameContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 194, SqlParserRULE_any_name) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.SetState(1863) + p.GetErrorHandler().Sync(p) + + switch p.GetTokenStream().LA(1) { + case SqlParserIDENTIFIER: + p.EnterOuterAlt(localctx, 1) + { + p.SetState(1856) + p.Match(SqlParserIDENTIFIER) + } + + + case SqlParserK_ABORT, SqlParserK_ACTION, SqlParserK_ADD, SqlParserK_AFTER, SqlParserK_ALL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_AND, SqlParserK_AS, SqlParserK_ASC, SqlParserK_ATTACH, SqlParserK_AUTOINCREMENT, SqlParserK_BEFORE, SqlParserK_BEGIN, SqlParserK_BETWEEN, SqlParserK_BY, SqlParserK_CASCADE, SqlParserK_CASE, SqlParserK_CAST, SqlParserK_CHECK, SqlParserK_COLLATE, SqlParserK_COLUMN, SqlParserK_COMMIT, SqlParserK_CONFLICT, SqlParserK_CONSTRAINT, SqlParserK_CREATE, SqlParserK_CROSS, SqlParserK_CURRENT_DATE, SqlParserK_CURRENT_TIME, SqlParserK_CURRENT_TIMESTAMP, SqlParserK_DATABASE, SqlParserK_DEFAULT, SqlParserK_DEFERRABLE, SqlParserK_DEFERRED, SqlParserK_DELETE, SqlParserK_DESC, SqlParserK_DETACH, SqlParserK_DISTINCT, SqlParserK_DROP, SqlParserK_EACH, SqlParserK_ELSE, SqlParserK_END, SqlParserK_ENABLE, SqlParserK_ESCAPE, SqlParserK_EXCEPT, SqlParserK_EXCLUSIVE, SqlParserK_EXISTS, SqlParserK_EXPLAIN, SqlParserK_FAIL, SqlParserK_FOR, SqlParserK_FOREIGN, SqlParserK_FROM, SqlParserK_FULL, SqlParserK_GLOB, SqlParserK_GROUP, SqlParserK_HAVING, SqlParserK_IF, SqlParserK_IGNORE, SqlParserK_IMMEDIATE, SqlParserK_IN, SqlParserK_INDEX, SqlParserK_INDEXED, SqlParserK_INITIALLY, SqlParserK_INNER, SqlParserK_INSERT, SqlParserK_INSTEAD, SqlParserK_INTERSECT, SqlParserK_INTO, SqlParserK_IS, SqlParserK_ISNULL, SqlParserK_JOIN, SqlParserK_KEY, SqlParserK_LEFT, SqlParserK_LIKE, SqlParserK_LIMIT, SqlParserK_MATCH, SqlParserK_NATURAL, SqlParserK_NEXTVAL, SqlParserK_NO, SqlParserK_NOT, SqlParserK_NOTNULL, SqlParserK_NULL, SqlParserK_OF, SqlParserK_OFFSET, SqlParserK_ON, SqlParserK_OR, SqlParserK_ORDER, SqlParserK_OUTER, SqlParserK_PLAN, SqlParserK_PRAGMA, SqlParserK_PRIMARY, SqlParserK_QUERY, SqlParserK_RAISE, SqlParserK_RECURSIVE, SqlParserK_REFERENCES, SqlParserK_REGEXP, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_RENAME, SqlParserK_REPLACE, SqlParserK_RESTRICT, SqlParserK_RIGHT, SqlParserK_ROLLBACK, SqlParserK_ROW, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_TABLE, SqlParserK_TEMP, SqlParserK_TEMPORARY, SqlParserK_THEN, SqlParserK_TO, SqlParserK_TRANSACTION, SqlParserK_TRIGGER, SqlParserK_UNION, SqlParserK_UNIQUE, SqlParserK_UPDATE, SqlParserK_USING, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_VIEW, SqlParserK_VIRTUAL, SqlParserK_WHEN, SqlParserK_WHERE, SqlParserK_WITH, SqlParserK_WITHOUT: + p.EnterOuterAlt(localctx, 2) + { + p.SetState(1857) + p.Keyword() + } + + + case SqlParserSTRING_LITERAL: + p.EnterOuterAlt(localctx, 3) + { + p.SetState(1858) + p.Match(SqlParserSTRING_LITERAL) + } + + + case SqlParserOPEN_PAR: + p.EnterOuterAlt(localctx, 4) + { + p.SetState(1859) + p.Match(SqlParserOPEN_PAR) + } + { + p.SetState(1860) + p.Any_name() + } + { + p.SetState(1861) + p.Match(SqlParserCLOSE_PAR) + } + + + + default: + panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) + } + + + return localctx +} + + +func (p *SqlParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { + switch ruleIndex { + case 47: + var t *ExprContext = nil + if localctx != nil { t = localctx.(*ExprContext) } + return p.Expr_Sempred(t, predIndex) + + + default: + panic("No predicate with index: " + fmt.Sprint(ruleIndex)) + } +} + +func (p *SqlParser) Expr_Sempred(localctx antlr.RuleContext, predIndex int) bool { + this := p + _ = this + + switch predIndex { + case 0: + return p.Precpred(p.GetParserRuleContext(), 20) + + case 1: + return p.Precpred(p.GetParserRuleContext(), 19) + + case 2: + return p.Precpred(p.GetParserRuleContext(), 18) + + case 3: + return p.Precpred(p.GetParserRuleContext(), 17) + + case 4: + return p.Precpred(p.GetParserRuleContext(), 16) + + case 5: + return p.Precpred(p.GetParserRuleContext(), 15) + + case 6: + return p.Precpred(p.GetParserRuleContext(), 14) + + case 7: + return p.Precpred(p.GetParserRuleContext(), 13) + + case 8: + return p.Precpred(p.GetParserRuleContext(), 6) + + case 9: + return p.Precpred(p.GetParserRuleContext(), 5) + + case 10: + return p.Precpred(p.GetParserRuleContext(), 9) + + case 11: + return p.Precpred(p.GetParserRuleContext(), 8) + + case 12: + return p.Precpred(p.GetParserRuleContext(), 7) + + case 13: + return p.Precpred(p.GetParserRuleContext(), 4) + + default: + panic("No predicate with index: " + fmt.Sprint(predIndex)) + } +} + From 94498ffbf7cf7e2a3974654bd0f670df95777655 Mon Sep 17 00:00:00 2001 From: Anton Chirikalov Date: Thu, 16 Jun 2022 22:12:17 +0300 Subject: [PATCH 2/3] Deleted unnecessary testing staff --- processor/stream_processor/test/Sql.g4 | 980 - .../stream_processor/test/parser/Sql.interp | 431 - .../stream_processor/test/parser/Sql.tokens | 186 - .../test/parser/SqlLexer.interp | 527 - .../test/parser/SqlLexer.tokens | 186 - .../test/parser/sql_base_listener.go | 618 - .../stream_processor/test/parser/sql_lexer.go | 1002 - .../test/parser/sql_lexer_test.go | 22 - .../test/parser/sql_listener.go | 598 - .../test/parser/sql_parser.go | 25479 ---------------- 10 files changed, 30029 deletions(-) delete mode 100644 processor/stream_processor/test/Sql.g4 delete mode 100644 processor/stream_processor/test/parser/Sql.interp delete mode 100644 processor/stream_processor/test/parser/Sql.tokens delete mode 100644 processor/stream_processor/test/parser/SqlLexer.interp delete mode 100644 processor/stream_processor/test/parser/SqlLexer.tokens delete mode 100644 processor/stream_processor/test/parser/sql_base_listener.go delete mode 100644 processor/stream_processor/test/parser/sql_lexer.go delete mode 100644 processor/stream_processor/test/parser/sql_lexer_test.go delete mode 100644 processor/stream_processor/test/parser/sql_listener.go delete mode 100644 processor/stream_processor/test/parser/sql_parser.go diff --git a/processor/stream_processor/test/Sql.g4 b/processor/stream_processor/test/Sql.g4 deleted file mode 100644 index 2022d75525a2..000000000000 --- a/processor/stream_processor/test/Sql.g4 +++ /dev/null @@ -1,980 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2014 by Bart Kiers - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * Project : sqlite-parser; an ANTLR4 grammar for SQLite - * https://github.com/bkiers/sqlite-parser - * Developed by : Bart Kiers, bart@big-o.nl - */ -grammar Sql; - -parse - : ( sql_stmt_list | error )* EOF - ; - -error - : UNEXPECTED_CHAR - { - throw new RuntimeException("UNEXPECTED_CHAR=" + $UNEXPECTED_CHAR.text); - } - ; - -sql_stmt_list - : ';'* sql_stmt ( ';'+ sql_stmt )* ';'* - ; - -sql_stmt - : ( K_EXPLAIN ( K_QUERY K_PLAN )? )? ( alter_table_stmt - | analyze_stmt - | attach_stmt - | begin_stmt - | commit_stmt - | compound_select_stmt - | create_index_stmt - | create_table_stmt - | create_trigger_stmt - | create_view_stmt - | create_virtual_table_stmt - | delete_stmt - | delete_stmt_limited - | detach_stmt - | drop_index_stmt - | drop_table_stmt - | drop_trigger_stmt - | drop_view_stmt - | factored_select_stmt - | insert_stmt - | pragma_stmt - | reindex_stmt - | release_stmt - | rollback_stmt - | savepoint_stmt - | simple_select_stmt - | select_stmt - | update_stmt - | update_stmt_limited - | vacuum_stmt ) - ; - -alter_table_stmt - : K_ALTER K_TABLE K_ONLY? ( database_name '.' )? source_table_name - ( K_RENAME K_TO new_table_name - | alter_table_add - | alter_table_add_constraint - | K_ADD K_COLUMN? column_def - ) - K_ENABLE? (unknown)? - ; - -alter_table_add_constraint - : K_ADD K_CONSTRAINT any_name table_constraint - ; - -alter_table_add - : K_ADD table_constraint - ; - -analyze_stmt - : K_ANALYZE ( database_name | table_or_index_name | database_name '.' table_or_index_name )? - ; - -attach_stmt - : K_ATTACH K_DATABASE? expr K_AS database_name - ; - -begin_stmt - : K_BEGIN ( K_DEFERRED | K_IMMEDIATE | K_EXCLUSIVE )? ( K_TRANSACTION transaction_name? )? - ; - -commit_stmt - : ( K_COMMIT | K_END ) ( K_TRANSACTION transaction_name? )? - ; - -compound_select_stmt - : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? - select_core ( ( K_UNION K_ALL? | K_INTERSECT | K_EXCEPT ) select_core )+ - ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? - ; - -create_index_stmt - : K_CREATE K_UNIQUE? K_INDEX ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? index_name K_ON table_name '(' indexed_column ( ',' indexed_column )* ')' - ( K_WHERE expr )? - ; - -create_table_stmt - : K_CREATE ( K_TEMP | K_TEMPORARY )? K_TABLE ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? table_name - ( '(' column_def ( ',' table_constraint | ',' column_def )* ')' ( K_WITHOUT IDENTIFIER )? - | K_AS select_stmt - ) (unknown)? - ; - -create_trigger_stmt - : K_CREATE ( K_TEMP | K_TEMPORARY )? K_TRIGGER ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? trigger_name ( K_BEFORE | K_AFTER | K_INSTEAD K_OF )? - ( K_DELETE | K_INSERT | K_UPDATE ( K_OF column_name ( ',' column_name )* )? ) K_ON ( database_name '.' )? table_name - ( K_FOR K_EACH K_ROW )? ( K_WHEN expr )? - K_BEGIN ( ( update_stmt | insert_stmt | delete_stmt | select_stmt ) ';' )+ K_END - ; - -create_view_stmt - : K_CREATE ( K_TEMP | K_TEMPORARY )? K_VIEW ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? view_name K_AS select_stmt - ; - -create_virtual_table_stmt - : K_CREATE K_VIRTUAL K_TABLE ( K_IF K_NOT K_EXISTS )? - ( database_name '.' )? table_name - K_USING module_name ( '(' module_argument ( ',' module_argument )* ')' )? - ; - -delete_stmt - : with_clause? K_DELETE K_FROM qualified_table_name - ( K_WHERE expr )? - ; - -delete_stmt_limited - : with_clause? K_DELETE K_FROM qualified_table_name - ( K_WHERE expr )? - ( ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? - )? - ; - -detach_stmt - : K_DETACH K_DATABASE? database_name - ; - -drop_index_stmt - : K_DROP K_INDEX ( K_IF K_EXISTS )? ( database_name '.' )? index_name - ; - -drop_table_stmt - : K_DROP K_TABLE ( K_IF K_EXISTS )? ( database_name '.' )? table_name - ; - -drop_trigger_stmt - : K_DROP K_TRIGGER ( K_IF K_EXISTS )? ( database_name '.' )? trigger_name - ; - -drop_view_stmt - : K_DROP K_VIEW ( K_IF K_EXISTS )? ( database_name '.' )? view_name - ; - -factored_select_stmt - : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? - select_core ( compound_operator select_core )* - ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? - ; - -insert_stmt - : with_clause? ( K_INSERT - | K_REPLACE - | K_INSERT K_OR K_REPLACE - | K_INSERT K_OR K_ROLLBACK - | K_INSERT K_OR K_ABORT - | K_INSERT K_OR K_FAIL - | K_INSERT K_OR K_IGNORE ) K_INTO - ( database_name '.' )? table_name ( '(' column_name ( ',' column_name )* ')' )? - ( K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* - | select_stmt - | K_DEFAULT K_VALUES - ) - ; - -pragma_stmt - : K_PRAGMA ( database_name '.' )? pragma_name ( '=' pragma_value - | '(' pragma_value ')' )? - ; - -reindex_stmt - : K_REINDEX ( collation_name - | ( database_name '.' )? ( table_name | index_name ) - )? - ; - -release_stmt - : K_RELEASE K_SAVEPOINT? savepoint_name - ; - -rollback_stmt - : K_ROLLBACK ( K_TRANSACTION transaction_name? )? ( K_TO K_SAVEPOINT? savepoint_name )? - ; - -savepoint_stmt - : K_SAVEPOINT savepoint_name - ; - -simple_select_stmt - : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? - select_core ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? - ; - -select_stmt - : ( K_WITH K_RECURSIVE? common_table_expression ( ',' common_table_expression )* )? - select_or_values ( compound_operator select_or_values )* - ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - ( K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? )? - ; - -select_or_values - : K_SELECT ( K_DISTINCT | K_ALL )? result_column ( ',' result_column )* - ( K_FROM ( table_or_subquery ( ',' table_or_subquery )* | join_clause ) )? - ( K_WHERE expr )? - ( K_GROUP K_BY expr ( ',' expr )* ( K_HAVING expr )? )? - | K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* - ; - -update_stmt - : with_clause? K_UPDATE ( K_OR K_ROLLBACK - | K_OR K_ABORT - | K_OR K_REPLACE - | K_OR K_FAIL - | K_OR K_IGNORE )? qualified_table_name - K_SET column_name '=' expr ( ',' column_name '=' expr )* ( K_WHERE expr )? - ; - -update_stmt_limited - : with_clause? K_UPDATE ( K_OR K_ROLLBACK - | K_OR K_ABORT - | K_OR K_REPLACE - | K_OR K_FAIL - | K_OR K_IGNORE )? qualified_table_name - K_SET column_name '=' expr ( ',' column_name '=' expr )* ( K_WHERE expr )? - ( ( K_ORDER K_BY ordering_term ( ',' ordering_term )* )? - K_LIMIT expr ( ( K_OFFSET | ',' ) expr )? - )? - ; - -vacuum_stmt - : K_VACUUM - ; - -column_def - : column_name ( column_constraint | type_name )* - ; - -type_name - : name ( '(' signed_number (any_name)? ')' - | '(' signed_number (any_name)? ',' signed_number (any_name)? ')' )? - ; - -column_constraint - : ( K_CONSTRAINT name )? - ( column_constraint_primary_key - | column_constraint_foreign_key - | column_constraint_not_null - | column_constraint_null - | K_UNIQUE conflict_clause - | K_CHECK '(' expr ')' - | column_default - | K_COLLATE collation_name - ) - ; - -column_constraint_primary_key - : K_PRIMARY K_KEY ( K_ASC | K_DESC )? conflict_clause K_AUTOINCREMENT? - ; - -column_constraint_foreign_key - : foreign_key_clause - ; - -column_constraint_not_null - : K_NOT K_NULL conflict_clause - ; - -column_constraint_null - : K_NULL conflict_clause - ; - -column_default - : K_DEFAULT (column_default_value | '(' expr ')' | K_NEXTVAL '(' expr ')' | any_name ) ( '::' any_name+ )? - ; - -column_default_value - : ( signed_number | literal_value ) - ; - -conflict_clause - : ( K_ON K_CONFLICT ( K_ROLLBACK - | K_ABORT - | K_FAIL - | K_IGNORE - | K_REPLACE - ) - )? - ; - -/* - SQLite understands the following binary operators, in order from highest to - lowest precedence: - - || - * / % - + - - << >> & | - < <= > >= - = == != <> IS IS NOT IN LIKE GLOB MATCH REGEXP - AND - OR -*/ -expr - : literal_value - | BIND_PARAMETER - | ( ( database_name '.' )? table_name '.' )? column_name - | unary_operator expr - | expr '||' expr - | expr ( '*' | '/' | '%' ) expr - | expr ( '+' | '-' ) expr - | expr ( '<<' | '>>' | '&' | '|' ) expr - | expr ( '<' | '<=' | '>' | '>=' ) expr - | expr ( '=' | '==' | '!=' | '<>' | K_IS | K_IS K_NOT | K_IN | K_LIKE | K_GLOB | K_MATCH | K_REGEXP ) expr - | expr K_AND expr - | expr K_OR expr - | function_name '(' ( K_DISTINCT? expr ( ',' expr )* | '*' )? ')' - | '(' expr ')' - | K_CAST '(' expr K_AS type_name ')' - | expr K_COLLATE collation_name - | expr K_NOT? ( K_LIKE | K_GLOB | K_REGEXP | K_MATCH ) expr ( K_ESCAPE expr )? - | expr ( K_ISNULL | K_NOTNULL | K_NOT K_NULL ) - | expr K_IS K_NOT? expr - | expr K_NOT? K_BETWEEN expr K_AND expr - | expr K_NOT? K_IN ( '(' ( select_stmt - | expr ( ',' expr )* - )? - ')' - | ( database_name '.' )? table_name ) - | ( ( K_NOT )? K_EXISTS )? '(' select_stmt ')' - | K_CASE expr? ( K_WHEN expr K_THEN expr )+ ( K_ELSE expr )? K_END - | raise_function - ; - -foreign_key_clause - : K_REFERENCES ( database_name '.' )? foreign_table ( '(' fk_target_column_name ( ',' fk_target_column_name )* ')' )? - ( ( K_ON ( K_DELETE | K_UPDATE ) ( K_SET K_NULL - | K_SET K_DEFAULT - | K_CASCADE - | K_RESTRICT - | K_NO K_ACTION ) - | K_MATCH name - ) - )* - ( K_NOT? K_DEFERRABLE ( K_INITIALLY K_DEFERRED | K_INITIALLY K_IMMEDIATE )? K_ENABLE? )? - ; - -fk_target_column_name - : name - ; - -raise_function - : K_RAISE '(' ( K_IGNORE - | ( K_ROLLBACK | K_ABORT | K_FAIL ) ',' error_message ) - ')' - ; - -indexed_column - : column_name ( K_COLLATE collation_name )? ( K_ASC | K_DESC )? - ; - -table_constraint - : ( K_CONSTRAINT name )? - ( table_constraint_primary_key - | table_constraint_key - | table_constraint_unique - | K_CHECK '(' expr ')' - | table_constraint_foreign_key - ) - ; - -table_constraint_primary_key - : K_PRIMARY K_KEY '(' indexed_column ( ',' indexed_column )* ')' conflict_clause - ; - -table_constraint_foreign_key - : K_FOREIGN K_KEY '(' fk_origin_column_name ( ',' fk_origin_column_name )* ')' foreign_key_clause - ; - -table_constraint_unique - : K_UNIQUE K_KEY? name? '(' indexed_column ( ',' indexed_column )* ')' conflict_clause - ; - -table_constraint_key - : K_KEY name? '(' indexed_column ( ',' indexed_column )* ')' conflict_clause - ; - -fk_origin_column_name - : column_name - ; - -with_clause - : K_WITH K_RECURSIVE? cte_table_name K_AS '(' select_stmt ')' ( ',' cte_table_name K_AS '(' select_stmt ')' )* - ; - -qualified_table_name - : ( database_name '.' )? table_name ( K_INDEXED K_BY index_name - | K_NOT K_INDEXED )? - ; - -ordering_term - : expr ( K_COLLATE collation_name )? ( K_ASC | K_DESC )? - ; - -pragma_value - : signed_number - | name - | STRING_LITERAL - ; - -common_table_expression - : table_name ( '(' column_name ( ',' column_name )* ')' )? K_AS '(' select_stmt ')' - ; - -result_column - : '*' - | table_name '.' '*' - | expr ( K_AS? column_alias )? - ; - -table_or_subquery - : ( database_name '.' )? table_name ( K_AS? table_alias )? - ( K_INDEXED K_BY index_name - | K_NOT K_INDEXED )? - | '(' ( table_or_subquery ( ',' table_or_subquery )* - | join_clause ) - ')' ( K_AS? table_alias )? - | '(' select_stmt ')' ( K_AS? table_alias )? - ; - -join_clause - : table_or_subquery ( join_operator table_or_subquery join_constraint )* - ; - -join_operator - : ',' - | K_NATURAL? ( K_LEFT K_OUTER? | K_INNER | K_CROSS )? K_JOIN - ; - -join_constraint - : ( K_ON expr - | K_USING '(' column_name ( ',' column_name )* ')' )? - ; - -select_core - : K_SELECT ( K_DISTINCT | K_ALL )? result_column ( ',' result_column )* - ( K_FROM ( table_or_subquery ( ',' table_or_subquery )* | join_clause ) )? - ( K_WHERE expr )? - ( K_GROUP K_BY expr ( ',' expr )* ( K_HAVING expr )? )? - | K_VALUES '(' expr ( ',' expr )* ')' ( ',' '(' expr ( ',' expr )* ')' )* - ; - -compound_operator - : K_UNION - | K_UNION K_ALL - | K_INTERSECT - | K_EXCEPT - ; - -cte_table_name - : table_name ( '(' column_name ( ',' column_name )* ')' )? - ; - -signed_number - : ( ( '+' | '-' )? NUMERIC_LITERAL | '*' ) - ; - -literal_value - : NUMERIC_LITERAL - | STRING_LITERAL - | BLOB_LITERAL - | K_NULL - | K_CURRENT_TIME - | K_CURRENT_DATE - | K_CURRENT_TIMESTAMP - ; - -unary_operator - : '-' - | '+' - | '~' - | K_NOT - ; - -error_message - : STRING_LITERAL - ; - -module_argument // TODO check what exactly is permitted here - : expr - | column_def - ; - -column_alias - : IDENTIFIER - | STRING_LITERAL - ; - -keyword - : K_ABORT - | K_ACTION - | K_ADD - | K_AFTER - | K_ALL - | K_ALTER - | K_ANALYZE - | K_AND - | K_AS - | K_ASC - | K_ATTACH - | K_AUTOINCREMENT - | K_BEFORE - | K_BEGIN - | K_BETWEEN - | K_BY - | K_CASCADE - | K_CASE - | K_CAST - | K_CHECK - | K_COLLATE - | K_COLUMN - | K_COMMIT - | K_CONFLICT - | K_CONSTRAINT - | K_CREATE - | K_CROSS - | K_CURRENT_DATE - | K_CURRENT_TIME - | K_CURRENT_TIMESTAMP - | K_DATABASE - | K_DEFAULT - | K_DEFERRABLE - | K_DEFERRED - | K_DELETE - | K_DESC - | K_DETACH - | K_DISTINCT - | K_DROP - | K_EACH - | K_ELSE - | K_END - | K_ENABLE - | K_ESCAPE - | K_EXCEPT - | K_EXCLUSIVE - | K_EXISTS - | K_EXPLAIN - | K_FAIL - | K_FOR - | K_FOREIGN - | K_FROM - | K_FULL - | K_GLOB - | K_GROUP - | K_HAVING - | K_IF - | K_IGNORE - | K_IMMEDIATE - | K_IN - | K_INDEX - | K_INDEXED - | K_INITIALLY - | K_INNER - | K_INSERT - | K_INSTEAD - | K_INTERSECT - | K_INTO - | K_IS - | K_ISNULL - | K_JOIN - | K_KEY - | K_LEFT - | K_LIKE - | K_LIMIT - | K_MATCH - | K_NATURAL - | K_NO - | K_NOT - | K_NOTNULL - | K_NULL - | K_OF - | K_OFFSET - | K_ON - | K_OR - | K_ORDER - | K_OUTER - | K_PLAN - | K_PRAGMA - | K_PRIMARY - | K_QUERY - | K_RAISE - | K_RECURSIVE - | K_REFERENCES - | K_REGEXP - | K_REINDEX - | K_RELEASE - | K_RENAME - | K_REPLACE - | K_RESTRICT - | K_RIGHT - | K_ROLLBACK - | K_ROW - | K_SAVEPOINT - | K_SELECT - | K_SET - | K_TABLE - | K_TEMP - | K_TEMPORARY - | K_THEN - | K_TO - | K_TRANSACTION - | K_TRIGGER - | K_UNION - | K_UNIQUE - | K_UPDATE - | K_USING - | K_VACUUM - | K_VALUES - | K_VIEW - | K_VIRTUAL - | K_WHEN - | K_WHERE - | K_WITH - | K_WITHOUT - | K_NEXTVAL - ; - -// TODO check all names below - -//[a-zA-Z_0-9\t \-\[\]\=]+ -unknown - : .+ - ; - -name - : any_name - ; - -function_name - : any_name - ; - -database_name - : any_name - ; - -source_table_name - : any_name - ; - -table_name - : any_name - ; - -table_or_index_name - : any_name - ; - -new_table_name - : any_name - ; - -column_name - : any_name - ; - -collation_name - : any_name - ; - -foreign_table - : any_name - ; - -index_name - : any_name - ; - -trigger_name - : any_name - ; - -view_name - : any_name - ; - -module_name - : any_name - ; - -pragma_name - : any_name - ; - -savepoint_name - : any_name - ; - -table_alias - : any_name - ; - -transaction_name - : any_name - ; - -any_name - : IDENTIFIER - | keyword - | STRING_LITERAL - | '(' any_name ')' - ; - -SCOL : ';'; -DOT : '.'; -OPEN_PAR : '('; -CLOSE_PAR : ')'; -COMMA : ','; -ASSIGN : '='; -STAR : '*'; -PLUS : '+'; -MINUS : '-'; -TILDE : '~'; -PIPE2 : '||'; -DIV : '/'; -MOD : '%'; -LT2 : '<<'; -GT2 : '>>'; -AMP : '&'; -PIPE : '|'; -LT : '<'; -LT_EQ : '<='; -GT : '>'; -GT_EQ : '>='; -EQ : '=='; -NOT_EQ1 : '!='; -NOT_EQ2 : '<>'; - -// http://www.sqlite.org/lang_keywords.html -K_ABORT : A B O R T; -K_ACTION : A C T I O N; -K_ADD : A D D; -K_AFTER : A F T E R; -K_ALL : A L L; -K_ALTER : A L T E R; -K_ANALYZE : A N A L Y Z E; -K_AND : A N D; -K_AS : A S; -K_ASC : A S C; -K_ATTACH : A T T A C H; -K_AUTOINCREMENT : A U T O I N C R E M E N T; -K_BEFORE : B E F O R E; -K_BEGIN : B E G I N; -K_BETWEEN : B E T W E E N; -K_BY : B Y; -K_CASCADE : C A S C A D E; -K_CASE : C A S E; -K_CAST : C A S T; -K_CHECK : C H E C K; -K_COLLATE : C O L L A T E; -K_COLUMN : C O L U M N; -K_COMMIT : C O M M I T; -K_CONFLICT : C O N F L I C T; -K_CONSTRAINT : C O N S T R A I N T; -K_CREATE : C R E A T E; -K_CROSS : C R O S S; -K_CURRENT_DATE : C U R R E N T '_' D A T E; -K_CURRENT_TIME : C U R R E N T '_' T I M E; -K_CURRENT_TIMESTAMP : C U R R E N T '_' T I M E S T A M P; -K_DATABASE : D A T A B A S E; -K_DEFAULT : D E F A U L T; -K_DEFERRABLE : D E F E R R A B L E; -K_DEFERRED : D E F E R R E D; -K_DELETE : D E L E T E; -K_DESC : D E S C; -K_DETACH : D E T A C H; -K_DISTINCT : D I S T I N C T; -K_DROP : D R O P; -K_EACH : E A C H; -K_ELSE : E L S E; -K_END : E N D; -K_ENABLE : E N A B L E; -K_ESCAPE : E S C A P E; -K_EXCEPT : E X C E P T; -K_EXCLUSIVE : E X C L U S I V E; -K_EXISTS : E X I S T S; -K_EXPLAIN : E X P L A I N; -K_FAIL : F A I L; -K_FOR : F O R; -K_FOREIGN : F O R E I G N; -K_FROM : F R O M; -K_FULL : F U L L; -K_GLOB : G L O B; -K_GROUP : G R O U P; -K_HAVING : H A V I N G; -K_IF : I F; -K_IGNORE : I G N O R E; -K_IMMEDIATE : I M M E D I A T E; -K_IN : I N; -K_INDEX : I N D E X; -K_INDEXED : I N D E X E D; -K_INITIALLY : I N I T I A L L Y; -K_INNER : I N N E R; -K_INSERT : I N S E R T; -K_INSTEAD : I N S T E A D; -K_INTERSECT : I N T E R S E C T; -K_INTO : I N T O; -K_IS : I S; -K_ISNULL : I S N U L L; -K_JOIN : J O I N; -K_KEY : K E Y; -K_LEFT : L E F T; -K_LIKE : L I K E; -K_LIMIT : L I M I T; -K_MATCH : M A T C H; -K_NATURAL : N A T U R A L; -K_NEXTVAL : N E X T V A L; -K_NO : N O; -K_NOT : N O T; -K_NOTNULL : N O T N U L L; -K_NULL : N U L L; -K_OF : O F; -K_OFFSET : O F F S E T; -K_ON : O N; -K_ONLY : O N L Y; -K_OR : O R; -K_ORDER : O R D E R; -K_OUTER : O U T E R; -K_PLAN : P L A N; -K_PRAGMA : P R A G M A; -K_PRIMARY : P R I M A R Y; -K_QUERY : Q U E R Y; -K_RAISE : R A I S E; -K_RECURSIVE : R E C U R S I V E; -K_REFERENCES : R E F E R E N C E S; -K_REGEXP : R E G E X P; -K_REINDEX : R E I N D E X; -K_RELEASE : R E L E A S E; -K_RENAME : R E N A M E; -K_REPLACE : R E P L A C E; -K_RESTRICT : R E S T R I C T; -K_RIGHT : R I G H T; -K_ROLLBACK : R O L L B A C K; -K_ROW : R O W; -K_SAVEPOINT : S A V E P O I N T; -K_SELECT : S E L E C T; -K_SET : S E T; -K_TABLE : T A B L E; -K_TEMP : T E M P; -K_TEMPORARY : T E M P O R A R Y; -K_THEN : T H E N; -K_TO : T O; -K_TRANSACTION : T R A N S A C T I O N; -K_TRIGGER : T R I G G E R; -K_UNION : U N I O N; -K_UNIQUE : U N I Q U E; -K_UPDATE : U P D A T E; -K_USING : U S I N G; -K_VACUUM : V A C U U M; -K_VALUES : V A L U E S; -K_VIEW : V I E W; -K_VIRTUAL : V I R T U A L; -K_WHEN : W H E N; -K_WHERE : W H E R E; -K_WITH : W I T H; -K_WITHOUT : W I T H O U T; - -IDENTIFIER - : '"' (~'"' | '""')* '"' - | '`' (~'`' | '``')* '`' - | '[' ~']'* ']' - | [a-zA-Z_] [a-zA-Z_0-9]* // TODO check: needs more chars in set - ; - -NUMERIC_LITERAL - : DIGIT+ ( '.' DIGIT* )? ( E [-+]? DIGIT+ )? - | '.' DIGIT+ ( E [-+]? DIGIT+ )? - ; - -BIND_PARAMETER - : '?' DIGIT* - | [:@$] IDENTIFIER - ; - -STRING_LITERAL - : '\'' ( ~'\'' | '\'\'' )* '\'' - ; - -BLOB_LITERAL - : X STRING_LITERAL - ; - -SINGLE_LINE_COMMENT - : '--' ~[\r\n]* -> channel(HIDDEN) - ; - -MULTILINE_COMMENT - : '/*' .*? ( '*/' | EOF ) -> channel(HIDDEN) - ; - -SPACES - : [ \u000B\t\r\n] -> channel(HIDDEN) - ; - -UNEXPECTED_CHAR - : . - ; - -fragment DIGIT : [0-9]; - -fragment A : [aA]; -fragment B : [bB]; -fragment C : [cC]; -fragment D : [dD]; -fragment E : [eE]; -fragment F : [fF]; -fragment G : [gG]; -fragment H : [hH]; -fragment I : [iI]; -fragment J : [jJ]; -fragment K : [kK]; -fragment L : [lL]; -fragment M : [mM]; -fragment N : [nN]; -fragment O : [oO]; -fragment P : [pP]; -fragment Q : [qQ]; -fragment R : [rR]; -fragment S : [sS]; -fragment T : [tT]; -fragment U : [uU]; -fragment V : [vV]; -fragment W : [wW]; -fragment X : [xX]; -fragment Y : [yY]; -fragment Z : [zZ]; \ No newline at end of file diff --git a/processor/stream_processor/test/parser/Sql.interp b/processor/stream_processor/test/parser/Sql.interp deleted file mode 100644 index 2390b99ed92a..000000000000 --- a/processor/stream_processor/test/parser/Sql.interp +++ /dev/null @@ -1,431 +0,0 @@ -token literal names: -null -'::' -';' -'.' -'(' -')' -',' -'=' -'*' -'+' -'-' -'~' -'||' -'/' -'%' -'<<' -'>>' -'&' -'|' -'<' -'<=' -'>' -'>=' -'==' -'!=' -'<>' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -null -SCOL -DOT -OPEN_PAR -CLOSE_PAR -COMMA -ASSIGN -STAR -PLUS -MINUS -TILDE -PIPE2 -DIV -MOD -LT2 -GT2 -AMP -PIPE -LT -LT_EQ -GT -GT_EQ -EQ -NOT_EQ1 -NOT_EQ2 -K_ABORT -K_ACTION -K_ADD -K_AFTER -K_ALL -K_ALTER -K_ANALYZE -K_AND -K_AS -K_ASC -K_ATTACH -K_AUTOINCREMENT -K_BEFORE -K_BEGIN -K_BETWEEN -K_BY -K_CASCADE -K_CASE -K_CAST -K_CHECK -K_COLLATE -K_COLUMN -K_COMMIT -K_CONFLICT -K_CONSTRAINT -K_CREATE -K_CROSS -K_CURRENT_DATE -K_CURRENT_TIME -K_CURRENT_TIMESTAMP -K_DATABASE -K_DEFAULT -K_DEFERRABLE -K_DEFERRED -K_DELETE -K_DESC -K_DETACH -K_DISTINCT -K_DROP -K_EACH -K_ELSE -K_END -K_ENABLE -K_ESCAPE -K_EXCEPT -K_EXCLUSIVE -K_EXISTS -K_EXPLAIN -K_FAIL -K_FOR -K_FOREIGN -K_FROM -K_FULL -K_GLOB -K_GROUP -K_HAVING -K_IF -K_IGNORE -K_IMMEDIATE -K_IN -K_INDEX -K_INDEXED -K_INITIALLY -K_INNER -K_INSERT -K_INSTEAD -K_INTERSECT -K_INTO -K_IS -K_ISNULL -K_JOIN -K_KEY -K_LEFT -K_LIKE -K_LIMIT -K_MATCH -K_NATURAL -K_NEXTVAL -K_NO -K_NOT -K_NOTNULL -K_NULL -K_OF -K_OFFSET -K_ON -K_ONLY -K_OR -K_ORDER -K_OUTER -K_PLAN -K_PRAGMA -K_PRIMARY -K_QUERY -K_RAISE -K_RECURSIVE -K_REFERENCES -K_REGEXP -K_REINDEX -K_RELEASE -K_RENAME -K_REPLACE -K_RESTRICT -K_RIGHT -K_ROLLBACK -K_ROW -K_SAVEPOINT -K_SELECT -K_SET -K_TABLE -K_TEMP -K_TEMPORARY -K_THEN -K_TO -K_TRANSACTION -K_TRIGGER -K_UNION -K_UNIQUE -K_UPDATE -K_USING -K_VACUUM -K_VALUES -K_VIEW -K_VIRTUAL -K_WHEN -K_WHERE -K_WITH -K_WITHOUT -IDENTIFIER -NUMERIC_LITERAL -BIND_PARAMETER -STRING_LITERAL -BLOB_LITERAL -SINGLE_LINE_COMMENT -MULTILINE_COMMENT -SPACES -UNEXPECTED_CHAR - -rule names: -parse -error -sql_stmt_list -sql_stmt -alter_table_stmt -alter_table_add_constraint -alter_table_add -analyze_stmt -attach_stmt -begin_stmt -commit_stmt -compound_select_stmt -create_index_stmt -create_table_stmt -create_trigger_stmt -create_view_stmt -create_virtual_table_stmt -delete_stmt -delete_stmt_limited -detach_stmt -drop_index_stmt -drop_table_stmt -drop_trigger_stmt -drop_view_stmt -factored_select_stmt -insert_stmt -pragma_stmt -reindex_stmt -release_stmt -rollback_stmt -savepoint_stmt -simple_select_stmt -select_stmt -select_or_values -update_stmt -update_stmt_limited -vacuum_stmt -column_def -type_name -column_constraint -column_constraint_primary_key -column_constraint_foreign_key -column_constraint_not_null -column_constraint_null -column_default -column_default_value -conflict_clause -expr -foreign_key_clause -fk_target_column_name -raise_function -indexed_column -table_constraint -table_constraint_primary_key -table_constraint_foreign_key -table_constraint_unique -table_constraint_key -fk_origin_column_name -with_clause -qualified_table_name -ordering_term -pragma_value -common_table_expression -result_column -table_or_subquery -join_clause -join_operator -join_constraint -select_core -compound_operator -cte_table_name -signed_number -literal_value -unary_operator -error_message -module_argument -column_alias -keyword -unknown -name -function_name -database_name -source_table_name -table_name -table_or_index_name -new_table_name -column_name -collation_name -foreign_table -index_name -trigger_name -view_name -module_name -pragma_name -savepoint_name -table_alias -transaction_name -any_name - - -atn: -[4, 1, 161, 1866, 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, 1, 0, 1, 0, 5, 0, 199, 8, 0, 10, 0, 12, 0, 202, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, 210, 8, 2, 10, 2, 12, 2, 213, 9, 2, 1, 2, 1, 2, 4, 2, 217, 8, 2, 11, 2, 12, 2, 218, 1, 2, 5, 2, 222, 8, 2, 10, 2, 12, 2, 225, 9, 2, 1, 2, 5, 2, 228, 8, 2, 10, 2, 12, 2, 231, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 236, 8, 3, 3, 3, 238, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 270, 8, 3, 1, 4, 1, 4, 1, 4, 3, 4, 275, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 280, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 290, 8, 4, 1, 4, 3, 4, 293, 8, 4, 1, 4, 3, 4, 296, 8, 4, 1, 4, 3, 4, 299, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 316, 8, 7, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 3, 9, 328, 8, 9, 1, 9, 1, 9, 3, 9, 332, 8, 9, 3, 9, 334, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 339, 8, 10, 3, 10, 341, 8, 10, 1, 11, 1, 11, 3, 11, 345, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 350, 8, 11, 10, 11, 12, 11, 353, 9, 11, 3, 11, 355, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 360, 8, 11, 1, 11, 1, 11, 3, 11, 364, 8, 11, 1, 11, 4, 11, 367, 8, 11, 11, 11, 12, 11, 368, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 376, 8, 11, 10, 11, 12, 11, 379, 9, 11, 3, 11, 381, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 387, 8, 11, 3, 11, 389, 8, 11, 1, 12, 1, 12, 3, 12, 393, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 399, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 404, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 413, 8, 12, 10, 12, 12, 12, 416, 9, 12, 1, 12, 1, 12, 1, 12, 3, 12, 421, 8, 12, 1, 13, 1, 13, 3, 13, 425, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 431, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 436, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 445, 8, 13, 10, 13, 12, 13, 448, 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 453, 8, 13, 1, 13, 1, 13, 3, 13, 457, 8, 13, 1, 13, 3, 13, 460, 8, 13, 1, 14, 1, 14, 3, 14, 464, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 470, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 475, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 482, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 491, 8, 14, 10, 14, 12, 14, 494, 9, 14, 3, 14, 496, 8, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 504, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 510, 8, 14, 1, 14, 1, 14, 3, 14, 514, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 521, 8, 14, 1, 14, 1, 14, 4, 14, 525, 8, 14, 11, 14, 12, 14, 526, 1, 14, 1, 14, 1, 15, 1, 15, 3, 15, 533, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 539, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 544, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 556, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 561, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 5, 16, 570, 8, 16, 10, 16, 12, 16, 573, 9, 16, 1, 16, 1, 16, 3, 16, 577, 8, 16, 1, 17, 3, 17, 580, 8, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 18, 3, 18, 590, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 597, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 604, 8, 18, 10, 18, 12, 18, 607, 9, 18, 3, 18, 609, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 615, 8, 18, 3, 18, 617, 8, 18, 1, 19, 1, 19, 3, 19, 621, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 629, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 634, 8, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 642, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 647, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 655, 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 660, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 668, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 673, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 3, 24, 679, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, 684, 8, 24, 10, 24, 12, 24, 687, 9, 24, 3, 24, 689, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 695, 8, 24, 10, 24, 12, 24, 698, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 705, 8, 24, 10, 24, 12, 24, 708, 9, 24, 3, 24, 710, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 716, 8, 24, 3, 24, 718, 8, 24, 1, 25, 3, 25, 721, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 740, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 746, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 753, 8, 25, 10, 25, 12, 25, 756, 9, 25, 1, 25, 1, 25, 3, 25, 760, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 767, 8, 25, 10, 25, 12, 25, 770, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 778, 8, 25, 10, 25, 12, 25, 781, 9, 25, 1, 25, 1, 25, 5, 25, 785, 8, 25, 10, 25, 12, 25, 788, 9, 25, 1, 25, 1, 25, 1, 25, 3, 25, 793, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 799, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 808, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 815, 8, 27, 1, 27, 1, 27, 3, 27, 819, 8, 27, 3, 27, 821, 8, 27, 1, 28, 1, 28, 3, 28, 825, 8, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 832, 8, 29, 3, 29, 834, 8, 29, 1, 29, 1, 29, 3, 29, 838, 8, 29, 1, 29, 3, 29, 841, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 3, 31, 848, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 853, 8, 31, 10, 31, 12, 31, 856, 9, 31, 3, 31, 858, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 866, 8, 31, 10, 31, 12, 31, 869, 9, 31, 3, 31, 871, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 877, 8, 31, 3, 31, 879, 8, 31, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 888, 8, 32, 10, 32, 12, 32, 891, 9, 32, 3, 32, 893, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 899, 8, 32, 10, 32, 12, 32, 902, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 909, 8, 32, 10, 32, 12, 32, 912, 9, 32, 3, 32, 914, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 920, 8, 32, 3, 32, 922, 8, 32, 1, 33, 1, 33, 3, 33, 926, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 931, 8, 33, 10, 33, 12, 33, 934, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 940, 8, 33, 10, 33, 12, 33, 943, 9, 33, 1, 33, 3, 33, 946, 8, 33, 3, 33, 948, 8, 33, 1, 33, 1, 33, 3, 33, 952, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 959, 8, 33, 10, 33, 12, 33, 962, 9, 33, 1, 33, 1, 33, 3, 33, 966, 8, 33, 3, 33, 968, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 975, 8, 33, 10, 33, 12, 33, 978, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 986, 8, 33, 10, 33, 12, 33, 989, 9, 33, 1, 33, 1, 33, 5, 33, 993, 8, 33, 10, 33, 12, 33, 996, 9, 33, 3, 33, 998, 8, 33, 1, 34, 3, 34, 1001, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1014, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 1026, 8, 34, 10, 34, 12, 34, 1029, 9, 34, 1, 34, 1, 34, 3, 34, 1033, 8, 34, 1, 35, 3, 35, 1036, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1049, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1061, 8, 35, 10, 35, 12, 35, 1064, 9, 35, 1, 35, 1, 35, 3, 35, 1068, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1075, 8, 35, 10, 35, 12, 35, 1078, 9, 35, 3, 35, 1080, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1086, 8, 35, 3, 35, 1088, 8, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1095, 8, 37, 10, 37, 12, 37, 1098, 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1104, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1111, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1116, 8, 38, 1, 38, 1, 38, 3, 38, 1120, 8, 38, 1, 39, 1, 39, 3, 39, 1124, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1140, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, 1145, 8, 40, 1, 40, 1, 40, 3, 40, 1149, 8, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 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, 44, 1, 44, 3, 44, 1172, 8, 44, 1, 44, 1, 44, 4, 44, 1176, 8, 44, 11, 44, 12, 44, 1177, 3, 44, 1180, 8, 44, 1, 45, 1, 45, 3, 45, 1184, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1189, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1197, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1202, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1211, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1216, 8, 47, 10, 47, 12, 47, 1219, 9, 47, 1, 47, 3, 47, 1222, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1238, 8, 47, 1, 47, 3, 47, 1241, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1249, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 4, 47, 1256, 8, 47, 11, 47, 12, 47, 1257, 1, 47, 1, 47, 3, 47, 1262, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1267, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1297, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1309, 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1314, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1326, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1332, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1339, 8, 47, 1, 47, 1, 47, 3, 47, 1343, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1351, 8, 47, 10, 47, 12, 47, 1354, 9, 47, 3, 47, 1356, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 47, 3, 47, 1365, 8, 47, 5, 47, 1367, 8, 47, 10, 47, 12, 47, 1370, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1376, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 1383, 8, 48, 10, 48, 12, 48, 1386, 9, 48, 1, 48, 1, 48, 3, 48, 1390, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1402, 8, 48, 1, 48, 1, 48, 3, 48, 1406, 8, 48, 5, 48, 1408, 8, 48, 10, 48, 12, 48, 1411, 9, 48, 1, 48, 3, 48, 1414, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1421, 8, 48, 1, 48, 3, 48, 1424, 8, 48, 3, 48, 1426, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1436, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, 1, 51, 3, 51, 1446, 8, 51, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1461, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1469, 8, 53, 10, 53, 12, 53, 1472, 9, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1483, 8, 54, 10, 54, 12, 54, 1486, 9, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1502, 8, 55, 10, 55, 12, 55, 1505, 9, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1512, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1518, 8, 56, 10, 56, 12, 56, 1521, 9, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1530, 8, 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, 5, 58, 1544, 8, 58, 10, 58, 12, 58, 1547, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1552, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1560, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 1565, 8, 60, 1, 60, 3, 60, 1568, 8, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1573, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 1580, 8, 62, 10, 62, 12, 62, 1583, 9, 62, 1, 62, 1, 62, 3, 62, 1587, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1601, 8, 63, 1, 63, 3, 63, 1604, 8, 63, 3, 63, 1606, 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1611, 8, 64, 1, 64, 1, 64, 3, 64, 1615, 8, 64, 1, 64, 3, 64, 1618, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1625, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1631, 8, 64, 10, 64, 12, 64, 1634, 9, 64, 1, 64, 3, 64, 1637, 8, 64, 1, 64, 1, 64, 3, 64, 1641, 8, 64, 1, 64, 3, 64, 1644, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1650, 8, 64, 1, 64, 3, 64, 1653, 8, 64, 3, 64, 1655, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1662, 8, 65, 10, 65, 12, 65, 1665, 9, 65, 1, 66, 1, 66, 3, 66, 1669, 8, 66, 1, 66, 1, 66, 3, 66, 1673, 8, 66, 1, 66, 1, 66, 3, 66, 1677, 8, 66, 1, 66, 3, 66, 1680, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1689, 8, 67, 10, 67, 12, 67, 1692, 9, 67, 1, 67, 1, 67, 3, 67, 1696, 8, 67, 1, 68, 1, 68, 3, 68, 1700, 8, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1705, 8, 68, 10, 68, 12, 68, 1708, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1714, 8, 68, 10, 68, 12, 68, 1717, 9, 68, 1, 68, 3, 68, 1720, 8, 68, 3, 68, 1722, 8, 68, 1, 68, 1, 68, 3, 68, 1726, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1733, 8, 68, 10, 68, 12, 68, 1736, 9, 68, 1, 68, 1, 68, 3, 68, 1740, 8, 68, 3, 68, 1742, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1749, 8, 68, 10, 68, 12, 68, 1752, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1760, 8, 68, 10, 68, 12, 68, 1763, 9, 68, 1, 68, 1, 68, 5, 68, 1767, 8, 68, 10, 68, 12, 68, 1770, 9, 68, 3, 68, 1772, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1779, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1786, 8, 70, 10, 70, 12, 70, 1789, 9, 70, 1, 70, 1, 70, 3, 70, 1793, 8, 70, 1, 71, 3, 71, 1796, 8, 71, 1, 71, 1, 71, 3, 71, 1800, 8, 71, 1, 72, 1, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1810, 8, 75, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 4, 78, 1817, 8, 78, 11, 78, 12, 78, 1818, 1, 79, 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 1864, 8, 97, 1, 97, 0, 1, 94, 98, 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, 0, 18, 3, 0, 59, 59, 71, 71, 84, 84, 2, 0, 48, 48, 67, 67, 2, 0, 6, 6, 109, 109, 1, 0, 135, 136, 2, 0, 30, 30, 63, 63, 2, 0, 35, 35, 61, 61, 5, 0, 26, 26, 74, 74, 83, 83, 126, 126, 129, 129, 2, 0, 8, 8, 13, 14, 1, 0, 9, 10, 1, 0, 15, 18, 1, 0, 19, 22, 4, 0, 79, 79, 99, 99, 101, 101, 122, 122, 2, 0, 60, 60, 143, 143, 3, 0, 26, 26, 74, 74, 129, 129, 4, 0, 53, 55, 107, 107, 154, 154, 156, 157, 2, 0, 9, 11, 105, 105, 2, 0, 153, 153, 156, 156, 2, 0, 26, 110, 112, 152, 2141, 0, 200, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 6, 237, 1, 0, 0, 0, 8, 271, 1, 0, 0, 0, 10, 300, 1, 0, 0, 0, 12, 305, 1, 0, 0, 0, 14, 308, 1, 0, 0, 0, 16, 317, 1, 0, 0, 0, 18, 325, 1, 0, 0, 0, 20, 335, 1, 0, 0, 0, 22, 354, 1, 0, 0, 0, 24, 390, 1, 0, 0, 0, 26, 422, 1, 0, 0, 0, 28, 461, 1, 0, 0, 0, 30, 530, 1, 0, 0, 0, 32, 549, 1, 0, 0, 0, 34, 579, 1, 0, 0, 0, 36, 589, 1, 0, 0, 0, 38, 618, 1, 0, 0, 0, 40, 624, 1, 0, 0, 0, 42, 637, 1, 0, 0, 0, 44, 650, 1, 0, 0, 0, 46, 663, 1, 0, 0, 0, 48, 688, 1, 0, 0, 0, 50, 720, 1, 0, 0, 0, 52, 794, 1, 0, 0, 0, 54, 809, 1, 0, 0, 0, 56, 822, 1, 0, 0, 0, 58, 828, 1, 0, 0, 0, 60, 842, 1, 0, 0, 0, 62, 857, 1, 0, 0, 0, 64, 892, 1, 0, 0, 0, 66, 997, 1, 0, 0, 0, 68, 1000, 1, 0, 0, 0, 70, 1035, 1, 0, 0, 0, 72, 1089, 1, 0, 0, 0, 74, 1091, 1, 0, 0, 0, 76, 1099, 1, 0, 0, 0, 78, 1123, 1, 0, 0, 0, 80, 1141, 1, 0, 0, 0, 82, 1150, 1, 0, 0, 0, 84, 1152, 1, 0, 0, 0, 86, 1156, 1, 0, 0, 0, 88, 1159, 1, 0, 0, 0, 90, 1183, 1, 0, 0, 0, 92, 1188, 1, 0, 0, 0, 94, 1266, 1, 0, 0, 0, 96, 1371, 1, 0, 0, 0, 98, 1427, 1, 0, 0, 0, 100, 1429, 1, 0, 0, 0, 102, 1439, 1, 0, 0, 0, 104, 1449, 1, 0, 0, 0, 106, 1462, 1, 0, 0, 0, 108, 1476, 1, 0, 0, 0, 110, 1490, 1, 0, 0, 0, 112, 1509, 1, 0, 0, 0, 114, 1525, 1, 0, 0, 0, 116, 1527, 1, 0, 0, 0, 118, 1551, 1, 0, 0, 0, 120, 1561, 1, 0, 0, 0, 122, 1572, 1, 0, 0, 0, 124, 1574, 1, 0, 0, 0, 126, 1605, 1, 0, 0, 0, 128, 1654, 1, 0, 0, 0, 130, 1656, 1, 0, 0, 0, 132, 1679, 1, 0, 0, 0, 134, 1695, 1, 0, 0, 0, 136, 1771, 1, 0, 0, 0, 138, 1778, 1, 0, 0, 0, 140, 1780, 1, 0, 0, 0, 142, 1799, 1, 0, 0, 0, 144, 1801, 1, 0, 0, 0, 146, 1803, 1, 0, 0, 0, 148, 1805, 1, 0, 0, 0, 150, 1809, 1, 0, 0, 0, 152, 1811, 1, 0, 0, 0, 154, 1813, 1, 0, 0, 0, 156, 1816, 1, 0, 0, 0, 158, 1820, 1, 0, 0, 0, 160, 1822, 1, 0, 0, 0, 162, 1824, 1, 0, 0, 0, 164, 1826, 1, 0, 0, 0, 166, 1828, 1, 0, 0, 0, 168, 1830, 1, 0, 0, 0, 170, 1832, 1, 0, 0, 0, 172, 1834, 1, 0, 0, 0, 174, 1836, 1, 0, 0, 0, 176, 1838, 1, 0, 0, 0, 178, 1840, 1, 0, 0, 0, 180, 1842, 1, 0, 0, 0, 182, 1844, 1, 0, 0, 0, 184, 1846, 1, 0, 0, 0, 186, 1848, 1, 0, 0, 0, 188, 1850, 1, 0, 0, 0, 190, 1852, 1, 0, 0, 0, 192, 1854, 1, 0, 0, 0, 194, 1863, 1, 0, 0, 0, 196, 199, 3, 4, 2, 0, 197, 199, 3, 2, 1, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 0, 0, 1, 204, 1, 1, 0, 0, 0, 205, 206, 5, 161, 0, 0, 206, 207, 6, 1, -1, 0, 207, 3, 1, 0, 0, 0, 208, 210, 5, 2, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 211, 1, 0, 0, 0, 214, 223, 3, 6, 3, 0, 215, 217, 5, 2, 0, 0, 216, 215, 1, 0, 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, 219, 220, 1, 0, 0, 0, 220, 222, 3, 6, 3, 0, 221, 216, 1, 0, 0, 0, 222, 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 2, 0, 0, 227, 226, 1, 0, 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, 230, 5, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 235, 5, 73, 0, 0, 233, 234, 5, 118, 0, 0, 234, 236, 5, 115, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 232, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 269, 1, 0, 0, 0, 239, 270, 3, 8, 4, 0, 240, 270, 3, 14, 7, 0, 241, 270, 3, 16, 8, 0, 242, 270, 3, 18, 9, 0, 243, 270, 3, 20, 10, 0, 244, 270, 3, 22, 11, 0, 245, 270, 3, 24, 12, 0, 246, 270, 3, 26, 13, 0, 247, 270, 3, 28, 14, 0, 248, 270, 3, 30, 15, 0, 249, 270, 3, 32, 16, 0, 250, 270, 3, 34, 17, 0, 251, 270, 3, 36, 18, 0, 252, 270, 3, 38, 19, 0, 253, 270, 3, 40, 20, 0, 254, 270, 3, 42, 21, 0, 255, 270, 3, 44, 22, 0, 256, 270, 3, 46, 23, 0, 257, 270, 3, 48, 24, 0, 258, 270, 3, 50, 25, 0, 259, 270, 3, 52, 26, 0, 260, 270, 3, 54, 27, 0, 261, 270, 3, 56, 28, 0, 262, 270, 3, 58, 29, 0, 263, 270, 3, 60, 30, 0, 264, 270, 3, 62, 31, 0, 265, 270, 3, 64, 32, 0, 266, 270, 3, 68, 34, 0, 267, 270, 3, 70, 35, 0, 268, 270, 3, 72, 36, 0, 269, 239, 1, 0, 0, 0, 269, 240, 1, 0, 0, 0, 269, 241, 1, 0, 0, 0, 269, 242, 1, 0, 0, 0, 269, 243, 1, 0, 0, 0, 269, 244, 1, 0, 0, 0, 269, 245, 1, 0, 0, 0, 269, 246, 1, 0, 0, 0, 269, 247, 1, 0, 0, 0, 269, 248, 1, 0, 0, 0, 269, 249, 1, 0, 0, 0, 269, 250, 1, 0, 0, 0, 269, 251, 1, 0, 0, 0, 269, 252, 1, 0, 0, 0, 269, 253, 1, 0, 0, 0, 269, 254, 1, 0, 0, 0, 269, 255, 1, 0, 0, 0, 269, 256, 1, 0, 0, 0, 269, 257, 1, 0, 0, 0, 269, 258, 1, 0, 0, 0, 269, 259, 1, 0, 0, 0, 269, 260, 1, 0, 0, 0, 269, 261, 1, 0, 0, 0, 269, 262, 1, 0, 0, 0, 269, 263, 1, 0, 0, 0, 269, 264, 1, 0, 0, 0, 269, 265, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, 0, 0, 269, 268, 1, 0, 0, 0, 270, 7, 1, 0, 0, 0, 271, 272, 5, 31, 0, 0, 272, 274, 5, 134, 0, 0, 273, 275, 5, 111, 0, 0, 274, 273, 1, 0, 0, 0, 274, 275, 1, 0, 0, 0, 275, 279, 1, 0, 0, 0, 276, 277, 3, 162, 81, 0, 277, 278, 5, 3, 0, 0, 278, 280, 1, 0, 0, 0, 279, 276, 1, 0, 0, 0, 279, 280, 1, 0, 0, 0, 280, 281, 1, 0, 0, 0, 281, 292, 3, 164, 82, 0, 282, 283, 5, 125, 0, 0, 283, 284, 5, 138, 0, 0, 284, 293, 3, 170, 85, 0, 285, 293, 3, 12, 6, 0, 286, 293, 3, 10, 5, 0, 287, 289, 5, 28, 0, 0, 288, 290, 5, 47, 0, 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, 293, 3, 74, 37, 0, 292, 282, 1, 0, 0, 0, 292, 285, 1, 0, 0, 0, 292, 286, 1, 0, 0, 0, 292, 287, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 296, 5, 68, 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, 297, 299, 3, 156, 78, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 9, 1, 0, 0, 0, 300, 301, 5, 28, 0, 0, 301, 302, 5, 50, 0, 0, 302, 303, 3, 194, 97, 0, 303, 304, 3, 104, 52, 0, 304, 11, 1, 0, 0, 0, 305, 306, 5, 28, 0, 0, 306, 307, 3, 104, 52, 0, 307, 13, 1, 0, 0, 0, 308, 315, 5, 32, 0, 0, 309, 316, 3, 162, 81, 0, 310, 316, 3, 168, 84, 0, 311, 312, 3, 162, 81, 0, 312, 313, 5, 3, 0, 0, 313, 314, 3, 168, 84, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 15, 1, 0, 0, 0, 317, 319, 5, 36, 0, 0, 318, 320, 5, 56, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, 1, 0, 0, 0, 321, 322, 3, 94, 47, 0, 322, 323, 5, 34, 0, 0, 323, 324, 3, 162, 81, 0, 324, 17, 1, 0, 0, 0, 325, 327, 5, 39, 0, 0, 326, 328, 7, 0, 0, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 333, 1, 0, 0, 0, 329, 331, 5, 139, 0, 0, 330, 332, 3, 192, 96, 0, 331, 330, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 19, 1, 0, 0, 0, 335, 340, 7, 1, 0, 0, 336, 338, 5, 139, 0, 0, 337, 339, 3, 192, 96, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 336, 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 21, 1, 0, 0, 0, 342, 344, 5, 151, 0, 0, 343, 345, 5, 120, 0, 0, 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 351, 3, 124, 62, 0, 347, 348, 5, 6, 0, 0, 348, 350, 3, 124, 62, 0, 349, 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 342, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 366, 3, 136, 68, 0, 357, 359, 5, 141, 0, 0, 358, 360, 5, 30, 0, 0, 359, 358, 1, 0, 0, 0, 359, 360, 1, 0, 0, 0, 360, 364, 1, 0, 0, 0, 361, 364, 5, 92, 0, 0, 362, 364, 5, 70, 0, 0, 363, 357, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 3, 136, 68, 0, 366, 363, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 380, 1, 0, 0, 0, 370, 371, 5, 113, 0, 0, 371, 372, 5, 41, 0, 0, 372, 377, 3, 120, 60, 0, 373, 374, 5, 6, 0, 0, 374, 376, 3, 120, 60, 0, 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 370, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 388, 1, 0, 0, 0, 382, 383, 5, 100, 0, 0, 383, 386, 3, 94, 47, 0, 384, 385, 7, 2, 0, 0, 385, 387, 3, 94, 47, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, 382, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 23, 1, 0, 0, 0, 390, 392, 5, 51, 0, 0, 391, 393, 5, 142, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 5, 86, 0, 0, 395, 396, 5, 82, 0, 0, 396, 397, 5, 105, 0, 0, 397, 399, 5, 72, 0, 0, 398, 395, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 403, 1, 0, 0, 0, 400, 401, 3, 162, 81, 0, 401, 402, 5, 3, 0, 0, 402, 404, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 404, 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 3, 178, 89, 0, 406, 407, 5, 110, 0, 0, 407, 408, 3, 166, 83, 0, 408, 409, 5, 4, 0, 0, 409, 414, 3, 102, 51, 0, 410, 411, 5, 6, 0, 0, 411, 413, 3, 102, 51, 0, 412, 410, 1, 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 420, 5, 5, 0, 0, 418, 419, 5, 150, 0, 0, 419, 421, 3, 94, 47, 0, 420, 418, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 25, 1, 0, 0, 0, 422, 424, 5, 51, 0, 0, 423, 425, 7, 3, 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, 426, 430, 5, 134, 0, 0, 427, 428, 5, 82, 0, 0, 428, 429, 5, 105, 0, 0, 429, 431, 5, 72, 0, 0, 430, 427, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 435, 1, 0, 0, 0, 432, 433, 3, 162, 81, 0, 433, 434, 5, 3, 0, 0, 434, 436, 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 456, 3, 166, 83, 0, 438, 439, 5, 4, 0, 0, 439, 446, 3, 74, 37, 0, 440, 441, 5, 6, 0, 0, 441, 445, 3, 104, 52, 0, 442, 443, 5, 6, 0, 0, 443, 445, 3, 74, 37, 0, 444, 440, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 5, 5, 0, 0, 450, 451, 5, 152, 0, 0, 451, 453, 5, 153, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 457, 1, 0, 0, 0, 454, 455, 5, 34, 0, 0, 455, 457, 3, 64, 32, 0, 456, 438, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 459, 1, 0, 0, 0, 458, 460, 3, 156, 78, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 27, 1, 0, 0, 0, 461, 463, 5, 51, 0, 0, 462, 464, 7, 3, 0, 0, 463, 462, 1, 0, 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 469, 5, 140, 0, 0, 466, 467, 5, 82, 0, 0, 467, 468, 5, 105, 0, 0, 468, 470, 5, 72, 0, 0, 469, 466, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 474, 1, 0, 0, 0, 471, 472, 3, 162, 81, 0, 472, 473, 5, 3, 0, 0, 473, 475, 1, 0, 0, 0, 474, 471, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 3, 180, 90, 0, 477, 482, 5, 38, 0, 0, 478, 482, 5, 29, 0, 0, 479, 480, 5, 91, 0, 0, 480, 482, 5, 108, 0, 0, 481, 477, 1, 0, 0, 0, 481, 478, 1, 0, 0, 0, 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 497, 1, 0, 0, 0, 483, 498, 5, 60, 0, 0, 484, 498, 5, 90, 0, 0, 485, 495, 5, 143, 0, 0, 486, 487, 5, 108, 0, 0, 487, 492, 3, 172, 86, 0, 488, 489, 5, 6, 0, 0, 489, 491, 3, 172, 86, 0, 490, 488, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, 0, 495, 486, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, 483, 1, 0, 0, 0, 497, 484, 1, 0, 0, 0, 497, 485, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 503, 5, 110, 0, 0, 500, 501, 3, 162, 81, 0, 501, 502, 5, 3, 0, 0, 502, 504, 1, 0, 0, 0, 503, 500, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 505, 1, 0, 0, 0, 505, 509, 3, 166, 83, 0, 506, 507, 5, 75, 0, 0, 507, 508, 5, 65, 0, 0, 508, 510, 5, 130, 0, 0, 509, 506, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 512, 5, 149, 0, 0, 512, 514, 3, 94, 47, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 524, 5, 39, 0, 0, 516, 521, 3, 68, 34, 0, 517, 521, 3, 50, 25, 0, 518, 521, 3, 34, 17, 0, 519, 521, 3, 64, 32, 0, 520, 516, 1, 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 5, 2, 0, 0, 523, 525, 1, 0, 0, 0, 524, 520, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 5, 67, 0, 0, 529, 29, 1, 0, 0, 0, 530, 532, 5, 51, 0, 0, 531, 533, 7, 3, 0, 0, 532, 531, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 538, 5, 147, 0, 0, 535, 536, 5, 82, 0, 0, 536, 537, 5, 105, 0, 0, 537, 539, 5, 72, 0, 0, 538, 535, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 1, 0, 0, 0, 540, 541, 3, 162, 81, 0, 541, 542, 5, 3, 0, 0, 542, 544, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 3, 182, 91, 0, 546, 547, 5, 34, 0, 0, 547, 548, 3, 64, 32, 0, 548, 31, 1, 0, 0, 0, 549, 550, 5, 51, 0, 0, 550, 551, 5, 148, 0, 0, 551, 555, 5, 134, 0, 0, 552, 553, 5, 82, 0, 0, 553, 554, 5, 105, 0, 0, 554, 556, 5, 72, 0, 0, 555, 552, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 560, 1, 0, 0, 0, 557, 558, 3, 162, 81, 0, 558, 559, 5, 3, 0, 0, 559, 561, 1, 0, 0, 0, 560, 557, 1, 0, 0, 0, 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 166, 83, 0, 563, 564, 5, 144, 0, 0, 564, 576, 3, 184, 92, 0, 565, 566, 5, 4, 0, 0, 566, 571, 3, 150, 75, 0, 567, 568, 5, 6, 0, 0, 568, 570, 3, 150, 75, 0, 569, 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 5, 0, 0, 575, 577, 1, 0, 0, 0, 576, 565, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 33, 1, 0, 0, 0, 578, 580, 3, 116, 58, 0, 579, 578, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 60, 0, 0, 582, 583, 5, 77, 0, 0, 583, 586, 3, 118, 59, 0, 584, 585, 5, 150, 0, 0, 585, 587, 3, 94, 47, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 35, 1, 0, 0, 0, 588, 590, 3, 116, 58, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 60, 0, 0, 592, 593, 5, 77, 0, 0, 593, 596, 3, 118, 59, 0, 594, 595, 5, 150, 0, 0, 595, 597, 3, 94, 47, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 616, 1, 0, 0, 0, 598, 599, 5, 113, 0, 0, 599, 600, 5, 41, 0, 0, 600, 605, 3, 120, 60, 0, 601, 602, 5, 6, 0, 0, 602, 604, 3, 120, 60, 0, 603, 601, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 598, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 614, 3, 94, 47, 0, 612, 613, 7, 2, 0, 0, 613, 615, 3, 94, 47, 0, 614, 612, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 617, 1, 0, 0, 0, 617, 37, 1, 0, 0, 0, 618, 620, 5, 62, 0, 0, 619, 621, 5, 56, 0, 0, 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, 623, 3, 162, 81, 0, 623, 39, 1, 0, 0, 0, 624, 625, 5, 64, 0, 0, 625, 628, 5, 86, 0, 0, 626, 627, 5, 82, 0, 0, 627, 629, 5, 72, 0, 0, 628, 626, 1, 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 633, 1, 0, 0, 0, 630, 631, 3, 162, 81, 0, 631, 632, 5, 3, 0, 0, 632, 634, 1, 0, 0, 0, 633, 630, 1, 0, 0, 0, 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 3, 178, 89, 0, 636, 41, 1, 0, 0, 0, 637, 638, 5, 64, 0, 0, 638, 641, 5, 134, 0, 0, 639, 640, 5, 82, 0, 0, 640, 642, 5, 72, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 3, 162, 81, 0, 644, 645, 5, 3, 0, 0, 645, 647, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 649, 3, 166, 83, 0, 649, 43, 1, 0, 0, 0, 650, 651, 5, 64, 0, 0, 651, 654, 5, 140, 0, 0, 652, 653, 5, 82, 0, 0, 653, 655, 5, 72, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 659, 1, 0, 0, 0, 656, 657, 3, 162, 81, 0, 657, 658, 5, 3, 0, 0, 658, 660, 1, 0, 0, 0, 659, 656, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, 662, 3, 180, 90, 0, 662, 45, 1, 0, 0, 0, 663, 664, 5, 64, 0, 0, 664, 667, 5, 147, 0, 0, 665, 666, 5, 82, 0, 0, 666, 668, 5, 72, 0, 0, 667, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 672, 1, 0, 0, 0, 669, 670, 3, 162, 81, 0, 670, 671, 5, 3, 0, 0, 671, 673, 1, 0, 0, 0, 672, 669, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 3, 182, 91, 0, 675, 47, 1, 0, 0, 0, 676, 678, 5, 151, 0, 0, 677, 679, 5, 120, 0, 0, 678, 677, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 685, 3, 124, 62, 0, 681, 682, 5, 6, 0, 0, 682, 684, 3, 124, 62, 0, 683, 681, 1, 0, 0, 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 676, 1, 0, 0, 0, 688, 689, 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 696, 3, 136, 68, 0, 691, 692, 3, 138, 69, 0, 692, 693, 3, 136, 68, 0, 693, 695, 1, 0, 0, 0, 694, 691, 1, 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 709, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 700, 5, 113, 0, 0, 700, 701, 5, 41, 0, 0, 701, 706, 3, 120, 60, 0, 702, 703, 5, 6, 0, 0, 703, 705, 3, 120, 60, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, 0, 0, 709, 699, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 717, 1, 0, 0, 0, 711, 712, 5, 100, 0, 0, 712, 715, 3, 94, 47, 0, 713, 714, 7, 2, 0, 0, 714, 716, 3, 94, 47, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 49, 1, 0, 0, 0, 719, 721, 3, 116, 58, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, 0, 721, 739, 1, 0, 0, 0, 722, 740, 5, 90, 0, 0, 723, 740, 5, 126, 0, 0, 724, 725, 5, 90, 0, 0, 725, 726, 5, 112, 0, 0, 726, 740, 5, 126, 0, 0, 727, 728, 5, 90, 0, 0, 728, 729, 5, 112, 0, 0, 729, 740, 5, 129, 0, 0, 730, 731, 5, 90, 0, 0, 731, 732, 5, 112, 0, 0, 732, 740, 5, 26, 0, 0, 733, 734, 5, 90, 0, 0, 734, 735, 5, 112, 0, 0, 735, 740, 5, 74, 0, 0, 736, 737, 5, 90, 0, 0, 737, 738, 5, 112, 0, 0, 738, 740, 5, 83, 0, 0, 739, 722, 1, 0, 0, 0, 739, 723, 1, 0, 0, 0, 739, 724, 1, 0, 0, 0, 739, 727, 1, 0, 0, 0, 739, 730, 1, 0, 0, 0, 739, 733, 1, 0, 0, 0, 739, 736, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 745, 5, 93, 0, 0, 742, 743, 3, 162, 81, 0, 743, 744, 5, 3, 0, 0, 744, 746, 1, 0, 0, 0, 745, 742, 1, 0, 0, 0, 745, 746, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 759, 3, 166, 83, 0, 748, 749, 5, 4, 0, 0, 749, 754, 3, 172, 86, 0, 750, 751, 5, 6, 0, 0, 751, 753, 3, 172, 86, 0, 752, 750, 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, 5, 0, 0, 758, 760, 1, 0, 0, 0, 759, 748, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 792, 1, 0, 0, 0, 761, 762, 5, 146, 0, 0, 762, 763, 5, 4, 0, 0, 763, 768, 3, 94, 47, 0, 764, 765, 5, 6, 0, 0, 765, 767, 3, 94, 47, 0, 766, 764, 1, 0, 0, 0, 767, 770, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, 0, 769, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 786, 5, 5, 0, 0, 772, 773, 5, 6, 0, 0, 773, 774, 5, 4, 0, 0, 774, 779, 3, 94, 47, 0, 775, 776, 5, 6, 0, 0, 776, 778, 3, 94, 47, 0, 777, 775, 1, 0, 0, 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, 782, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, 5, 5, 0, 0, 783, 785, 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, 0, 0, 786, 787, 1, 0, 0, 0, 787, 793, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 789, 793, 3, 64, 32, 0, 790, 791, 5, 57, 0, 0, 791, 793, 5, 146, 0, 0, 792, 761, 1, 0, 0, 0, 792, 789, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, 51, 1, 0, 0, 0, 794, 798, 5, 116, 0, 0, 795, 796, 3, 162, 81, 0, 796, 797, 5, 3, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 807, 3, 186, 93, 0, 801, 802, 5, 7, 0, 0, 802, 808, 3, 122, 61, 0, 803, 804, 5, 4, 0, 0, 804, 805, 3, 122, 61, 0, 805, 806, 5, 5, 0, 0, 806, 808, 1, 0, 0, 0, 807, 801, 1, 0, 0, 0, 807, 803, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 53, 1, 0, 0, 0, 809, 820, 5, 123, 0, 0, 810, 821, 3, 174, 87, 0, 811, 812, 3, 162, 81, 0, 812, 813, 5, 3, 0, 0, 813, 815, 1, 0, 0, 0, 814, 811, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 818, 1, 0, 0, 0, 816, 819, 3, 166, 83, 0, 817, 819, 3, 178, 89, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, 820, 810, 1, 0, 0, 0, 820, 814, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 55, 1, 0, 0, 0, 822, 824, 5, 124, 0, 0, 823, 825, 5, 131, 0, 0, 824, 823, 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 188, 94, 0, 827, 57, 1, 0, 0, 0, 828, 833, 5, 129, 0, 0, 829, 831, 5, 139, 0, 0, 830, 832, 3, 192, 96, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, 832, 834, 1, 0, 0, 0, 833, 829, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 840, 1, 0, 0, 0, 835, 837, 5, 138, 0, 0, 836, 838, 5, 131, 0, 0, 837, 836, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 188, 94, 0, 840, 835, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 59, 1, 0, 0, 0, 842, 843, 5, 131, 0, 0, 843, 844, 3, 188, 94, 0, 844, 61, 1, 0, 0, 0, 845, 847, 5, 151, 0, 0, 846, 848, 5, 120, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 854, 3, 124, 62, 0, 850, 851, 5, 6, 0, 0, 851, 853, 3, 124, 62, 0, 852, 850, 1, 0, 0, 0, 853, 856, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 857, 845, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 870, 3, 136, 68, 0, 860, 861, 5, 113, 0, 0, 861, 862, 5, 41, 0, 0, 862, 867, 3, 120, 60, 0, 863, 864, 5, 6, 0, 0, 864, 866, 3, 120, 60, 0, 865, 863, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, 0, 870, 860, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 878, 1, 0, 0, 0, 872, 873, 5, 100, 0, 0, 873, 876, 3, 94, 47, 0, 874, 875, 7, 2, 0, 0, 875, 877, 3, 94, 47, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 879, 1, 0, 0, 0, 878, 872, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 63, 1, 0, 0, 0, 880, 882, 5, 151, 0, 0, 881, 883, 5, 120, 0, 0, 882, 881, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 889, 3, 124, 62, 0, 885, 886, 5, 6, 0, 0, 886, 888, 3, 124, 62, 0, 887, 885, 1, 0, 0, 0, 888, 891, 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, 0, 0, 891, 889, 1, 0, 0, 0, 892, 880, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 894, 1, 0, 0, 0, 894, 900, 3, 66, 33, 0, 895, 896, 3, 138, 69, 0, 896, 897, 3, 66, 33, 0, 897, 899, 1, 0, 0, 0, 898, 895, 1, 0, 0, 0, 899, 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 913, 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 113, 0, 0, 904, 905, 5, 41, 0, 0, 905, 910, 3, 120, 60, 0, 906, 907, 5, 6, 0, 0, 907, 909, 3, 120, 60, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, 903, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 921, 1, 0, 0, 0, 915, 916, 5, 100, 0, 0, 916, 919, 3, 94, 47, 0, 917, 918, 7, 2, 0, 0, 918, 920, 3, 94, 47, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 65, 1, 0, 0, 0, 923, 925, 5, 132, 0, 0, 924, 926, 7, 4, 0, 0, 925, 924, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 932, 3, 126, 63, 0, 928, 929, 5, 6, 0, 0, 929, 931, 3, 126, 63, 0, 930, 928, 1, 0, 0, 0, 931, 934, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 947, 1, 0, 0, 0, 934, 932, 1, 0, 0, 0, 935, 945, 5, 77, 0, 0, 936, 941, 3, 128, 64, 0, 937, 938, 5, 6, 0, 0, 938, 940, 3, 128, 64, 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, 946, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 130, 65, 0, 945, 936, 1, 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 935, 1, 0, 0, 0, 947, 948, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 950, 5, 150, 0, 0, 950, 952, 3, 94, 47, 0, 951, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, 967, 1, 0, 0, 0, 953, 954, 5, 80, 0, 0, 954, 955, 5, 41, 0, 0, 955, 960, 3, 94, 47, 0, 956, 957, 5, 6, 0, 0, 957, 959, 3, 94, 47, 0, 958, 956, 1, 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 965, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 963, 964, 5, 81, 0, 0, 964, 966, 3, 94, 47, 0, 965, 963, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, 1, 0, 0, 0, 967, 953, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 998, 1, 0, 0, 0, 969, 970, 5, 146, 0, 0, 970, 971, 5, 4, 0, 0, 971, 976, 3, 94, 47, 0, 972, 973, 5, 6, 0, 0, 973, 975, 3, 94, 47, 0, 974, 972, 1, 0, 0, 0, 975, 978, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, 979, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 979, 994, 5, 5, 0, 0, 980, 981, 5, 6, 0, 0, 981, 982, 5, 4, 0, 0, 982, 987, 3, 94, 47, 0, 983, 984, 5, 6, 0, 0, 984, 986, 3, 94, 47, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 1, 0, 0, 0, 989, 987, 1, 0, 0, 0, 990, 991, 5, 5, 0, 0, 991, 993, 1, 0, 0, 0, 992, 980, 1, 0, 0, 0, 993, 996, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 923, 1, 0, 0, 0, 997, 969, 1, 0, 0, 0, 998, 67, 1, 0, 0, 0, 999, 1001, 3, 116, 58, 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1013, 5, 143, 0, 0, 1003, 1004, 5, 112, 0, 0, 1004, 1014, 5, 129, 0, 0, 1005, 1006, 5, 112, 0, 0, 1006, 1014, 5, 26, 0, 0, 1007, 1008, 5, 112, 0, 0, 1008, 1014, 5, 126, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1014, 5, 74, 0, 0, 1011, 1012, 5, 112, 0, 0, 1012, 1014, 5, 83, 0, 0, 1013, 1003, 1, 0, 0, 0, 1013, 1005, 1, 0, 0, 0, 1013, 1007, 1, 0, 0, 0, 1013, 1009, 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 1016, 3, 118, 59, 0, 1016, 1017, 5, 133, 0, 0, 1017, 1018, 3, 172, 86, 0, 1018, 1019, 5, 7, 0, 0, 1019, 1027, 3, 94, 47, 0, 1020, 1021, 5, 6, 0, 0, 1021, 1022, 3, 172, 86, 0, 1022, 1023, 5, 7, 0, 0, 1023, 1024, 3, 94, 47, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, 0, 0, 1026, 1029, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1032, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 1031, 5, 150, 0, 0, 1031, 1033, 3, 94, 47, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 69, 1, 0, 0, 0, 1034, 1036, 3, 116, 58, 0, 1035, 1034, 1, 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1048, 5, 143, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1049, 5, 129, 0, 0, 1040, 1041, 5, 112, 0, 0, 1041, 1049, 5, 26, 0, 0, 1042, 1043, 5, 112, 0, 0, 1043, 1049, 5, 126, 0, 0, 1044, 1045, 5, 112, 0, 0, 1045, 1049, 5, 74, 0, 0, 1046, 1047, 5, 112, 0, 0, 1047, 1049, 5, 83, 0, 0, 1048, 1038, 1, 0, 0, 0, 1048, 1040, 1, 0, 0, 0, 1048, 1042, 1, 0, 0, 0, 1048, 1044, 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, 0, 1050, 1051, 3, 118, 59, 0, 1051, 1052, 5, 133, 0, 0, 1052, 1053, 3, 172, 86, 0, 1053, 1054, 5, 7, 0, 0, 1054, 1062, 3, 94, 47, 0, 1055, 1056, 5, 6, 0, 0, 1056, 1057, 3, 172, 86, 0, 1057, 1058, 5, 7, 0, 0, 1058, 1059, 3, 94, 47, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1067, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 150, 0, 0, 1066, 1068, 3, 94, 47, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1087, 1, 0, 0, 0, 1069, 1070, 5, 113, 0, 0, 1070, 1071, 5, 41, 0, 0, 1071, 1076, 3, 120, 60, 0, 1072, 1073, 5, 6, 0, 0, 1073, 1075, 3, 120, 60, 0, 1074, 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, 1069, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1082, 5, 100, 0, 0, 1082, 1085, 3, 94, 47, 0, 1083, 1084, 7, 2, 0, 0, 1084, 1086, 3, 94, 47, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1088, 1, 0, 0, 0, 1087, 1079, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 71, 1, 0, 0, 0, 1089, 1090, 5, 145, 0, 0, 1090, 73, 1, 0, 0, 0, 1091, 1096, 3, 172, 86, 0, 1092, 1095, 3, 78, 39, 0, 1093, 1095, 3, 76, 38, 0, 1094, 1092, 1, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1098, 1, 0, 0, 0, 1096, 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 75, 1, 0, 0, 0, 1098, 1096, 1, 0, 0, 0, 1099, 1119, 3, 158, 79, 0, 1100, 1101, 5, 4, 0, 0, 1101, 1103, 3, 142, 71, 0, 1102, 1104, 3, 194, 97, 0, 1103, 1102, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 5, 5, 0, 0, 1106, 1120, 1, 0, 0, 0, 1107, 1108, 5, 4, 0, 0, 1108, 1110, 3, 142, 71, 0, 1109, 1111, 3, 194, 97, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1113, 5, 6, 0, 0, 1113, 1115, 3, 142, 71, 0, 1114, 1116, 3, 194, 97, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1118, 5, 5, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, 1100, 1, 0, 0, 0, 1119, 1107, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, 77, 1, 0, 0, 0, 1121, 1122, 5, 50, 0, 0, 1122, 1124, 3, 158, 79, 0, 1123, 1121, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, 1140, 3, 80, 40, 0, 1126, 1140, 3, 82, 41, 0, 1127, 1140, 3, 84, 42, 0, 1128, 1140, 3, 86, 43, 0, 1129, 1130, 5, 142, 0, 0, 1130, 1140, 3, 92, 46, 0, 1131, 1132, 5, 45, 0, 0, 1132, 1133, 5, 4, 0, 0, 1133, 1134, 3, 94, 47, 0, 1134, 1135, 5, 5, 0, 0, 1135, 1140, 1, 0, 0, 0, 1136, 1140, 3, 88, 44, 0, 1137, 1138, 5, 46, 0, 0, 1138, 1140, 3, 174, 87, 0, 1139, 1125, 1, 0, 0, 0, 1139, 1126, 1, 0, 0, 0, 1139, 1127, 1, 0, 0, 0, 1139, 1128, 1, 0, 0, 0, 1139, 1129, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 79, 1, 0, 0, 0, 1141, 1142, 5, 117, 0, 0, 1142, 1144, 5, 97, 0, 0, 1143, 1145, 7, 5, 0, 0, 1144, 1143, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1148, 3, 92, 46, 0, 1147, 1149, 5, 37, 0, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, 1, 0, 0, 0, 1149, 81, 1, 0, 0, 0, 1150, 1151, 3, 96, 48, 0, 1151, 83, 1, 0, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 1155, 3, 92, 46, 0, 1155, 85, 1, 0, 0, 0, 1156, 1157, 5, 107, 0, 0, 1157, 1158, 3, 92, 46, 0, 1158, 87, 1, 0, 0, 0, 1159, 1171, 5, 57, 0, 0, 1160, 1172, 3, 90, 45, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 94, 47, 0, 1163, 1164, 5, 5, 0, 0, 1164, 1172, 1, 0, 0, 0, 1165, 1166, 5, 103, 0, 0, 1166, 1167, 5, 4, 0, 0, 1167, 1168, 3, 94, 47, 0, 1168, 1169, 5, 5, 0, 0, 1169, 1172, 1, 0, 0, 0, 1170, 1172, 3, 194, 97, 0, 1171, 1160, 1, 0, 0, 0, 1171, 1161, 1, 0, 0, 0, 1171, 1165, 1, 0, 0, 0, 1171, 1170, 1, 0, 0, 0, 1172, 1179, 1, 0, 0, 0, 1173, 1175, 5, 1, 0, 0, 1174, 1176, 3, 194, 97, 0, 1175, 1174, 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1173, 1, 0, 0, 0, 1179, 1180, 1, 0, 0, 0, 1180, 89, 1, 0, 0, 0, 1181, 1184, 3, 142, 71, 0, 1182, 1184, 3, 144, 72, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 91, 1, 0, 0, 0, 1185, 1186, 5, 110, 0, 0, 1186, 1187, 5, 49, 0, 0, 1187, 1189, 7, 6, 0, 0, 1188, 1185, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 93, 1, 0, 0, 0, 1190, 1191, 6, 47, -1, 0, 1191, 1267, 3, 144, 72, 0, 1192, 1267, 5, 155, 0, 0, 1193, 1194, 3, 162, 81, 0, 1194, 1195, 5, 3, 0, 0, 1195, 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 3, 166, 83, 0, 1199, 1200, 5, 3, 0, 0, 1200, 1202, 1, 0, 0, 0, 1201, 1196, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1267, 3, 172, 86, 0, 1204, 1205, 3, 146, 73, 0, 1205, 1206, 3, 94, 47, 21, 1206, 1267, 1, 0, 0, 0, 1207, 1208, 3, 160, 80, 0, 1208, 1221, 5, 4, 0, 0, 1209, 1211, 5, 63, 0, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1217, 3, 94, 47, 0, 1213, 1214, 5, 6, 0, 0, 1214, 1216, 3, 94, 47, 0, 1215, 1213, 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, 5, 8, 0, 0, 1221, 1210, 1, 0, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 5, 0, 0, 1224, 1267, 1, 0, 0, 0, 1225, 1226, 5, 4, 0, 0, 1226, 1227, 3, 94, 47, 0, 1227, 1228, 5, 5, 0, 0, 1228, 1267, 1, 0, 0, 0, 1229, 1230, 5, 44, 0, 0, 1230, 1231, 5, 4, 0, 0, 1231, 1232, 3, 94, 47, 0, 1232, 1233, 5, 34, 0, 0, 1233, 1234, 3, 76, 38, 0, 1234, 1235, 5, 5, 0, 0, 1235, 1267, 1, 0, 0, 0, 1236, 1238, 5, 105, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1241, 5, 72, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, 3, 64, 32, 0, 1244, 1245, 5, 5, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1248, 5, 43, 0, 0, 1247, 1249, 3, 94, 47, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1255, 1, 0, 0, 0, 1250, 1251, 5, 149, 0, 0, 1251, 1252, 3, 94, 47, 0, 1252, 1253, 5, 137, 0, 0, 1253, 1254, 3, 94, 47, 0, 1254, 1256, 1, 0, 0, 0, 1255, 1250, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, 1260, 5, 66, 0, 0, 1260, 1262, 3, 94, 47, 0, 1261, 1259, 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 5, 67, 0, 0, 1264, 1267, 1, 0, 0, 0, 1265, 1267, 3, 100, 50, 0, 1266, 1190, 1, 0, 0, 0, 1266, 1192, 1, 0, 0, 0, 1266, 1201, 1, 0, 0, 0, 1266, 1204, 1, 0, 0, 0, 1266, 1207, 1, 0, 0, 0, 1266, 1225, 1, 0, 0, 0, 1266, 1229, 1, 0, 0, 0, 1266, 1240, 1, 0, 0, 0, 1266, 1246, 1, 0, 0, 0, 1266, 1265, 1, 0, 0, 0, 1267, 1368, 1, 0, 0, 0, 1268, 1269, 10, 20, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, 1367, 3, 94, 47, 21, 1271, 1272, 10, 19, 0, 0, 1272, 1273, 7, 7, 0, 0, 1273, 1367, 3, 94, 47, 20, 1274, 1275, 10, 18, 0, 0, 1275, 1276, 7, 8, 0, 0, 1276, 1367, 3, 94, 47, 19, 1277, 1278, 10, 17, 0, 0, 1278, 1279, 7, 9, 0, 0, 1279, 1367, 3, 94, 47, 18, 1280, 1281, 10, 16, 0, 0, 1281, 1282, 7, 10, 0, 0, 1282, 1367, 3, 94, 47, 17, 1283, 1296, 10, 15, 0, 0, 1284, 1297, 5, 7, 0, 0, 1285, 1297, 5, 23, 0, 0, 1286, 1297, 5, 24, 0, 0, 1287, 1297, 5, 25, 0, 0, 1288, 1297, 5, 94, 0, 0, 1289, 1290, 5, 94, 0, 0, 1290, 1297, 5, 105, 0, 0, 1291, 1297, 5, 85, 0, 0, 1292, 1297, 5, 99, 0, 0, 1293, 1297, 5, 79, 0, 0, 1294, 1297, 5, 101, 0, 0, 1295, 1297, 5, 122, 0, 0, 1296, 1284, 1, 0, 0, 0, 1296, 1285, 1, 0, 0, 0, 1296, 1286, 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1288, 1, 0, 0, 0, 1296, 1289, 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1367, 3, 94, 47, 16, 1299, 1300, 10, 14, 0, 0, 1300, 1301, 5, 33, 0, 0, 1301, 1367, 3, 94, 47, 15, 1302, 1303, 10, 13, 0, 0, 1303, 1304, 5, 112, 0, 0, 1304, 1367, 3, 94, 47, 14, 1305, 1306, 10, 6, 0, 0, 1306, 1308, 5, 94, 0, 0, 1307, 1309, 5, 105, 0, 0, 1308, 1307, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1367, 3, 94, 47, 7, 1311, 1313, 10, 5, 0, 0, 1312, 1314, 5, 105, 0, 0, 1313, 1312, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, 5, 40, 0, 0, 1316, 1317, 3, 94, 47, 0, 1317, 1318, 5, 33, 0, 0, 1318, 1319, 3, 94, 47, 6, 1319, 1367, 1, 0, 0, 0, 1320, 1321, 10, 9, 0, 0, 1321, 1322, 5, 46, 0, 0, 1322, 1367, 3, 174, 87, 0, 1323, 1325, 10, 8, 0, 0, 1324, 1326, 5, 105, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1328, 7, 11, 0, 0, 1328, 1331, 3, 94, 47, 0, 1329, 1330, 5, 69, 0, 0, 1330, 1332, 3, 94, 47, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1367, 1, 0, 0, 0, 1333, 1338, 10, 7, 0, 0, 1334, 1339, 5, 95, 0, 0, 1335, 1339, 5, 106, 0, 0, 1336, 1337, 5, 105, 0, 0, 1337, 1339, 5, 107, 0, 0, 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1342, 10, 4, 0, 0, 1341, 1343, 5, 105, 0, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1364, 5, 85, 0, 0, 1345, 1355, 5, 4, 0, 0, 1346, 1356, 3, 64, 32, 0, 1347, 1352, 3, 94, 47, 0, 1348, 1349, 5, 6, 0, 0, 1349, 1351, 3, 94, 47, 0, 1350, 1348, 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, 1346, 1, 0, 0, 0, 1355, 1347, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1365, 5, 5, 0, 0, 1358, 1359, 3, 162, 81, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1362, 1, 0, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, 1, 0, 0, 0, 1363, 1365, 3, 166, 83, 0, 1364, 1345, 1, 0, 0, 0, 1364, 1361, 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1268, 1, 0, 0, 0, 1366, 1271, 1, 0, 0, 0, 1366, 1274, 1, 0, 0, 0, 1366, 1277, 1, 0, 0, 0, 1366, 1280, 1, 0, 0, 0, 1366, 1283, 1, 0, 0, 0, 1366, 1299, 1, 0, 0, 0, 1366, 1302, 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1311, 1, 0, 0, 0, 1366, 1320, 1, 0, 0, 0, 1366, 1323, 1, 0, 0, 0, 1366, 1333, 1, 0, 0, 0, 1366, 1340, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 95, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1375, 5, 121, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 1374, 5, 3, 0, 0, 1374, 1376, 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1389, 3, 176, 88, 0, 1378, 1379, 5, 4, 0, 0, 1379, 1384, 3, 98, 49, 0, 1380, 1381, 5, 6, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, 5, 5, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1378, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1409, 1, 0, 0, 0, 1391, 1392, 5, 110, 0, 0, 1392, 1401, 7, 12, 0, 0, 1393, 1394, 5, 133, 0, 0, 1394, 1402, 5, 107, 0, 0, 1395, 1396, 5, 133, 0, 0, 1396, 1402, 5, 57, 0, 0, 1397, 1402, 5, 42, 0, 0, 1398, 1402, 5, 127, 0, 0, 1399, 1400, 5, 104, 0, 0, 1400, 1402, 5, 27, 0, 0, 1401, 1393, 1, 0, 0, 0, 1401, 1395, 1, 0, 0, 0, 1401, 1397, 1, 0, 0, 0, 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1406, 1, 0, 0, 0, 1403, 1404, 5, 101, 0, 0, 1404, 1406, 3, 158, 79, 0, 1405, 1391, 1, 0, 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1408, 1, 0, 0, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1425, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1414, 5, 105, 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1420, 5, 58, 0, 0, 1416, 1417, 5, 88, 0, 0, 1417, 1421, 5, 59, 0, 0, 1418, 1419, 5, 88, 0, 0, 1419, 1421, 5, 84, 0, 0, 1420, 1416, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, 1, 0, 0, 0, 1422, 1424, 5, 68, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1413, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 3, 158, 79, 0, 1428, 99, 1, 0, 0, 0, 1429, 1430, 5, 119, 0, 0, 1430, 1435, 5, 4, 0, 0, 1431, 1436, 5, 83, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 5, 6, 0, 0, 1434, 1436, 3, 148, 74, 0, 1435, 1431, 1, 0, 0, 0, 1435, 1432, 1, 0, 0, 0, 1436, 1437, 1, 0, 0, 0, 1437, 1438, 5, 5, 0, 0, 1438, 101, 1, 0, 0, 0, 1439, 1442, 3, 172, 86, 0, 1440, 1441, 5, 46, 0, 0, 1441, 1443, 3, 174, 87, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, 1446, 7, 5, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 103, 1, 0, 0, 0, 1447, 1448, 5, 50, 0, 0, 1448, 1450, 3, 158, 79, 0, 1449, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1460, 1, 0, 0, 0, 1451, 1461, 3, 106, 53, 0, 1452, 1461, 3, 112, 56, 0, 1453, 1461, 3, 110, 55, 0, 1454, 1455, 5, 45, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 94, 47, 0, 1457, 1458, 5, 5, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1461, 3, 108, 54, 0, 1460, 1451, 1, 0, 0, 0, 1460, 1452, 1, 0, 0, 0, 1460, 1453, 1, 0, 0, 0, 1460, 1454, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 105, 1, 0, 0, 0, 1462, 1463, 5, 117, 0, 0, 1463, 1464, 5, 97, 0, 0, 1464, 1465, 5, 4, 0, 0, 1465, 1470, 3, 102, 51, 0, 1466, 1467, 5, 6, 0, 0, 1467, 1469, 3, 102, 51, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, 1, 0, 0, 0, 1473, 1474, 5, 5, 0, 0, 1474, 1475, 3, 92, 46, 0, 1475, 107, 1, 0, 0, 0, 1476, 1477, 5, 76, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, 5, 4, 0, 0, 1479, 1484, 3, 114, 57, 0, 1480, 1481, 5, 6, 0, 0, 1481, 1483, 3, 114, 57, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1487, 1488, 5, 5, 0, 0, 1488, 1489, 3, 96, 48, 0, 1489, 109, 1, 0, 0, 0, 1490, 1492, 5, 142, 0, 0, 1491, 1493, 5, 97, 0, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1496, 3, 158, 79, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1498, 5, 4, 0, 0, 1498, 1503, 3, 102, 51, 0, 1499, 1500, 5, 6, 0, 0, 1500, 1502, 3, 102, 51, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 5, 5, 0, 0, 1507, 1508, 3, 92, 46, 0, 1508, 111, 1, 0, 0, 0, 1509, 1511, 5, 97, 0, 0, 1510, 1512, 3, 158, 79, 0, 1511, 1510, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 5, 4, 0, 0, 1514, 1519, 3, 102, 51, 0, 1515, 1516, 5, 6, 0, 0, 1516, 1518, 3, 102, 51, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 5, 0, 0, 1523, 1524, 3, 92, 46, 0, 1524, 113, 1, 0, 0, 0, 1525, 1526, 3, 172, 86, 0, 1526, 115, 1, 0, 0, 0, 1527, 1529, 5, 151, 0, 0, 1528, 1530, 5, 120, 0, 0, 1529, 1528, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 3, 140, 70, 0, 1532, 1533, 5, 34, 0, 0, 1533, 1534, 5, 4, 0, 0, 1534, 1535, 3, 64, 32, 0, 1535, 1545, 5, 5, 0, 0, 1536, 1537, 5, 6, 0, 0, 1537, 1538, 3, 140, 70, 0, 1538, 1539, 5, 34, 0, 0, 1539, 1540, 5, 4, 0, 0, 1540, 1541, 3, 64, 32, 0, 1541, 1542, 5, 5, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1536, 1, 0, 0, 0, 1544, 1547, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 117, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1549, 3, 162, 81, 0, 1549, 1550, 5, 3, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1548, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1559, 3, 166, 83, 0, 1554, 1555, 5, 87, 0, 0, 1555, 1556, 5, 41, 0, 0, 1556, 1560, 3, 178, 89, 0, 1557, 1558, 5, 105, 0, 0, 1558, 1560, 5, 87, 0, 0, 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, 1560, 119, 1, 0, 0, 0, 1561, 1564, 3, 94, 47, 0, 1562, 1563, 5, 46, 0, 0, 1563, 1565, 3, 174, 87, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, 0, 0, 1565, 1567, 1, 0, 0, 0, 1566, 1568, 7, 5, 0, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 121, 1, 0, 0, 0, 1569, 1573, 3, 142, 71, 0, 1570, 1573, 3, 158, 79, 0, 1571, 1573, 5, 156, 0, 0, 1572, 1569, 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1571, 1, 0, 0, 0, 1573, 123, 1, 0, 0, 0, 1574, 1586, 3, 166, 83, 0, 1575, 1576, 5, 4, 0, 0, 1576, 1581, 3, 172, 86, 0, 1577, 1578, 5, 6, 0, 0, 1578, 1580, 3, 172, 86, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1584, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, 1585, 5, 5, 0, 0, 1585, 1587, 1, 0, 0, 0, 1586, 1575, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, 1590, 5, 4, 0, 0, 1590, 1591, 3, 64, 32, 0, 1591, 1592, 5, 5, 0, 0, 1592, 125, 1, 0, 0, 0, 1593, 1606, 5, 8, 0, 0, 1594, 1595, 3, 166, 83, 0, 1595, 1596, 5, 3, 0, 0, 1596, 1597, 5, 8, 0, 0, 1597, 1606, 1, 0, 0, 0, 1598, 1603, 3, 94, 47, 0, 1599, 1601, 5, 34, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 3, 152, 76, 0, 1603, 1600, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, 1593, 1, 0, 0, 0, 1605, 1594, 1, 0, 0, 0, 1605, 1598, 1, 0, 0, 0, 1606, 127, 1, 0, 0, 0, 1607, 1608, 3, 162, 81, 0, 1608, 1609, 5, 3, 0, 0, 1609, 1611, 1, 0, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1617, 3, 166, 83, 0, 1613, 1615, 5, 34, 0, 0, 1614, 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1618, 3, 190, 95, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, 1624, 1, 0, 0, 0, 1619, 1620, 5, 87, 0, 0, 1620, 1621, 5, 41, 0, 0, 1621, 1625, 3, 178, 89, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1625, 5, 87, 0, 0, 1624, 1619, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 1655, 1, 0, 0, 0, 1626, 1636, 5, 4, 0, 0, 1627, 1632, 3, 128, 64, 0, 1628, 1629, 5, 6, 0, 0, 1629, 1631, 3, 128, 64, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1637, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 3, 130, 65, 0, 1636, 1627, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, 0, 0, 1638, 1643, 5, 5, 0, 0, 1639, 1641, 5, 34, 0, 0, 1640, 1639, 1, 0, 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 3, 190, 95, 0, 1643, 1640, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1655, 1, 0, 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 1647, 3, 64, 32, 0, 1647, 1652, 5, 5, 0, 0, 1648, 1650, 5, 34, 0, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1653, 3, 190, 95, 0, 1652, 1649, 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1655, 1, 0, 0, 0, 1654, 1610, 1, 0, 0, 0, 1654, 1626, 1, 0, 0, 0, 1654, 1645, 1, 0, 0, 0, 1655, 129, 1, 0, 0, 0, 1656, 1663, 3, 128, 64, 0, 1657, 1658, 3, 132, 66, 0, 1658, 1659, 3, 128, 64, 0, 1659, 1660, 3, 134, 67, 0, 1660, 1662, 1, 0, 0, 0, 1661, 1657, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 131, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, 1666, 1680, 5, 6, 0, 0, 1667, 1669, 5, 102, 0, 0, 1668, 1667, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1672, 5, 98, 0, 0, 1671, 1673, 5, 114, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 1677, 1, 0, 0, 0, 1674, 1677, 5, 89, 0, 0, 1675, 1677, 5, 52, 0, 0, 1676, 1670, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1680, 5, 96, 0, 0, 1679, 1666, 1, 0, 0, 0, 1679, 1668, 1, 0, 0, 0, 1680, 133, 1, 0, 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 1696, 3, 94, 47, 0, 1683, 1684, 5, 144, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 1690, 3, 172, 86, 0, 1686, 1687, 5, 6, 0, 0, 1687, 1689, 3, 172, 86, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 5, 5, 0, 0, 1694, 1696, 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1695, 1683, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 135, 1, 0, 0, 0, 1697, 1699, 5, 132, 0, 0, 1698, 1700, 7, 4, 0, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1706, 3, 126, 63, 0, 1702, 1703, 5, 6, 0, 0, 1703, 1705, 3, 126, 63, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1721, 1, 0, 0, 0, 1708, 1706, 1, 0, 0, 0, 1709, 1719, 5, 77, 0, 0, 1710, 1715, 3, 128, 64, 0, 1711, 1712, 5, 6, 0, 0, 1712, 1714, 3, 128, 64, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1720, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 130, 65, 0, 1719, 1710, 1, 0, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1709, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1725, 1, 0, 0, 0, 1723, 1724, 5, 150, 0, 0, 1724, 1726, 3, 94, 47, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1741, 1, 0, 0, 0, 1727, 1728, 5, 80, 0, 0, 1728, 1729, 5, 41, 0, 0, 1729, 1734, 3, 94, 47, 0, 1730, 1731, 5, 6, 0, 0, 1731, 1733, 3, 94, 47, 0, 1732, 1730, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1739, 1, 0, 0, 0, 1736, 1734, 1, 0, 0, 0, 1737, 1738, 5, 81, 0, 0, 1738, 1740, 3, 94, 47, 0, 1739, 1737, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1727, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1772, 1, 0, 0, 0, 1743, 1744, 5, 146, 0, 0, 1744, 1745, 5, 4, 0, 0, 1745, 1750, 3, 94, 47, 0, 1746, 1747, 5, 6, 0, 0, 1747, 1749, 3, 94, 47, 0, 1748, 1746, 1, 0, 0, 0, 1749, 1752, 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1768, 5, 5, 0, 0, 1754, 1755, 5, 6, 0, 0, 1755, 1756, 5, 4, 0, 0, 1756, 1761, 3, 94, 47, 0, 1757, 1758, 5, 6, 0, 0, 1758, 1760, 3, 94, 47, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1764, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1765, 5, 5, 0, 0, 1765, 1767, 1, 0, 0, 0, 1766, 1754, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1768, 1, 0, 0, 0, 1771, 1697, 1, 0, 0, 0, 1771, 1743, 1, 0, 0, 0, 1772, 137, 1, 0, 0, 0, 1773, 1779, 5, 141, 0, 0, 1774, 1775, 5, 141, 0, 0, 1775, 1779, 5, 30, 0, 0, 1776, 1779, 5, 92, 0, 0, 1777, 1779, 5, 70, 0, 0, 1778, 1773, 1, 0, 0, 0, 1778, 1774, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1778, 1777, 1, 0, 0, 0, 1779, 139, 1, 0, 0, 0, 1780, 1792, 3, 166, 83, 0, 1781, 1782, 5, 4, 0, 0, 1782, 1787, 3, 172, 86, 0, 1783, 1784, 5, 6, 0, 0, 1784, 1786, 3, 172, 86, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1787, 1, 0, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1793, 1, 0, 0, 0, 1792, 1781, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 141, 1, 0, 0, 0, 1794, 1796, 7, 8, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1800, 5, 154, 0, 0, 1798, 1800, 5, 8, 0, 0, 1799, 1795, 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 143, 1, 0, 0, 0, 1801, 1802, 7, 14, 0, 0, 1802, 145, 1, 0, 0, 0, 1803, 1804, 7, 15, 0, 0, 1804, 147, 1, 0, 0, 0, 1805, 1806, 5, 156, 0, 0, 1806, 149, 1, 0, 0, 0, 1807, 1810, 3, 94, 47, 0, 1808, 1810, 3, 74, 37, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1808, 1, 0, 0, 0, 1810, 151, 1, 0, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 153, 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 155, 1, 0, 0, 0, 1815, 1817, 9, 0, 0, 0, 1816, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1816, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 157, 1, 0, 0, 0, 1820, 1821, 3, 194, 97, 0, 1821, 159, 1, 0, 0, 0, 1822, 1823, 3, 194, 97, 0, 1823, 161, 1, 0, 0, 0, 1824, 1825, 3, 194, 97, 0, 1825, 163, 1, 0, 0, 0, 1826, 1827, 3, 194, 97, 0, 1827, 165, 1, 0, 0, 0, 1828, 1829, 3, 194, 97, 0, 1829, 167, 1, 0, 0, 0, 1830, 1831, 3, 194, 97, 0, 1831, 169, 1, 0, 0, 0, 1832, 1833, 3, 194, 97, 0, 1833, 171, 1, 0, 0, 0, 1834, 1835, 3, 194, 97, 0, 1835, 173, 1, 0, 0, 0, 1836, 1837, 3, 194, 97, 0, 1837, 175, 1, 0, 0, 0, 1838, 1839, 3, 194, 97, 0, 1839, 177, 1, 0, 0, 0, 1840, 1841, 3, 194, 97, 0, 1841, 179, 1, 0, 0, 0, 1842, 1843, 3, 194, 97, 0, 1843, 181, 1, 0, 0, 0, 1844, 1845, 3, 194, 97, 0, 1845, 183, 1, 0, 0, 0, 1846, 1847, 3, 194, 97, 0, 1847, 185, 1, 0, 0, 0, 1848, 1849, 3, 194, 97, 0, 1849, 187, 1, 0, 0, 0, 1850, 1851, 3, 194, 97, 0, 1851, 189, 1, 0, 0, 0, 1852, 1853, 3, 194, 97, 0, 1853, 191, 1, 0, 0, 0, 1854, 1855, 3, 194, 97, 0, 1855, 193, 1, 0, 0, 0, 1856, 1864, 5, 153, 0, 0, 1857, 1864, 3, 154, 77, 0, 1858, 1864, 5, 156, 0, 0, 1859, 1860, 5, 4, 0, 0, 1860, 1861, 3, 194, 97, 0, 1861, 1862, 5, 5, 0, 0, 1862, 1864, 1, 0, 0, 0, 1863, 1856, 1, 0, 0, 0, 1863, 1857, 1, 0, 0, 0, 1863, 1858, 1, 0, 0, 0, 1863, 1859, 1, 0, 0, 0, 1864, 195, 1, 0, 0, 0, 260, 198, 200, 211, 218, 223, 229, 235, 237, 269, 274, 279, 289, 292, 295, 298, 315, 319, 327, 331, 333, 338, 340, 344, 351, 354, 359, 363, 368, 377, 380, 386, 388, 392, 398, 403, 414, 420, 424, 430, 435, 444, 446, 452, 456, 459, 463, 469, 474, 481, 492, 495, 497, 503, 509, 513, 520, 526, 532, 538, 543, 555, 560, 571, 576, 579, 586, 589, 596, 605, 608, 614, 616, 620, 628, 633, 641, 646, 654, 659, 667, 672, 678, 685, 688, 696, 706, 709, 715, 717, 720, 739, 745, 754, 759, 768, 779, 786, 792, 798, 807, 814, 818, 820, 824, 831, 833, 837, 840, 847, 854, 857, 867, 870, 876, 878, 882, 889, 892, 900, 910, 913, 919, 921, 925, 932, 941, 945, 947, 951, 960, 965, 967, 976, 987, 994, 997, 1000, 1013, 1027, 1032, 1035, 1048, 1062, 1067, 1076, 1079, 1085, 1087, 1094, 1096, 1103, 1110, 1115, 1119, 1123, 1139, 1144, 1148, 1171, 1177, 1179, 1183, 1188, 1196, 1201, 1210, 1217, 1221, 1237, 1240, 1248, 1257, 1261, 1266, 1296, 1308, 1313, 1325, 1331, 1338, 1342, 1352, 1355, 1361, 1364, 1366, 1368, 1375, 1384, 1389, 1401, 1405, 1409, 1413, 1420, 1423, 1425, 1435, 1442, 1445, 1449, 1460, 1470, 1484, 1492, 1495, 1503, 1511, 1519, 1529, 1545, 1551, 1559, 1564, 1567, 1572, 1581, 1586, 1600, 1603, 1605, 1610, 1614, 1617, 1624, 1632, 1636, 1640, 1643, 1649, 1652, 1654, 1663, 1668, 1672, 1676, 1679, 1690, 1695, 1699, 1706, 1715, 1719, 1721, 1725, 1734, 1739, 1741, 1750, 1761, 1768, 1771, 1778, 1787, 1792, 1795, 1799, 1809, 1818, 1863] \ No newline at end of file diff --git a/processor/stream_processor/test/parser/Sql.tokens b/processor/stream_processor/test/parser/Sql.tokens deleted file mode 100644 index 70454cda7204..000000000000 --- a/processor/stream_processor/test/parser/Sql.tokens +++ /dev/null @@ -1,186 +0,0 @@ -T__0=1 -SCOL=2 -DOT=3 -OPEN_PAR=4 -CLOSE_PAR=5 -COMMA=6 -ASSIGN=7 -STAR=8 -PLUS=9 -MINUS=10 -TILDE=11 -PIPE2=12 -DIV=13 -MOD=14 -LT2=15 -GT2=16 -AMP=17 -PIPE=18 -LT=19 -LT_EQ=20 -GT=21 -GT_EQ=22 -EQ=23 -NOT_EQ1=24 -NOT_EQ2=25 -K_ABORT=26 -K_ACTION=27 -K_ADD=28 -K_AFTER=29 -K_ALL=30 -K_ALTER=31 -K_ANALYZE=32 -K_AND=33 -K_AS=34 -K_ASC=35 -K_ATTACH=36 -K_AUTOINCREMENT=37 -K_BEFORE=38 -K_BEGIN=39 -K_BETWEEN=40 -K_BY=41 -K_CASCADE=42 -K_CASE=43 -K_CAST=44 -K_CHECK=45 -K_COLLATE=46 -K_COLUMN=47 -K_COMMIT=48 -K_CONFLICT=49 -K_CONSTRAINT=50 -K_CREATE=51 -K_CROSS=52 -K_CURRENT_DATE=53 -K_CURRENT_TIME=54 -K_CURRENT_TIMESTAMP=55 -K_DATABASE=56 -K_DEFAULT=57 -K_DEFERRABLE=58 -K_DEFERRED=59 -K_DELETE=60 -K_DESC=61 -K_DETACH=62 -K_DISTINCT=63 -K_DROP=64 -K_EACH=65 -K_ELSE=66 -K_END=67 -K_ENABLE=68 -K_ESCAPE=69 -K_EXCEPT=70 -K_EXCLUSIVE=71 -K_EXISTS=72 -K_EXPLAIN=73 -K_FAIL=74 -K_FOR=75 -K_FOREIGN=76 -K_FROM=77 -K_FULL=78 -K_GLOB=79 -K_GROUP=80 -K_HAVING=81 -K_IF=82 -K_IGNORE=83 -K_IMMEDIATE=84 -K_IN=85 -K_INDEX=86 -K_INDEXED=87 -K_INITIALLY=88 -K_INNER=89 -K_INSERT=90 -K_INSTEAD=91 -K_INTERSECT=92 -K_INTO=93 -K_IS=94 -K_ISNULL=95 -K_JOIN=96 -K_KEY=97 -K_LEFT=98 -K_LIKE=99 -K_LIMIT=100 -K_MATCH=101 -K_NATURAL=102 -K_NEXTVAL=103 -K_NO=104 -K_NOT=105 -K_NOTNULL=106 -K_NULL=107 -K_OF=108 -K_OFFSET=109 -K_ON=110 -K_ONLY=111 -K_OR=112 -K_ORDER=113 -K_OUTER=114 -K_PLAN=115 -K_PRAGMA=116 -K_PRIMARY=117 -K_QUERY=118 -K_RAISE=119 -K_RECURSIVE=120 -K_REFERENCES=121 -K_REGEXP=122 -K_REINDEX=123 -K_RELEASE=124 -K_RENAME=125 -K_REPLACE=126 -K_RESTRICT=127 -K_RIGHT=128 -K_ROLLBACK=129 -K_ROW=130 -K_SAVEPOINT=131 -K_SELECT=132 -K_SET=133 -K_TABLE=134 -K_TEMP=135 -K_TEMPORARY=136 -K_THEN=137 -K_TO=138 -K_TRANSACTION=139 -K_TRIGGER=140 -K_UNION=141 -K_UNIQUE=142 -K_UPDATE=143 -K_USING=144 -K_VACUUM=145 -K_VALUES=146 -K_VIEW=147 -K_VIRTUAL=148 -K_WHEN=149 -K_WHERE=150 -K_WITH=151 -K_WITHOUT=152 -IDENTIFIER=153 -NUMERIC_LITERAL=154 -BIND_PARAMETER=155 -STRING_LITERAL=156 -BLOB_LITERAL=157 -SINGLE_LINE_COMMENT=158 -MULTILINE_COMMENT=159 -SPACES=160 -UNEXPECTED_CHAR=161 -'::'=1 -';'=2 -'.'=3 -'('=4 -')'=5 -','=6 -'='=7 -'*'=8 -'+'=9 -'-'=10 -'~'=11 -'||'=12 -'/'=13 -'%'=14 -'<<'=15 -'>>'=16 -'&'=17 -'|'=18 -'<'=19 -'<='=20 -'>'=21 -'>='=22 -'=='=23 -'!='=24 -'<>'=25 diff --git a/processor/stream_processor/test/parser/SqlLexer.interp b/processor/stream_processor/test/parser/SqlLexer.interp deleted file mode 100644 index d43689e2eb1e..000000000000 --- a/processor/stream_processor/test/parser/SqlLexer.interp +++ /dev/null @@ -1,527 +0,0 @@ -token literal names: -null -'::' -';' -'.' -'(' -')' -',' -'=' -'*' -'+' -'-' -'~' -'||' -'/' -'%' -'<<' -'>>' -'&' -'|' -'<' -'<=' -'>' -'>=' -'==' -'!=' -'<>' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -null -SCOL -DOT -OPEN_PAR -CLOSE_PAR -COMMA -ASSIGN -STAR -PLUS -MINUS -TILDE -PIPE2 -DIV -MOD -LT2 -GT2 -AMP -PIPE -LT -LT_EQ -GT -GT_EQ -EQ -NOT_EQ1 -NOT_EQ2 -K_ABORT -K_ACTION -K_ADD -K_AFTER -K_ALL -K_ALTER -K_ANALYZE -K_AND -K_AS -K_ASC -K_ATTACH -K_AUTOINCREMENT -K_BEFORE -K_BEGIN -K_BETWEEN -K_BY -K_CASCADE -K_CASE -K_CAST -K_CHECK -K_COLLATE -K_COLUMN -K_COMMIT -K_CONFLICT -K_CONSTRAINT -K_CREATE -K_CROSS -K_CURRENT_DATE -K_CURRENT_TIME -K_CURRENT_TIMESTAMP -K_DATABASE -K_DEFAULT -K_DEFERRABLE -K_DEFERRED -K_DELETE -K_DESC -K_DETACH -K_DISTINCT -K_DROP -K_EACH -K_ELSE -K_END -K_ENABLE -K_ESCAPE -K_EXCEPT -K_EXCLUSIVE -K_EXISTS -K_EXPLAIN -K_FAIL -K_FOR -K_FOREIGN -K_FROM -K_FULL -K_GLOB -K_GROUP -K_HAVING -K_IF -K_IGNORE -K_IMMEDIATE -K_IN -K_INDEX -K_INDEXED -K_INITIALLY -K_INNER -K_INSERT -K_INSTEAD -K_INTERSECT -K_INTO -K_IS -K_ISNULL -K_JOIN -K_KEY -K_LEFT -K_LIKE -K_LIMIT -K_MATCH -K_NATURAL -K_NEXTVAL -K_NO -K_NOT -K_NOTNULL -K_NULL -K_OF -K_OFFSET -K_ON -K_ONLY -K_OR -K_ORDER -K_OUTER -K_PLAN -K_PRAGMA -K_PRIMARY -K_QUERY -K_RAISE -K_RECURSIVE -K_REFERENCES -K_REGEXP -K_REINDEX -K_RELEASE -K_RENAME -K_REPLACE -K_RESTRICT -K_RIGHT -K_ROLLBACK -K_ROW -K_SAVEPOINT -K_SELECT -K_SET -K_TABLE -K_TEMP -K_TEMPORARY -K_THEN -K_TO -K_TRANSACTION -K_TRIGGER -K_UNION -K_UNIQUE -K_UPDATE -K_USING -K_VACUUM -K_VALUES -K_VIEW -K_VIRTUAL -K_WHEN -K_WHERE -K_WITH -K_WITHOUT -IDENTIFIER -NUMERIC_LITERAL -BIND_PARAMETER -STRING_LITERAL -BLOB_LITERAL -SINGLE_LINE_COMMENT -MULTILINE_COMMENT -SPACES -UNEXPECTED_CHAR - -rule names: -T__0 -SCOL -DOT -OPEN_PAR -CLOSE_PAR -COMMA -ASSIGN -STAR -PLUS -MINUS -TILDE -PIPE2 -DIV -MOD -LT2 -GT2 -AMP -PIPE -LT -LT_EQ -GT -GT_EQ -EQ -NOT_EQ1 -NOT_EQ2 -K_ABORT -K_ACTION -K_ADD -K_AFTER -K_ALL -K_ALTER -K_ANALYZE -K_AND -K_AS -K_ASC -K_ATTACH -K_AUTOINCREMENT -K_BEFORE -K_BEGIN -K_BETWEEN -K_BY -K_CASCADE -K_CASE -K_CAST -K_CHECK -K_COLLATE -K_COLUMN -K_COMMIT -K_CONFLICT -K_CONSTRAINT -K_CREATE -K_CROSS -K_CURRENT_DATE -K_CURRENT_TIME -K_CURRENT_TIMESTAMP -K_DATABASE -K_DEFAULT -K_DEFERRABLE -K_DEFERRED -K_DELETE -K_DESC -K_DETACH -K_DISTINCT -K_DROP -K_EACH -K_ELSE -K_END -K_ENABLE -K_ESCAPE -K_EXCEPT -K_EXCLUSIVE -K_EXISTS -K_EXPLAIN -K_FAIL -K_FOR -K_FOREIGN -K_FROM -K_FULL -K_GLOB -K_GROUP -K_HAVING -K_IF -K_IGNORE -K_IMMEDIATE -K_IN -K_INDEX -K_INDEXED -K_INITIALLY -K_INNER -K_INSERT -K_INSTEAD -K_INTERSECT -K_INTO -K_IS -K_ISNULL -K_JOIN -K_KEY -K_LEFT -K_LIKE -K_LIMIT -K_MATCH -K_NATURAL -K_NEXTVAL -K_NO -K_NOT -K_NOTNULL -K_NULL -K_OF -K_OFFSET -K_ON -K_ONLY -K_OR -K_ORDER -K_OUTER -K_PLAN -K_PRAGMA -K_PRIMARY -K_QUERY -K_RAISE -K_RECURSIVE -K_REFERENCES -K_REGEXP -K_REINDEX -K_RELEASE -K_RENAME -K_REPLACE -K_RESTRICT -K_RIGHT -K_ROLLBACK -K_ROW -K_SAVEPOINT -K_SELECT -K_SET -K_TABLE -K_TEMP -K_TEMPORARY -K_THEN -K_TO -K_TRANSACTION -K_TRIGGER -K_UNION -K_UNIQUE -K_UPDATE -K_USING -K_VACUUM -K_VALUES -K_VIEW -K_VIRTUAL -K_WHEN -K_WHERE -K_WITH -K_WITHOUT -IDENTIFIER -NUMERIC_LITERAL -BIND_PARAMETER -STRING_LITERAL -BLOB_LITERAL -SINGLE_LINE_COMMENT -MULTILINE_COMMENT -SPACES -UNEXPECTED_CHAR -DIGIT -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 161, 1483, 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, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 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, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 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, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 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, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 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, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 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, 47, 1, 47, 1, 47, 1, 48, 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, 49, 1, 49, 1, 49, 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, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 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, 53, 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, 54, 1, 54, 1, 54, 1, 54, 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, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 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, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 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, 63, 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, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 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, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1295, 8, 152, 10, 152, 12, 152, 1298, 9, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1305, 8, 152, 10, 152, 12, 152, 1308, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1313, 8, 152, 10, 152, 12, 152, 1316, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1321, 8, 152, 10, 152, 12, 152, 1324, 9, 152, 3, 152, 1326, 8, 152, 1, 153, 4, 153, 1329, 8, 153, 11, 153, 12, 153, 1330, 1, 153, 1, 153, 5, 153, 1335, 8, 153, 10, 153, 12, 153, 1338, 9, 153, 3, 153, 1340, 8, 153, 1, 153, 1, 153, 3, 153, 1344, 8, 153, 1, 153, 4, 153, 1347, 8, 153, 11, 153, 12, 153, 1348, 3, 153, 1351, 8, 153, 1, 153, 1, 153, 4, 153, 1355, 8, 153, 11, 153, 12, 153, 1356, 1, 153, 1, 153, 3, 153, 1361, 8, 153, 1, 153, 4, 153, 1364, 8, 153, 11, 153, 12, 153, 1365, 3, 153, 1368, 8, 153, 3, 153, 1370, 8, 153, 1, 154, 1, 154, 5, 154, 1374, 8, 154, 10, 154, 12, 154, 1377, 9, 154, 1, 154, 1, 154, 3, 154, 1381, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 1387, 8, 155, 10, 155, 12, 155, 1390, 9, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1401, 8, 157, 10, 157, 12, 157, 1404, 9, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 1412, 8, 158, 10, 158, 12, 158, 1415, 9, 158, 1, 158, 1, 158, 1, 158, 3, 158, 1420, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 1413, 0, 188, 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, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, 0, 375, 0, 1, 0, 37, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, 45, 45, 3, 0, 36, 36, 58, 58, 64, 64, 1, 0, 39, 39, 2, 0, 10, 10, 13, 13, 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 1482, 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, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 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, 1, 377, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 5, 382, 1, 0, 0, 0, 7, 384, 1, 0, 0, 0, 9, 386, 1, 0, 0, 0, 11, 388, 1, 0, 0, 0, 13, 390, 1, 0, 0, 0, 15, 392, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 396, 1, 0, 0, 0, 21, 398, 1, 0, 0, 0, 23, 400, 1, 0, 0, 0, 25, 403, 1, 0, 0, 0, 27, 405, 1, 0, 0, 0, 29, 407, 1, 0, 0, 0, 31, 410, 1, 0, 0, 0, 33, 413, 1, 0, 0, 0, 35, 415, 1, 0, 0, 0, 37, 417, 1, 0, 0, 0, 39, 419, 1, 0, 0, 0, 41, 422, 1, 0, 0, 0, 43, 424, 1, 0, 0, 0, 45, 427, 1, 0, 0, 0, 47, 430, 1, 0, 0, 0, 49, 433, 1, 0, 0, 0, 51, 436, 1, 0, 0, 0, 53, 442, 1, 0, 0, 0, 55, 449, 1, 0, 0, 0, 57, 453, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 463, 1, 0, 0, 0, 63, 469, 1, 0, 0, 0, 65, 477, 1, 0, 0, 0, 67, 481, 1, 0, 0, 0, 69, 484, 1, 0, 0, 0, 71, 488, 1, 0, 0, 0, 73, 495, 1, 0, 0, 0, 75, 509, 1, 0, 0, 0, 77, 516, 1, 0, 0, 0, 79, 522, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 533, 1, 0, 0, 0, 85, 541, 1, 0, 0, 0, 87, 546, 1, 0, 0, 0, 89, 551, 1, 0, 0, 0, 91, 557, 1, 0, 0, 0, 93, 565, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 579, 1, 0, 0, 0, 99, 588, 1, 0, 0, 0, 101, 599, 1, 0, 0, 0, 103, 606, 1, 0, 0, 0, 105, 612, 1, 0, 0, 0, 107, 625, 1, 0, 0, 0, 109, 638, 1, 0, 0, 0, 111, 656, 1, 0, 0, 0, 113, 665, 1, 0, 0, 0, 115, 673, 1, 0, 0, 0, 117, 684, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 700, 1, 0, 0, 0, 123, 705, 1, 0, 0, 0, 125, 712, 1, 0, 0, 0, 127, 721, 1, 0, 0, 0, 129, 726, 1, 0, 0, 0, 131, 731, 1, 0, 0, 0, 133, 736, 1, 0, 0, 0, 135, 740, 1, 0, 0, 0, 137, 747, 1, 0, 0, 0, 139, 754, 1, 0, 0, 0, 141, 761, 1, 0, 0, 0, 143, 771, 1, 0, 0, 0, 145, 778, 1, 0, 0, 0, 147, 786, 1, 0, 0, 0, 149, 791, 1, 0, 0, 0, 151, 795, 1, 0, 0, 0, 153, 803, 1, 0, 0, 0, 155, 808, 1, 0, 0, 0, 157, 813, 1, 0, 0, 0, 159, 818, 1, 0, 0, 0, 161, 824, 1, 0, 0, 0, 163, 831, 1, 0, 0, 0, 165, 834, 1, 0, 0, 0, 167, 841, 1, 0, 0, 0, 169, 851, 1, 0, 0, 0, 171, 854, 1, 0, 0, 0, 173, 860, 1, 0, 0, 0, 175, 868, 1, 0, 0, 0, 177, 878, 1, 0, 0, 0, 179, 884, 1, 0, 0, 0, 181, 891, 1, 0, 0, 0, 183, 899, 1, 0, 0, 0, 185, 909, 1, 0, 0, 0, 187, 914, 1, 0, 0, 0, 189, 917, 1, 0, 0, 0, 191, 924, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, 933, 1, 0, 0, 0, 197, 938, 1, 0, 0, 0, 199, 943, 1, 0, 0, 0, 201, 949, 1, 0, 0, 0, 203, 955, 1, 0, 0, 0, 205, 963, 1, 0, 0, 0, 207, 971, 1, 0, 0, 0, 209, 974, 1, 0, 0, 0, 211, 978, 1, 0, 0, 0, 213, 986, 1, 0, 0, 0, 215, 991, 1, 0, 0, 0, 217, 994, 1, 0, 0, 0, 219, 1001, 1, 0, 0, 0, 221, 1004, 1, 0, 0, 0, 223, 1009, 1, 0, 0, 0, 225, 1012, 1, 0, 0, 0, 227, 1018, 1, 0, 0, 0, 229, 1024, 1, 0, 0, 0, 231, 1029, 1, 0, 0, 0, 233, 1036, 1, 0, 0, 0, 235, 1044, 1, 0, 0, 0, 237, 1050, 1, 0, 0, 0, 239, 1056, 1, 0, 0, 0, 241, 1066, 1, 0, 0, 0, 243, 1077, 1, 0, 0, 0, 245, 1084, 1, 0, 0, 0, 247, 1092, 1, 0, 0, 0, 249, 1100, 1, 0, 0, 0, 251, 1107, 1, 0, 0, 0, 253, 1115, 1, 0, 0, 0, 255, 1124, 1, 0, 0, 0, 257, 1130, 1, 0, 0, 0, 259, 1139, 1, 0, 0, 0, 261, 1143, 1, 0, 0, 0, 263, 1153, 1, 0, 0, 0, 265, 1160, 1, 0, 0, 0, 267, 1164, 1, 0, 0, 0, 269, 1170, 1, 0, 0, 0, 271, 1175, 1, 0, 0, 0, 273, 1185, 1, 0, 0, 0, 275, 1190, 1, 0, 0, 0, 277, 1193, 1, 0, 0, 0, 279, 1205, 1, 0, 0, 0, 281, 1213, 1, 0, 0, 0, 283, 1219, 1, 0, 0, 0, 285, 1226, 1, 0, 0, 0, 287, 1233, 1, 0, 0, 0, 289, 1239, 1, 0, 0, 0, 291, 1246, 1, 0, 0, 0, 293, 1253, 1, 0, 0, 0, 295, 1258, 1, 0, 0, 0, 297, 1266, 1, 0, 0, 0, 299, 1271, 1, 0, 0, 0, 301, 1277, 1, 0, 0, 0, 303, 1282, 1, 0, 0, 0, 305, 1325, 1, 0, 0, 0, 307, 1369, 1, 0, 0, 0, 309, 1380, 1, 0, 0, 0, 311, 1382, 1, 0, 0, 0, 313, 1393, 1, 0, 0, 0, 315, 1396, 1, 0, 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1423, 1, 0, 0, 0, 321, 1427, 1, 0, 0, 0, 323, 1429, 1, 0, 0, 0, 325, 1431, 1, 0, 0, 0, 327, 1433, 1, 0, 0, 0, 329, 1435, 1, 0, 0, 0, 331, 1437, 1, 0, 0, 0, 333, 1439, 1, 0, 0, 0, 335, 1441, 1, 0, 0, 0, 337, 1443, 1, 0, 0, 0, 339, 1445, 1, 0, 0, 0, 341, 1447, 1, 0, 0, 0, 343, 1449, 1, 0, 0, 0, 345, 1451, 1, 0, 0, 0, 347, 1453, 1, 0, 0, 0, 349, 1455, 1, 0, 0, 0, 351, 1457, 1, 0, 0, 0, 353, 1459, 1, 0, 0, 0, 355, 1461, 1, 0, 0, 0, 357, 1463, 1, 0, 0, 0, 359, 1465, 1, 0, 0, 0, 361, 1467, 1, 0, 0, 0, 363, 1469, 1, 0, 0, 0, 365, 1471, 1, 0, 0, 0, 367, 1473, 1, 0, 0, 0, 369, 1475, 1, 0, 0, 0, 371, 1477, 1, 0, 0, 0, 373, 1479, 1, 0, 0, 0, 375, 1481, 1, 0, 0, 0, 377, 378, 5, 58, 0, 0, 378, 379, 5, 58, 0, 0, 379, 2, 1, 0, 0, 0, 380, 381, 5, 59, 0, 0, 381, 4, 1, 0, 0, 0, 382, 383, 5, 46, 0, 0, 383, 6, 1, 0, 0, 0, 384, 385, 5, 40, 0, 0, 385, 8, 1, 0, 0, 0, 386, 387, 5, 41, 0, 0, 387, 10, 1, 0, 0, 0, 388, 389, 5, 44, 0, 0, 389, 12, 1, 0, 0, 0, 390, 391, 5, 61, 0, 0, 391, 14, 1, 0, 0, 0, 392, 393, 5, 42, 0, 0, 393, 16, 1, 0, 0, 0, 394, 395, 5, 43, 0, 0, 395, 18, 1, 0, 0, 0, 396, 397, 5, 45, 0, 0, 397, 20, 1, 0, 0, 0, 398, 399, 5, 126, 0, 0, 399, 22, 1, 0, 0, 0, 400, 401, 5, 124, 0, 0, 401, 402, 5, 124, 0, 0, 402, 24, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 26, 1, 0, 0, 0, 405, 406, 5, 37, 0, 0, 406, 28, 1, 0, 0, 0, 407, 408, 5, 60, 0, 0, 408, 409, 5, 60, 0, 0, 409, 30, 1, 0, 0, 0, 410, 411, 5, 62, 0, 0, 411, 412, 5, 62, 0, 0, 412, 32, 1, 0, 0, 0, 413, 414, 5, 38, 0, 0, 414, 34, 1, 0, 0, 0, 415, 416, 5, 124, 0, 0, 416, 36, 1, 0, 0, 0, 417, 418, 5, 60, 0, 0, 418, 38, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 421, 5, 61, 0, 0, 421, 40, 1, 0, 0, 0, 422, 423, 5, 62, 0, 0, 423, 42, 1, 0, 0, 0, 424, 425, 5, 62, 0, 0, 425, 426, 5, 61, 0, 0, 426, 44, 1, 0, 0, 0, 427, 428, 5, 61, 0, 0, 428, 429, 5, 61, 0, 0, 429, 46, 1, 0, 0, 0, 430, 431, 5, 33, 0, 0, 431, 432, 5, 61, 0, 0, 432, 48, 1, 0, 0, 0, 433, 434, 5, 60, 0, 0, 434, 435, 5, 62, 0, 0, 435, 50, 1, 0, 0, 0, 436, 437, 3, 325, 162, 0, 437, 438, 3, 327, 163, 0, 438, 439, 3, 353, 176, 0, 439, 440, 3, 359, 179, 0, 440, 441, 3, 363, 181, 0, 441, 52, 1, 0, 0, 0, 442, 443, 3, 325, 162, 0, 443, 444, 3, 329, 164, 0, 444, 445, 3, 363, 181, 0, 445, 446, 3, 341, 170, 0, 446, 447, 3, 353, 176, 0, 447, 448, 3, 351, 175, 0, 448, 54, 1, 0, 0, 0, 449, 450, 3, 325, 162, 0, 450, 451, 3, 331, 165, 0, 451, 452, 3, 331, 165, 0, 452, 56, 1, 0, 0, 0, 453, 454, 3, 325, 162, 0, 454, 455, 3, 335, 167, 0, 455, 456, 3, 363, 181, 0, 456, 457, 3, 333, 166, 0, 457, 458, 3, 359, 179, 0, 458, 58, 1, 0, 0, 0, 459, 460, 3, 325, 162, 0, 460, 461, 3, 347, 173, 0, 461, 462, 3, 347, 173, 0, 462, 60, 1, 0, 0, 0, 463, 464, 3, 325, 162, 0, 464, 465, 3, 347, 173, 0, 465, 466, 3, 363, 181, 0, 466, 467, 3, 333, 166, 0, 467, 468, 3, 359, 179, 0, 468, 62, 1, 0, 0, 0, 469, 470, 3, 325, 162, 0, 470, 471, 3, 351, 175, 0, 471, 472, 3, 325, 162, 0, 472, 473, 3, 347, 173, 0, 473, 474, 3, 373, 186, 0, 474, 475, 3, 375, 187, 0, 475, 476, 3, 333, 166, 0, 476, 64, 1, 0, 0, 0, 477, 478, 3, 325, 162, 0, 478, 479, 3, 351, 175, 0, 479, 480, 3, 331, 165, 0, 480, 66, 1, 0, 0, 0, 481, 482, 3, 325, 162, 0, 482, 483, 3, 361, 180, 0, 483, 68, 1, 0, 0, 0, 484, 485, 3, 325, 162, 0, 485, 486, 3, 361, 180, 0, 486, 487, 3, 329, 164, 0, 487, 70, 1, 0, 0, 0, 488, 489, 3, 325, 162, 0, 489, 490, 3, 363, 181, 0, 490, 491, 3, 363, 181, 0, 491, 492, 3, 325, 162, 0, 492, 493, 3, 329, 164, 0, 493, 494, 3, 339, 169, 0, 494, 72, 1, 0, 0, 0, 495, 496, 3, 325, 162, 0, 496, 497, 3, 365, 182, 0, 497, 498, 3, 363, 181, 0, 498, 499, 3, 353, 176, 0, 499, 500, 3, 341, 170, 0, 500, 501, 3, 351, 175, 0, 501, 502, 3, 329, 164, 0, 502, 503, 3, 359, 179, 0, 503, 504, 3, 333, 166, 0, 504, 505, 3, 349, 174, 0, 505, 506, 3, 333, 166, 0, 506, 507, 3, 351, 175, 0, 507, 508, 3, 363, 181, 0, 508, 74, 1, 0, 0, 0, 509, 510, 3, 327, 163, 0, 510, 511, 3, 333, 166, 0, 511, 512, 3, 335, 167, 0, 512, 513, 3, 353, 176, 0, 513, 514, 3, 359, 179, 0, 514, 515, 3, 333, 166, 0, 515, 76, 1, 0, 0, 0, 516, 517, 3, 327, 163, 0, 517, 518, 3, 333, 166, 0, 518, 519, 3, 337, 168, 0, 519, 520, 3, 341, 170, 0, 520, 521, 3, 351, 175, 0, 521, 78, 1, 0, 0, 0, 522, 523, 3, 327, 163, 0, 523, 524, 3, 333, 166, 0, 524, 525, 3, 363, 181, 0, 525, 526, 3, 369, 184, 0, 526, 527, 3, 333, 166, 0, 527, 528, 3, 333, 166, 0, 528, 529, 3, 351, 175, 0, 529, 80, 1, 0, 0, 0, 530, 531, 3, 327, 163, 0, 531, 532, 3, 373, 186, 0, 532, 82, 1, 0, 0, 0, 533, 534, 3, 329, 164, 0, 534, 535, 3, 325, 162, 0, 535, 536, 3, 361, 180, 0, 536, 537, 3, 329, 164, 0, 537, 538, 3, 325, 162, 0, 538, 539, 3, 331, 165, 0, 539, 540, 3, 333, 166, 0, 540, 84, 1, 0, 0, 0, 541, 542, 3, 329, 164, 0, 542, 543, 3, 325, 162, 0, 543, 544, 3, 361, 180, 0, 544, 545, 3, 333, 166, 0, 545, 86, 1, 0, 0, 0, 546, 547, 3, 329, 164, 0, 547, 548, 3, 325, 162, 0, 548, 549, 3, 361, 180, 0, 549, 550, 3, 363, 181, 0, 550, 88, 1, 0, 0, 0, 551, 552, 3, 329, 164, 0, 552, 553, 3, 339, 169, 0, 553, 554, 3, 333, 166, 0, 554, 555, 3, 329, 164, 0, 555, 556, 3, 345, 172, 0, 556, 90, 1, 0, 0, 0, 557, 558, 3, 329, 164, 0, 558, 559, 3, 353, 176, 0, 559, 560, 3, 347, 173, 0, 560, 561, 3, 347, 173, 0, 561, 562, 3, 325, 162, 0, 562, 563, 3, 363, 181, 0, 563, 564, 3, 333, 166, 0, 564, 92, 1, 0, 0, 0, 565, 566, 3, 329, 164, 0, 566, 567, 3, 353, 176, 0, 567, 568, 3, 347, 173, 0, 568, 569, 3, 365, 182, 0, 569, 570, 3, 349, 174, 0, 570, 571, 3, 351, 175, 0, 571, 94, 1, 0, 0, 0, 572, 573, 3, 329, 164, 0, 573, 574, 3, 353, 176, 0, 574, 575, 3, 349, 174, 0, 575, 576, 3, 349, 174, 0, 576, 577, 3, 341, 170, 0, 577, 578, 3, 363, 181, 0, 578, 96, 1, 0, 0, 0, 579, 580, 3, 329, 164, 0, 580, 581, 3, 353, 176, 0, 581, 582, 3, 351, 175, 0, 582, 583, 3, 335, 167, 0, 583, 584, 3, 347, 173, 0, 584, 585, 3, 341, 170, 0, 585, 586, 3, 329, 164, 0, 586, 587, 3, 363, 181, 0, 587, 98, 1, 0, 0, 0, 588, 589, 3, 329, 164, 0, 589, 590, 3, 353, 176, 0, 590, 591, 3, 351, 175, 0, 591, 592, 3, 361, 180, 0, 592, 593, 3, 363, 181, 0, 593, 594, 3, 359, 179, 0, 594, 595, 3, 325, 162, 0, 595, 596, 3, 341, 170, 0, 596, 597, 3, 351, 175, 0, 597, 598, 3, 363, 181, 0, 598, 100, 1, 0, 0, 0, 599, 600, 3, 329, 164, 0, 600, 601, 3, 359, 179, 0, 601, 602, 3, 333, 166, 0, 602, 603, 3, 325, 162, 0, 603, 604, 3, 363, 181, 0, 604, 605, 3, 333, 166, 0, 605, 102, 1, 0, 0, 0, 606, 607, 3, 329, 164, 0, 607, 608, 3, 359, 179, 0, 608, 609, 3, 353, 176, 0, 609, 610, 3, 361, 180, 0, 610, 611, 3, 361, 180, 0, 611, 104, 1, 0, 0, 0, 612, 613, 3, 329, 164, 0, 613, 614, 3, 365, 182, 0, 614, 615, 3, 359, 179, 0, 615, 616, 3, 359, 179, 0, 616, 617, 3, 333, 166, 0, 617, 618, 3, 351, 175, 0, 618, 619, 3, 363, 181, 0, 619, 620, 5, 95, 0, 0, 620, 621, 3, 331, 165, 0, 621, 622, 3, 325, 162, 0, 622, 623, 3, 363, 181, 0, 623, 624, 3, 333, 166, 0, 624, 106, 1, 0, 0, 0, 625, 626, 3, 329, 164, 0, 626, 627, 3, 365, 182, 0, 627, 628, 3, 359, 179, 0, 628, 629, 3, 359, 179, 0, 629, 630, 3, 333, 166, 0, 630, 631, 3, 351, 175, 0, 631, 632, 3, 363, 181, 0, 632, 633, 5, 95, 0, 0, 633, 634, 3, 363, 181, 0, 634, 635, 3, 341, 170, 0, 635, 636, 3, 349, 174, 0, 636, 637, 3, 333, 166, 0, 637, 108, 1, 0, 0, 0, 638, 639, 3, 329, 164, 0, 639, 640, 3, 365, 182, 0, 640, 641, 3, 359, 179, 0, 641, 642, 3, 359, 179, 0, 642, 643, 3, 333, 166, 0, 643, 644, 3, 351, 175, 0, 644, 645, 3, 363, 181, 0, 645, 646, 5, 95, 0, 0, 646, 647, 3, 363, 181, 0, 647, 648, 3, 341, 170, 0, 648, 649, 3, 349, 174, 0, 649, 650, 3, 333, 166, 0, 650, 651, 3, 361, 180, 0, 651, 652, 3, 363, 181, 0, 652, 653, 3, 325, 162, 0, 653, 654, 3, 349, 174, 0, 654, 655, 3, 355, 177, 0, 655, 110, 1, 0, 0, 0, 656, 657, 3, 331, 165, 0, 657, 658, 3, 325, 162, 0, 658, 659, 3, 363, 181, 0, 659, 660, 3, 325, 162, 0, 660, 661, 3, 327, 163, 0, 661, 662, 3, 325, 162, 0, 662, 663, 3, 361, 180, 0, 663, 664, 3, 333, 166, 0, 664, 112, 1, 0, 0, 0, 665, 666, 3, 331, 165, 0, 666, 667, 3, 333, 166, 0, 667, 668, 3, 335, 167, 0, 668, 669, 3, 325, 162, 0, 669, 670, 3, 365, 182, 0, 670, 671, 3, 347, 173, 0, 671, 672, 3, 363, 181, 0, 672, 114, 1, 0, 0, 0, 673, 674, 3, 331, 165, 0, 674, 675, 3, 333, 166, 0, 675, 676, 3, 335, 167, 0, 676, 677, 3, 333, 166, 0, 677, 678, 3, 359, 179, 0, 678, 679, 3, 359, 179, 0, 679, 680, 3, 325, 162, 0, 680, 681, 3, 327, 163, 0, 681, 682, 3, 347, 173, 0, 682, 683, 3, 333, 166, 0, 683, 116, 1, 0, 0, 0, 684, 685, 3, 331, 165, 0, 685, 686, 3, 333, 166, 0, 686, 687, 3, 335, 167, 0, 687, 688, 3, 333, 166, 0, 688, 689, 3, 359, 179, 0, 689, 690, 3, 359, 179, 0, 690, 691, 3, 333, 166, 0, 691, 692, 3, 331, 165, 0, 692, 118, 1, 0, 0, 0, 693, 694, 3, 331, 165, 0, 694, 695, 3, 333, 166, 0, 695, 696, 3, 347, 173, 0, 696, 697, 3, 333, 166, 0, 697, 698, 3, 363, 181, 0, 698, 699, 3, 333, 166, 0, 699, 120, 1, 0, 0, 0, 700, 701, 3, 331, 165, 0, 701, 702, 3, 333, 166, 0, 702, 703, 3, 361, 180, 0, 703, 704, 3, 329, 164, 0, 704, 122, 1, 0, 0, 0, 705, 706, 3, 331, 165, 0, 706, 707, 3, 333, 166, 0, 707, 708, 3, 363, 181, 0, 708, 709, 3, 325, 162, 0, 709, 710, 3, 329, 164, 0, 710, 711, 3, 339, 169, 0, 711, 124, 1, 0, 0, 0, 712, 713, 3, 331, 165, 0, 713, 714, 3, 341, 170, 0, 714, 715, 3, 361, 180, 0, 715, 716, 3, 363, 181, 0, 716, 717, 3, 341, 170, 0, 717, 718, 3, 351, 175, 0, 718, 719, 3, 329, 164, 0, 719, 720, 3, 363, 181, 0, 720, 126, 1, 0, 0, 0, 721, 722, 3, 331, 165, 0, 722, 723, 3, 359, 179, 0, 723, 724, 3, 353, 176, 0, 724, 725, 3, 355, 177, 0, 725, 128, 1, 0, 0, 0, 726, 727, 3, 333, 166, 0, 727, 728, 3, 325, 162, 0, 728, 729, 3, 329, 164, 0, 729, 730, 3, 339, 169, 0, 730, 130, 1, 0, 0, 0, 731, 732, 3, 333, 166, 0, 732, 733, 3, 347, 173, 0, 733, 734, 3, 361, 180, 0, 734, 735, 3, 333, 166, 0, 735, 132, 1, 0, 0, 0, 736, 737, 3, 333, 166, 0, 737, 738, 3, 351, 175, 0, 738, 739, 3, 331, 165, 0, 739, 134, 1, 0, 0, 0, 740, 741, 3, 333, 166, 0, 741, 742, 3, 351, 175, 0, 742, 743, 3, 325, 162, 0, 743, 744, 3, 327, 163, 0, 744, 745, 3, 347, 173, 0, 745, 746, 3, 333, 166, 0, 746, 136, 1, 0, 0, 0, 747, 748, 3, 333, 166, 0, 748, 749, 3, 361, 180, 0, 749, 750, 3, 329, 164, 0, 750, 751, 3, 325, 162, 0, 751, 752, 3, 355, 177, 0, 752, 753, 3, 333, 166, 0, 753, 138, 1, 0, 0, 0, 754, 755, 3, 333, 166, 0, 755, 756, 3, 371, 185, 0, 756, 757, 3, 329, 164, 0, 757, 758, 3, 333, 166, 0, 758, 759, 3, 355, 177, 0, 759, 760, 3, 363, 181, 0, 760, 140, 1, 0, 0, 0, 761, 762, 3, 333, 166, 0, 762, 763, 3, 371, 185, 0, 763, 764, 3, 329, 164, 0, 764, 765, 3, 347, 173, 0, 765, 766, 3, 365, 182, 0, 766, 767, 3, 361, 180, 0, 767, 768, 3, 341, 170, 0, 768, 769, 3, 367, 183, 0, 769, 770, 3, 333, 166, 0, 770, 142, 1, 0, 0, 0, 771, 772, 3, 333, 166, 0, 772, 773, 3, 371, 185, 0, 773, 774, 3, 341, 170, 0, 774, 775, 3, 361, 180, 0, 775, 776, 3, 363, 181, 0, 776, 777, 3, 361, 180, 0, 777, 144, 1, 0, 0, 0, 778, 779, 3, 333, 166, 0, 779, 780, 3, 371, 185, 0, 780, 781, 3, 355, 177, 0, 781, 782, 3, 347, 173, 0, 782, 783, 3, 325, 162, 0, 783, 784, 3, 341, 170, 0, 784, 785, 3, 351, 175, 0, 785, 146, 1, 0, 0, 0, 786, 787, 3, 335, 167, 0, 787, 788, 3, 325, 162, 0, 788, 789, 3, 341, 170, 0, 789, 790, 3, 347, 173, 0, 790, 148, 1, 0, 0, 0, 791, 792, 3, 335, 167, 0, 792, 793, 3, 353, 176, 0, 793, 794, 3, 359, 179, 0, 794, 150, 1, 0, 0, 0, 795, 796, 3, 335, 167, 0, 796, 797, 3, 353, 176, 0, 797, 798, 3, 359, 179, 0, 798, 799, 3, 333, 166, 0, 799, 800, 3, 341, 170, 0, 800, 801, 3, 337, 168, 0, 801, 802, 3, 351, 175, 0, 802, 152, 1, 0, 0, 0, 803, 804, 3, 335, 167, 0, 804, 805, 3, 359, 179, 0, 805, 806, 3, 353, 176, 0, 806, 807, 3, 349, 174, 0, 807, 154, 1, 0, 0, 0, 808, 809, 3, 335, 167, 0, 809, 810, 3, 365, 182, 0, 810, 811, 3, 347, 173, 0, 811, 812, 3, 347, 173, 0, 812, 156, 1, 0, 0, 0, 813, 814, 3, 337, 168, 0, 814, 815, 3, 347, 173, 0, 815, 816, 3, 353, 176, 0, 816, 817, 3, 327, 163, 0, 817, 158, 1, 0, 0, 0, 818, 819, 3, 337, 168, 0, 819, 820, 3, 359, 179, 0, 820, 821, 3, 353, 176, 0, 821, 822, 3, 365, 182, 0, 822, 823, 3, 355, 177, 0, 823, 160, 1, 0, 0, 0, 824, 825, 3, 339, 169, 0, 825, 826, 3, 325, 162, 0, 826, 827, 3, 367, 183, 0, 827, 828, 3, 341, 170, 0, 828, 829, 3, 351, 175, 0, 829, 830, 3, 337, 168, 0, 830, 162, 1, 0, 0, 0, 831, 832, 3, 341, 170, 0, 832, 833, 3, 335, 167, 0, 833, 164, 1, 0, 0, 0, 834, 835, 3, 341, 170, 0, 835, 836, 3, 337, 168, 0, 836, 837, 3, 351, 175, 0, 837, 838, 3, 353, 176, 0, 838, 839, 3, 359, 179, 0, 839, 840, 3, 333, 166, 0, 840, 166, 1, 0, 0, 0, 841, 842, 3, 341, 170, 0, 842, 843, 3, 349, 174, 0, 843, 844, 3, 349, 174, 0, 844, 845, 3, 333, 166, 0, 845, 846, 3, 331, 165, 0, 846, 847, 3, 341, 170, 0, 847, 848, 3, 325, 162, 0, 848, 849, 3, 363, 181, 0, 849, 850, 3, 333, 166, 0, 850, 168, 1, 0, 0, 0, 851, 852, 3, 341, 170, 0, 852, 853, 3, 351, 175, 0, 853, 170, 1, 0, 0, 0, 854, 855, 3, 341, 170, 0, 855, 856, 3, 351, 175, 0, 856, 857, 3, 331, 165, 0, 857, 858, 3, 333, 166, 0, 858, 859, 3, 371, 185, 0, 859, 172, 1, 0, 0, 0, 860, 861, 3, 341, 170, 0, 861, 862, 3, 351, 175, 0, 862, 863, 3, 331, 165, 0, 863, 864, 3, 333, 166, 0, 864, 865, 3, 371, 185, 0, 865, 866, 3, 333, 166, 0, 866, 867, 3, 331, 165, 0, 867, 174, 1, 0, 0, 0, 868, 869, 3, 341, 170, 0, 869, 870, 3, 351, 175, 0, 870, 871, 3, 341, 170, 0, 871, 872, 3, 363, 181, 0, 872, 873, 3, 341, 170, 0, 873, 874, 3, 325, 162, 0, 874, 875, 3, 347, 173, 0, 875, 876, 3, 347, 173, 0, 876, 877, 3, 373, 186, 0, 877, 176, 1, 0, 0, 0, 878, 879, 3, 341, 170, 0, 879, 880, 3, 351, 175, 0, 880, 881, 3, 351, 175, 0, 881, 882, 3, 333, 166, 0, 882, 883, 3, 359, 179, 0, 883, 178, 1, 0, 0, 0, 884, 885, 3, 341, 170, 0, 885, 886, 3, 351, 175, 0, 886, 887, 3, 361, 180, 0, 887, 888, 3, 333, 166, 0, 888, 889, 3, 359, 179, 0, 889, 890, 3, 363, 181, 0, 890, 180, 1, 0, 0, 0, 891, 892, 3, 341, 170, 0, 892, 893, 3, 351, 175, 0, 893, 894, 3, 361, 180, 0, 894, 895, 3, 363, 181, 0, 895, 896, 3, 333, 166, 0, 896, 897, 3, 325, 162, 0, 897, 898, 3, 331, 165, 0, 898, 182, 1, 0, 0, 0, 899, 900, 3, 341, 170, 0, 900, 901, 3, 351, 175, 0, 901, 902, 3, 363, 181, 0, 902, 903, 3, 333, 166, 0, 903, 904, 3, 359, 179, 0, 904, 905, 3, 361, 180, 0, 905, 906, 3, 333, 166, 0, 906, 907, 3, 329, 164, 0, 907, 908, 3, 363, 181, 0, 908, 184, 1, 0, 0, 0, 909, 910, 3, 341, 170, 0, 910, 911, 3, 351, 175, 0, 911, 912, 3, 363, 181, 0, 912, 913, 3, 353, 176, 0, 913, 186, 1, 0, 0, 0, 914, 915, 3, 341, 170, 0, 915, 916, 3, 361, 180, 0, 916, 188, 1, 0, 0, 0, 917, 918, 3, 341, 170, 0, 918, 919, 3, 361, 180, 0, 919, 920, 3, 351, 175, 0, 920, 921, 3, 365, 182, 0, 921, 922, 3, 347, 173, 0, 922, 923, 3, 347, 173, 0, 923, 190, 1, 0, 0, 0, 924, 925, 3, 343, 171, 0, 925, 926, 3, 353, 176, 0, 926, 927, 3, 341, 170, 0, 927, 928, 3, 351, 175, 0, 928, 192, 1, 0, 0, 0, 929, 930, 3, 345, 172, 0, 930, 931, 3, 333, 166, 0, 931, 932, 3, 373, 186, 0, 932, 194, 1, 0, 0, 0, 933, 934, 3, 347, 173, 0, 934, 935, 3, 333, 166, 0, 935, 936, 3, 335, 167, 0, 936, 937, 3, 363, 181, 0, 937, 196, 1, 0, 0, 0, 938, 939, 3, 347, 173, 0, 939, 940, 3, 341, 170, 0, 940, 941, 3, 345, 172, 0, 941, 942, 3, 333, 166, 0, 942, 198, 1, 0, 0, 0, 943, 944, 3, 347, 173, 0, 944, 945, 3, 341, 170, 0, 945, 946, 3, 349, 174, 0, 946, 947, 3, 341, 170, 0, 947, 948, 3, 363, 181, 0, 948, 200, 1, 0, 0, 0, 949, 950, 3, 349, 174, 0, 950, 951, 3, 325, 162, 0, 951, 952, 3, 363, 181, 0, 952, 953, 3, 329, 164, 0, 953, 954, 3, 339, 169, 0, 954, 202, 1, 0, 0, 0, 955, 956, 3, 351, 175, 0, 956, 957, 3, 325, 162, 0, 957, 958, 3, 363, 181, 0, 958, 959, 3, 365, 182, 0, 959, 960, 3, 359, 179, 0, 960, 961, 3, 325, 162, 0, 961, 962, 3, 347, 173, 0, 962, 204, 1, 0, 0, 0, 963, 964, 3, 351, 175, 0, 964, 965, 3, 333, 166, 0, 965, 966, 3, 371, 185, 0, 966, 967, 3, 363, 181, 0, 967, 968, 3, 367, 183, 0, 968, 969, 3, 325, 162, 0, 969, 970, 3, 347, 173, 0, 970, 206, 1, 0, 0, 0, 971, 972, 3, 351, 175, 0, 972, 973, 3, 353, 176, 0, 973, 208, 1, 0, 0, 0, 974, 975, 3, 351, 175, 0, 975, 976, 3, 353, 176, 0, 976, 977, 3, 363, 181, 0, 977, 210, 1, 0, 0, 0, 978, 979, 3, 351, 175, 0, 979, 980, 3, 353, 176, 0, 980, 981, 3, 363, 181, 0, 981, 982, 3, 351, 175, 0, 982, 983, 3, 365, 182, 0, 983, 984, 3, 347, 173, 0, 984, 985, 3, 347, 173, 0, 985, 212, 1, 0, 0, 0, 986, 987, 3, 351, 175, 0, 987, 988, 3, 365, 182, 0, 988, 989, 3, 347, 173, 0, 989, 990, 3, 347, 173, 0, 990, 214, 1, 0, 0, 0, 991, 992, 3, 353, 176, 0, 992, 993, 3, 335, 167, 0, 993, 216, 1, 0, 0, 0, 994, 995, 3, 353, 176, 0, 995, 996, 3, 335, 167, 0, 996, 997, 3, 335, 167, 0, 997, 998, 3, 361, 180, 0, 998, 999, 3, 333, 166, 0, 999, 1000, 3, 363, 181, 0, 1000, 218, 1, 0, 0, 0, 1001, 1002, 3, 353, 176, 0, 1002, 1003, 3, 351, 175, 0, 1003, 220, 1, 0, 0, 0, 1004, 1005, 3, 353, 176, 0, 1005, 1006, 3, 351, 175, 0, 1006, 1007, 3, 347, 173, 0, 1007, 1008, 3, 373, 186, 0, 1008, 222, 1, 0, 0, 0, 1009, 1010, 3, 353, 176, 0, 1010, 1011, 3, 359, 179, 0, 1011, 224, 1, 0, 0, 0, 1012, 1013, 3, 353, 176, 0, 1013, 1014, 3, 359, 179, 0, 1014, 1015, 3, 331, 165, 0, 1015, 1016, 3, 333, 166, 0, 1016, 1017, 3, 359, 179, 0, 1017, 226, 1, 0, 0, 0, 1018, 1019, 3, 353, 176, 0, 1019, 1020, 3, 365, 182, 0, 1020, 1021, 3, 363, 181, 0, 1021, 1022, 3, 333, 166, 0, 1022, 1023, 3, 359, 179, 0, 1023, 228, 1, 0, 0, 0, 1024, 1025, 3, 355, 177, 0, 1025, 1026, 3, 347, 173, 0, 1026, 1027, 3, 325, 162, 0, 1027, 1028, 3, 351, 175, 0, 1028, 230, 1, 0, 0, 0, 1029, 1030, 3, 355, 177, 0, 1030, 1031, 3, 359, 179, 0, 1031, 1032, 3, 325, 162, 0, 1032, 1033, 3, 337, 168, 0, 1033, 1034, 3, 349, 174, 0, 1034, 1035, 3, 325, 162, 0, 1035, 232, 1, 0, 0, 0, 1036, 1037, 3, 355, 177, 0, 1037, 1038, 3, 359, 179, 0, 1038, 1039, 3, 341, 170, 0, 1039, 1040, 3, 349, 174, 0, 1040, 1041, 3, 325, 162, 0, 1041, 1042, 3, 359, 179, 0, 1042, 1043, 3, 373, 186, 0, 1043, 234, 1, 0, 0, 0, 1044, 1045, 3, 357, 178, 0, 1045, 1046, 3, 365, 182, 0, 1046, 1047, 3, 333, 166, 0, 1047, 1048, 3, 359, 179, 0, 1048, 1049, 3, 373, 186, 0, 1049, 236, 1, 0, 0, 0, 1050, 1051, 3, 359, 179, 0, 1051, 1052, 3, 325, 162, 0, 1052, 1053, 3, 341, 170, 0, 1053, 1054, 3, 361, 180, 0, 1054, 1055, 3, 333, 166, 0, 1055, 238, 1, 0, 0, 0, 1056, 1057, 3, 359, 179, 0, 1057, 1058, 3, 333, 166, 0, 1058, 1059, 3, 329, 164, 0, 1059, 1060, 3, 365, 182, 0, 1060, 1061, 3, 359, 179, 0, 1061, 1062, 3, 361, 180, 0, 1062, 1063, 3, 341, 170, 0, 1063, 1064, 3, 367, 183, 0, 1064, 1065, 3, 333, 166, 0, 1065, 240, 1, 0, 0, 0, 1066, 1067, 3, 359, 179, 0, 1067, 1068, 3, 333, 166, 0, 1068, 1069, 3, 335, 167, 0, 1069, 1070, 3, 333, 166, 0, 1070, 1071, 3, 359, 179, 0, 1071, 1072, 3, 333, 166, 0, 1072, 1073, 3, 351, 175, 0, 1073, 1074, 3, 329, 164, 0, 1074, 1075, 3, 333, 166, 0, 1075, 1076, 3, 361, 180, 0, 1076, 242, 1, 0, 0, 0, 1077, 1078, 3, 359, 179, 0, 1078, 1079, 3, 333, 166, 0, 1079, 1080, 3, 337, 168, 0, 1080, 1081, 3, 333, 166, 0, 1081, 1082, 3, 371, 185, 0, 1082, 1083, 3, 355, 177, 0, 1083, 244, 1, 0, 0, 0, 1084, 1085, 3, 359, 179, 0, 1085, 1086, 3, 333, 166, 0, 1086, 1087, 3, 341, 170, 0, 1087, 1088, 3, 351, 175, 0, 1088, 1089, 3, 331, 165, 0, 1089, 1090, 3, 333, 166, 0, 1090, 1091, 3, 371, 185, 0, 1091, 246, 1, 0, 0, 0, 1092, 1093, 3, 359, 179, 0, 1093, 1094, 3, 333, 166, 0, 1094, 1095, 3, 347, 173, 0, 1095, 1096, 3, 333, 166, 0, 1096, 1097, 3, 325, 162, 0, 1097, 1098, 3, 361, 180, 0, 1098, 1099, 3, 333, 166, 0, 1099, 248, 1, 0, 0, 0, 1100, 1101, 3, 359, 179, 0, 1101, 1102, 3, 333, 166, 0, 1102, 1103, 3, 351, 175, 0, 1103, 1104, 3, 325, 162, 0, 1104, 1105, 3, 349, 174, 0, 1105, 1106, 3, 333, 166, 0, 1106, 250, 1, 0, 0, 0, 1107, 1108, 3, 359, 179, 0, 1108, 1109, 3, 333, 166, 0, 1109, 1110, 3, 355, 177, 0, 1110, 1111, 3, 347, 173, 0, 1111, 1112, 3, 325, 162, 0, 1112, 1113, 3, 329, 164, 0, 1113, 1114, 3, 333, 166, 0, 1114, 252, 1, 0, 0, 0, 1115, 1116, 3, 359, 179, 0, 1116, 1117, 3, 333, 166, 0, 1117, 1118, 3, 361, 180, 0, 1118, 1119, 3, 363, 181, 0, 1119, 1120, 3, 359, 179, 0, 1120, 1121, 3, 341, 170, 0, 1121, 1122, 3, 329, 164, 0, 1122, 1123, 3, 363, 181, 0, 1123, 254, 1, 0, 0, 0, 1124, 1125, 3, 359, 179, 0, 1125, 1126, 3, 341, 170, 0, 1126, 1127, 3, 337, 168, 0, 1127, 1128, 3, 339, 169, 0, 1128, 1129, 3, 363, 181, 0, 1129, 256, 1, 0, 0, 0, 1130, 1131, 3, 359, 179, 0, 1131, 1132, 3, 353, 176, 0, 1132, 1133, 3, 347, 173, 0, 1133, 1134, 3, 347, 173, 0, 1134, 1135, 3, 327, 163, 0, 1135, 1136, 3, 325, 162, 0, 1136, 1137, 3, 329, 164, 0, 1137, 1138, 3, 345, 172, 0, 1138, 258, 1, 0, 0, 0, 1139, 1140, 3, 359, 179, 0, 1140, 1141, 3, 353, 176, 0, 1141, 1142, 3, 369, 184, 0, 1142, 260, 1, 0, 0, 0, 1143, 1144, 3, 361, 180, 0, 1144, 1145, 3, 325, 162, 0, 1145, 1146, 3, 367, 183, 0, 1146, 1147, 3, 333, 166, 0, 1147, 1148, 3, 355, 177, 0, 1148, 1149, 3, 353, 176, 0, 1149, 1150, 3, 341, 170, 0, 1150, 1151, 3, 351, 175, 0, 1151, 1152, 3, 363, 181, 0, 1152, 262, 1, 0, 0, 0, 1153, 1154, 3, 361, 180, 0, 1154, 1155, 3, 333, 166, 0, 1155, 1156, 3, 347, 173, 0, 1156, 1157, 3, 333, 166, 0, 1157, 1158, 3, 329, 164, 0, 1158, 1159, 3, 363, 181, 0, 1159, 264, 1, 0, 0, 0, 1160, 1161, 3, 361, 180, 0, 1161, 1162, 3, 333, 166, 0, 1162, 1163, 3, 363, 181, 0, 1163, 266, 1, 0, 0, 0, 1164, 1165, 3, 363, 181, 0, 1165, 1166, 3, 325, 162, 0, 1166, 1167, 3, 327, 163, 0, 1167, 1168, 3, 347, 173, 0, 1168, 1169, 3, 333, 166, 0, 1169, 268, 1, 0, 0, 0, 1170, 1171, 3, 363, 181, 0, 1171, 1172, 3, 333, 166, 0, 1172, 1173, 3, 349, 174, 0, 1173, 1174, 3, 355, 177, 0, 1174, 270, 1, 0, 0, 0, 1175, 1176, 3, 363, 181, 0, 1176, 1177, 3, 333, 166, 0, 1177, 1178, 3, 349, 174, 0, 1178, 1179, 3, 355, 177, 0, 1179, 1180, 3, 353, 176, 0, 1180, 1181, 3, 359, 179, 0, 1181, 1182, 3, 325, 162, 0, 1182, 1183, 3, 359, 179, 0, 1183, 1184, 3, 373, 186, 0, 1184, 272, 1, 0, 0, 0, 1185, 1186, 3, 363, 181, 0, 1186, 1187, 3, 339, 169, 0, 1187, 1188, 3, 333, 166, 0, 1188, 1189, 3, 351, 175, 0, 1189, 274, 1, 0, 0, 0, 1190, 1191, 3, 363, 181, 0, 1191, 1192, 3, 353, 176, 0, 1192, 276, 1, 0, 0, 0, 1193, 1194, 3, 363, 181, 0, 1194, 1195, 3, 359, 179, 0, 1195, 1196, 3, 325, 162, 0, 1196, 1197, 3, 351, 175, 0, 1197, 1198, 3, 361, 180, 0, 1198, 1199, 3, 325, 162, 0, 1199, 1200, 3, 329, 164, 0, 1200, 1201, 3, 363, 181, 0, 1201, 1202, 3, 341, 170, 0, 1202, 1203, 3, 353, 176, 0, 1203, 1204, 3, 351, 175, 0, 1204, 278, 1, 0, 0, 0, 1205, 1206, 3, 363, 181, 0, 1206, 1207, 3, 359, 179, 0, 1207, 1208, 3, 341, 170, 0, 1208, 1209, 3, 337, 168, 0, 1209, 1210, 3, 337, 168, 0, 1210, 1211, 3, 333, 166, 0, 1211, 1212, 3, 359, 179, 0, 1212, 280, 1, 0, 0, 0, 1213, 1214, 3, 365, 182, 0, 1214, 1215, 3, 351, 175, 0, 1215, 1216, 3, 341, 170, 0, 1216, 1217, 3, 353, 176, 0, 1217, 1218, 3, 351, 175, 0, 1218, 282, 1, 0, 0, 0, 1219, 1220, 3, 365, 182, 0, 1220, 1221, 3, 351, 175, 0, 1221, 1222, 3, 341, 170, 0, 1222, 1223, 3, 357, 178, 0, 1223, 1224, 3, 365, 182, 0, 1224, 1225, 3, 333, 166, 0, 1225, 284, 1, 0, 0, 0, 1226, 1227, 3, 365, 182, 0, 1227, 1228, 3, 355, 177, 0, 1228, 1229, 3, 331, 165, 0, 1229, 1230, 3, 325, 162, 0, 1230, 1231, 3, 363, 181, 0, 1231, 1232, 3, 333, 166, 0, 1232, 286, 1, 0, 0, 0, 1233, 1234, 3, 365, 182, 0, 1234, 1235, 3, 361, 180, 0, 1235, 1236, 3, 341, 170, 0, 1236, 1237, 3, 351, 175, 0, 1237, 1238, 3, 337, 168, 0, 1238, 288, 1, 0, 0, 0, 1239, 1240, 3, 367, 183, 0, 1240, 1241, 3, 325, 162, 0, 1241, 1242, 3, 329, 164, 0, 1242, 1243, 3, 365, 182, 0, 1243, 1244, 3, 365, 182, 0, 1244, 1245, 3, 349, 174, 0, 1245, 290, 1, 0, 0, 0, 1246, 1247, 3, 367, 183, 0, 1247, 1248, 3, 325, 162, 0, 1248, 1249, 3, 347, 173, 0, 1249, 1250, 3, 365, 182, 0, 1250, 1251, 3, 333, 166, 0, 1251, 1252, 3, 361, 180, 0, 1252, 292, 1, 0, 0, 0, 1253, 1254, 3, 367, 183, 0, 1254, 1255, 3, 341, 170, 0, 1255, 1256, 3, 333, 166, 0, 1256, 1257, 3, 369, 184, 0, 1257, 294, 1, 0, 0, 0, 1258, 1259, 3, 367, 183, 0, 1259, 1260, 3, 341, 170, 0, 1260, 1261, 3, 359, 179, 0, 1261, 1262, 3, 363, 181, 0, 1262, 1263, 3, 365, 182, 0, 1263, 1264, 3, 325, 162, 0, 1264, 1265, 3, 347, 173, 0, 1265, 296, 1, 0, 0, 0, 1266, 1267, 3, 369, 184, 0, 1267, 1268, 3, 339, 169, 0, 1268, 1269, 3, 333, 166, 0, 1269, 1270, 3, 351, 175, 0, 1270, 298, 1, 0, 0, 0, 1271, 1272, 3, 369, 184, 0, 1272, 1273, 3, 339, 169, 0, 1273, 1274, 3, 333, 166, 0, 1274, 1275, 3, 359, 179, 0, 1275, 1276, 3, 333, 166, 0, 1276, 300, 1, 0, 0, 0, 1277, 1278, 3, 369, 184, 0, 1278, 1279, 3, 341, 170, 0, 1279, 1280, 3, 363, 181, 0, 1280, 1281, 3, 339, 169, 0, 1281, 302, 1, 0, 0, 0, 1282, 1283, 3, 369, 184, 0, 1283, 1284, 3, 341, 170, 0, 1284, 1285, 3, 363, 181, 0, 1285, 1286, 3, 339, 169, 0, 1286, 1287, 3, 353, 176, 0, 1287, 1288, 3, 365, 182, 0, 1288, 1289, 3, 363, 181, 0, 1289, 304, 1, 0, 0, 0, 1290, 1296, 5, 34, 0, 0, 1291, 1295, 8, 0, 0, 0, 1292, 1293, 5, 34, 0, 0, 1293, 1295, 5, 34, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1326, 5, 34, 0, 0, 1300, 1306, 5, 96, 0, 0, 1301, 1305, 8, 1, 0, 0, 1302, 1303, 5, 96, 0, 0, 1303, 1305, 5, 96, 0, 0, 1304, 1301, 1, 0, 0, 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, 1309, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1326, 5, 96, 0, 0, 1310, 1314, 5, 91, 0, 0, 1311, 1313, 8, 2, 0, 0, 1312, 1311, 1, 0, 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1326, 5, 93, 0, 0, 1318, 1322, 7, 3, 0, 0, 1319, 1321, 7, 4, 0, 0, 1320, 1319, 1, 0, 0, 0, 1321, 1324, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1325, 1290, 1, 0, 0, 0, 1325, 1300, 1, 0, 0, 0, 1325, 1310, 1, 0, 0, 0, 1325, 1318, 1, 0, 0, 0, 1326, 306, 1, 0, 0, 0, 1327, 1329, 3, 323, 161, 0, 1328, 1327, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1339, 1, 0, 0, 0, 1332, 1336, 5, 46, 0, 0, 1333, 1335, 3, 323, 161, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1332, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1350, 1, 0, 0, 0, 1341, 1343, 3, 333, 166, 0, 1342, 1344, 7, 5, 0, 0, 1343, 1342, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1347, 3, 323, 161, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1341, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1370, 1, 0, 0, 0, 1352, 1354, 5, 46, 0, 0, 1353, 1355, 3, 323, 161, 0, 1354, 1353, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1367, 1, 0, 0, 0, 1358, 1360, 3, 333, 166, 0, 1359, 1361, 7, 5, 0, 0, 1360, 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, 1364, 3, 323, 161, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, 1358, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 1, 0, 0, 0, 1369, 1328, 1, 0, 0, 0, 1369, 1352, 1, 0, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, 1375, 5, 63, 0, 0, 1372, 1374, 3, 323, 161, 0, 1373, 1372, 1, 0, 0, 0, 1374, 1377, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1381, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1379, 7, 6, 0, 0, 1379, 1381, 3, 305, 152, 0, 1380, 1371, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1381, 310, 1, 0, 0, 0, 1382, 1388, 5, 39, 0, 0, 1383, 1387, 8, 7, 0, 0, 1384, 1385, 5, 39, 0, 0, 1385, 1387, 5, 39, 0, 0, 1386, 1383, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1390, 1, 0, 0, 0, 1388, 1386, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1388, 1, 0, 0, 0, 1391, 1392, 5, 39, 0, 0, 1392, 312, 1, 0, 0, 0, 1393, 1394, 3, 371, 185, 0, 1394, 1395, 3, 311, 155, 0, 1395, 314, 1, 0, 0, 0, 1396, 1397, 5, 45, 0, 0, 1397, 1398, 5, 45, 0, 0, 1398, 1402, 1, 0, 0, 0, 1399, 1401, 8, 8, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, 1, 0, 0, 0, 1405, 1406, 6, 157, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, 5, 47, 0, 0, 1408, 1409, 5, 42, 0, 0, 1409, 1413, 1, 0, 0, 0, 1410, 1412, 9, 0, 0, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1419, 1, 0, 0, 0, 1415, 1413, 1, 0, 0, 0, 1416, 1417, 5, 42, 0, 0, 1417, 1420, 5, 47, 0, 0, 1418, 1420, 5, 0, 0, 1, 1419, 1416, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1422, 6, 158, 0, 0, 1422, 318, 1, 0, 0, 0, 1423, 1424, 7, 9, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 159, 0, 0, 1426, 320, 1, 0, 0, 0, 1427, 1428, 9, 0, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, 7, 10, 0, 0, 1430, 324, 1, 0, 0, 0, 1431, 1432, 7, 11, 0, 0, 1432, 326, 1, 0, 0, 0, 1433, 1434, 7, 12, 0, 0, 1434, 328, 1, 0, 0, 0, 1435, 1436, 7, 13, 0, 0, 1436, 330, 1, 0, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 332, 1, 0, 0, 0, 1439, 1440, 7, 15, 0, 0, 1440, 334, 1, 0, 0, 0, 1441, 1442, 7, 16, 0, 0, 1442, 336, 1, 0, 0, 0, 1443, 1444, 7, 17, 0, 0, 1444, 338, 1, 0, 0, 0, 1445, 1446, 7, 18, 0, 0, 1446, 340, 1, 0, 0, 0, 1447, 1448, 7, 19, 0, 0, 1448, 342, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 344, 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 346, 1, 0, 0, 0, 1453, 1454, 7, 22, 0, 0, 1454, 348, 1, 0, 0, 0, 1455, 1456, 7, 23, 0, 0, 1456, 350, 1, 0, 0, 0, 1457, 1458, 7, 24, 0, 0, 1458, 352, 1, 0, 0, 0, 1459, 1460, 7, 25, 0, 0, 1460, 354, 1, 0, 0, 0, 1461, 1462, 7, 26, 0, 0, 1462, 356, 1, 0, 0, 0, 1463, 1464, 7, 27, 0, 0, 1464, 358, 1, 0, 0, 0, 1465, 1466, 7, 28, 0, 0, 1466, 360, 1, 0, 0, 0, 1467, 1468, 7, 29, 0, 0, 1468, 362, 1, 0, 0, 0, 1469, 1470, 7, 30, 0, 0, 1470, 364, 1, 0, 0, 0, 1471, 1472, 7, 31, 0, 0, 1472, 366, 1, 0, 0, 0, 1473, 1474, 7, 32, 0, 0, 1474, 368, 1, 0, 0, 0, 1475, 1476, 7, 33, 0, 0, 1476, 370, 1, 0, 0, 0, 1477, 1478, 7, 34, 0, 0, 1478, 372, 1, 0, 0, 0, 1479, 1480, 7, 35, 0, 0, 1480, 374, 1, 0, 0, 0, 1481, 1482, 7, 36, 0, 0, 1482, 376, 1, 0, 0, 0, 26, 0, 1294, 1296, 1304, 1306, 1314, 1322, 1325, 1330, 1336, 1339, 1343, 1348, 1350, 1356, 1360, 1365, 1367, 1369, 1375, 1380, 1386, 1388, 1402, 1413, 1419, 1, 0, 1, 0] \ No newline at end of file diff --git a/processor/stream_processor/test/parser/SqlLexer.tokens b/processor/stream_processor/test/parser/SqlLexer.tokens deleted file mode 100644 index 70454cda7204..000000000000 --- a/processor/stream_processor/test/parser/SqlLexer.tokens +++ /dev/null @@ -1,186 +0,0 @@ -T__0=1 -SCOL=2 -DOT=3 -OPEN_PAR=4 -CLOSE_PAR=5 -COMMA=6 -ASSIGN=7 -STAR=8 -PLUS=9 -MINUS=10 -TILDE=11 -PIPE2=12 -DIV=13 -MOD=14 -LT2=15 -GT2=16 -AMP=17 -PIPE=18 -LT=19 -LT_EQ=20 -GT=21 -GT_EQ=22 -EQ=23 -NOT_EQ1=24 -NOT_EQ2=25 -K_ABORT=26 -K_ACTION=27 -K_ADD=28 -K_AFTER=29 -K_ALL=30 -K_ALTER=31 -K_ANALYZE=32 -K_AND=33 -K_AS=34 -K_ASC=35 -K_ATTACH=36 -K_AUTOINCREMENT=37 -K_BEFORE=38 -K_BEGIN=39 -K_BETWEEN=40 -K_BY=41 -K_CASCADE=42 -K_CASE=43 -K_CAST=44 -K_CHECK=45 -K_COLLATE=46 -K_COLUMN=47 -K_COMMIT=48 -K_CONFLICT=49 -K_CONSTRAINT=50 -K_CREATE=51 -K_CROSS=52 -K_CURRENT_DATE=53 -K_CURRENT_TIME=54 -K_CURRENT_TIMESTAMP=55 -K_DATABASE=56 -K_DEFAULT=57 -K_DEFERRABLE=58 -K_DEFERRED=59 -K_DELETE=60 -K_DESC=61 -K_DETACH=62 -K_DISTINCT=63 -K_DROP=64 -K_EACH=65 -K_ELSE=66 -K_END=67 -K_ENABLE=68 -K_ESCAPE=69 -K_EXCEPT=70 -K_EXCLUSIVE=71 -K_EXISTS=72 -K_EXPLAIN=73 -K_FAIL=74 -K_FOR=75 -K_FOREIGN=76 -K_FROM=77 -K_FULL=78 -K_GLOB=79 -K_GROUP=80 -K_HAVING=81 -K_IF=82 -K_IGNORE=83 -K_IMMEDIATE=84 -K_IN=85 -K_INDEX=86 -K_INDEXED=87 -K_INITIALLY=88 -K_INNER=89 -K_INSERT=90 -K_INSTEAD=91 -K_INTERSECT=92 -K_INTO=93 -K_IS=94 -K_ISNULL=95 -K_JOIN=96 -K_KEY=97 -K_LEFT=98 -K_LIKE=99 -K_LIMIT=100 -K_MATCH=101 -K_NATURAL=102 -K_NEXTVAL=103 -K_NO=104 -K_NOT=105 -K_NOTNULL=106 -K_NULL=107 -K_OF=108 -K_OFFSET=109 -K_ON=110 -K_ONLY=111 -K_OR=112 -K_ORDER=113 -K_OUTER=114 -K_PLAN=115 -K_PRAGMA=116 -K_PRIMARY=117 -K_QUERY=118 -K_RAISE=119 -K_RECURSIVE=120 -K_REFERENCES=121 -K_REGEXP=122 -K_REINDEX=123 -K_RELEASE=124 -K_RENAME=125 -K_REPLACE=126 -K_RESTRICT=127 -K_RIGHT=128 -K_ROLLBACK=129 -K_ROW=130 -K_SAVEPOINT=131 -K_SELECT=132 -K_SET=133 -K_TABLE=134 -K_TEMP=135 -K_TEMPORARY=136 -K_THEN=137 -K_TO=138 -K_TRANSACTION=139 -K_TRIGGER=140 -K_UNION=141 -K_UNIQUE=142 -K_UPDATE=143 -K_USING=144 -K_VACUUM=145 -K_VALUES=146 -K_VIEW=147 -K_VIRTUAL=148 -K_WHEN=149 -K_WHERE=150 -K_WITH=151 -K_WITHOUT=152 -IDENTIFIER=153 -NUMERIC_LITERAL=154 -BIND_PARAMETER=155 -STRING_LITERAL=156 -BLOB_LITERAL=157 -SINGLE_LINE_COMMENT=158 -MULTILINE_COMMENT=159 -SPACES=160 -UNEXPECTED_CHAR=161 -'::'=1 -';'=2 -'.'=3 -'('=4 -')'=5 -','=6 -'='=7 -'*'=8 -'+'=9 -'-'=10 -'~'=11 -'||'=12 -'/'=13 -'%'=14 -'<<'=15 -'>>'=16 -'&'=17 -'|'=18 -'<'=19 -'<='=20 -'>'=21 -'>='=22 -'=='=23 -'!='=24 -'<>'=25 diff --git a/processor/stream_processor/test/parser/sql_base_listener.go b/processor/stream_processor/test/parser/sql_base_listener.go deleted file mode 100644 index e84aee685618..000000000000 --- a/processor/stream_processor/test/parser/sql_base_listener.go +++ /dev/null @@ -1,618 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Sql - -import "github.com/antlr/antlr4/runtime/Go/antlr" - -// BaseSqlListener is a complete listener for a parse tree produced by SqlParser. -type BaseSqlListener struct{} - -var _ SqlListener = &BaseSqlListener{} - -// VisitTerminal is called when a terminal node is visited. -func (s *BaseSqlListener) VisitTerminal(node antlr.TerminalNode) {} - -// VisitErrorNode is called when an error node is visited. -func (s *BaseSqlListener) VisitErrorNode(node antlr.ErrorNode) {} - -// EnterEveryRule is called when any rule is entered. -func (s *BaseSqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} - -// ExitEveryRule is called when any rule is exited. -func (s *BaseSqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} - -// EnterParse is called when production parse is entered. -func (s *BaseSqlListener) EnterParse(ctx *ParseContext) {} - -// ExitParse is called when production parse is exited. -func (s *BaseSqlListener) ExitParse(ctx *ParseContext) {} - -// EnterError is called when production error is entered. -func (s *BaseSqlListener) EnterError(ctx *ErrorContext) {} - -// ExitError is called when production error is exited. -func (s *BaseSqlListener) ExitError(ctx *ErrorContext) {} - -// EnterSql_stmt_list is called when production sql_stmt_list is entered. -func (s *BaseSqlListener) EnterSql_stmt_list(ctx *Sql_stmt_listContext) {} - -// ExitSql_stmt_list is called when production sql_stmt_list is exited. -func (s *BaseSqlListener) ExitSql_stmt_list(ctx *Sql_stmt_listContext) {} - -// EnterSql_stmt is called when production sql_stmt is entered. -func (s *BaseSqlListener) EnterSql_stmt(ctx *Sql_stmtContext) {} - -// ExitSql_stmt is called when production sql_stmt is exited. -func (s *BaseSqlListener) ExitSql_stmt(ctx *Sql_stmtContext) {} - -// EnterAlter_table_stmt is called when production alter_table_stmt is entered. -func (s *BaseSqlListener) EnterAlter_table_stmt(ctx *Alter_table_stmtContext) {} - -// ExitAlter_table_stmt is called when production alter_table_stmt is exited. -func (s *BaseSqlListener) ExitAlter_table_stmt(ctx *Alter_table_stmtContext) {} - -// EnterAlter_table_add_constraint is called when production alter_table_add_constraint is entered. -func (s *BaseSqlListener) EnterAlter_table_add_constraint(ctx *Alter_table_add_constraintContext) {} - -// ExitAlter_table_add_constraint is called when production alter_table_add_constraint is exited. -func (s *BaseSqlListener) ExitAlter_table_add_constraint(ctx *Alter_table_add_constraintContext) {} - -// EnterAlter_table_add is called when production alter_table_add is entered. -func (s *BaseSqlListener) EnterAlter_table_add(ctx *Alter_table_addContext) {} - -// ExitAlter_table_add is called when production alter_table_add is exited. -func (s *BaseSqlListener) ExitAlter_table_add(ctx *Alter_table_addContext) {} - -// EnterAnalyze_stmt is called when production analyze_stmt is entered. -func (s *BaseSqlListener) EnterAnalyze_stmt(ctx *Analyze_stmtContext) {} - -// ExitAnalyze_stmt is called when production analyze_stmt is exited. -func (s *BaseSqlListener) ExitAnalyze_stmt(ctx *Analyze_stmtContext) {} - -// EnterAttach_stmt is called when production attach_stmt is entered. -func (s *BaseSqlListener) EnterAttach_stmt(ctx *Attach_stmtContext) {} - -// ExitAttach_stmt is called when production attach_stmt is exited. -func (s *BaseSqlListener) ExitAttach_stmt(ctx *Attach_stmtContext) {} - -// EnterBegin_stmt is called when production begin_stmt is entered. -func (s *BaseSqlListener) EnterBegin_stmt(ctx *Begin_stmtContext) {} - -// ExitBegin_stmt is called when production begin_stmt is exited. -func (s *BaseSqlListener) ExitBegin_stmt(ctx *Begin_stmtContext) {} - -// EnterCommit_stmt is called when production commit_stmt is entered. -func (s *BaseSqlListener) EnterCommit_stmt(ctx *Commit_stmtContext) {} - -// ExitCommit_stmt is called when production commit_stmt is exited. -func (s *BaseSqlListener) ExitCommit_stmt(ctx *Commit_stmtContext) {} - -// EnterCompound_select_stmt is called when production compound_select_stmt is entered. -func (s *BaseSqlListener) EnterCompound_select_stmt(ctx *Compound_select_stmtContext) {} - -// ExitCompound_select_stmt is called when production compound_select_stmt is exited. -func (s *BaseSqlListener) ExitCompound_select_stmt(ctx *Compound_select_stmtContext) {} - -// EnterCreate_index_stmt is called when production create_index_stmt is entered. -func (s *BaseSqlListener) EnterCreate_index_stmt(ctx *Create_index_stmtContext) {} - -// ExitCreate_index_stmt is called when production create_index_stmt is exited. -func (s *BaseSqlListener) ExitCreate_index_stmt(ctx *Create_index_stmtContext) {} - -// EnterCreate_table_stmt is called when production create_table_stmt is entered. -func (s *BaseSqlListener) EnterCreate_table_stmt(ctx *Create_table_stmtContext) {} - -// ExitCreate_table_stmt is called when production create_table_stmt is exited. -func (s *BaseSqlListener) ExitCreate_table_stmt(ctx *Create_table_stmtContext) {} - -// EnterCreate_trigger_stmt is called when production create_trigger_stmt is entered. -func (s *BaseSqlListener) EnterCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {} - -// ExitCreate_trigger_stmt is called when production create_trigger_stmt is exited. -func (s *BaseSqlListener) ExitCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {} - -// EnterCreate_view_stmt is called when production create_view_stmt is entered. -func (s *BaseSqlListener) EnterCreate_view_stmt(ctx *Create_view_stmtContext) {} - -// ExitCreate_view_stmt is called when production create_view_stmt is exited. -func (s *BaseSqlListener) ExitCreate_view_stmt(ctx *Create_view_stmtContext) {} - -// EnterCreate_virtual_table_stmt is called when production create_virtual_table_stmt is entered. -func (s *BaseSqlListener) EnterCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {} - -// ExitCreate_virtual_table_stmt is called when production create_virtual_table_stmt is exited. -func (s *BaseSqlListener) ExitCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {} - -// EnterDelete_stmt is called when production delete_stmt is entered. -func (s *BaseSqlListener) EnterDelete_stmt(ctx *Delete_stmtContext) {} - -// ExitDelete_stmt is called when production delete_stmt is exited. -func (s *BaseSqlListener) ExitDelete_stmt(ctx *Delete_stmtContext) {} - -// EnterDelete_stmt_limited is called when production delete_stmt_limited is entered. -func (s *BaseSqlListener) EnterDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {} - -// ExitDelete_stmt_limited is called when production delete_stmt_limited is exited. -func (s *BaseSqlListener) ExitDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {} - -// EnterDetach_stmt is called when production detach_stmt is entered. -func (s *BaseSqlListener) EnterDetach_stmt(ctx *Detach_stmtContext) {} - -// ExitDetach_stmt is called when production detach_stmt is exited. -func (s *BaseSqlListener) ExitDetach_stmt(ctx *Detach_stmtContext) {} - -// EnterDrop_index_stmt is called when production drop_index_stmt is entered. -func (s *BaseSqlListener) EnterDrop_index_stmt(ctx *Drop_index_stmtContext) {} - -// ExitDrop_index_stmt is called when production drop_index_stmt is exited. -func (s *BaseSqlListener) ExitDrop_index_stmt(ctx *Drop_index_stmtContext) {} - -// EnterDrop_table_stmt is called when production drop_table_stmt is entered. -func (s *BaseSqlListener) EnterDrop_table_stmt(ctx *Drop_table_stmtContext) {} - -// ExitDrop_table_stmt is called when production drop_table_stmt is exited. -func (s *BaseSqlListener) ExitDrop_table_stmt(ctx *Drop_table_stmtContext) {} - -// EnterDrop_trigger_stmt is called when production drop_trigger_stmt is entered. -func (s *BaseSqlListener) EnterDrop_trigger_stmt(ctx *Drop_trigger_stmtContext) {} - -// ExitDrop_trigger_stmt is called when production drop_trigger_stmt is exited. -func (s *BaseSqlListener) ExitDrop_trigger_stmt(ctx *Drop_trigger_stmtContext) {} - -// EnterDrop_view_stmt is called when production drop_view_stmt is entered. -func (s *BaseSqlListener) EnterDrop_view_stmt(ctx *Drop_view_stmtContext) {} - -// ExitDrop_view_stmt is called when production drop_view_stmt is exited. -func (s *BaseSqlListener) ExitDrop_view_stmt(ctx *Drop_view_stmtContext) {} - -// EnterFactored_select_stmt is called when production factored_select_stmt is entered. -func (s *BaseSqlListener) EnterFactored_select_stmt(ctx *Factored_select_stmtContext) {} - -// ExitFactored_select_stmt is called when production factored_select_stmt is exited. -func (s *BaseSqlListener) ExitFactored_select_stmt(ctx *Factored_select_stmtContext) {} - -// EnterInsert_stmt is called when production insert_stmt is entered. -func (s *BaseSqlListener) EnterInsert_stmt(ctx *Insert_stmtContext) {} - -// ExitInsert_stmt is called when production insert_stmt is exited. -func (s *BaseSqlListener) ExitInsert_stmt(ctx *Insert_stmtContext) {} - -// EnterPragma_stmt is called when production pragma_stmt is entered. -func (s *BaseSqlListener) EnterPragma_stmt(ctx *Pragma_stmtContext) {} - -// ExitPragma_stmt is called when production pragma_stmt is exited. -func (s *BaseSqlListener) ExitPragma_stmt(ctx *Pragma_stmtContext) {} - -// EnterReindex_stmt is called when production reindex_stmt is entered. -func (s *BaseSqlListener) EnterReindex_stmt(ctx *Reindex_stmtContext) {} - -// ExitReindex_stmt is called when production reindex_stmt is exited. -func (s *BaseSqlListener) ExitReindex_stmt(ctx *Reindex_stmtContext) {} - -// EnterRelease_stmt is called when production release_stmt is entered. -func (s *BaseSqlListener) EnterRelease_stmt(ctx *Release_stmtContext) {} - -// ExitRelease_stmt is called when production release_stmt is exited. -func (s *BaseSqlListener) ExitRelease_stmt(ctx *Release_stmtContext) {} - -// EnterRollback_stmt is called when production rollback_stmt is entered. -func (s *BaseSqlListener) EnterRollback_stmt(ctx *Rollback_stmtContext) {} - -// ExitRollback_stmt is called when production rollback_stmt is exited. -func (s *BaseSqlListener) ExitRollback_stmt(ctx *Rollback_stmtContext) {} - -// EnterSavepoint_stmt is called when production savepoint_stmt is entered. -func (s *BaseSqlListener) EnterSavepoint_stmt(ctx *Savepoint_stmtContext) {} - -// ExitSavepoint_stmt is called when production savepoint_stmt is exited. -func (s *BaseSqlListener) ExitSavepoint_stmt(ctx *Savepoint_stmtContext) {} - -// EnterSimple_select_stmt is called when production simple_select_stmt is entered. -func (s *BaseSqlListener) EnterSimple_select_stmt(ctx *Simple_select_stmtContext) {} - -// ExitSimple_select_stmt is called when production simple_select_stmt is exited. -func (s *BaseSqlListener) ExitSimple_select_stmt(ctx *Simple_select_stmtContext) {} - -// EnterSelect_stmt is called when production select_stmt is entered. -func (s *BaseSqlListener) EnterSelect_stmt(ctx *Select_stmtContext) {} - -// ExitSelect_stmt is called when production select_stmt is exited. -func (s *BaseSqlListener) ExitSelect_stmt(ctx *Select_stmtContext) {} - -// EnterSelect_or_values is called when production select_or_values is entered. -func (s *BaseSqlListener) EnterSelect_or_values(ctx *Select_or_valuesContext) {} - -// ExitSelect_or_values is called when production select_or_values is exited. -func (s *BaseSqlListener) ExitSelect_or_values(ctx *Select_or_valuesContext) {} - -// EnterUpdate_stmt is called when production update_stmt is entered. -func (s *BaseSqlListener) EnterUpdate_stmt(ctx *Update_stmtContext) {} - -// ExitUpdate_stmt is called when production update_stmt is exited. -func (s *BaseSqlListener) ExitUpdate_stmt(ctx *Update_stmtContext) {} - -// EnterUpdate_stmt_limited is called when production update_stmt_limited is entered. -func (s *BaseSqlListener) EnterUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {} - -// ExitUpdate_stmt_limited is called when production update_stmt_limited is exited. -func (s *BaseSqlListener) ExitUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {} - -// EnterVacuum_stmt is called when production vacuum_stmt is entered. -func (s *BaseSqlListener) EnterVacuum_stmt(ctx *Vacuum_stmtContext) {} - -// ExitVacuum_stmt is called when production vacuum_stmt is exited. -func (s *BaseSqlListener) ExitVacuum_stmt(ctx *Vacuum_stmtContext) {} - -// EnterColumn_def is called when production column_def is entered. -func (s *BaseSqlListener) EnterColumn_def(ctx *Column_defContext) {} - -// ExitColumn_def is called when production column_def is exited. -func (s *BaseSqlListener) ExitColumn_def(ctx *Column_defContext) {} - -// EnterType_name is called when production type_name is entered. -func (s *BaseSqlListener) EnterType_name(ctx *Type_nameContext) {} - -// ExitType_name is called when production type_name is exited. -func (s *BaseSqlListener) ExitType_name(ctx *Type_nameContext) {} - -// EnterColumn_constraint is called when production column_constraint is entered. -func (s *BaseSqlListener) EnterColumn_constraint(ctx *Column_constraintContext) {} - -// ExitColumn_constraint is called when production column_constraint is exited. -func (s *BaseSqlListener) ExitColumn_constraint(ctx *Column_constraintContext) {} - -// EnterColumn_constraint_primary_key is called when production column_constraint_primary_key is entered. -func (s *BaseSqlListener) EnterColumn_constraint_primary_key(ctx *Column_constraint_primary_keyContext) { -} - -// ExitColumn_constraint_primary_key is called when production column_constraint_primary_key is exited. -func (s *BaseSqlListener) ExitColumn_constraint_primary_key(ctx *Column_constraint_primary_keyContext) { -} - -// EnterColumn_constraint_foreign_key is called when production column_constraint_foreign_key is entered. -func (s *BaseSqlListener) EnterColumn_constraint_foreign_key(ctx *Column_constraint_foreign_keyContext) { -} - -// ExitColumn_constraint_foreign_key is called when production column_constraint_foreign_key is exited. -func (s *BaseSqlListener) ExitColumn_constraint_foreign_key(ctx *Column_constraint_foreign_keyContext) { -} - -// EnterColumn_constraint_not_null is called when production column_constraint_not_null is entered. -func (s *BaseSqlListener) EnterColumn_constraint_not_null(ctx *Column_constraint_not_nullContext) {} - -// ExitColumn_constraint_not_null is called when production column_constraint_not_null is exited. -func (s *BaseSqlListener) ExitColumn_constraint_not_null(ctx *Column_constraint_not_nullContext) {} - -// EnterColumn_constraint_null is called when production column_constraint_null is entered. -func (s *BaseSqlListener) EnterColumn_constraint_null(ctx *Column_constraint_nullContext) {} - -// ExitColumn_constraint_null is called when production column_constraint_null is exited. -func (s *BaseSqlListener) ExitColumn_constraint_null(ctx *Column_constraint_nullContext) {} - -// EnterColumn_default is called when production column_default is entered. -func (s *BaseSqlListener) EnterColumn_default(ctx *Column_defaultContext) {} - -// ExitColumn_default is called when production column_default is exited. -func (s *BaseSqlListener) ExitColumn_default(ctx *Column_defaultContext) {} - -// EnterColumn_default_value is called when production column_default_value is entered. -func (s *BaseSqlListener) EnterColumn_default_value(ctx *Column_default_valueContext) {} - -// ExitColumn_default_value is called when production column_default_value is exited. -func (s *BaseSqlListener) ExitColumn_default_value(ctx *Column_default_valueContext) {} - -// EnterConflict_clause is called when production conflict_clause is entered. -func (s *BaseSqlListener) EnterConflict_clause(ctx *Conflict_clauseContext) {} - -// ExitConflict_clause is called when production conflict_clause is exited. -func (s *BaseSqlListener) ExitConflict_clause(ctx *Conflict_clauseContext) {} - -// EnterExpr is called when production expr is entered. -func (s *BaseSqlListener) EnterExpr(ctx *ExprContext) {} - -// ExitExpr is called when production expr is exited. -func (s *BaseSqlListener) ExitExpr(ctx *ExprContext) {} - -// EnterForeign_key_clause is called when production foreign_key_clause is entered. -func (s *BaseSqlListener) EnterForeign_key_clause(ctx *Foreign_key_clauseContext) {} - -// ExitForeign_key_clause is called when production foreign_key_clause is exited. -func (s *BaseSqlListener) ExitForeign_key_clause(ctx *Foreign_key_clauseContext) {} - -// EnterFk_target_column_name is called when production fk_target_column_name is entered. -func (s *BaseSqlListener) EnterFk_target_column_name(ctx *Fk_target_column_nameContext) {} - -// ExitFk_target_column_name is called when production fk_target_column_name is exited. -func (s *BaseSqlListener) ExitFk_target_column_name(ctx *Fk_target_column_nameContext) {} - -// EnterRaise_function is called when production raise_function is entered. -func (s *BaseSqlListener) EnterRaise_function(ctx *Raise_functionContext) {} - -// ExitRaise_function is called when production raise_function is exited. -func (s *BaseSqlListener) ExitRaise_function(ctx *Raise_functionContext) {} - -// EnterIndexed_column is called when production indexed_column is entered. -func (s *BaseSqlListener) EnterIndexed_column(ctx *Indexed_columnContext) {} - -// ExitIndexed_column is called when production indexed_column is exited. -func (s *BaseSqlListener) ExitIndexed_column(ctx *Indexed_columnContext) {} - -// EnterTable_constraint is called when production table_constraint is entered. -func (s *BaseSqlListener) EnterTable_constraint(ctx *Table_constraintContext) {} - -// ExitTable_constraint is called when production table_constraint is exited. -func (s *BaseSqlListener) ExitTable_constraint(ctx *Table_constraintContext) {} - -// EnterTable_constraint_primary_key is called when production table_constraint_primary_key is entered. -func (s *BaseSqlListener) EnterTable_constraint_primary_key(ctx *Table_constraint_primary_keyContext) { -} - -// ExitTable_constraint_primary_key is called when production table_constraint_primary_key is exited. -func (s *BaseSqlListener) ExitTable_constraint_primary_key(ctx *Table_constraint_primary_keyContext) { -} - -// EnterTable_constraint_foreign_key is called when production table_constraint_foreign_key is entered. -func (s *BaseSqlListener) EnterTable_constraint_foreign_key(ctx *Table_constraint_foreign_keyContext) { -} - -// ExitTable_constraint_foreign_key is called when production table_constraint_foreign_key is exited. -func (s *BaseSqlListener) ExitTable_constraint_foreign_key(ctx *Table_constraint_foreign_keyContext) { -} - -// EnterTable_constraint_unique is called when production table_constraint_unique is entered. -func (s *BaseSqlListener) EnterTable_constraint_unique(ctx *Table_constraint_uniqueContext) {} - -// ExitTable_constraint_unique is called when production table_constraint_unique is exited. -func (s *BaseSqlListener) ExitTable_constraint_unique(ctx *Table_constraint_uniqueContext) {} - -// EnterTable_constraint_key is called when production table_constraint_key is entered. -func (s *BaseSqlListener) EnterTable_constraint_key(ctx *Table_constraint_keyContext) {} - -// ExitTable_constraint_key is called when production table_constraint_key is exited. -func (s *BaseSqlListener) ExitTable_constraint_key(ctx *Table_constraint_keyContext) {} - -// EnterFk_origin_column_name is called when production fk_origin_column_name is entered. -func (s *BaseSqlListener) EnterFk_origin_column_name(ctx *Fk_origin_column_nameContext) {} - -// ExitFk_origin_column_name is called when production fk_origin_column_name is exited. -func (s *BaseSqlListener) ExitFk_origin_column_name(ctx *Fk_origin_column_nameContext) {} - -// EnterWith_clause is called when production with_clause is entered. -func (s *BaseSqlListener) EnterWith_clause(ctx *With_clauseContext) {} - -// ExitWith_clause is called when production with_clause is exited. -func (s *BaseSqlListener) ExitWith_clause(ctx *With_clauseContext) {} - -// EnterQualified_table_name is called when production qualified_table_name is entered. -func (s *BaseSqlListener) EnterQualified_table_name(ctx *Qualified_table_nameContext) {} - -// ExitQualified_table_name is called when production qualified_table_name is exited. -func (s *BaseSqlListener) ExitQualified_table_name(ctx *Qualified_table_nameContext) {} - -// EnterOrdering_term is called when production ordering_term is entered. -func (s *BaseSqlListener) EnterOrdering_term(ctx *Ordering_termContext) {} - -// ExitOrdering_term is called when production ordering_term is exited. -func (s *BaseSqlListener) ExitOrdering_term(ctx *Ordering_termContext) {} - -// EnterPragma_value is called when production pragma_value is entered. -func (s *BaseSqlListener) EnterPragma_value(ctx *Pragma_valueContext) {} - -// ExitPragma_value is called when production pragma_value is exited. -func (s *BaseSqlListener) ExitPragma_value(ctx *Pragma_valueContext) {} - -// EnterCommon_table_expression is called when production common_table_expression is entered. -func (s *BaseSqlListener) EnterCommon_table_expression(ctx *Common_table_expressionContext) {} - -// ExitCommon_table_expression is called when production common_table_expression is exited. -func (s *BaseSqlListener) ExitCommon_table_expression(ctx *Common_table_expressionContext) {} - -// EnterResult_column is called when production result_column is entered. -func (s *BaseSqlListener) EnterResult_column(ctx *Result_columnContext) {} - -// ExitResult_column is called when production result_column is exited. -func (s *BaseSqlListener) ExitResult_column(ctx *Result_columnContext) {} - -// EnterTable_or_subquery is called when production table_or_subquery is entered. -func (s *BaseSqlListener) EnterTable_or_subquery(ctx *Table_or_subqueryContext) {} - -// ExitTable_or_subquery is called when production table_or_subquery is exited. -func (s *BaseSqlListener) ExitTable_or_subquery(ctx *Table_or_subqueryContext) {} - -// EnterJoin_clause is called when production join_clause is entered. -func (s *BaseSqlListener) EnterJoin_clause(ctx *Join_clauseContext) {} - -// ExitJoin_clause is called when production join_clause is exited. -func (s *BaseSqlListener) ExitJoin_clause(ctx *Join_clauseContext) {} - -// EnterJoin_operator is called when production join_operator is entered. -func (s *BaseSqlListener) EnterJoin_operator(ctx *Join_operatorContext) {} - -// ExitJoin_operator is called when production join_operator is exited. -func (s *BaseSqlListener) ExitJoin_operator(ctx *Join_operatorContext) {} - -// EnterJoin_constraint is called when production join_constraint is entered. -func (s *BaseSqlListener) EnterJoin_constraint(ctx *Join_constraintContext) {} - -// ExitJoin_constraint is called when production join_constraint is exited. -func (s *BaseSqlListener) ExitJoin_constraint(ctx *Join_constraintContext) {} - -// EnterSelect_core is called when production select_core is entered. -func (s *BaseSqlListener) EnterSelect_core(ctx *Select_coreContext) {} - -// ExitSelect_core is called when production select_core is exited. -func (s *BaseSqlListener) ExitSelect_core(ctx *Select_coreContext) {} - -// EnterCompound_operator is called when production compound_operator is entered. -func (s *BaseSqlListener) EnterCompound_operator(ctx *Compound_operatorContext) {} - -// ExitCompound_operator is called when production compound_operator is exited. -func (s *BaseSqlListener) ExitCompound_operator(ctx *Compound_operatorContext) {} - -// EnterCte_table_name is called when production cte_table_name is entered. -func (s *BaseSqlListener) EnterCte_table_name(ctx *Cte_table_nameContext) {} - -// ExitCte_table_name is called when production cte_table_name is exited. -func (s *BaseSqlListener) ExitCte_table_name(ctx *Cte_table_nameContext) {} - -// EnterSigned_number is called when production signed_number is entered. -func (s *BaseSqlListener) EnterSigned_number(ctx *Signed_numberContext) {} - -// ExitSigned_number is called when production signed_number is exited. -func (s *BaseSqlListener) ExitSigned_number(ctx *Signed_numberContext) {} - -// EnterLiteral_value is called when production literal_value is entered. -func (s *BaseSqlListener) EnterLiteral_value(ctx *Literal_valueContext) {} - -// ExitLiteral_value is called when production literal_value is exited. -func (s *BaseSqlListener) ExitLiteral_value(ctx *Literal_valueContext) {} - -// EnterUnary_operator is called when production unary_operator is entered. -func (s *BaseSqlListener) EnterUnary_operator(ctx *Unary_operatorContext) {} - -// ExitUnary_operator is called when production unary_operator is exited. -func (s *BaseSqlListener) ExitUnary_operator(ctx *Unary_operatorContext) {} - -// EnterError_message is called when production error_message is entered. -func (s *BaseSqlListener) EnterError_message(ctx *Error_messageContext) {} - -// ExitError_message is called when production error_message is exited. -func (s *BaseSqlListener) ExitError_message(ctx *Error_messageContext) {} - -// EnterModule_argument is called when production module_argument is entered. -func (s *BaseSqlListener) EnterModule_argument(ctx *Module_argumentContext) {} - -// ExitModule_argument is called when production module_argument is exited. -func (s *BaseSqlListener) ExitModule_argument(ctx *Module_argumentContext) {} - -// EnterColumn_alias is called when production column_alias is entered. -func (s *BaseSqlListener) EnterColumn_alias(ctx *Column_aliasContext) {} - -// ExitColumn_alias is called when production column_alias is exited. -func (s *BaseSqlListener) ExitColumn_alias(ctx *Column_aliasContext) {} - -// EnterKeyword is called when production keyword is entered. -func (s *BaseSqlListener) EnterKeyword(ctx *KeywordContext) {} - -// ExitKeyword is called when production keyword is exited. -func (s *BaseSqlListener) ExitKeyword(ctx *KeywordContext) {} - -// EnterUnknown is called when production unknown is entered. -func (s *BaseSqlListener) EnterUnknown(ctx *UnknownContext) {} - -// ExitUnknown is called when production unknown is exited. -func (s *BaseSqlListener) ExitUnknown(ctx *UnknownContext) {} - -// EnterName is called when production name is entered. -func (s *BaseSqlListener) EnterName(ctx *NameContext) {} - -// ExitName is called when production name is exited. -func (s *BaseSqlListener) ExitName(ctx *NameContext) {} - -// EnterFunction_name is called when production function_name is entered. -func (s *BaseSqlListener) EnterFunction_name(ctx *Function_nameContext) {} - -// ExitFunction_name is called when production function_name is exited. -func (s *BaseSqlListener) ExitFunction_name(ctx *Function_nameContext) {} - -// EnterDatabase_name is called when production database_name is entered. -func (s *BaseSqlListener) EnterDatabase_name(ctx *Database_nameContext) {} - -// ExitDatabase_name is called when production database_name is exited. -func (s *BaseSqlListener) ExitDatabase_name(ctx *Database_nameContext) {} - -// EnterSource_table_name is called when production source_table_name is entered. -func (s *BaseSqlListener) EnterSource_table_name(ctx *Source_table_nameContext) {} - -// ExitSource_table_name is called when production source_table_name is exited. -func (s *BaseSqlListener) ExitSource_table_name(ctx *Source_table_nameContext) {} - -// EnterTable_name is called when production table_name is entered. -func (s *BaseSqlListener) EnterTable_name(ctx *Table_nameContext) {} - -// ExitTable_name is called when production table_name is exited. -func (s *BaseSqlListener) ExitTable_name(ctx *Table_nameContext) {} - -// EnterTable_or_index_name is called when production table_or_index_name is entered. -func (s *BaseSqlListener) EnterTable_or_index_name(ctx *Table_or_index_nameContext) {} - -// ExitTable_or_index_name is called when production table_or_index_name is exited. -func (s *BaseSqlListener) ExitTable_or_index_name(ctx *Table_or_index_nameContext) {} - -// EnterNew_table_name is called when production new_table_name is entered. -func (s *BaseSqlListener) EnterNew_table_name(ctx *New_table_nameContext) {} - -// ExitNew_table_name is called when production new_table_name is exited. -func (s *BaseSqlListener) ExitNew_table_name(ctx *New_table_nameContext) {} - -// EnterColumn_name is called when production column_name is entered. -func (s *BaseSqlListener) EnterColumn_name(ctx *Column_nameContext) {} - -// ExitColumn_name is called when production column_name is exited. -func (s *BaseSqlListener) ExitColumn_name(ctx *Column_nameContext) {} - -// EnterCollation_name is called when production collation_name is entered. -func (s *BaseSqlListener) EnterCollation_name(ctx *Collation_nameContext) {} - -// ExitCollation_name is called when production collation_name is exited. -func (s *BaseSqlListener) ExitCollation_name(ctx *Collation_nameContext) {} - -// EnterForeign_table is called when production foreign_table is entered. -func (s *BaseSqlListener) EnterForeign_table(ctx *Foreign_tableContext) {} - -// ExitForeign_table is called when production foreign_table is exited. -func (s *BaseSqlListener) ExitForeign_table(ctx *Foreign_tableContext) {} - -// EnterIndex_name is called when production index_name is entered. -func (s *BaseSqlListener) EnterIndex_name(ctx *Index_nameContext) {} - -// ExitIndex_name is called when production index_name is exited. -func (s *BaseSqlListener) ExitIndex_name(ctx *Index_nameContext) {} - -// EnterTrigger_name is called when production trigger_name is entered. -func (s *BaseSqlListener) EnterTrigger_name(ctx *Trigger_nameContext) {} - -// ExitTrigger_name is called when production trigger_name is exited. -func (s *BaseSqlListener) ExitTrigger_name(ctx *Trigger_nameContext) {} - -// EnterView_name is called when production view_name is entered. -func (s *BaseSqlListener) EnterView_name(ctx *View_nameContext) {} - -// ExitView_name is called when production view_name is exited. -func (s *BaseSqlListener) ExitView_name(ctx *View_nameContext) {} - -// EnterModule_name is called when production module_name is entered. -func (s *BaseSqlListener) EnterModule_name(ctx *Module_nameContext) {} - -// ExitModule_name is called when production module_name is exited. -func (s *BaseSqlListener) ExitModule_name(ctx *Module_nameContext) {} - -// EnterPragma_name is called when production pragma_name is entered. -func (s *BaseSqlListener) EnterPragma_name(ctx *Pragma_nameContext) {} - -// ExitPragma_name is called when production pragma_name is exited. -func (s *BaseSqlListener) ExitPragma_name(ctx *Pragma_nameContext) {} - -// EnterSavepoint_name is called when production savepoint_name is entered. -func (s *BaseSqlListener) EnterSavepoint_name(ctx *Savepoint_nameContext) {} - -// ExitSavepoint_name is called when production savepoint_name is exited. -func (s *BaseSqlListener) ExitSavepoint_name(ctx *Savepoint_nameContext) {} - -// EnterTable_alias is called when production table_alias is entered. -func (s *BaseSqlListener) EnterTable_alias(ctx *Table_aliasContext) {} - -// ExitTable_alias is called when production table_alias is exited. -func (s *BaseSqlListener) ExitTable_alias(ctx *Table_aliasContext) {} - -// EnterTransaction_name is called when production transaction_name is entered. -func (s *BaseSqlListener) EnterTransaction_name(ctx *Transaction_nameContext) {} - -// ExitTransaction_name is called when production transaction_name is exited. -func (s *BaseSqlListener) ExitTransaction_name(ctx *Transaction_nameContext) {} - -// EnterAny_name is called when production any_name is entered. -func (s *BaseSqlListener) EnterAny_name(ctx *Any_nameContext) {} - -// ExitAny_name is called when production any_name is exited. -func (s *BaseSqlListener) ExitAny_name(ctx *Any_nameContext) {} diff --git a/processor/stream_processor/test/parser/sql_lexer.go b/processor/stream_processor/test/parser/sql_lexer.go deleted file mode 100644 index f48831c84578..000000000000 --- a/processor/stream_processor/test/parser/sql_lexer.go +++ /dev/null @@ -1,1002 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser - -import ( - "fmt" - "sync" - "unicode" - - "github.com/antlr/antlr4/runtime/Go/antlr" -) - -// Suppress unused import error -var _ = fmt.Printf -var _ = sync.Once{} -var _ = unicode.IsLetter - -type SqlLexer struct { - *antlr.BaseLexer - channelNames []string - modeNames []string - // TODO: EOF string -} - -var sqllexerLexerStaticData struct { - once sync.Once - serializedATN []int32 - channelNames []string - modeNames []string - literalNames []string - symbolicNames []string - ruleNames []string - predictionContextCache *antlr.PredictionContextCache - atn *antlr.ATN - decisionToDFA []*antlr.DFA -} - -func sqllexerLexerInit() { - staticData := &sqllexerLexerStaticData - staticData.channelNames = []string{ - "DEFAULT_TOKEN_CHANNEL", "HIDDEN", - } - staticData.modeNames = []string{ - "DEFAULT_MODE", - } - staticData.literalNames = []string{ - "", "'::'", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", - "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", - "'<='", "'>'", "'>='", "'=='", "'!='", "'<>'", - } - staticData.symbolicNames = []string{ - "", "", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", - "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", - "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", - "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", - "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", - "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", - "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", - "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", - "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", - "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", - "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", - "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", - "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", - "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", - "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", - "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", - "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", - "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", - "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", - "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", - "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", - "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", - "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", - "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", - "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", - "UNEXPECTED_CHAR", - } - staticData.ruleNames = []string{ - "T__0", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", - "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", - "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", - "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", - "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", - "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", - "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", - "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", - "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", - "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", - "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", - "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", - "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", - "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", - "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", - "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", - "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", - "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", - "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", - "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", - "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", - "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", - "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", - "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", - "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", - "UNEXPECTED_CHAR", "DIGIT", "A", "B", "C", "D", "E", "F", "G", "H", - "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", - "W", "X", "Y", "Z", - } - staticData.predictionContextCache = antlr.NewPredictionContextCache() - staticData.serializedATN = []int32{ - 4, 0, 161, 1483, 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, 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, 1, 0, 1, 0, 1, 0, 1, 1, - 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, - 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, - 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, - 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, - 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 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, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, - 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, - 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, - 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, - 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, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, - 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 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, 39, 1, 39, 1, 39, - 1, 40, 1, 40, 1, 40, 1, 41, 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, 43, 1, 43, 1, 43, 1, 43, 1, 43, - 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 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, 47, 1, 47, 1, 47, 1, 48, 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, 49, 1, 49, 1, 49, 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, 52, 1, 52, - 1, 52, 1, 52, 1, 52, 1, 52, 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, 53, 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, - 54, 1, 54, 1, 54, 1, 54, 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, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, - 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, 59, 1, 59, 1, 59, 1, 59, 1, 59, - 1, 59, 1, 59, 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, 63, 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, 66, 1, 66, 1, 66, 1, 66, - 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, - 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, - 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, - 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, - 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, - 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, - 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, - 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, - 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, - 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, - 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 85, 1, - 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, - 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, - 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, - 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, - 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, - 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 94, 1, - 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 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, 97, 1, 98, 1, - 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, - 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, - 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, - 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, - 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, - 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 108, - 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, - 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 112, - 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, - 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, - 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, - 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, - 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, - 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, - 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, - 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, - 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, - 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, - 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, - 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, - 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, - 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, - 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, - 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, - 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, - 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, - 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, - 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, - 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, - 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, - 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, - 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, - 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, - 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, - 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, - 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, - 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, - 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, - 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, - 1, 152, 1, 152, 5, 152, 1295, 8, 152, 10, 152, 12, 152, 1298, 9, 152, 1, - 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1305, 8, 152, 10, 152, 12, - 152, 1308, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1313, 8, 152, 10, 152, - 12, 152, 1316, 9, 152, 1, 152, 1, 152, 1, 152, 5, 152, 1321, 8, 152, 10, - 152, 12, 152, 1324, 9, 152, 3, 152, 1326, 8, 152, 1, 153, 4, 153, 1329, - 8, 153, 11, 153, 12, 153, 1330, 1, 153, 1, 153, 5, 153, 1335, 8, 153, 10, - 153, 12, 153, 1338, 9, 153, 3, 153, 1340, 8, 153, 1, 153, 1, 153, 3, 153, - 1344, 8, 153, 1, 153, 4, 153, 1347, 8, 153, 11, 153, 12, 153, 1348, 3, - 153, 1351, 8, 153, 1, 153, 1, 153, 4, 153, 1355, 8, 153, 11, 153, 12, 153, - 1356, 1, 153, 1, 153, 3, 153, 1361, 8, 153, 1, 153, 4, 153, 1364, 8, 153, - 11, 153, 12, 153, 1365, 3, 153, 1368, 8, 153, 3, 153, 1370, 8, 153, 1, - 154, 1, 154, 5, 154, 1374, 8, 154, 10, 154, 12, 154, 1377, 9, 154, 1, 154, - 1, 154, 3, 154, 1381, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 1387, - 8, 155, 10, 155, 12, 155, 1390, 9, 155, 1, 155, 1, 155, 1, 156, 1, 156, - 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 1401, 8, 157, 10, 157, - 12, 157, 1404, 9, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, - 5, 158, 1412, 8, 158, 10, 158, 12, 158, 1415, 9, 158, 1, 158, 1, 158, 1, - 158, 3, 158, 1420, 8, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, - 1, 160, 1, 160, 1, 161, 1, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, - 1, 164, 1, 165, 1, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 168, 1, 168, - 1, 169, 1, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 172, 1, 172, 1, 173, - 1, 173, 1, 174, 1, 174, 1, 175, 1, 175, 1, 176, 1, 176, 1, 177, 1, 177, - 1, 178, 1, 178, 1, 179, 1, 179, 1, 180, 1, 180, 1, 181, 1, 181, 1, 182, - 1, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, - 1, 187, 1, 187, 1, 1413, 0, 188, 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, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, - 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, - 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, - 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, - 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, - 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, - 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, - 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, - 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, - 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, - 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, - 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, - 321, 161, 323, 0, 325, 0, 327, 0, 329, 0, 331, 0, 333, 0, 335, 0, 337, - 0, 339, 0, 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, 0, 353, 0, 355, - 0, 357, 0, 359, 0, 361, 0, 363, 0, 365, 0, 367, 0, 369, 0, 371, 0, 373, - 0, 375, 0, 1, 0, 37, 1, 0, 34, 34, 1, 0, 96, 96, 1, 0, 93, 93, 3, 0, 65, - 90, 95, 95, 97, 122, 4, 0, 48, 57, 65, 90, 95, 95, 97, 122, 2, 0, 43, 43, - 45, 45, 3, 0, 36, 36, 58, 58, 64, 64, 1, 0, 39, 39, 2, 0, 10, 10, 13, 13, - 3, 0, 9, 11, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 65, 97, 97, 2, 0, - 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 69, - 69, 101, 101, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, - 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, - 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, - 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, - 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, - 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, - 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, - 90, 122, 122, 1482, 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, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, - 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, - 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, - 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, - 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, - 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, 1, 377, 1, 0, 0, 0, 3, 380, 1, 0, 0, 0, 5, 382, 1, 0, 0, 0, 7, - 384, 1, 0, 0, 0, 9, 386, 1, 0, 0, 0, 11, 388, 1, 0, 0, 0, 13, 390, 1, 0, - 0, 0, 15, 392, 1, 0, 0, 0, 17, 394, 1, 0, 0, 0, 19, 396, 1, 0, 0, 0, 21, - 398, 1, 0, 0, 0, 23, 400, 1, 0, 0, 0, 25, 403, 1, 0, 0, 0, 27, 405, 1, - 0, 0, 0, 29, 407, 1, 0, 0, 0, 31, 410, 1, 0, 0, 0, 33, 413, 1, 0, 0, 0, - 35, 415, 1, 0, 0, 0, 37, 417, 1, 0, 0, 0, 39, 419, 1, 0, 0, 0, 41, 422, - 1, 0, 0, 0, 43, 424, 1, 0, 0, 0, 45, 427, 1, 0, 0, 0, 47, 430, 1, 0, 0, - 0, 49, 433, 1, 0, 0, 0, 51, 436, 1, 0, 0, 0, 53, 442, 1, 0, 0, 0, 55, 449, - 1, 0, 0, 0, 57, 453, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 463, 1, 0, 0, - 0, 63, 469, 1, 0, 0, 0, 65, 477, 1, 0, 0, 0, 67, 481, 1, 0, 0, 0, 69, 484, - 1, 0, 0, 0, 71, 488, 1, 0, 0, 0, 73, 495, 1, 0, 0, 0, 75, 509, 1, 0, 0, - 0, 77, 516, 1, 0, 0, 0, 79, 522, 1, 0, 0, 0, 81, 530, 1, 0, 0, 0, 83, 533, - 1, 0, 0, 0, 85, 541, 1, 0, 0, 0, 87, 546, 1, 0, 0, 0, 89, 551, 1, 0, 0, - 0, 91, 557, 1, 0, 0, 0, 93, 565, 1, 0, 0, 0, 95, 572, 1, 0, 0, 0, 97, 579, - 1, 0, 0, 0, 99, 588, 1, 0, 0, 0, 101, 599, 1, 0, 0, 0, 103, 606, 1, 0, - 0, 0, 105, 612, 1, 0, 0, 0, 107, 625, 1, 0, 0, 0, 109, 638, 1, 0, 0, 0, - 111, 656, 1, 0, 0, 0, 113, 665, 1, 0, 0, 0, 115, 673, 1, 0, 0, 0, 117, - 684, 1, 0, 0, 0, 119, 693, 1, 0, 0, 0, 121, 700, 1, 0, 0, 0, 123, 705, - 1, 0, 0, 0, 125, 712, 1, 0, 0, 0, 127, 721, 1, 0, 0, 0, 129, 726, 1, 0, - 0, 0, 131, 731, 1, 0, 0, 0, 133, 736, 1, 0, 0, 0, 135, 740, 1, 0, 0, 0, - 137, 747, 1, 0, 0, 0, 139, 754, 1, 0, 0, 0, 141, 761, 1, 0, 0, 0, 143, - 771, 1, 0, 0, 0, 145, 778, 1, 0, 0, 0, 147, 786, 1, 0, 0, 0, 149, 791, - 1, 0, 0, 0, 151, 795, 1, 0, 0, 0, 153, 803, 1, 0, 0, 0, 155, 808, 1, 0, - 0, 0, 157, 813, 1, 0, 0, 0, 159, 818, 1, 0, 0, 0, 161, 824, 1, 0, 0, 0, - 163, 831, 1, 0, 0, 0, 165, 834, 1, 0, 0, 0, 167, 841, 1, 0, 0, 0, 169, - 851, 1, 0, 0, 0, 171, 854, 1, 0, 0, 0, 173, 860, 1, 0, 0, 0, 175, 868, - 1, 0, 0, 0, 177, 878, 1, 0, 0, 0, 179, 884, 1, 0, 0, 0, 181, 891, 1, 0, - 0, 0, 183, 899, 1, 0, 0, 0, 185, 909, 1, 0, 0, 0, 187, 914, 1, 0, 0, 0, - 189, 917, 1, 0, 0, 0, 191, 924, 1, 0, 0, 0, 193, 929, 1, 0, 0, 0, 195, - 933, 1, 0, 0, 0, 197, 938, 1, 0, 0, 0, 199, 943, 1, 0, 0, 0, 201, 949, - 1, 0, 0, 0, 203, 955, 1, 0, 0, 0, 205, 963, 1, 0, 0, 0, 207, 971, 1, 0, - 0, 0, 209, 974, 1, 0, 0, 0, 211, 978, 1, 0, 0, 0, 213, 986, 1, 0, 0, 0, - 215, 991, 1, 0, 0, 0, 217, 994, 1, 0, 0, 0, 219, 1001, 1, 0, 0, 0, 221, - 1004, 1, 0, 0, 0, 223, 1009, 1, 0, 0, 0, 225, 1012, 1, 0, 0, 0, 227, 1018, - 1, 0, 0, 0, 229, 1024, 1, 0, 0, 0, 231, 1029, 1, 0, 0, 0, 233, 1036, 1, - 0, 0, 0, 235, 1044, 1, 0, 0, 0, 237, 1050, 1, 0, 0, 0, 239, 1056, 1, 0, - 0, 0, 241, 1066, 1, 0, 0, 0, 243, 1077, 1, 0, 0, 0, 245, 1084, 1, 0, 0, - 0, 247, 1092, 1, 0, 0, 0, 249, 1100, 1, 0, 0, 0, 251, 1107, 1, 0, 0, 0, - 253, 1115, 1, 0, 0, 0, 255, 1124, 1, 0, 0, 0, 257, 1130, 1, 0, 0, 0, 259, - 1139, 1, 0, 0, 0, 261, 1143, 1, 0, 0, 0, 263, 1153, 1, 0, 0, 0, 265, 1160, - 1, 0, 0, 0, 267, 1164, 1, 0, 0, 0, 269, 1170, 1, 0, 0, 0, 271, 1175, 1, - 0, 0, 0, 273, 1185, 1, 0, 0, 0, 275, 1190, 1, 0, 0, 0, 277, 1193, 1, 0, - 0, 0, 279, 1205, 1, 0, 0, 0, 281, 1213, 1, 0, 0, 0, 283, 1219, 1, 0, 0, - 0, 285, 1226, 1, 0, 0, 0, 287, 1233, 1, 0, 0, 0, 289, 1239, 1, 0, 0, 0, - 291, 1246, 1, 0, 0, 0, 293, 1253, 1, 0, 0, 0, 295, 1258, 1, 0, 0, 0, 297, - 1266, 1, 0, 0, 0, 299, 1271, 1, 0, 0, 0, 301, 1277, 1, 0, 0, 0, 303, 1282, - 1, 0, 0, 0, 305, 1325, 1, 0, 0, 0, 307, 1369, 1, 0, 0, 0, 309, 1380, 1, - 0, 0, 0, 311, 1382, 1, 0, 0, 0, 313, 1393, 1, 0, 0, 0, 315, 1396, 1, 0, - 0, 0, 317, 1407, 1, 0, 0, 0, 319, 1423, 1, 0, 0, 0, 321, 1427, 1, 0, 0, - 0, 323, 1429, 1, 0, 0, 0, 325, 1431, 1, 0, 0, 0, 327, 1433, 1, 0, 0, 0, - 329, 1435, 1, 0, 0, 0, 331, 1437, 1, 0, 0, 0, 333, 1439, 1, 0, 0, 0, 335, - 1441, 1, 0, 0, 0, 337, 1443, 1, 0, 0, 0, 339, 1445, 1, 0, 0, 0, 341, 1447, - 1, 0, 0, 0, 343, 1449, 1, 0, 0, 0, 345, 1451, 1, 0, 0, 0, 347, 1453, 1, - 0, 0, 0, 349, 1455, 1, 0, 0, 0, 351, 1457, 1, 0, 0, 0, 353, 1459, 1, 0, - 0, 0, 355, 1461, 1, 0, 0, 0, 357, 1463, 1, 0, 0, 0, 359, 1465, 1, 0, 0, - 0, 361, 1467, 1, 0, 0, 0, 363, 1469, 1, 0, 0, 0, 365, 1471, 1, 0, 0, 0, - 367, 1473, 1, 0, 0, 0, 369, 1475, 1, 0, 0, 0, 371, 1477, 1, 0, 0, 0, 373, - 1479, 1, 0, 0, 0, 375, 1481, 1, 0, 0, 0, 377, 378, 5, 58, 0, 0, 378, 379, - 5, 58, 0, 0, 379, 2, 1, 0, 0, 0, 380, 381, 5, 59, 0, 0, 381, 4, 1, 0, 0, - 0, 382, 383, 5, 46, 0, 0, 383, 6, 1, 0, 0, 0, 384, 385, 5, 40, 0, 0, 385, - 8, 1, 0, 0, 0, 386, 387, 5, 41, 0, 0, 387, 10, 1, 0, 0, 0, 388, 389, 5, - 44, 0, 0, 389, 12, 1, 0, 0, 0, 390, 391, 5, 61, 0, 0, 391, 14, 1, 0, 0, - 0, 392, 393, 5, 42, 0, 0, 393, 16, 1, 0, 0, 0, 394, 395, 5, 43, 0, 0, 395, - 18, 1, 0, 0, 0, 396, 397, 5, 45, 0, 0, 397, 20, 1, 0, 0, 0, 398, 399, 5, - 126, 0, 0, 399, 22, 1, 0, 0, 0, 400, 401, 5, 124, 0, 0, 401, 402, 5, 124, - 0, 0, 402, 24, 1, 0, 0, 0, 403, 404, 5, 47, 0, 0, 404, 26, 1, 0, 0, 0, - 405, 406, 5, 37, 0, 0, 406, 28, 1, 0, 0, 0, 407, 408, 5, 60, 0, 0, 408, - 409, 5, 60, 0, 0, 409, 30, 1, 0, 0, 0, 410, 411, 5, 62, 0, 0, 411, 412, - 5, 62, 0, 0, 412, 32, 1, 0, 0, 0, 413, 414, 5, 38, 0, 0, 414, 34, 1, 0, - 0, 0, 415, 416, 5, 124, 0, 0, 416, 36, 1, 0, 0, 0, 417, 418, 5, 60, 0, - 0, 418, 38, 1, 0, 0, 0, 419, 420, 5, 60, 0, 0, 420, 421, 5, 61, 0, 0, 421, - 40, 1, 0, 0, 0, 422, 423, 5, 62, 0, 0, 423, 42, 1, 0, 0, 0, 424, 425, 5, - 62, 0, 0, 425, 426, 5, 61, 0, 0, 426, 44, 1, 0, 0, 0, 427, 428, 5, 61, - 0, 0, 428, 429, 5, 61, 0, 0, 429, 46, 1, 0, 0, 0, 430, 431, 5, 33, 0, 0, - 431, 432, 5, 61, 0, 0, 432, 48, 1, 0, 0, 0, 433, 434, 5, 60, 0, 0, 434, - 435, 5, 62, 0, 0, 435, 50, 1, 0, 0, 0, 436, 437, 3, 325, 162, 0, 437, 438, - 3, 327, 163, 0, 438, 439, 3, 353, 176, 0, 439, 440, 3, 359, 179, 0, 440, - 441, 3, 363, 181, 0, 441, 52, 1, 0, 0, 0, 442, 443, 3, 325, 162, 0, 443, - 444, 3, 329, 164, 0, 444, 445, 3, 363, 181, 0, 445, 446, 3, 341, 170, 0, - 446, 447, 3, 353, 176, 0, 447, 448, 3, 351, 175, 0, 448, 54, 1, 0, 0, 0, - 449, 450, 3, 325, 162, 0, 450, 451, 3, 331, 165, 0, 451, 452, 3, 331, 165, - 0, 452, 56, 1, 0, 0, 0, 453, 454, 3, 325, 162, 0, 454, 455, 3, 335, 167, - 0, 455, 456, 3, 363, 181, 0, 456, 457, 3, 333, 166, 0, 457, 458, 3, 359, - 179, 0, 458, 58, 1, 0, 0, 0, 459, 460, 3, 325, 162, 0, 460, 461, 3, 347, - 173, 0, 461, 462, 3, 347, 173, 0, 462, 60, 1, 0, 0, 0, 463, 464, 3, 325, - 162, 0, 464, 465, 3, 347, 173, 0, 465, 466, 3, 363, 181, 0, 466, 467, 3, - 333, 166, 0, 467, 468, 3, 359, 179, 0, 468, 62, 1, 0, 0, 0, 469, 470, 3, - 325, 162, 0, 470, 471, 3, 351, 175, 0, 471, 472, 3, 325, 162, 0, 472, 473, - 3, 347, 173, 0, 473, 474, 3, 373, 186, 0, 474, 475, 3, 375, 187, 0, 475, - 476, 3, 333, 166, 0, 476, 64, 1, 0, 0, 0, 477, 478, 3, 325, 162, 0, 478, - 479, 3, 351, 175, 0, 479, 480, 3, 331, 165, 0, 480, 66, 1, 0, 0, 0, 481, - 482, 3, 325, 162, 0, 482, 483, 3, 361, 180, 0, 483, 68, 1, 0, 0, 0, 484, - 485, 3, 325, 162, 0, 485, 486, 3, 361, 180, 0, 486, 487, 3, 329, 164, 0, - 487, 70, 1, 0, 0, 0, 488, 489, 3, 325, 162, 0, 489, 490, 3, 363, 181, 0, - 490, 491, 3, 363, 181, 0, 491, 492, 3, 325, 162, 0, 492, 493, 3, 329, 164, - 0, 493, 494, 3, 339, 169, 0, 494, 72, 1, 0, 0, 0, 495, 496, 3, 325, 162, - 0, 496, 497, 3, 365, 182, 0, 497, 498, 3, 363, 181, 0, 498, 499, 3, 353, - 176, 0, 499, 500, 3, 341, 170, 0, 500, 501, 3, 351, 175, 0, 501, 502, 3, - 329, 164, 0, 502, 503, 3, 359, 179, 0, 503, 504, 3, 333, 166, 0, 504, 505, - 3, 349, 174, 0, 505, 506, 3, 333, 166, 0, 506, 507, 3, 351, 175, 0, 507, - 508, 3, 363, 181, 0, 508, 74, 1, 0, 0, 0, 509, 510, 3, 327, 163, 0, 510, - 511, 3, 333, 166, 0, 511, 512, 3, 335, 167, 0, 512, 513, 3, 353, 176, 0, - 513, 514, 3, 359, 179, 0, 514, 515, 3, 333, 166, 0, 515, 76, 1, 0, 0, 0, - 516, 517, 3, 327, 163, 0, 517, 518, 3, 333, 166, 0, 518, 519, 3, 337, 168, - 0, 519, 520, 3, 341, 170, 0, 520, 521, 3, 351, 175, 0, 521, 78, 1, 0, 0, - 0, 522, 523, 3, 327, 163, 0, 523, 524, 3, 333, 166, 0, 524, 525, 3, 363, - 181, 0, 525, 526, 3, 369, 184, 0, 526, 527, 3, 333, 166, 0, 527, 528, 3, - 333, 166, 0, 528, 529, 3, 351, 175, 0, 529, 80, 1, 0, 0, 0, 530, 531, 3, - 327, 163, 0, 531, 532, 3, 373, 186, 0, 532, 82, 1, 0, 0, 0, 533, 534, 3, - 329, 164, 0, 534, 535, 3, 325, 162, 0, 535, 536, 3, 361, 180, 0, 536, 537, - 3, 329, 164, 0, 537, 538, 3, 325, 162, 0, 538, 539, 3, 331, 165, 0, 539, - 540, 3, 333, 166, 0, 540, 84, 1, 0, 0, 0, 541, 542, 3, 329, 164, 0, 542, - 543, 3, 325, 162, 0, 543, 544, 3, 361, 180, 0, 544, 545, 3, 333, 166, 0, - 545, 86, 1, 0, 0, 0, 546, 547, 3, 329, 164, 0, 547, 548, 3, 325, 162, 0, - 548, 549, 3, 361, 180, 0, 549, 550, 3, 363, 181, 0, 550, 88, 1, 0, 0, 0, - 551, 552, 3, 329, 164, 0, 552, 553, 3, 339, 169, 0, 553, 554, 3, 333, 166, - 0, 554, 555, 3, 329, 164, 0, 555, 556, 3, 345, 172, 0, 556, 90, 1, 0, 0, - 0, 557, 558, 3, 329, 164, 0, 558, 559, 3, 353, 176, 0, 559, 560, 3, 347, - 173, 0, 560, 561, 3, 347, 173, 0, 561, 562, 3, 325, 162, 0, 562, 563, 3, - 363, 181, 0, 563, 564, 3, 333, 166, 0, 564, 92, 1, 0, 0, 0, 565, 566, 3, - 329, 164, 0, 566, 567, 3, 353, 176, 0, 567, 568, 3, 347, 173, 0, 568, 569, - 3, 365, 182, 0, 569, 570, 3, 349, 174, 0, 570, 571, 3, 351, 175, 0, 571, - 94, 1, 0, 0, 0, 572, 573, 3, 329, 164, 0, 573, 574, 3, 353, 176, 0, 574, - 575, 3, 349, 174, 0, 575, 576, 3, 349, 174, 0, 576, 577, 3, 341, 170, 0, - 577, 578, 3, 363, 181, 0, 578, 96, 1, 0, 0, 0, 579, 580, 3, 329, 164, 0, - 580, 581, 3, 353, 176, 0, 581, 582, 3, 351, 175, 0, 582, 583, 3, 335, 167, - 0, 583, 584, 3, 347, 173, 0, 584, 585, 3, 341, 170, 0, 585, 586, 3, 329, - 164, 0, 586, 587, 3, 363, 181, 0, 587, 98, 1, 0, 0, 0, 588, 589, 3, 329, - 164, 0, 589, 590, 3, 353, 176, 0, 590, 591, 3, 351, 175, 0, 591, 592, 3, - 361, 180, 0, 592, 593, 3, 363, 181, 0, 593, 594, 3, 359, 179, 0, 594, 595, - 3, 325, 162, 0, 595, 596, 3, 341, 170, 0, 596, 597, 3, 351, 175, 0, 597, - 598, 3, 363, 181, 0, 598, 100, 1, 0, 0, 0, 599, 600, 3, 329, 164, 0, 600, - 601, 3, 359, 179, 0, 601, 602, 3, 333, 166, 0, 602, 603, 3, 325, 162, 0, - 603, 604, 3, 363, 181, 0, 604, 605, 3, 333, 166, 0, 605, 102, 1, 0, 0, - 0, 606, 607, 3, 329, 164, 0, 607, 608, 3, 359, 179, 0, 608, 609, 3, 353, - 176, 0, 609, 610, 3, 361, 180, 0, 610, 611, 3, 361, 180, 0, 611, 104, 1, - 0, 0, 0, 612, 613, 3, 329, 164, 0, 613, 614, 3, 365, 182, 0, 614, 615, - 3, 359, 179, 0, 615, 616, 3, 359, 179, 0, 616, 617, 3, 333, 166, 0, 617, - 618, 3, 351, 175, 0, 618, 619, 3, 363, 181, 0, 619, 620, 5, 95, 0, 0, 620, - 621, 3, 331, 165, 0, 621, 622, 3, 325, 162, 0, 622, 623, 3, 363, 181, 0, - 623, 624, 3, 333, 166, 0, 624, 106, 1, 0, 0, 0, 625, 626, 3, 329, 164, - 0, 626, 627, 3, 365, 182, 0, 627, 628, 3, 359, 179, 0, 628, 629, 3, 359, - 179, 0, 629, 630, 3, 333, 166, 0, 630, 631, 3, 351, 175, 0, 631, 632, 3, - 363, 181, 0, 632, 633, 5, 95, 0, 0, 633, 634, 3, 363, 181, 0, 634, 635, - 3, 341, 170, 0, 635, 636, 3, 349, 174, 0, 636, 637, 3, 333, 166, 0, 637, - 108, 1, 0, 0, 0, 638, 639, 3, 329, 164, 0, 639, 640, 3, 365, 182, 0, 640, - 641, 3, 359, 179, 0, 641, 642, 3, 359, 179, 0, 642, 643, 3, 333, 166, 0, - 643, 644, 3, 351, 175, 0, 644, 645, 3, 363, 181, 0, 645, 646, 5, 95, 0, - 0, 646, 647, 3, 363, 181, 0, 647, 648, 3, 341, 170, 0, 648, 649, 3, 349, - 174, 0, 649, 650, 3, 333, 166, 0, 650, 651, 3, 361, 180, 0, 651, 652, 3, - 363, 181, 0, 652, 653, 3, 325, 162, 0, 653, 654, 3, 349, 174, 0, 654, 655, - 3, 355, 177, 0, 655, 110, 1, 0, 0, 0, 656, 657, 3, 331, 165, 0, 657, 658, - 3, 325, 162, 0, 658, 659, 3, 363, 181, 0, 659, 660, 3, 325, 162, 0, 660, - 661, 3, 327, 163, 0, 661, 662, 3, 325, 162, 0, 662, 663, 3, 361, 180, 0, - 663, 664, 3, 333, 166, 0, 664, 112, 1, 0, 0, 0, 665, 666, 3, 331, 165, - 0, 666, 667, 3, 333, 166, 0, 667, 668, 3, 335, 167, 0, 668, 669, 3, 325, - 162, 0, 669, 670, 3, 365, 182, 0, 670, 671, 3, 347, 173, 0, 671, 672, 3, - 363, 181, 0, 672, 114, 1, 0, 0, 0, 673, 674, 3, 331, 165, 0, 674, 675, - 3, 333, 166, 0, 675, 676, 3, 335, 167, 0, 676, 677, 3, 333, 166, 0, 677, - 678, 3, 359, 179, 0, 678, 679, 3, 359, 179, 0, 679, 680, 3, 325, 162, 0, - 680, 681, 3, 327, 163, 0, 681, 682, 3, 347, 173, 0, 682, 683, 3, 333, 166, - 0, 683, 116, 1, 0, 0, 0, 684, 685, 3, 331, 165, 0, 685, 686, 3, 333, 166, - 0, 686, 687, 3, 335, 167, 0, 687, 688, 3, 333, 166, 0, 688, 689, 3, 359, - 179, 0, 689, 690, 3, 359, 179, 0, 690, 691, 3, 333, 166, 0, 691, 692, 3, - 331, 165, 0, 692, 118, 1, 0, 0, 0, 693, 694, 3, 331, 165, 0, 694, 695, - 3, 333, 166, 0, 695, 696, 3, 347, 173, 0, 696, 697, 3, 333, 166, 0, 697, - 698, 3, 363, 181, 0, 698, 699, 3, 333, 166, 0, 699, 120, 1, 0, 0, 0, 700, - 701, 3, 331, 165, 0, 701, 702, 3, 333, 166, 0, 702, 703, 3, 361, 180, 0, - 703, 704, 3, 329, 164, 0, 704, 122, 1, 0, 0, 0, 705, 706, 3, 331, 165, - 0, 706, 707, 3, 333, 166, 0, 707, 708, 3, 363, 181, 0, 708, 709, 3, 325, - 162, 0, 709, 710, 3, 329, 164, 0, 710, 711, 3, 339, 169, 0, 711, 124, 1, - 0, 0, 0, 712, 713, 3, 331, 165, 0, 713, 714, 3, 341, 170, 0, 714, 715, - 3, 361, 180, 0, 715, 716, 3, 363, 181, 0, 716, 717, 3, 341, 170, 0, 717, - 718, 3, 351, 175, 0, 718, 719, 3, 329, 164, 0, 719, 720, 3, 363, 181, 0, - 720, 126, 1, 0, 0, 0, 721, 722, 3, 331, 165, 0, 722, 723, 3, 359, 179, - 0, 723, 724, 3, 353, 176, 0, 724, 725, 3, 355, 177, 0, 725, 128, 1, 0, - 0, 0, 726, 727, 3, 333, 166, 0, 727, 728, 3, 325, 162, 0, 728, 729, 3, - 329, 164, 0, 729, 730, 3, 339, 169, 0, 730, 130, 1, 0, 0, 0, 731, 732, - 3, 333, 166, 0, 732, 733, 3, 347, 173, 0, 733, 734, 3, 361, 180, 0, 734, - 735, 3, 333, 166, 0, 735, 132, 1, 0, 0, 0, 736, 737, 3, 333, 166, 0, 737, - 738, 3, 351, 175, 0, 738, 739, 3, 331, 165, 0, 739, 134, 1, 0, 0, 0, 740, - 741, 3, 333, 166, 0, 741, 742, 3, 351, 175, 0, 742, 743, 3, 325, 162, 0, - 743, 744, 3, 327, 163, 0, 744, 745, 3, 347, 173, 0, 745, 746, 3, 333, 166, - 0, 746, 136, 1, 0, 0, 0, 747, 748, 3, 333, 166, 0, 748, 749, 3, 361, 180, - 0, 749, 750, 3, 329, 164, 0, 750, 751, 3, 325, 162, 0, 751, 752, 3, 355, - 177, 0, 752, 753, 3, 333, 166, 0, 753, 138, 1, 0, 0, 0, 754, 755, 3, 333, - 166, 0, 755, 756, 3, 371, 185, 0, 756, 757, 3, 329, 164, 0, 757, 758, 3, - 333, 166, 0, 758, 759, 3, 355, 177, 0, 759, 760, 3, 363, 181, 0, 760, 140, - 1, 0, 0, 0, 761, 762, 3, 333, 166, 0, 762, 763, 3, 371, 185, 0, 763, 764, - 3, 329, 164, 0, 764, 765, 3, 347, 173, 0, 765, 766, 3, 365, 182, 0, 766, - 767, 3, 361, 180, 0, 767, 768, 3, 341, 170, 0, 768, 769, 3, 367, 183, 0, - 769, 770, 3, 333, 166, 0, 770, 142, 1, 0, 0, 0, 771, 772, 3, 333, 166, - 0, 772, 773, 3, 371, 185, 0, 773, 774, 3, 341, 170, 0, 774, 775, 3, 361, - 180, 0, 775, 776, 3, 363, 181, 0, 776, 777, 3, 361, 180, 0, 777, 144, 1, - 0, 0, 0, 778, 779, 3, 333, 166, 0, 779, 780, 3, 371, 185, 0, 780, 781, - 3, 355, 177, 0, 781, 782, 3, 347, 173, 0, 782, 783, 3, 325, 162, 0, 783, - 784, 3, 341, 170, 0, 784, 785, 3, 351, 175, 0, 785, 146, 1, 0, 0, 0, 786, - 787, 3, 335, 167, 0, 787, 788, 3, 325, 162, 0, 788, 789, 3, 341, 170, 0, - 789, 790, 3, 347, 173, 0, 790, 148, 1, 0, 0, 0, 791, 792, 3, 335, 167, - 0, 792, 793, 3, 353, 176, 0, 793, 794, 3, 359, 179, 0, 794, 150, 1, 0, - 0, 0, 795, 796, 3, 335, 167, 0, 796, 797, 3, 353, 176, 0, 797, 798, 3, - 359, 179, 0, 798, 799, 3, 333, 166, 0, 799, 800, 3, 341, 170, 0, 800, 801, - 3, 337, 168, 0, 801, 802, 3, 351, 175, 0, 802, 152, 1, 0, 0, 0, 803, 804, - 3, 335, 167, 0, 804, 805, 3, 359, 179, 0, 805, 806, 3, 353, 176, 0, 806, - 807, 3, 349, 174, 0, 807, 154, 1, 0, 0, 0, 808, 809, 3, 335, 167, 0, 809, - 810, 3, 365, 182, 0, 810, 811, 3, 347, 173, 0, 811, 812, 3, 347, 173, 0, - 812, 156, 1, 0, 0, 0, 813, 814, 3, 337, 168, 0, 814, 815, 3, 347, 173, - 0, 815, 816, 3, 353, 176, 0, 816, 817, 3, 327, 163, 0, 817, 158, 1, 0, - 0, 0, 818, 819, 3, 337, 168, 0, 819, 820, 3, 359, 179, 0, 820, 821, 3, - 353, 176, 0, 821, 822, 3, 365, 182, 0, 822, 823, 3, 355, 177, 0, 823, 160, - 1, 0, 0, 0, 824, 825, 3, 339, 169, 0, 825, 826, 3, 325, 162, 0, 826, 827, - 3, 367, 183, 0, 827, 828, 3, 341, 170, 0, 828, 829, 3, 351, 175, 0, 829, - 830, 3, 337, 168, 0, 830, 162, 1, 0, 0, 0, 831, 832, 3, 341, 170, 0, 832, - 833, 3, 335, 167, 0, 833, 164, 1, 0, 0, 0, 834, 835, 3, 341, 170, 0, 835, - 836, 3, 337, 168, 0, 836, 837, 3, 351, 175, 0, 837, 838, 3, 353, 176, 0, - 838, 839, 3, 359, 179, 0, 839, 840, 3, 333, 166, 0, 840, 166, 1, 0, 0, - 0, 841, 842, 3, 341, 170, 0, 842, 843, 3, 349, 174, 0, 843, 844, 3, 349, - 174, 0, 844, 845, 3, 333, 166, 0, 845, 846, 3, 331, 165, 0, 846, 847, 3, - 341, 170, 0, 847, 848, 3, 325, 162, 0, 848, 849, 3, 363, 181, 0, 849, 850, - 3, 333, 166, 0, 850, 168, 1, 0, 0, 0, 851, 852, 3, 341, 170, 0, 852, 853, - 3, 351, 175, 0, 853, 170, 1, 0, 0, 0, 854, 855, 3, 341, 170, 0, 855, 856, - 3, 351, 175, 0, 856, 857, 3, 331, 165, 0, 857, 858, 3, 333, 166, 0, 858, - 859, 3, 371, 185, 0, 859, 172, 1, 0, 0, 0, 860, 861, 3, 341, 170, 0, 861, - 862, 3, 351, 175, 0, 862, 863, 3, 331, 165, 0, 863, 864, 3, 333, 166, 0, - 864, 865, 3, 371, 185, 0, 865, 866, 3, 333, 166, 0, 866, 867, 3, 331, 165, - 0, 867, 174, 1, 0, 0, 0, 868, 869, 3, 341, 170, 0, 869, 870, 3, 351, 175, - 0, 870, 871, 3, 341, 170, 0, 871, 872, 3, 363, 181, 0, 872, 873, 3, 341, - 170, 0, 873, 874, 3, 325, 162, 0, 874, 875, 3, 347, 173, 0, 875, 876, 3, - 347, 173, 0, 876, 877, 3, 373, 186, 0, 877, 176, 1, 0, 0, 0, 878, 879, - 3, 341, 170, 0, 879, 880, 3, 351, 175, 0, 880, 881, 3, 351, 175, 0, 881, - 882, 3, 333, 166, 0, 882, 883, 3, 359, 179, 0, 883, 178, 1, 0, 0, 0, 884, - 885, 3, 341, 170, 0, 885, 886, 3, 351, 175, 0, 886, 887, 3, 361, 180, 0, - 887, 888, 3, 333, 166, 0, 888, 889, 3, 359, 179, 0, 889, 890, 3, 363, 181, - 0, 890, 180, 1, 0, 0, 0, 891, 892, 3, 341, 170, 0, 892, 893, 3, 351, 175, - 0, 893, 894, 3, 361, 180, 0, 894, 895, 3, 363, 181, 0, 895, 896, 3, 333, - 166, 0, 896, 897, 3, 325, 162, 0, 897, 898, 3, 331, 165, 0, 898, 182, 1, - 0, 0, 0, 899, 900, 3, 341, 170, 0, 900, 901, 3, 351, 175, 0, 901, 902, - 3, 363, 181, 0, 902, 903, 3, 333, 166, 0, 903, 904, 3, 359, 179, 0, 904, - 905, 3, 361, 180, 0, 905, 906, 3, 333, 166, 0, 906, 907, 3, 329, 164, 0, - 907, 908, 3, 363, 181, 0, 908, 184, 1, 0, 0, 0, 909, 910, 3, 341, 170, - 0, 910, 911, 3, 351, 175, 0, 911, 912, 3, 363, 181, 0, 912, 913, 3, 353, - 176, 0, 913, 186, 1, 0, 0, 0, 914, 915, 3, 341, 170, 0, 915, 916, 3, 361, - 180, 0, 916, 188, 1, 0, 0, 0, 917, 918, 3, 341, 170, 0, 918, 919, 3, 361, - 180, 0, 919, 920, 3, 351, 175, 0, 920, 921, 3, 365, 182, 0, 921, 922, 3, - 347, 173, 0, 922, 923, 3, 347, 173, 0, 923, 190, 1, 0, 0, 0, 924, 925, - 3, 343, 171, 0, 925, 926, 3, 353, 176, 0, 926, 927, 3, 341, 170, 0, 927, - 928, 3, 351, 175, 0, 928, 192, 1, 0, 0, 0, 929, 930, 3, 345, 172, 0, 930, - 931, 3, 333, 166, 0, 931, 932, 3, 373, 186, 0, 932, 194, 1, 0, 0, 0, 933, - 934, 3, 347, 173, 0, 934, 935, 3, 333, 166, 0, 935, 936, 3, 335, 167, 0, - 936, 937, 3, 363, 181, 0, 937, 196, 1, 0, 0, 0, 938, 939, 3, 347, 173, - 0, 939, 940, 3, 341, 170, 0, 940, 941, 3, 345, 172, 0, 941, 942, 3, 333, - 166, 0, 942, 198, 1, 0, 0, 0, 943, 944, 3, 347, 173, 0, 944, 945, 3, 341, - 170, 0, 945, 946, 3, 349, 174, 0, 946, 947, 3, 341, 170, 0, 947, 948, 3, - 363, 181, 0, 948, 200, 1, 0, 0, 0, 949, 950, 3, 349, 174, 0, 950, 951, - 3, 325, 162, 0, 951, 952, 3, 363, 181, 0, 952, 953, 3, 329, 164, 0, 953, - 954, 3, 339, 169, 0, 954, 202, 1, 0, 0, 0, 955, 956, 3, 351, 175, 0, 956, - 957, 3, 325, 162, 0, 957, 958, 3, 363, 181, 0, 958, 959, 3, 365, 182, 0, - 959, 960, 3, 359, 179, 0, 960, 961, 3, 325, 162, 0, 961, 962, 3, 347, 173, - 0, 962, 204, 1, 0, 0, 0, 963, 964, 3, 351, 175, 0, 964, 965, 3, 333, 166, - 0, 965, 966, 3, 371, 185, 0, 966, 967, 3, 363, 181, 0, 967, 968, 3, 367, - 183, 0, 968, 969, 3, 325, 162, 0, 969, 970, 3, 347, 173, 0, 970, 206, 1, - 0, 0, 0, 971, 972, 3, 351, 175, 0, 972, 973, 3, 353, 176, 0, 973, 208, - 1, 0, 0, 0, 974, 975, 3, 351, 175, 0, 975, 976, 3, 353, 176, 0, 976, 977, - 3, 363, 181, 0, 977, 210, 1, 0, 0, 0, 978, 979, 3, 351, 175, 0, 979, 980, - 3, 353, 176, 0, 980, 981, 3, 363, 181, 0, 981, 982, 3, 351, 175, 0, 982, - 983, 3, 365, 182, 0, 983, 984, 3, 347, 173, 0, 984, 985, 3, 347, 173, 0, - 985, 212, 1, 0, 0, 0, 986, 987, 3, 351, 175, 0, 987, 988, 3, 365, 182, - 0, 988, 989, 3, 347, 173, 0, 989, 990, 3, 347, 173, 0, 990, 214, 1, 0, - 0, 0, 991, 992, 3, 353, 176, 0, 992, 993, 3, 335, 167, 0, 993, 216, 1, - 0, 0, 0, 994, 995, 3, 353, 176, 0, 995, 996, 3, 335, 167, 0, 996, 997, - 3, 335, 167, 0, 997, 998, 3, 361, 180, 0, 998, 999, 3, 333, 166, 0, 999, - 1000, 3, 363, 181, 0, 1000, 218, 1, 0, 0, 0, 1001, 1002, 3, 353, 176, 0, - 1002, 1003, 3, 351, 175, 0, 1003, 220, 1, 0, 0, 0, 1004, 1005, 3, 353, - 176, 0, 1005, 1006, 3, 351, 175, 0, 1006, 1007, 3, 347, 173, 0, 1007, 1008, - 3, 373, 186, 0, 1008, 222, 1, 0, 0, 0, 1009, 1010, 3, 353, 176, 0, 1010, - 1011, 3, 359, 179, 0, 1011, 224, 1, 0, 0, 0, 1012, 1013, 3, 353, 176, 0, - 1013, 1014, 3, 359, 179, 0, 1014, 1015, 3, 331, 165, 0, 1015, 1016, 3, - 333, 166, 0, 1016, 1017, 3, 359, 179, 0, 1017, 226, 1, 0, 0, 0, 1018, 1019, - 3, 353, 176, 0, 1019, 1020, 3, 365, 182, 0, 1020, 1021, 3, 363, 181, 0, - 1021, 1022, 3, 333, 166, 0, 1022, 1023, 3, 359, 179, 0, 1023, 228, 1, 0, - 0, 0, 1024, 1025, 3, 355, 177, 0, 1025, 1026, 3, 347, 173, 0, 1026, 1027, - 3, 325, 162, 0, 1027, 1028, 3, 351, 175, 0, 1028, 230, 1, 0, 0, 0, 1029, - 1030, 3, 355, 177, 0, 1030, 1031, 3, 359, 179, 0, 1031, 1032, 3, 325, 162, - 0, 1032, 1033, 3, 337, 168, 0, 1033, 1034, 3, 349, 174, 0, 1034, 1035, - 3, 325, 162, 0, 1035, 232, 1, 0, 0, 0, 1036, 1037, 3, 355, 177, 0, 1037, - 1038, 3, 359, 179, 0, 1038, 1039, 3, 341, 170, 0, 1039, 1040, 3, 349, 174, - 0, 1040, 1041, 3, 325, 162, 0, 1041, 1042, 3, 359, 179, 0, 1042, 1043, - 3, 373, 186, 0, 1043, 234, 1, 0, 0, 0, 1044, 1045, 3, 357, 178, 0, 1045, - 1046, 3, 365, 182, 0, 1046, 1047, 3, 333, 166, 0, 1047, 1048, 3, 359, 179, - 0, 1048, 1049, 3, 373, 186, 0, 1049, 236, 1, 0, 0, 0, 1050, 1051, 3, 359, - 179, 0, 1051, 1052, 3, 325, 162, 0, 1052, 1053, 3, 341, 170, 0, 1053, 1054, - 3, 361, 180, 0, 1054, 1055, 3, 333, 166, 0, 1055, 238, 1, 0, 0, 0, 1056, - 1057, 3, 359, 179, 0, 1057, 1058, 3, 333, 166, 0, 1058, 1059, 3, 329, 164, - 0, 1059, 1060, 3, 365, 182, 0, 1060, 1061, 3, 359, 179, 0, 1061, 1062, - 3, 361, 180, 0, 1062, 1063, 3, 341, 170, 0, 1063, 1064, 3, 367, 183, 0, - 1064, 1065, 3, 333, 166, 0, 1065, 240, 1, 0, 0, 0, 1066, 1067, 3, 359, - 179, 0, 1067, 1068, 3, 333, 166, 0, 1068, 1069, 3, 335, 167, 0, 1069, 1070, - 3, 333, 166, 0, 1070, 1071, 3, 359, 179, 0, 1071, 1072, 3, 333, 166, 0, - 1072, 1073, 3, 351, 175, 0, 1073, 1074, 3, 329, 164, 0, 1074, 1075, 3, - 333, 166, 0, 1075, 1076, 3, 361, 180, 0, 1076, 242, 1, 0, 0, 0, 1077, 1078, - 3, 359, 179, 0, 1078, 1079, 3, 333, 166, 0, 1079, 1080, 3, 337, 168, 0, - 1080, 1081, 3, 333, 166, 0, 1081, 1082, 3, 371, 185, 0, 1082, 1083, 3, - 355, 177, 0, 1083, 244, 1, 0, 0, 0, 1084, 1085, 3, 359, 179, 0, 1085, 1086, - 3, 333, 166, 0, 1086, 1087, 3, 341, 170, 0, 1087, 1088, 3, 351, 175, 0, - 1088, 1089, 3, 331, 165, 0, 1089, 1090, 3, 333, 166, 0, 1090, 1091, 3, - 371, 185, 0, 1091, 246, 1, 0, 0, 0, 1092, 1093, 3, 359, 179, 0, 1093, 1094, - 3, 333, 166, 0, 1094, 1095, 3, 347, 173, 0, 1095, 1096, 3, 333, 166, 0, - 1096, 1097, 3, 325, 162, 0, 1097, 1098, 3, 361, 180, 0, 1098, 1099, 3, - 333, 166, 0, 1099, 248, 1, 0, 0, 0, 1100, 1101, 3, 359, 179, 0, 1101, 1102, - 3, 333, 166, 0, 1102, 1103, 3, 351, 175, 0, 1103, 1104, 3, 325, 162, 0, - 1104, 1105, 3, 349, 174, 0, 1105, 1106, 3, 333, 166, 0, 1106, 250, 1, 0, - 0, 0, 1107, 1108, 3, 359, 179, 0, 1108, 1109, 3, 333, 166, 0, 1109, 1110, - 3, 355, 177, 0, 1110, 1111, 3, 347, 173, 0, 1111, 1112, 3, 325, 162, 0, - 1112, 1113, 3, 329, 164, 0, 1113, 1114, 3, 333, 166, 0, 1114, 252, 1, 0, - 0, 0, 1115, 1116, 3, 359, 179, 0, 1116, 1117, 3, 333, 166, 0, 1117, 1118, - 3, 361, 180, 0, 1118, 1119, 3, 363, 181, 0, 1119, 1120, 3, 359, 179, 0, - 1120, 1121, 3, 341, 170, 0, 1121, 1122, 3, 329, 164, 0, 1122, 1123, 3, - 363, 181, 0, 1123, 254, 1, 0, 0, 0, 1124, 1125, 3, 359, 179, 0, 1125, 1126, - 3, 341, 170, 0, 1126, 1127, 3, 337, 168, 0, 1127, 1128, 3, 339, 169, 0, - 1128, 1129, 3, 363, 181, 0, 1129, 256, 1, 0, 0, 0, 1130, 1131, 3, 359, - 179, 0, 1131, 1132, 3, 353, 176, 0, 1132, 1133, 3, 347, 173, 0, 1133, 1134, - 3, 347, 173, 0, 1134, 1135, 3, 327, 163, 0, 1135, 1136, 3, 325, 162, 0, - 1136, 1137, 3, 329, 164, 0, 1137, 1138, 3, 345, 172, 0, 1138, 258, 1, 0, - 0, 0, 1139, 1140, 3, 359, 179, 0, 1140, 1141, 3, 353, 176, 0, 1141, 1142, - 3, 369, 184, 0, 1142, 260, 1, 0, 0, 0, 1143, 1144, 3, 361, 180, 0, 1144, - 1145, 3, 325, 162, 0, 1145, 1146, 3, 367, 183, 0, 1146, 1147, 3, 333, 166, - 0, 1147, 1148, 3, 355, 177, 0, 1148, 1149, 3, 353, 176, 0, 1149, 1150, - 3, 341, 170, 0, 1150, 1151, 3, 351, 175, 0, 1151, 1152, 3, 363, 181, 0, - 1152, 262, 1, 0, 0, 0, 1153, 1154, 3, 361, 180, 0, 1154, 1155, 3, 333, - 166, 0, 1155, 1156, 3, 347, 173, 0, 1156, 1157, 3, 333, 166, 0, 1157, 1158, - 3, 329, 164, 0, 1158, 1159, 3, 363, 181, 0, 1159, 264, 1, 0, 0, 0, 1160, - 1161, 3, 361, 180, 0, 1161, 1162, 3, 333, 166, 0, 1162, 1163, 3, 363, 181, - 0, 1163, 266, 1, 0, 0, 0, 1164, 1165, 3, 363, 181, 0, 1165, 1166, 3, 325, - 162, 0, 1166, 1167, 3, 327, 163, 0, 1167, 1168, 3, 347, 173, 0, 1168, 1169, - 3, 333, 166, 0, 1169, 268, 1, 0, 0, 0, 1170, 1171, 3, 363, 181, 0, 1171, - 1172, 3, 333, 166, 0, 1172, 1173, 3, 349, 174, 0, 1173, 1174, 3, 355, 177, - 0, 1174, 270, 1, 0, 0, 0, 1175, 1176, 3, 363, 181, 0, 1176, 1177, 3, 333, - 166, 0, 1177, 1178, 3, 349, 174, 0, 1178, 1179, 3, 355, 177, 0, 1179, 1180, - 3, 353, 176, 0, 1180, 1181, 3, 359, 179, 0, 1181, 1182, 3, 325, 162, 0, - 1182, 1183, 3, 359, 179, 0, 1183, 1184, 3, 373, 186, 0, 1184, 272, 1, 0, - 0, 0, 1185, 1186, 3, 363, 181, 0, 1186, 1187, 3, 339, 169, 0, 1187, 1188, - 3, 333, 166, 0, 1188, 1189, 3, 351, 175, 0, 1189, 274, 1, 0, 0, 0, 1190, - 1191, 3, 363, 181, 0, 1191, 1192, 3, 353, 176, 0, 1192, 276, 1, 0, 0, 0, - 1193, 1194, 3, 363, 181, 0, 1194, 1195, 3, 359, 179, 0, 1195, 1196, 3, - 325, 162, 0, 1196, 1197, 3, 351, 175, 0, 1197, 1198, 3, 361, 180, 0, 1198, - 1199, 3, 325, 162, 0, 1199, 1200, 3, 329, 164, 0, 1200, 1201, 3, 363, 181, - 0, 1201, 1202, 3, 341, 170, 0, 1202, 1203, 3, 353, 176, 0, 1203, 1204, - 3, 351, 175, 0, 1204, 278, 1, 0, 0, 0, 1205, 1206, 3, 363, 181, 0, 1206, - 1207, 3, 359, 179, 0, 1207, 1208, 3, 341, 170, 0, 1208, 1209, 3, 337, 168, - 0, 1209, 1210, 3, 337, 168, 0, 1210, 1211, 3, 333, 166, 0, 1211, 1212, - 3, 359, 179, 0, 1212, 280, 1, 0, 0, 0, 1213, 1214, 3, 365, 182, 0, 1214, - 1215, 3, 351, 175, 0, 1215, 1216, 3, 341, 170, 0, 1216, 1217, 3, 353, 176, - 0, 1217, 1218, 3, 351, 175, 0, 1218, 282, 1, 0, 0, 0, 1219, 1220, 3, 365, - 182, 0, 1220, 1221, 3, 351, 175, 0, 1221, 1222, 3, 341, 170, 0, 1222, 1223, - 3, 357, 178, 0, 1223, 1224, 3, 365, 182, 0, 1224, 1225, 3, 333, 166, 0, - 1225, 284, 1, 0, 0, 0, 1226, 1227, 3, 365, 182, 0, 1227, 1228, 3, 355, - 177, 0, 1228, 1229, 3, 331, 165, 0, 1229, 1230, 3, 325, 162, 0, 1230, 1231, - 3, 363, 181, 0, 1231, 1232, 3, 333, 166, 0, 1232, 286, 1, 0, 0, 0, 1233, - 1234, 3, 365, 182, 0, 1234, 1235, 3, 361, 180, 0, 1235, 1236, 3, 341, 170, - 0, 1236, 1237, 3, 351, 175, 0, 1237, 1238, 3, 337, 168, 0, 1238, 288, 1, - 0, 0, 0, 1239, 1240, 3, 367, 183, 0, 1240, 1241, 3, 325, 162, 0, 1241, - 1242, 3, 329, 164, 0, 1242, 1243, 3, 365, 182, 0, 1243, 1244, 3, 365, 182, - 0, 1244, 1245, 3, 349, 174, 0, 1245, 290, 1, 0, 0, 0, 1246, 1247, 3, 367, - 183, 0, 1247, 1248, 3, 325, 162, 0, 1248, 1249, 3, 347, 173, 0, 1249, 1250, - 3, 365, 182, 0, 1250, 1251, 3, 333, 166, 0, 1251, 1252, 3, 361, 180, 0, - 1252, 292, 1, 0, 0, 0, 1253, 1254, 3, 367, 183, 0, 1254, 1255, 3, 341, - 170, 0, 1255, 1256, 3, 333, 166, 0, 1256, 1257, 3, 369, 184, 0, 1257, 294, - 1, 0, 0, 0, 1258, 1259, 3, 367, 183, 0, 1259, 1260, 3, 341, 170, 0, 1260, - 1261, 3, 359, 179, 0, 1261, 1262, 3, 363, 181, 0, 1262, 1263, 3, 365, 182, - 0, 1263, 1264, 3, 325, 162, 0, 1264, 1265, 3, 347, 173, 0, 1265, 296, 1, - 0, 0, 0, 1266, 1267, 3, 369, 184, 0, 1267, 1268, 3, 339, 169, 0, 1268, - 1269, 3, 333, 166, 0, 1269, 1270, 3, 351, 175, 0, 1270, 298, 1, 0, 0, 0, - 1271, 1272, 3, 369, 184, 0, 1272, 1273, 3, 339, 169, 0, 1273, 1274, 3, - 333, 166, 0, 1274, 1275, 3, 359, 179, 0, 1275, 1276, 3, 333, 166, 0, 1276, - 300, 1, 0, 0, 0, 1277, 1278, 3, 369, 184, 0, 1278, 1279, 3, 341, 170, 0, - 1279, 1280, 3, 363, 181, 0, 1280, 1281, 3, 339, 169, 0, 1281, 302, 1, 0, - 0, 0, 1282, 1283, 3, 369, 184, 0, 1283, 1284, 3, 341, 170, 0, 1284, 1285, - 3, 363, 181, 0, 1285, 1286, 3, 339, 169, 0, 1286, 1287, 3, 353, 176, 0, - 1287, 1288, 3, 365, 182, 0, 1288, 1289, 3, 363, 181, 0, 1289, 304, 1, 0, - 0, 0, 1290, 1296, 5, 34, 0, 0, 1291, 1295, 8, 0, 0, 0, 1292, 1293, 5, 34, - 0, 0, 1293, 1295, 5, 34, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, - 0, 0, 1295, 1298, 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1297, 1, 0, - 0, 0, 1297, 1299, 1, 0, 0, 0, 1298, 1296, 1, 0, 0, 0, 1299, 1326, 5, 34, - 0, 0, 1300, 1306, 5, 96, 0, 0, 1301, 1305, 8, 1, 0, 0, 1302, 1303, 5, 96, - 0, 0, 1303, 1305, 5, 96, 0, 0, 1304, 1301, 1, 0, 0, 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, 1309, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, 1326, 5, 96, - 0, 0, 1310, 1314, 5, 91, 0, 0, 1311, 1313, 8, 2, 0, 0, 1312, 1311, 1, 0, - 0, 0, 1313, 1316, 1, 0, 0, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, - 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1326, 5, 93, - 0, 0, 1318, 1322, 7, 3, 0, 0, 1319, 1321, 7, 4, 0, 0, 1320, 1319, 1, 0, - 0, 0, 1321, 1324, 1, 0, 0, 0, 1322, 1320, 1, 0, 0, 0, 1322, 1323, 1, 0, - 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1325, 1290, 1, 0, - 0, 0, 1325, 1300, 1, 0, 0, 0, 1325, 1310, 1, 0, 0, 0, 1325, 1318, 1, 0, - 0, 0, 1326, 306, 1, 0, 0, 0, 1327, 1329, 3, 323, 161, 0, 1328, 1327, 1, - 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1328, 1, 0, 0, 0, 1330, 1331, 1, - 0, 0, 0, 1331, 1339, 1, 0, 0, 0, 1332, 1336, 5, 46, 0, 0, 1333, 1335, 3, - 323, 161, 0, 1334, 1333, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, - 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, - 1, 0, 0, 0, 1339, 1332, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1350, - 1, 0, 0, 0, 1341, 1343, 3, 333, 166, 0, 1342, 1344, 7, 5, 0, 0, 1343, 1342, - 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1346, 1, 0, 0, 0, 1345, 1347, - 3, 323, 161, 0, 1346, 1345, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1346, - 1, 0, 0, 0, 1348, 1349, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, 1350, 1341, - 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1370, 1, 0, 0, 0, 1352, 1354, - 5, 46, 0, 0, 1353, 1355, 3, 323, 161, 0, 1354, 1353, 1, 0, 0, 0, 1355, - 1356, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, - 1367, 1, 0, 0, 0, 1358, 1360, 3, 333, 166, 0, 1359, 1361, 7, 5, 0, 0, 1360, - 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1363, 1, 0, 0, 0, 1362, - 1364, 3, 323, 161, 0, 1363, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, - 1363, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1368, 1, 0, 0, 0, 1367, - 1358, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 1, 0, 0, 0, 1369, - 1328, 1, 0, 0, 0, 1369, 1352, 1, 0, 0, 0, 1370, 308, 1, 0, 0, 0, 1371, - 1375, 5, 63, 0, 0, 1372, 1374, 3, 323, 161, 0, 1373, 1372, 1, 0, 0, 0, - 1374, 1377, 1, 0, 0, 0, 1375, 1373, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, - 1376, 1381, 1, 0, 0, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1379, 7, 6, 0, 0, - 1379, 1381, 3, 305, 152, 0, 1380, 1371, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, - 0, 1381, 310, 1, 0, 0, 0, 1382, 1388, 5, 39, 0, 0, 1383, 1387, 8, 7, 0, - 0, 1384, 1385, 5, 39, 0, 0, 1385, 1387, 5, 39, 0, 0, 1386, 1383, 1, 0, - 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1390, 1, 0, 0, 0, 1388, 1386, 1, 0, - 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 1, 0, 0, 0, 1390, 1388, 1, 0, - 0, 0, 1391, 1392, 5, 39, 0, 0, 1392, 312, 1, 0, 0, 0, 1393, 1394, 3, 371, - 185, 0, 1394, 1395, 3, 311, 155, 0, 1395, 314, 1, 0, 0, 0, 1396, 1397, - 5, 45, 0, 0, 1397, 1398, 5, 45, 0, 0, 1398, 1402, 1, 0, 0, 0, 1399, 1401, - 8, 8, 0, 0, 1400, 1399, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1400, - 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 1, 0, 0, 0, 1404, 1402, - 1, 0, 0, 0, 1405, 1406, 6, 157, 0, 0, 1406, 316, 1, 0, 0, 0, 1407, 1408, - 5, 47, 0, 0, 1408, 1409, 5, 42, 0, 0, 1409, 1413, 1, 0, 0, 0, 1410, 1412, - 9, 0, 0, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, 0, 0, 0, 1413, 1414, - 1, 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1414, 1419, 1, 0, 0, 0, 1415, 1413, - 1, 0, 0, 0, 1416, 1417, 5, 42, 0, 0, 1417, 1420, 5, 47, 0, 0, 1418, 1420, - 5, 0, 0, 1, 1419, 1416, 1, 0, 0, 0, 1419, 1418, 1, 0, 0, 0, 1420, 1421, - 1, 0, 0, 0, 1421, 1422, 6, 158, 0, 0, 1422, 318, 1, 0, 0, 0, 1423, 1424, - 7, 9, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1426, 6, 159, 0, 0, 1426, 320, - 1, 0, 0, 0, 1427, 1428, 9, 0, 0, 0, 1428, 322, 1, 0, 0, 0, 1429, 1430, - 7, 10, 0, 0, 1430, 324, 1, 0, 0, 0, 1431, 1432, 7, 11, 0, 0, 1432, 326, - 1, 0, 0, 0, 1433, 1434, 7, 12, 0, 0, 1434, 328, 1, 0, 0, 0, 1435, 1436, - 7, 13, 0, 0, 1436, 330, 1, 0, 0, 0, 1437, 1438, 7, 14, 0, 0, 1438, 332, - 1, 0, 0, 0, 1439, 1440, 7, 15, 0, 0, 1440, 334, 1, 0, 0, 0, 1441, 1442, - 7, 16, 0, 0, 1442, 336, 1, 0, 0, 0, 1443, 1444, 7, 17, 0, 0, 1444, 338, - 1, 0, 0, 0, 1445, 1446, 7, 18, 0, 0, 1446, 340, 1, 0, 0, 0, 1447, 1448, - 7, 19, 0, 0, 1448, 342, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 344, - 1, 0, 0, 0, 1451, 1452, 7, 21, 0, 0, 1452, 346, 1, 0, 0, 0, 1453, 1454, - 7, 22, 0, 0, 1454, 348, 1, 0, 0, 0, 1455, 1456, 7, 23, 0, 0, 1456, 350, - 1, 0, 0, 0, 1457, 1458, 7, 24, 0, 0, 1458, 352, 1, 0, 0, 0, 1459, 1460, - 7, 25, 0, 0, 1460, 354, 1, 0, 0, 0, 1461, 1462, 7, 26, 0, 0, 1462, 356, - 1, 0, 0, 0, 1463, 1464, 7, 27, 0, 0, 1464, 358, 1, 0, 0, 0, 1465, 1466, - 7, 28, 0, 0, 1466, 360, 1, 0, 0, 0, 1467, 1468, 7, 29, 0, 0, 1468, 362, - 1, 0, 0, 0, 1469, 1470, 7, 30, 0, 0, 1470, 364, 1, 0, 0, 0, 1471, 1472, - 7, 31, 0, 0, 1472, 366, 1, 0, 0, 0, 1473, 1474, 7, 32, 0, 0, 1474, 368, - 1, 0, 0, 0, 1475, 1476, 7, 33, 0, 0, 1476, 370, 1, 0, 0, 0, 1477, 1478, - 7, 34, 0, 0, 1478, 372, 1, 0, 0, 0, 1479, 1480, 7, 35, 0, 0, 1480, 374, - 1, 0, 0, 0, 1481, 1482, 7, 36, 0, 0, 1482, 376, 1, 0, 0, 0, 26, 0, 1294, - 1296, 1304, 1306, 1314, 1322, 1325, 1330, 1336, 1339, 1343, 1348, 1350, - 1356, 1360, 1365, 1367, 1369, 1375, 1380, 1386, 1388, 1402, 1413, 1419, - 1, 0, 1, 0, - } - deserializer := antlr.NewATNDeserializer(nil) - staticData.atn = deserializer.Deserialize(staticData.serializedATN) - atn := staticData.atn - staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) - decisionToDFA := staticData.decisionToDFA - for index, state := range atn.DecisionToState { - decisionToDFA[index] = antlr.NewDFA(state, index) - } -} - -// SqlLexerInit initializes any static state used to implement SqlLexer. By default the -// static state used to implement the lexer is lazily initialized during the first call to -// NewSqlLexer(). You can call this function if you wish to initialize the static state ahead -// of time. -func SqlLexerInit() { - staticData := &sqllexerLexerStaticData - staticData.once.Do(sqllexerLexerInit) -} - -// NewSqlLexer produces a new lexer instance for the optional input antlr.CharStream. -func NewSqlLexer(input antlr.CharStream) *SqlLexer { - SqlLexerInit() - l := new(SqlLexer) - l.BaseLexer = antlr.NewBaseLexer(input) - staticData := &sqllexerLexerStaticData - l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) - l.channelNames = staticData.channelNames - l.modeNames = staticData.modeNames - l.RuleNames = staticData.ruleNames - l.LiteralNames = staticData.literalNames - l.SymbolicNames = staticData.symbolicNames - l.GrammarFileName = "Sql.g4" - // TODO: l.EOF = antlr.TokenEOF - - return l -} - -// SqlLexer tokens. -const ( - SqlLexerT__0 = 1 - SqlLexerSCOL = 2 - SqlLexerDOT = 3 - SqlLexerOPEN_PAR = 4 - SqlLexerCLOSE_PAR = 5 - SqlLexerCOMMA = 6 - SqlLexerASSIGN = 7 - SqlLexerSTAR = 8 - SqlLexerPLUS = 9 - SqlLexerMINUS = 10 - SqlLexerTILDE = 11 - SqlLexerPIPE2 = 12 - SqlLexerDIV = 13 - SqlLexerMOD = 14 - SqlLexerLT2 = 15 - SqlLexerGT2 = 16 - SqlLexerAMP = 17 - SqlLexerPIPE = 18 - SqlLexerLT = 19 - SqlLexerLT_EQ = 20 - SqlLexerGT = 21 - SqlLexerGT_EQ = 22 - SqlLexerEQ = 23 - SqlLexerNOT_EQ1 = 24 - SqlLexerNOT_EQ2 = 25 - SqlLexerK_ABORT = 26 - SqlLexerK_ACTION = 27 - SqlLexerK_ADD = 28 - SqlLexerK_AFTER = 29 - SqlLexerK_ALL = 30 - SqlLexerK_ALTER = 31 - SqlLexerK_ANALYZE = 32 - SqlLexerK_AND = 33 - SqlLexerK_AS = 34 - SqlLexerK_ASC = 35 - SqlLexerK_ATTACH = 36 - SqlLexerK_AUTOINCREMENT = 37 - SqlLexerK_BEFORE = 38 - SqlLexerK_BEGIN = 39 - SqlLexerK_BETWEEN = 40 - SqlLexerK_BY = 41 - SqlLexerK_CASCADE = 42 - SqlLexerK_CASE = 43 - SqlLexerK_CAST = 44 - SqlLexerK_CHECK = 45 - SqlLexerK_COLLATE = 46 - SqlLexerK_COLUMN = 47 - SqlLexerK_COMMIT = 48 - SqlLexerK_CONFLICT = 49 - SqlLexerK_CONSTRAINT = 50 - SqlLexerK_CREATE = 51 - SqlLexerK_CROSS = 52 - SqlLexerK_CURRENT_DATE = 53 - SqlLexerK_CURRENT_TIME = 54 - SqlLexerK_CURRENT_TIMESTAMP = 55 - SqlLexerK_DATABASE = 56 - SqlLexerK_DEFAULT = 57 - SqlLexerK_DEFERRABLE = 58 - SqlLexerK_DEFERRED = 59 - SqlLexerK_DELETE = 60 - SqlLexerK_DESC = 61 - SqlLexerK_DETACH = 62 - SqlLexerK_DISTINCT = 63 - SqlLexerK_DROP = 64 - SqlLexerK_EACH = 65 - SqlLexerK_ELSE = 66 - SqlLexerK_END = 67 - SqlLexerK_ENABLE = 68 - SqlLexerK_ESCAPE = 69 - SqlLexerK_EXCEPT = 70 - SqlLexerK_EXCLUSIVE = 71 - SqlLexerK_EXISTS = 72 - SqlLexerK_EXPLAIN = 73 - SqlLexerK_FAIL = 74 - SqlLexerK_FOR = 75 - SqlLexerK_FOREIGN = 76 - SqlLexerK_FROM = 77 - SqlLexerK_FULL = 78 - SqlLexerK_GLOB = 79 - SqlLexerK_GROUP = 80 - SqlLexerK_HAVING = 81 - SqlLexerK_IF = 82 - SqlLexerK_IGNORE = 83 - SqlLexerK_IMMEDIATE = 84 - SqlLexerK_IN = 85 - SqlLexerK_INDEX = 86 - SqlLexerK_INDEXED = 87 - SqlLexerK_INITIALLY = 88 - SqlLexerK_INNER = 89 - SqlLexerK_INSERT = 90 - SqlLexerK_INSTEAD = 91 - SqlLexerK_INTERSECT = 92 - SqlLexerK_INTO = 93 - SqlLexerK_IS = 94 - SqlLexerK_ISNULL = 95 - SqlLexerK_JOIN = 96 - SqlLexerK_KEY = 97 - SqlLexerK_LEFT = 98 - SqlLexerK_LIKE = 99 - SqlLexerK_LIMIT = 100 - SqlLexerK_MATCH = 101 - SqlLexerK_NATURAL = 102 - SqlLexerK_NEXTVAL = 103 - SqlLexerK_NO = 104 - SqlLexerK_NOT = 105 - SqlLexerK_NOTNULL = 106 - SqlLexerK_NULL = 107 - SqlLexerK_OF = 108 - SqlLexerK_OFFSET = 109 - SqlLexerK_ON = 110 - SqlLexerK_ONLY = 111 - SqlLexerK_OR = 112 - SqlLexerK_ORDER = 113 - SqlLexerK_OUTER = 114 - SqlLexerK_PLAN = 115 - SqlLexerK_PRAGMA = 116 - SqlLexerK_PRIMARY = 117 - SqlLexerK_QUERY = 118 - SqlLexerK_RAISE = 119 - SqlLexerK_RECURSIVE = 120 - SqlLexerK_REFERENCES = 121 - SqlLexerK_REGEXP = 122 - SqlLexerK_REINDEX = 123 - SqlLexerK_RELEASE = 124 - SqlLexerK_RENAME = 125 - SqlLexerK_REPLACE = 126 - SqlLexerK_RESTRICT = 127 - SqlLexerK_RIGHT = 128 - SqlLexerK_ROLLBACK = 129 - SqlLexerK_ROW = 130 - SqlLexerK_SAVEPOINT = 131 - SqlLexerK_SELECT = 132 - SqlLexerK_SET = 133 - SqlLexerK_TABLE = 134 - SqlLexerK_TEMP = 135 - SqlLexerK_TEMPORARY = 136 - SqlLexerK_THEN = 137 - SqlLexerK_TO = 138 - SqlLexerK_TRANSACTION = 139 - SqlLexerK_TRIGGER = 140 - SqlLexerK_UNION = 141 - SqlLexerK_UNIQUE = 142 - SqlLexerK_UPDATE = 143 - SqlLexerK_USING = 144 - SqlLexerK_VACUUM = 145 - SqlLexerK_VALUES = 146 - SqlLexerK_VIEW = 147 - SqlLexerK_VIRTUAL = 148 - SqlLexerK_WHEN = 149 - SqlLexerK_WHERE = 150 - SqlLexerK_WITH = 151 - SqlLexerK_WITHOUT = 152 - SqlLexerIDENTIFIER = 153 - SqlLexerNUMERIC_LITERAL = 154 - SqlLexerBIND_PARAMETER = 155 - SqlLexerSTRING_LITERAL = 156 - SqlLexerBLOB_LITERAL = 157 - SqlLexerSINGLE_LINE_COMMENT = 158 - SqlLexerMULTILINE_COMMENT = 159 - SqlLexerSPACES = 160 - SqlLexerUNEXPECTED_CHAR = 161 -) diff --git a/processor/stream_processor/test/parser/sql_lexer_test.go b/processor/stream_processor/test/parser/sql_lexer_test.go deleted file mode 100644 index 4603c91a3798..000000000000 --- a/processor/stream_processor/test/parser/sql_lexer_test.go +++ /dev/null @@ -1,22 +0,0 @@ -package parser - -import ( - "fmt" - "github.com/antlr/antlr4/runtime/Go/antlr" - "testing" -) - -func TestSelectExpr(t *testing.T) { - is := antlr.NewInputStream(`SELEct field1, field2 WHERE field3 > 3 and field4 IS 'test';`) - lexer := NewSqlLexer(is) - - for { - t := lexer.NextToken() - if t.GetTokenType() == antlr.TokenEOF { - break - } - fmt.Printf("%s (%q)\n", - lexer.SymbolicNames[t.GetTokenType()], t.GetText()) - } - -} diff --git a/processor/stream_processor/test/parser/sql_listener.go b/processor/stream_processor/test/parser/sql_listener.go deleted file mode 100644 index ba0842380a66..000000000000 --- a/processor/stream_processor/test/parser/sql_listener.go +++ /dev/null @@ -1,598 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Sql - -import "github.com/antlr/antlr4/runtime/Go/antlr" - -// SqlListener is a complete listener for a parse tree produced by SqlParser. -type SqlListener interface { - antlr.ParseTreeListener - - // EnterParse is called when entering the parse production. - EnterParse(c *ParseContext) - - // EnterError is called when entering the error production. - EnterError(c *ErrorContext) - - // EnterSql_stmt_list is called when entering the sql_stmt_list production. - EnterSql_stmt_list(c *Sql_stmt_listContext) - - // EnterSql_stmt is called when entering the sql_stmt production. - EnterSql_stmt(c *Sql_stmtContext) - - // EnterAlter_table_stmt is called when entering the alter_table_stmt production. - EnterAlter_table_stmt(c *Alter_table_stmtContext) - - // EnterAlter_table_add_constraint is called when entering the alter_table_add_constraint production. - EnterAlter_table_add_constraint(c *Alter_table_add_constraintContext) - - // EnterAlter_table_add is called when entering the alter_table_add production. - EnterAlter_table_add(c *Alter_table_addContext) - - // EnterAnalyze_stmt is called when entering the analyze_stmt production. - EnterAnalyze_stmt(c *Analyze_stmtContext) - - // EnterAttach_stmt is called when entering the attach_stmt production. - EnterAttach_stmt(c *Attach_stmtContext) - - // EnterBegin_stmt is called when entering the begin_stmt production. - EnterBegin_stmt(c *Begin_stmtContext) - - // EnterCommit_stmt is called when entering the commit_stmt production. - EnterCommit_stmt(c *Commit_stmtContext) - - // EnterCompound_select_stmt is called when entering the compound_select_stmt production. - EnterCompound_select_stmt(c *Compound_select_stmtContext) - - // EnterCreate_index_stmt is called when entering the create_index_stmt production. - EnterCreate_index_stmt(c *Create_index_stmtContext) - - // EnterCreate_table_stmt is called when entering the create_table_stmt production. - EnterCreate_table_stmt(c *Create_table_stmtContext) - - // EnterCreate_trigger_stmt is called when entering the create_trigger_stmt production. - EnterCreate_trigger_stmt(c *Create_trigger_stmtContext) - - // EnterCreate_view_stmt is called when entering the create_view_stmt production. - EnterCreate_view_stmt(c *Create_view_stmtContext) - - // EnterCreate_virtual_table_stmt is called when entering the create_virtual_table_stmt production. - EnterCreate_virtual_table_stmt(c *Create_virtual_table_stmtContext) - - // EnterDelete_stmt is called when entering the delete_stmt production. - EnterDelete_stmt(c *Delete_stmtContext) - - // EnterDelete_stmt_limited is called when entering the delete_stmt_limited production. - EnterDelete_stmt_limited(c *Delete_stmt_limitedContext) - - // EnterDetach_stmt is called when entering the detach_stmt production. - EnterDetach_stmt(c *Detach_stmtContext) - - // EnterDrop_index_stmt is called when entering the drop_index_stmt production. - EnterDrop_index_stmt(c *Drop_index_stmtContext) - - // EnterDrop_table_stmt is called when entering the drop_table_stmt production. - EnterDrop_table_stmt(c *Drop_table_stmtContext) - - // EnterDrop_trigger_stmt is called when entering the drop_trigger_stmt production. - EnterDrop_trigger_stmt(c *Drop_trigger_stmtContext) - - // EnterDrop_view_stmt is called when entering the drop_view_stmt production. - EnterDrop_view_stmt(c *Drop_view_stmtContext) - - // EnterFactored_select_stmt is called when entering the factored_select_stmt production. - EnterFactored_select_stmt(c *Factored_select_stmtContext) - - // EnterInsert_stmt is called when entering the insert_stmt production. - EnterInsert_stmt(c *Insert_stmtContext) - - // EnterPragma_stmt is called when entering the pragma_stmt production. - EnterPragma_stmt(c *Pragma_stmtContext) - - // EnterReindex_stmt is called when entering the reindex_stmt production. - EnterReindex_stmt(c *Reindex_stmtContext) - - // EnterRelease_stmt is called when entering the release_stmt production. - EnterRelease_stmt(c *Release_stmtContext) - - // EnterRollback_stmt is called when entering the rollback_stmt production. - EnterRollback_stmt(c *Rollback_stmtContext) - - // EnterSavepoint_stmt is called when entering the savepoint_stmt production. - EnterSavepoint_stmt(c *Savepoint_stmtContext) - - // EnterSimple_select_stmt is called when entering the simple_select_stmt production. - EnterSimple_select_stmt(c *Simple_select_stmtContext) - - // EnterSelect_stmt is called when entering the select_stmt production. - EnterSelect_stmt(c *Select_stmtContext) - - // EnterSelect_or_values is called when entering the select_or_values production. - EnterSelect_or_values(c *Select_or_valuesContext) - - // EnterUpdate_stmt is called when entering the update_stmt production. - EnterUpdate_stmt(c *Update_stmtContext) - - // EnterUpdate_stmt_limited is called when entering the update_stmt_limited production. - EnterUpdate_stmt_limited(c *Update_stmt_limitedContext) - - // EnterVacuum_stmt is called when entering the vacuum_stmt production. - EnterVacuum_stmt(c *Vacuum_stmtContext) - - // EnterColumn_def is called when entering the column_def production. - EnterColumn_def(c *Column_defContext) - - // EnterType_name is called when entering the type_name production. - EnterType_name(c *Type_nameContext) - - // EnterColumn_constraint is called when entering the column_constraint production. - EnterColumn_constraint(c *Column_constraintContext) - - // EnterColumn_constraint_primary_key is called when entering the column_constraint_primary_key production. - EnterColumn_constraint_primary_key(c *Column_constraint_primary_keyContext) - - // EnterColumn_constraint_foreign_key is called when entering the column_constraint_foreign_key production. - EnterColumn_constraint_foreign_key(c *Column_constraint_foreign_keyContext) - - // EnterColumn_constraint_not_null is called when entering the column_constraint_not_null production. - EnterColumn_constraint_not_null(c *Column_constraint_not_nullContext) - - // EnterColumn_constraint_null is called when entering the column_constraint_null production. - EnterColumn_constraint_null(c *Column_constraint_nullContext) - - // EnterColumn_default is called when entering the column_default production. - EnterColumn_default(c *Column_defaultContext) - - // EnterColumn_default_value is called when entering the column_default_value production. - EnterColumn_default_value(c *Column_default_valueContext) - - // EnterConflict_clause is called when entering the conflict_clause production. - EnterConflict_clause(c *Conflict_clauseContext) - - // EnterExpr is called when entering the expr production. - EnterExpr(c *ExprContext) - - // EnterForeign_key_clause is called when entering the foreign_key_clause production. - EnterForeign_key_clause(c *Foreign_key_clauseContext) - - // EnterFk_target_column_name is called when entering the fk_target_column_name production. - EnterFk_target_column_name(c *Fk_target_column_nameContext) - - // EnterRaise_function is called when entering the raise_function production. - EnterRaise_function(c *Raise_functionContext) - - // EnterIndexed_column is called when entering the indexed_column production. - EnterIndexed_column(c *Indexed_columnContext) - - // EnterTable_constraint is called when entering the table_constraint production. - EnterTable_constraint(c *Table_constraintContext) - - // EnterTable_constraint_primary_key is called when entering the table_constraint_primary_key production. - EnterTable_constraint_primary_key(c *Table_constraint_primary_keyContext) - - // EnterTable_constraint_foreign_key is called when entering the table_constraint_foreign_key production. - EnterTable_constraint_foreign_key(c *Table_constraint_foreign_keyContext) - - // EnterTable_constraint_unique is called when entering the table_constraint_unique production. - EnterTable_constraint_unique(c *Table_constraint_uniqueContext) - - // EnterTable_constraint_key is called when entering the table_constraint_key production. - EnterTable_constraint_key(c *Table_constraint_keyContext) - - // EnterFk_origin_column_name is called when entering the fk_origin_column_name production. - EnterFk_origin_column_name(c *Fk_origin_column_nameContext) - - // EnterWith_clause is called when entering the with_clause production. - EnterWith_clause(c *With_clauseContext) - - // EnterQualified_table_name is called when entering the qualified_table_name production. - EnterQualified_table_name(c *Qualified_table_nameContext) - - // EnterOrdering_term is called when entering the ordering_term production. - EnterOrdering_term(c *Ordering_termContext) - - // EnterPragma_value is called when entering the pragma_value production. - EnterPragma_value(c *Pragma_valueContext) - - // EnterCommon_table_expression is called when entering the common_table_expression production. - EnterCommon_table_expression(c *Common_table_expressionContext) - - // EnterResult_column is called when entering the result_column production. - EnterResult_column(c *Result_columnContext) - - // EnterTable_or_subquery is called when entering the table_or_subquery production. - EnterTable_or_subquery(c *Table_or_subqueryContext) - - // EnterJoin_clause is called when entering the join_clause production. - EnterJoin_clause(c *Join_clauseContext) - - // EnterJoin_operator is called when entering the join_operator production. - EnterJoin_operator(c *Join_operatorContext) - - // EnterJoin_constraint is called when entering the join_constraint production. - EnterJoin_constraint(c *Join_constraintContext) - - // EnterSelect_core is called when entering the select_core production. - EnterSelect_core(c *Select_coreContext) - - // EnterCompound_operator is called when entering the compound_operator production. - EnterCompound_operator(c *Compound_operatorContext) - - // EnterCte_table_name is called when entering the cte_table_name production. - EnterCte_table_name(c *Cte_table_nameContext) - - // EnterSigned_number is called when entering the signed_number production. - EnterSigned_number(c *Signed_numberContext) - - // EnterLiteral_value is called when entering the literal_value production. - EnterLiteral_value(c *Literal_valueContext) - - // EnterUnary_operator is called when entering the unary_operator production. - EnterUnary_operator(c *Unary_operatorContext) - - // EnterError_message is called when entering the error_message production. - EnterError_message(c *Error_messageContext) - - // EnterModule_argument is called when entering the module_argument production. - EnterModule_argument(c *Module_argumentContext) - - // EnterColumn_alias is called when entering the column_alias production. - EnterColumn_alias(c *Column_aliasContext) - - // EnterKeyword is called when entering the keyword production. - EnterKeyword(c *KeywordContext) - - // EnterUnknown is called when entering the unknown production. - EnterUnknown(c *UnknownContext) - - // EnterName is called when entering the name production. - EnterName(c *NameContext) - - // EnterFunction_name is called when entering the function_name production. - EnterFunction_name(c *Function_nameContext) - - // EnterDatabase_name is called when entering the database_name production. - EnterDatabase_name(c *Database_nameContext) - - // EnterSource_table_name is called when entering the source_table_name production. - EnterSource_table_name(c *Source_table_nameContext) - - // EnterTable_name is called when entering the table_name production. - EnterTable_name(c *Table_nameContext) - - // EnterTable_or_index_name is called when entering the table_or_index_name production. - EnterTable_or_index_name(c *Table_or_index_nameContext) - - // EnterNew_table_name is called when entering the new_table_name production. - EnterNew_table_name(c *New_table_nameContext) - - // EnterColumn_name is called when entering the column_name production. - EnterColumn_name(c *Column_nameContext) - - // EnterCollation_name is called when entering the collation_name production. - EnterCollation_name(c *Collation_nameContext) - - // EnterForeign_table is called when entering the foreign_table production. - EnterForeign_table(c *Foreign_tableContext) - - // EnterIndex_name is called when entering the index_name production. - EnterIndex_name(c *Index_nameContext) - - // EnterTrigger_name is called when entering the trigger_name production. - EnterTrigger_name(c *Trigger_nameContext) - - // EnterView_name is called when entering the view_name production. - EnterView_name(c *View_nameContext) - - // EnterModule_name is called when entering the module_name production. - EnterModule_name(c *Module_nameContext) - - // EnterPragma_name is called when entering the pragma_name production. - EnterPragma_name(c *Pragma_nameContext) - - // EnterSavepoint_name is called when entering the savepoint_name production. - EnterSavepoint_name(c *Savepoint_nameContext) - - // EnterTable_alias is called when entering the table_alias production. - EnterTable_alias(c *Table_aliasContext) - - // EnterTransaction_name is called when entering the transaction_name production. - EnterTransaction_name(c *Transaction_nameContext) - - // EnterAny_name is called when entering the any_name production. - EnterAny_name(c *Any_nameContext) - - // ExitParse is called when exiting the parse production. - ExitParse(c *ParseContext) - - // ExitError is called when exiting the error production. - ExitError(c *ErrorContext) - - // ExitSql_stmt_list is called when exiting the sql_stmt_list production. - ExitSql_stmt_list(c *Sql_stmt_listContext) - - // ExitSql_stmt is called when exiting the sql_stmt production. - ExitSql_stmt(c *Sql_stmtContext) - - // ExitAlter_table_stmt is called when exiting the alter_table_stmt production. - ExitAlter_table_stmt(c *Alter_table_stmtContext) - - // ExitAlter_table_add_constraint is called when exiting the alter_table_add_constraint production. - ExitAlter_table_add_constraint(c *Alter_table_add_constraintContext) - - // ExitAlter_table_add is called when exiting the alter_table_add production. - ExitAlter_table_add(c *Alter_table_addContext) - - // ExitAnalyze_stmt is called when exiting the analyze_stmt production. - ExitAnalyze_stmt(c *Analyze_stmtContext) - - // ExitAttach_stmt is called when exiting the attach_stmt production. - ExitAttach_stmt(c *Attach_stmtContext) - - // ExitBegin_stmt is called when exiting the begin_stmt production. - ExitBegin_stmt(c *Begin_stmtContext) - - // ExitCommit_stmt is called when exiting the commit_stmt production. - ExitCommit_stmt(c *Commit_stmtContext) - - // ExitCompound_select_stmt is called when exiting the compound_select_stmt production. - ExitCompound_select_stmt(c *Compound_select_stmtContext) - - // ExitCreate_index_stmt is called when exiting the create_index_stmt production. - ExitCreate_index_stmt(c *Create_index_stmtContext) - - // ExitCreate_table_stmt is called when exiting the create_table_stmt production. - ExitCreate_table_stmt(c *Create_table_stmtContext) - - // ExitCreate_trigger_stmt is called when exiting the create_trigger_stmt production. - ExitCreate_trigger_stmt(c *Create_trigger_stmtContext) - - // ExitCreate_view_stmt is called when exiting the create_view_stmt production. - ExitCreate_view_stmt(c *Create_view_stmtContext) - - // ExitCreate_virtual_table_stmt is called when exiting the create_virtual_table_stmt production. - ExitCreate_virtual_table_stmt(c *Create_virtual_table_stmtContext) - - // ExitDelete_stmt is called when exiting the delete_stmt production. - ExitDelete_stmt(c *Delete_stmtContext) - - // ExitDelete_stmt_limited is called when exiting the delete_stmt_limited production. - ExitDelete_stmt_limited(c *Delete_stmt_limitedContext) - - // ExitDetach_stmt is called when exiting the detach_stmt production. - ExitDetach_stmt(c *Detach_stmtContext) - - // ExitDrop_index_stmt is called when exiting the drop_index_stmt production. - ExitDrop_index_stmt(c *Drop_index_stmtContext) - - // ExitDrop_table_stmt is called when exiting the drop_table_stmt production. - ExitDrop_table_stmt(c *Drop_table_stmtContext) - - // ExitDrop_trigger_stmt is called when exiting the drop_trigger_stmt production. - ExitDrop_trigger_stmt(c *Drop_trigger_stmtContext) - - // ExitDrop_view_stmt is called when exiting the drop_view_stmt production. - ExitDrop_view_stmt(c *Drop_view_stmtContext) - - // ExitFactored_select_stmt is called when exiting the factored_select_stmt production. - ExitFactored_select_stmt(c *Factored_select_stmtContext) - - // ExitInsert_stmt is called when exiting the insert_stmt production. - ExitInsert_stmt(c *Insert_stmtContext) - - // ExitPragma_stmt is called when exiting the pragma_stmt production. - ExitPragma_stmt(c *Pragma_stmtContext) - - // ExitReindex_stmt is called when exiting the reindex_stmt production. - ExitReindex_stmt(c *Reindex_stmtContext) - - // ExitRelease_stmt is called when exiting the release_stmt production. - ExitRelease_stmt(c *Release_stmtContext) - - // ExitRollback_stmt is called when exiting the rollback_stmt production. - ExitRollback_stmt(c *Rollback_stmtContext) - - // ExitSavepoint_stmt is called when exiting the savepoint_stmt production. - ExitSavepoint_stmt(c *Savepoint_stmtContext) - - // ExitSimple_select_stmt is called when exiting the simple_select_stmt production. - ExitSimple_select_stmt(c *Simple_select_stmtContext) - - // ExitSelect_stmt is called when exiting the select_stmt production. - ExitSelect_stmt(c *Select_stmtContext) - - // ExitSelect_or_values is called when exiting the select_or_values production. - ExitSelect_or_values(c *Select_or_valuesContext) - - // ExitUpdate_stmt is called when exiting the update_stmt production. - ExitUpdate_stmt(c *Update_stmtContext) - - // ExitUpdate_stmt_limited is called when exiting the update_stmt_limited production. - ExitUpdate_stmt_limited(c *Update_stmt_limitedContext) - - // ExitVacuum_stmt is called when exiting the vacuum_stmt production. - ExitVacuum_stmt(c *Vacuum_stmtContext) - - // ExitColumn_def is called when exiting the column_def production. - ExitColumn_def(c *Column_defContext) - - // ExitType_name is called when exiting the type_name production. - ExitType_name(c *Type_nameContext) - - // ExitColumn_constraint is called when exiting the column_constraint production. - ExitColumn_constraint(c *Column_constraintContext) - - // ExitColumn_constraint_primary_key is called when exiting the column_constraint_primary_key production. - ExitColumn_constraint_primary_key(c *Column_constraint_primary_keyContext) - - // ExitColumn_constraint_foreign_key is called when exiting the column_constraint_foreign_key production. - ExitColumn_constraint_foreign_key(c *Column_constraint_foreign_keyContext) - - // ExitColumn_constraint_not_null is called when exiting the column_constraint_not_null production. - ExitColumn_constraint_not_null(c *Column_constraint_not_nullContext) - - // ExitColumn_constraint_null is called when exiting the column_constraint_null production. - ExitColumn_constraint_null(c *Column_constraint_nullContext) - - // ExitColumn_default is called when exiting the column_default production. - ExitColumn_default(c *Column_defaultContext) - - // ExitColumn_default_value is called when exiting the column_default_value production. - ExitColumn_default_value(c *Column_default_valueContext) - - // ExitConflict_clause is called when exiting the conflict_clause production. - ExitConflict_clause(c *Conflict_clauseContext) - - // ExitExpr is called when exiting the expr production. - ExitExpr(c *ExprContext) - - // ExitForeign_key_clause is called when exiting the foreign_key_clause production. - ExitForeign_key_clause(c *Foreign_key_clauseContext) - - // ExitFk_target_column_name is called when exiting the fk_target_column_name production. - ExitFk_target_column_name(c *Fk_target_column_nameContext) - - // ExitRaise_function is called when exiting the raise_function production. - ExitRaise_function(c *Raise_functionContext) - - // ExitIndexed_column is called when exiting the indexed_column production. - ExitIndexed_column(c *Indexed_columnContext) - - // ExitTable_constraint is called when exiting the table_constraint production. - ExitTable_constraint(c *Table_constraintContext) - - // ExitTable_constraint_primary_key is called when exiting the table_constraint_primary_key production. - ExitTable_constraint_primary_key(c *Table_constraint_primary_keyContext) - - // ExitTable_constraint_foreign_key is called when exiting the table_constraint_foreign_key production. - ExitTable_constraint_foreign_key(c *Table_constraint_foreign_keyContext) - - // ExitTable_constraint_unique is called when exiting the table_constraint_unique production. - ExitTable_constraint_unique(c *Table_constraint_uniqueContext) - - // ExitTable_constraint_key is called when exiting the table_constraint_key production. - ExitTable_constraint_key(c *Table_constraint_keyContext) - - // ExitFk_origin_column_name is called when exiting the fk_origin_column_name production. - ExitFk_origin_column_name(c *Fk_origin_column_nameContext) - - // ExitWith_clause is called when exiting the with_clause production. - ExitWith_clause(c *With_clauseContext) - - // ExitQualified_table_name is called when exiting the qualified_table_name production. - ExitQualified_table_name(c *Qualified_table_nameContext) - - // ExitOrdering_term is called when exiting the ordering_term production. - ExitOrdering_term(c *Ordering_termContext) - - // ExitPragma_value is called when exiting the pragma_value production. - ExitPragma_value(c *Pragma_valueContext) - - // ExitCommon_table_expression is called when exiting the common_table_expression production. - ExitCommon_table_expression(c *Common_table_expressionContext) - - // ExitResult_column is called when exiting the result_column production. - ExitResult_column(c *Result_columnContext) - - // ExitTable_or_subquery is called when exiting the table_or_subquery production. - ExitTable_or_subquery(c *Table_or_subqueryContext) - - // ExitJoin_clause is called when exiting the join_clause production. - ExitJoin_clause(c *Join_clauseContext) - - // ExitJoin_operator is called when exiting the join_operator production. - ExitJoin_operator(c *Join_operatorContext) - - // ExitJoin_constraint is called when exiting the join_constraint production. - ExitJoin_constraint(c *Join_constraintContext) - - // ExitSelect_core is called when exiting the select_core production. - ExitSelect_core(c *Select_coreContext) - - // ExitCompound_operator is called when exiting the compound_operator production. - ExitCompound_operator(c *Compound_operatorContext) - - // ExitCte_table_name is called when exiting the cte_table_name production. - ExitCte_table_name(c *Cte_table_nameContext) - - // ExitSigned_number is called when exiting the signed_number production. - ExitSigned_number(c *Signed_numberContext) - - // ExitLiteral_value is called when exiting the literal_value production. - ExitLiteral_value(c *Literal_valueContext) - - // ExitUnary_operator is called when exiting the unary_operator production. - ExitUnary_operator(c *Unary_operatorContext) - - // ExitError_message is called when exiting the error_message production. - ExitError_message(c *Error_messageContext) - - // ExitModule_argument is called when exiting the module_argument production. - ExitModule_argument(c *Module_argumentContext) - - // ExitColumn_alias is called when exiting the column_alias production. - ExitColumn_alias(c *Column_aliasContext) - - // ExitKeyword is called when exiting the keyword production. - ExitKeyword(c *KeywordContext) - - // ExitUnknown is called when exiting the unknown production. - ExitUnknown(c *UnknownContext) - - // ExitName is called when exiting the name production. - ExitName(c *NameContext) - - // ExitFunction_name is called when exiting the function_name production. - ExitFunction_name(c *Function_nameContext) - - // ExitDatabase_name is called when exiting the database_name production. - ExitDatabase_name(c *Database_nameContext) - - // ExitSource_table_name is called when exiting the source_table_name production. - ExitSource_table_name(c *Source_table_nameContext) - - // ExitTable_name is called when exiting the table_name production. - ExitTable_name(c *Table_nameContext) - - // ExitTable_or_index_name is called when exiting the table_or_index_name production. - ExitTable_or_index_name(c *Table_or_index_nameContext) - - // ExitNew_table_name is called when exiting the new_table_name production. - ExitNew_table_name(c *New_table_nameContext) - - // ExitColumn_name is called when exiting the column_name production. - ExitColumn_name(c *Column_nameContext) - - // ExitCollation_name is called when exiting the collation_name production. - ExitCollation_name(c *Collation_nameContext) - - // ExitForeign_table is called when exiting the foreign_table production. - ExitForeign_table(c *Foreign_tableContext) - - // ExitIndex_name is called when exiting the index_name production. - ExitIndex_name(c *Index_nameContext) - - // ExitTrigger_name is called when exiting the trigger_name production. - ExitTrigger_name(c *Trigger_nameContext) - - // ExitView_name is called when exiting the view_name production. - ExitView_name(c *View_nameContext) - - // ExitModule_name is called when exiting the module_name production. - ExitModule_name(c *Module_nameContext) - - // ExitPragma_name is called when exiting the pragma_name production. - ExitPragma_name(c *Pragma_nameContext) - - // ExitSavepoint_name is called when exiting the savepoint_name production. - ExitSavepoint_name(c *Savepoint_nameContext) - - // ExitTable_alias is called when exiting the table_alias production. - ExitTable_alias(c *Table_aliasContext) - - // ExitTransaction_name is called when exiting the transaction_name production. - ExitTransaction_name(c *Transaction_nameContext) - - // ExitAny_name is called when exiting the any_name production. - ExitAny_name(c *Any_nameContext) -} diff --git a/processor/stream_processor/test/parser/sql_parser.go b/processor/stream_processor/test/parser/sql_parser.go deleted file mode 100644 index 0670d6c28003..000000000000 --- a/processor/stream_processor/test/parser/sql_parser.go +++ /dev/null @@ -1,25479 +0,0 @@ -// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. - -package parser // Sql - -import ( - "fmt" - "strconv" - "sync" - - "github.com/antlr/antlr4/runtime/Go/antlr" -) - -// Suppress unused import errors -var _ = fmt.Printf -var _ = strconv.Itoa -var _ = sync.Once{} - - -type SqlParser struct { - *antlr.BaseParser -} - -var sqlParserStaticData struct { - once sync.Once - serializedATN []int32 - literalNames []string - symbolicNames []string - ruleNames []string - predictionContextCache *antlr.PredictionContextCache - atn *antlr.ATN - decisionToDFA []*antlr.DFA -} - -func sqlParserInit() { - staticData := &sqlParserStaticData - staticData.literalNames = []string{ - "", "'::'", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", - "'-'", "'~'", "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", - "'<='", "'>'", "'>='", "'=='", "'!='", "'<>'", - } - staticData.symbolicNames = []string{ - "", "", "SCOL", "DOT", "OPEN_PAR", "CLOSE_PAR", "COMMA", "ASSIGN", "STAR", - "PLUS", "MINUS", "TILDE", "PIPE2", "DIV", "MOD", "LT2", "GT2", "AMP", - "PIPE", "LT", "LT_EQ", "GT", "GT_EQ", "EQ", "NOT_EQ1", "NOT_EQ2", "K_ABORT", - "K_ACTION", "K_ADD", "K_AFTER", "K_ALL", "K_ALTER", "K_ANALYZE", "K_AND", - "K_AS", "K_ASC", "K_ATTACH", "K_AUTOINCREMENT", "K_BEFORE", "K_BEGIN", - "K_BETWEEN", "K_BY", "K_CASCADE", "K_CASE", "K_CAST", "K_CHECK", "K_COLLATE", - "K_COLUMN", "K_COMMIT", "K_CONFLICT", "K_CONSTRAINT", "K_CREATE", "K_CROSS", - "K_CURRENT_DATE", "K_CURRENT_TIME", "K_CURRENT_TIMESTAMP", "K_DATABASE", - "K_DEFAULT", "K_DEFERRABLE", "K_DEFERRED", "K_DELETE", "K_DESC", "K_DETACH", - "K_DISTINCT", "K_DROP", "K_EACH", "K_ELSE", "K_END", "K_ENABLE", "K_ESCAPE", - "K_EXCEPT", "K_EXCLUSIVE", "K_EXISTS", "K_EXPLAIN", "K_FAIL", "K_FOR", - "K_FOREIGN", "K_FROM", "K_FULL", "K_GLOB", "K_GROUP", "K_HAVING", "K_IF", - "K_IGNORE", "K_IMMEDIATE", "K_IN", "K_INDEX", "K_INDEXED", "K_INITIALLY", - "K_INNER", "K_INSERT", "K_INSTEAD", "K_INTERSECT", "K_INTO", "K_IS", - "K_ISNULL", "K_JOIN", "K_KEY", "K_LEFT", "K_LIKE", "K_LIMIT", "K_MATCH", - "K_NATURAL", "K_NEXTVAL", "K_NO", "K_NOT", "K_NOTNULL", "K_NULL", "K_OF", - "K_OFFSET", "K_ON", "K_ONLY", "K_OR", "K_ORDER", "K_OUTER", "K_PLAN", - "K_PRAGMA", "K_PRIMARY", "K_QUERY", "K_RAISE", "K_RECURSIVE", "K_REFERENCES", - "K_REGEXP", "K_REINDEX", "K_RELEASE", "K_RENAME", "K_REPLACE", "K_RESTRICT", - "K_RIGHT", "K_ROLLBACK", "K_ROW", "K_SAVEPOINT", "K_SELECT", "K_SET", - "K_TABLE", "K_TEMP", "K_TEMPORARY", "K_THEN", "K_TO", "K_TRANSACTION", - "K_TRIGGER", "K_UNION", "K_UNIQUE", "K_UPDATE", "K_USING", "K_VACUUM", - "K_VALUES", "K_VIEW", "K_VIRTUAL", "K_WHEN", "K_WHERE", "K_WITH", "K_WITHOUT", - "IDENTIFIER", "NUMERIC_LITERAL", "BIND_PARAMETER", "STRING_LITERAL", - "BLOB_LITERAL", "SINGLE_LINE_COMMENT", "MULTILINE_COMMENT", "SPACES", - "UNEXPECTED_CHAR", - } - staticData.ruleNames = []string{ - "parse", "error", "sql_stmt_list", "sql_stmt", "alter_table_stmt", "alter_table_add_constraint", - "alter_table_add", "analyze_stmt", "attach_stmt", "begin_stmt", "commit_stmt", - "compound_select_stmt", "create_index_stmt", "create_table_stmt", "create_trigger_stmt", - "create_view_stmt", "create_virtual_table_stmt", "delete_stmt", "delete_stmt_limited", - "detach_stmt", "drop_index_stmt", "drop_table_stmt", "drop_trigger_stmt", - "drop_view_stmt", "factored_select_stmt", "insert_stmt", "pragma_stmt", - "reindex_stmt", "release_stmt", "rollback_stmt", "savepoint_stmt", "simple_select_stmt", - "select_stmt", "select_or_values", "update_stmt", "update_stmt_limited", - "vacuum_stmt", "column_def", "type_name", "column_constraint", "column_constraint_primary_key", - "column_constraint_foreign_key", "column_constraint_not_null", "column_constraint_null", - "column_default", "column_default_value", "conflict_clause", "expr", - "foreign_key_clause", "fk_target_column_name", "raise_function", "indexed_column", - "table_constraint", "table_constraint_primary_key", "table_constraint_foreign_key", - "table_constraint_unique", "table_constraint_key", "fk_origin_column_name", - "with_clause", "qualified_table_name", "ordering_term", "pragma_value", - "common_table_expression", "result_column", "table_or_subquery", "join_clause", - "join_operator", "join_constraint", "select_core", "compound_operator", - "cte_table_name", "signed_number", "literal_value", "unary_operator", - "error_message", "module_argument", "column_alias", "keyword", "unknown", - "name", "function_name", "database_name", "source_table_name", "table_name", - "table_or_index_name", "new_table_name", "column_name", "collation_name", - "foreign_table", "index_name", "trigger_name", "view_name", "module_name", - "pragma_name", "savepoint_name", "table_alias", "transaction_name", - "any_name", - } - staticData.predictionContextCache = antlr.NewPredictionContextCache() - staticData.serializedATN = []int32{ - 4, 1, 161, 1866, 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, 1, 0, 1, 0, 5, 0, 199, - 8, 0, 10, 0, 12, 0, 202, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 5, 2, - 210, 8, 2, 10, 2, 12, 2, 213, 9, 2, 1, 2, 1, 2, 4, 2, 217, 8, 2, 11, 2, - 12, 2, 218, 1, 2, 5, 2, 222, 8, 2, 10, 2, 12, 2, 225, 9, 2, 1, 2, 5, 2, - 228, 8, 2, 10, 2, 12, 2, 231, 9, 2, 1, 3, 1, 3, 1, 3, 3, 3, 236, 8, 3, - 3, 3, 238, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 270, 8, 3, - 1, 4, 1, 4, 1, 4, 3, 4, 275, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 280, 8, 4, 1, - 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 290, 8, 4, 1, 4, 3, - 4, 293, 8, 4, 1, 4, 3, 4, 296, 8, 4, 1, 4, 3, 4, 299, 8, 4, 1, 5, 1, 5, - 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, - 1, 7, 3, 7, 316, 8, 7, 1, 8, 1, 8, 3, 8, 320, 8, 8, 1, 8, 1, 8, 1, 8, 1, - 8, 1, 9, 1, 9, 3, 9, 328, 8, 9, 1, 9, 1, 9, 3, 9, 332, 8, 9, 3, 9, 334, - 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 339, 8, 10, 3, 10, 341, 8, 10, 1, 11, - 1, 11, 3, 11, 345, 8, 11, 1, 11, 1, 11, 1, 11, 5, 11, 350, 8, 11, 10, 11, - 12, 11, 353, 9, 11, 3, 11, 355, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 360, - 8, 11, 1, 11, 1, 11, 3, 11, 364, 8, 11, 1, 11, 4, 11, 367, 8, 11, 11, 11, - 12, 11, 368, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 376, 8, 11, 10, - 11, 12, 11, 379, 9, 11, 3, 11, 381, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, - 3, 11, 387, 8, 11, 3, 11, 389, 8, 11, 1, 12, 1, 12, 3, 12, 393, 8, 12, - 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 399, 8, 12, 1, 12, 1, 12, 1, 12, 3, - 12, 404, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, - 413, 8, 12, 10, 12, 12, 12, 416, 9, 12, 1, 12, 1, 12, 1, 12, 3, 12, 421, - 8, 12, 1, 13, 1, 13, 3, 13, 425, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, - 13, 431, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 436, 8, 13, 1, 13, 1, 13, 1, - 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 445, 8, 13, 10, 13, 12, 13, 448, - 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 453, 8, 13, 1, 13, 1, 13, 3, 13, 457, - 8, 13, 1, 13, 3, 13, 460, 8, 13, 1, 14, 1, 14, 3, 14, 464, 8, 14, 1, 14, - 1, 14, 1, 14, 1, 14, 3, 14, 470, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 475, - 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 482, 8, 14, 1, 14, 1, - 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 491, 8, 14, 10, 14, 12, 14, - 494, 9, 14, 3, 14, 496, 8, 14, 3, 14, 498, 8, 14, 1, 14, 1, 14, 1, 14, - 1, 14, 3, 14, 504, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 510, 8, 14, - 1, 14, 1, 14, 3, 14, 514, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 3, - 14, 521, 8, 14, 1, 14, 1, 14, 4, 14, 525, 8, 14, 11, 14, 12, 14, 526, 1, - 14, 1, 14, 1, 15, 1, 15, 3, 15, 533, 8, 15, 1, 15, 1, 15, 1, 15, 1, 15, - 3, 15, 539, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 544, 8, 15, 1, 15, 1, 15, - 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 556, 8, - 16, 1, 16, 1, 16, 1, 16, 3, 16, 561, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, - 1, 16, 1, 16, 1, 16, 5, 16, 570, 8, 16, 10, 16, 12, 16, 573, 9, 16, 1, - 16, 1, 16, 3, 16, 577, 8, 16, 1, 17, 3, 17, 580, 8, 17, 1, 17, 1, 17, 1, - 17, 1, 17, 1, 17, 3, 17, 587, 8, 17, 1, 18, 3, 18, 590, 8, 18, 1, 18, 1, - 18, 1, 18, 1, 18, 1, 18, 3, 18, 597, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, - 1, 18, 5, 18, 604, 8, 18, 10, 18, 12, 18, 607, 9, 18, 3, 18, 609, 8, 18, - 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 615, 8, 18, 3, 18, 617, 8, 18, 1, 19, - 1, 19, 3, 19, 621, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 3, - 20, 629, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 634, 8, 20, 1, 20, 1, 20, 1, - 21, 1, 21, 1, 21, 1, 21, 3, 21, 642, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, - 647, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 655, 8, 22, - 1, 22, 1, 22, 1, 22, 3, 22, 660, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, - 23, 1, 23, 3, 23, 668, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 673, 8, 23, 1, - 23, 1, 23, 1, 24, 1, 24, 3, 24, 679, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, - 684, 8, 24, 10, 24, 12, 24, 687, 9, 24, 3, 24, 689, 8, 24, 1, 24, 1, 24, - 1, 24, 1, 24, 5, 24, 695, 8, 24, 10, 24, 12, 24, 698, 9, 24, 1, 24, 1, - 24, 1, 24, 1, 24, 1, 24, 5, 24, 705, 8, 24, 10, 24, 12, 24, 708, 9, 24, - 3, 24, 710, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 716, 8, 24, 3, 24, - 718, 8, 24, 1, 25, 3, 25, 721, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, - 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, - 25, 1, 25, 3, 25, 740, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 746, 8, - 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 753, 8, 25, 10, 25, 12, 25, - 756, 9, 25, 1, 25, 1, 25, 3, 25, 760, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, - 1, 25, 5, 25, 767, 8, 25, 10, 25, 12, 25, 770, 9, 25, 1, 25, 1, 25, 1, - 25, 1, 25, 1, 25, 1, 25, 5, 25, 778, 8, 25, 10, 25, 12, 25, 781, 9, 25, - 1, 25, 1, 25, 5, 25, 785, 8, 25, 10, 25, 12, 25, 788, 9, 25, 1, 25, 1, - 25, 1, 25, 3, 25, 793, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 799, 8, - 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 808, 8, 26, - 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 815, 8, 27, 1, 27, 1, 27, 3, - 27, 819, 8, 27, 3, 27, 821, 8, 27, 1, 28, 1, 28, 3, 28, 825, 8, 28, 1, - 28, 1, 28, 1, 29, 1, 29, 1, 29, 3, 29, 832, 8, 29, 3, 29, 834, 8, 29, 1, - 29, 1, 29, 3, 29, 838, 8, 29, 1, 29, 3, 29, 841, 8, 29, 1, 30, 1, 30, 1, - 30, 1, 31, 1, 31, 3, 31, 848, 8, 31, 1, 31, 1, 31, 1, 31, 5, 31, 853, 8, - 31, 10, 31, 12, 31, 856, 9, 31, 3, 31, 858, 8, 31, 1, 31, 1, 31, 1, 31, - 1, 31, 1, 31, 1, 31, 5, 31, 866, 8, 31, 10, 31, 12, 31, 869, 9, 31, 3, - 31, 871, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 877, 8, 31, 3, 31, 879, - 8, 31, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 888, - 8, 32, 10, 32, 12, 32, 891, 9, 32, 3, 32, 893, 8, 32, 1, 32, 1, 32, 1, - 32, 1, 32, 5, 32, 899, 8, 32, 10, 32, 12, 32, 902, 9, 32, 1, 32, 1, 32, - 1, 32, 1, 32, 1, 32, 5, 32, 909, 8, 32, 10, 32, 12, 32, 912, 9, 32, 3, - 32, 914, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 920, 8, 32, 3, 32, 922, - 8, 32, 1, 33, 1, 33, 3, 33, 926, 8, 33, 1, 33, 1, 33, 1, 33, 5, 33, 931, - 8, 33, 10, 33, 12, 33, 934, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, 940, - 8, 33, 10, 33, 12, 33, 943, 9, 33, 1, 33, 3, 33, 946, 8, 33, 3, 33, 948, - 8, 33, 1, 33, 1, 33, 3, 33, 952, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 33, 5, 33, 959, 8, 33, 10, 33, 12, 33, 962, 9, 33, 1, 33, 1, 33, 3, 33, - 966, 8, 33, 3, 33, 968, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 5, 33, - 975, 8, 33, 10, 33, 12, 33, 978, 9, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, - 33, 1, 33, 5, 33, 986, 8, 33, 10, 33, 12, 33, 989, 9, 33, 1, 33, 1, 33, - 5, 33, 993, 8, 33, 10, 33, 12, 33, 996, 9, 33, 3, 33, 998, 8, 33, 1, 34, - 3, 34, 1001, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, - 34, 1, 34, 1, 34, 1, 34, 3, 34, 1014, 8, 34, 1, 34, 1, 34, 1, 34, 1, 34, - 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 5, 34, 1026, 8, 34, 10, 34, 12, - 34, 1029, 9, 34, 1, 34, 1, 34, 3, 34, 1033, 8, 34, 1, 35, 3, 35, 1036, - 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, - 35, 1, 35, 3, 35, 1049, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, - 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1061, 8, 35, 10, 35, 12, 35, 1064, 9, - 35, 1, 35, 1, 35, 3, 35, 1068, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, - 5, 35, 1075, 8, 35, 10, 35, 12, 35, 1078, 9, 35, 3, 35, 1080, 8, 35, 1, - 35, 1, 35, 1, 35, 1, 35, 3, 35, 1086, 8, 35, 3, 35, 1088, 8, 35, 1, 36, - 1, 36, 1, 37, 1, 37, 1, 37, 5, 37, 1095, 8, 37, 10, 37, 12, 37, 1098, 9, - 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1104, 8, 38, 1, 38, 1, 38, 1, 38, - 1, 38, 1, 38, 3, 38, 1111, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1116, 8, - 38, 1, 38, 1, 38, 3, 38, 1120, 8, 38, 1, 39, 1, 39, 3, 39, 1124, 8, 39, - 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, - 39, 1, 39, 1, 39, 1, 39, 3, 39, 1140, 8, 39, 1, 40, 1, 40, 1, 40, 3, 40, - 1145, 8, 40, 1, 40, 1, 40, 3, 40, 1149, 8, 40, 1, 41, 1, 41, 1, 42, 1, - 42, 1, 42, 1, 42, 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, 44, 1, 44, 3, 44, 1172, 8, 44, 1, - 44, 1, 44, 4, 44, 1176, 8, 44, 11, 44, 12, 44, 1177, 3, 44, 1180, 8, 44, - 1, 45, 1, 45, 3, 45, 1184, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1189, 8, - 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1197, 8, 47, 1, 47, - 1, 47, 1, 47, 3, 47, 1202, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 3, 47, 1211, 8, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1216, 8, 47, - 10, 47, 12, 47, 1219, 9, 47, 1, 47, 3, 47, 1222, 8, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 3, 47, 1238, 8, 47, 1, 47, 3, 47, 1241, 8, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 3, 47, 1249, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 4, 47, 1256, 8, 47, 11, 47, 12, 47, 1257, 1, 47, 1, 47, 3, 47, 1262, - 8, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1267, 8, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 1, 47, 1, 47, 3, 47, 1297, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1309, 8, 47, 1, 47, 1, - 47, 1, 47, 3, 47, 1314, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, - 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1326, 8, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 3, 47, 1332, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1339, - 8, 47, 1, 47, 1, 47, 3, 47, 1343, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, - 47, 1, 47, 5, 47, 1351, 8, 47, 10, 47, 12, 47, 1354, 9, 47, 3, 47, 1356, - 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 47, 3, 47, 1365, - 8, 47, 5, 47, 1367, 8, 47, 10, 47, 12, 47, 1370, 9, 47, 1, 48, 1, 48, 1, - 48, 1, 48, 3, 48, 1376, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, - 1383, 8, 48, 10, 48, 12, 48, 1386, 9, 48, 1, 48, 1, 48, 3, 48, 1390, 8, - 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, - 3, 48, 1402, 8, 48, 1, 48, 1, 48, 3, 48, 1406, 8, 48, 5, 48, 1408, 8, 48, - 10, 48, 12, 48, 1411, 9, 48, 1, 48, 3, 48, 1414, 8, 48, 1, 48, 1, 48, 1, - 48, 1, 48, 1, 48, 3, 48, 1421, 8, 48, 1, 48, 3, 48, 1424, 8, 48, 3, 48, - 1426, 8, 48, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, - 50, 1436, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 3, 51, 1443, 8, 51, - 1, 51, 3, 51, 1446, 8, 51, 1, 52, 1, 52, 3, 52, 1450, 8, 52, 1, 52, 1, - 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1461, 8, 52, - 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1469, 8, 53, 10, 53, 12, - 53, 1472, 9, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, - 1, 54, 5, 54, 1483, 8, 54, 10, 54, 12, 54, 1486, 9, 54, 1, 54, 1, 54, 1, - 54, 1, 55, 1, 55, 3, 55, 1493, 8, 55, 1, 55, 3, 55, 1496, 8, 55, 1, 55, - 1, 55, 1, 55, 1, 55, 5, 55, 1502, 8, 55, 10, 55, 12, 55, 1505, 9, 55, 1, - 55, 1, 55, 1, 55, 1, 56, 1, 56, 3, 56, 1512, 8, 56, 1, 56, 1, 56, 1, 56, - 1, 56, 5, 56, 1518, 8, 56, 10, 56, 12, 56, 1521, 9, 56, 1, 56, 1, 56, 1, - 56, 1, 57, 1, 57, 1, 58, 1, 58, 3, 58, 1530, 8, 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, 5, 58, 1544, - 8, 58, 10, 58, 12, 58, 1547, 9, 58, 1, 59, 1, 59, 1, 59, 3, 59, 1552, 8, - 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1560, 8, 59, 1, 60, - 1, 60, 1, 60, 3, 60, 1565, 8, 60, 1, 60, 3, 60, 1568, 8, 60, 1, 61, 1, - 61, 1, 61, 3, 61, 1573, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, - 1580, 8, 62, 10, 62, 12, 62, 1583, 9, 62, 1, 62, 1, 62, 3, 62, 1587, 8, - 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, - 1, 63, 1, 63, 3, 63, 1601, 8, 63, 1, 63, 3, 63, 1604, 8, 63, 3, 63, 1606, - 8, 63, 1, 64, 1, 64, 1, 64, 3, 64, 1611, 8, 64, 1, 64, 1, 64, 3, 64, 1615, - 8, 64, 1, 64, 3, 64, 1618, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, - 64, 1625, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1631, 8, 64, 10, 64, - 12, 64, 1634, 9, 64, 1, 64, 3, 64, 1637, 8, 64, 1, 64, 1, 64, 3, 64, 1641, - 8, 64, 1, 64, 3, 64, 1644, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 1650, - 8, 64, 1, 64, 3, 64, 1653, 8, 64, 3, 64, 1655, 8, 64, 1, 65, 1, 65, 1, - 65, 1, 65, 1, 65, 5, 65, 1662, 8, 65, 10, 65, 12, 65, 1665, 9, 65, 1, 66, - 1, 66, 3, 66, 1669, 8, 66, 1, 66, 1, 66, 3, 66, 1673, 8, 66, 1, 66, 1, - 66, 3, 66, 1677, 8, 66, 1, 66, 3, 66, 1680, 8, 66, 1, 67, 1, 67, 1, 67, - 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1689, 8, 67, 10, 67, 12, 67, 1692, 9, - 67, 1, 67, 1, 67, 3, 67, 1696, 8, 67, 1, 68, 1, 68, 3, 68, 1700, 8, 68, - 1, 68, 1, 68, 1, 68, 5, 68, 1705, 8, 68, 10, 68, 12, 68, 1708, 9, 68, 1, - 68, 1, 68, 1, 68, 1, 68, 5, 68, 1714, 8, 68, 10, 68, 12, 68, 1717, 9, 68, - 1, 68, 3, 68, 1720, 8, 68, 3, 68, 1722, 8, 68, 1, 68, 1, 68, 3, 68, 1726, - 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1733, 8, 68, 10, 68, 12, - 68, 1736, 9, 68, 1, 68, 1, 68, 3, 68, 1740, 8, 68, 3, 68, 1742, 8, 68, - 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1749, 8, 68, 10, 68, 12, 68, - 1752, 9, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1760, 8, - 68, 10, 68, 12, 68, 1763, 9, 68, 1, 68, 1, 68, 5, 68, 1767, 8, 68, 10, - 68, 12, 68, 1770, 9, 68, 3, 68, 1772, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, - 1, 69, 3, 69, 1779, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1786, - 8, 70, 10, 70, 12, 70, 1789, 9, 70, 1, 70, 1, 70, 3, 70, 1793, 8, 70, 1, - 71, 3, 71, 1796, 8, 71, 1, 71, 1, 71, 3, 71, 1800, 8, 71, 1, 72, 1, 72, - 1, 73, 1, 73, 1, 74, 1, 74, 1, 75, 1, 75, 3, 75, 1810, 8, 75, 1, 76, 1, - 76, 1, 77, 1, 77, 1, 78, 4, 78, 1817, 8, 78, 11, 78, 12, 78, 1818, 1, 79, - 1, 79, 1, 80, 1, 80, 1, 81, 1, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, - 84, 1, 85, 1, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, - 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 94, 1, 94, 1, - 95, 1, 95, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, - 3, 97, 1864, 8, 97, 1, 97, 0, 1, 94, 98, 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, 0, 18, 3, 0, 59, 59, 71, 71, 84, 84, - 2, 0, 48, 48, 67, 67, 2, 0, 6, 6, 109, 109, 1, 0, 135, 136, 2, 0, 30, 30, - 63, 63, 2, 0, 35, 35, 61, 61, 5, 0, 26, 26, 74, 74, 83, 83, 126, 126, 129, - 129, 2, 0, 8, 8, 13, 14, 1, 0, 9, 10, 1, 0, 15, 18, 1, 0, 19, 22, 4, 0, - 79, 79, 99, 99, 101, 101, 122, 122, 2, 0, 60, 60, 143, 143, 3, 0, 26, 26, - 74, 74, 129, 129, 4, 0, 53, 55, 107, 107, 154, 154, 156, 157, 2, 0, 9, - 11, 105, 105, 2, 0, 153, 153, 156, 156, 2, 0, 26, 110, 112, 152, 2141, - 0, 200, 1, 0, 0, 0, 2, 205, 1, 0, 0, 0, 4, 211, 1, 0, 0, 0, 6, 237, 1, - 0, 0, 0, 8, 271, 1, 0, 0, 0, 10, 300, 1, 0, 0, 0, 12, 305, 1, 0, 0, 0, - 14, 308, 1, 0, 0, 0, 16, 317, 1, 0, 0, 0, 18, 325, 1, 0, 0, 0, 20, 335, - 1, 0, 0, 0, 22, 354, 1, 0, 0, 0, 24, 390, 1, 0, 0, 0, 26, 422, 1, 0, 0, - 0, 28, 461, 1, 0, 0, 0, 30, 530, 1, 0, 0, 0, 32, 549, 1, 0, 0, 0, 34, 579, - 1, 0, 0, 0, 36, 589, 1, 0, 0, 0, 38, 618, 1, 0, 0, 0, 40, 624, 1, 0, 0, - 0, 42, 637, 1, 0, 0, 0, 44, 650, 1, 0, 0, 0, 46, 663, 1, 0, 0, 0, 48, 688, - 1, 0, 0, 0, 50, 720, 1, 0, 0, 0, 52, 794, 1, 0, 0, 0, 54, 809, 1, 0, 0, - 0, 56, 822, 1, 0, 0, 0, 58, 828, 1, 0, 0, 0, 60, 842, 1, 0, 0, 0, 62, 857, - 1, 0, 0, 0, 64, 892, 1, 0, 0, 0, 66, 997, 1, 0, 0, 0, 68, 1000, 1, 0, 0, - 0, 70, 1035, 1, 0, 0, 0, 72, 1089, 1, 0, 0, 0, 74, 1091, 1, 0, 0, 0, 76, - 1099, 1, 0, 0, 0, 78, 1123, 1, 0, 0, 0, 80, 1141, 1, 0, 0, 0, 82, 1150, - 1, 0, 0, 0, 84, 1152, 1, 0, 0, 0, 86, 1156, 1, 0, 0, 0, 88, 1159, 1, 0, - 0, 0, 90, 1183, 1, 0, 0, 0, 92, 1188, 1, 0, 0, 0, 94, 1266, 1, 0, 0, 0, - 96, 1371, 1, 0, 0, 0, 98, 1427, 1, 0, 0, 0, 100, 1429, 1, 0, 0, 0, 102, - 1439, 1, 0, 0, 0, 104, 1449, 1, 0, 0, 0, 106, 1462, 1, 0, 0, 0, 108, 1476, - 1, 0, 0, 0, 110, 1490, 1, 0, 0, 0, 112, 1509, 1, 0, 0, 0, 114, 1525, 1, - 0, 0, 0, 116, 1527, 1, 0, 0, 0, 118, 1551, 1, 0, 0, 0, 120, 1561, 1, 0, - 0, 0, 122, 1572, 1, 0, 0, 0, 124, 1574, 1, 0, 0, 0, 126, 1605, 1, 0, 0, - 0, 128, 1654, 1, 0, 0, 0, 130, 1656, 1, 0, 0, 0, 132, 1679, 1, 0, 0, 0, - 134, 1695, 1, 0, 0, 0, 136, 1771, 1, 0, 0, 0, 138, 1778, 1, 0, 0, 0, 140, - 1780, 1, 0, 0, 0, 142, 1799, 1, 0, 0, 0, 144, 1801, 1, 0, 0, 0, 146, 1803, - 1, 0, 0, 0, 148, 1805, 1, 0, 0, 0, 150, 1809, 1, 0, 0, 0, 152, 1811, 1, - 0, 0, 0, 154, 1813, 1, 0, 0, 0, 156, 1816, 1, 0, 0, 0, 158, 1820, 1, 0, - 0, 0, 160, 1822, 1, 0, 0, 0, 162, 1824, 1, 0, 0, 0, 164, 1826, 1, 0, 0, - 0, 166, 1828, 1, 0, 0, 0, 168, 1830, 1, 0, 0, 0, 170, 1832, 1, 0, 0, 0, - 172, 1834, 1, 0, 0, 0, 174, 1836, 1, 0, 0, 0, 176, 1838, 1, 0, 0, 0, 178, - 1840, 1, 0, 0, 0, 180, 1842, 1, 0, 0, 0, 182, 1844, 1, 0, 0, 0, 184, 1846, - 1, 0, 0, 0, 186, 1848, 1, 0, 0, 0, 188, 1850, 1, 0, 0, 0, 190, 1852, 1, - 0, 0, 0, 192, 1854, 1, 0, 0, 0, 194, 1863, 1, 0, 0, 0, 196, 199, 3, 4, - 2, 0, 197, 199, 3, 2, 1, 0, 198, 196, 1, 0, 0, 0, 198, 197, 1, 0, 0, 0, - 199, 202, 1, 0, 0, 0, 200, 198, 1, 0, 0, 0, 200, 201, 1, 0, 0, 0, 201, - 203, 1, 0, 0, 0, 202, 200, 1, 0, 0, 0, 203, 204, 5, 0, 0, 1, 204, 1, 1, - 0, 0, 0, 205, 206, 5, 161, 0, 0, 206, 207, 6, 1, -1, 0, 207, 3, 1, 0, 0, - 0, 208, 210, 5, 2, 0, 0, 209, 208, 1, 0, 0, 0, 210, 213, 1, 0, 0, 0, 211, - 209, 1, 0, 0, 0, 211, 212, 1, 0, 0, 0, 212, 214, 1, 0, 0, 0, 213, 211, - 1, 0, 0, 0, 214, 223, 3, 6, 3, 0, 215, 217, 5, 2, 0, 0, 216, 215, 1, 0, - 0, 0, 217, 218, 1, 0, 0, 0, 218, 216, 1, 0, 0, 0, 218, 219, 1, 0, 0, 0, - 219, 220, 1, 0, 0, 0, 220, 222, 3, 6, 3, 0, 221, 216, 1, 0, 0, 0, 222, - 225, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 223, 224, 1, 0, 0, 0, 224, 229, - 1, 0, 0, 0, 225, 223, 1, 0, 0, 0, 226, 228, 5, 2, 0, 0, 227, 226, 1, 0, - 0, 0, 228, 231, 1, 0, 0, 0, 229, 227, 1, 0, 0, 0, 229, 230, 1, 0, 0, 0, - 230, 5, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 235, 5, 73, 0, 0, 233, 234, - 5, 118, 0, 0, 234, 236, 5, 115, 0, 0, 235, 233, 1, 0, 0, 0, 235, 236, 1, - 0, 0, 0, 236, 238, 1, 0, 0, 0, 237, 232, 1, 0, 0, 0, 237, 238, 1, 0, 0, - 0, 238, 269, 1, 0, 0, 0, 239, 270, 3, 8, 4, 0, 240, 270, 3, 14, 7, 0, 241, - 270, 3, 16, 8, 0, 242, 270, 3, 18, 9, 0, 243, 270, 3, 20, 10, 0, 244, 270, - 3, 22, 11, 0, 245, 270, 3, 24, 12, 0, 246, 270, 3, 26, 13, 0, 247, 270, - 3, 28, 14, 0, 248, 270, 3, 30, 15, 0, 249, 270, 3, 32, 16, 0, 250, 270, - 3, 34, 17, 0, 251, 270, 3, 36, 18, 0, 252, 270, 3, 38, 19, 0, 253, 270, - 3, 40, 20, 0, 254, 270, 3, 42, 21, 0, 255, 270, 3, 44, 22, 0, 256, 270, - 3, 46, 23, 0, 257, 270, 3, 48, 24, 0, 258, 270, 3, 50, 25, 0, 259, 270, - 3, 52, 26, 0, 260, 270, 3, 54, 27, 0, 261, 270, 3, 56, 28, 0, 262, 270, - 3, 58, 29, 0, 263, 270, 3, 60, 30, 0, 264, 270, 3, 62, 31, 0, 265, 270, - 3, 64, 32, 0, 266, 270, 3, 68, 34, 0, 267, 270, 3, 70, 35, 0, 268, 270, - 3, 72, 36, 0, 269, 239, 1, 0, 0, 0, 269, 240, 1, 0, 0, 0, 269, 241, 1, - 0, 0, 0, 269, 242, 1, 0, 0, 0, 269, 243, 1, 0, 0, 0, 269, 244, 1, 0, 0, - 0, 269, 245, 1, 0, 0, 0, 269, 246, 1, 0, 0, 0, 269, 247, 1, 0, 0, 0, 269, - 248, 1, 0, 0, 0, 269, 249, 1, 0, 0, 0, 269, 250, 1, 0, 0, 0, 269, 251, - 1, 0, 0, 0, 269, 252, 1, 0, 0, 0, 269, 253, 1, 0, 0, 0, 269, 254, 1, 0, - 0, 0, 269, 255, 1, 0, 0, 0, 269, 256, 1, 0, 0, 0, 269, 257, 1, 0, 0, 0, - 269, 258, 1, 0, 0, 0, 269, 259, 1, 0, 0, 0, 269, 260, 1, 0, 0, 0, 269, - 261, 1, 0, 0, 0, 269, 262, 1, 0, 0, 0, 269, 263, 1, 0, 0, 0, 269, 264, - 1, 0, 0, 0, 269, 265, 1, 0, 0, 0, 269, 266, 1, 0, 0, 0, 269, 267, 1, 0, - 0, 0, 269, 268, 1, 0, 0, 0, 270, 7, 1, 0, 0, 0, 271, 272, 5, 31, 0, 0, - 272, 274, 5, 134, 0, 0, 273, 275, 5, 111, 0, 0, 274, 273, 1, 0, 0, 0, 274, - 275, 1, 0, 0, 0, 275, 279, 1, 0, 0, 0, 276, 277, 3, 162, 81, 0, 277, 278, - 5, 3, 0, 0, 278, 280, 1, 0, 0, 0, 279, 276, 1, 0, 0, 0, 279, 280, 1, 0, - 0, 0, 280, 281, 1, 0, 0, 0, 281, 292, 3, 164, 82, 0, 282, 283, 5, 125, - 0, 0, 283, 284, 5, 138, 0, 0, 284, 293, 3, 170, 85, 0, 285, 293, 3, 12, - 6, 0, 286, 293, 3, 10, 5, 0, 287, 289, 5, 28, 0, 0, 288, 290, 5, 47, 0, - 0, 289, 288, 1, 0, 0, 0, 289, 290, 1, 0, 0, 0, 290, 291, 1, 0, 0, 0, 291, - 293, 3, 74, 37, 0, 292, 282, 1, 0, 0, 0, 292, 285, 1, 0, 0, 0, 292, 286, - 1, 0, 0, 0, 292, 287, 1, 0, 0, 0, 293, 295, 1, 0, 0, 0, 294, 296, 5, 68, - 0, 0, 295, 294, 1, 0, 0, 0, 295, 296, 1, 0, 0, 0, 296, 298, 1, 0, 0, 0, - 297, 299, 3, 156, 78, 0, 298, 297, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, - 9, 1, 0, 0, 0, 300, 301, 5, 28, 0, 0, 301, 302, 5, 50, 0, 0, 302, 303, - 3, 194, 97, 0, 303, 304, 3, 104, 52, 0, 304, 11, 1, 0, 0, 0, 305, 306, - 5, 28, 0, 0, 306, 307, 3, 104, 52, 0, 307, 13, 1, 0, 0, 0, 308, 315, 5, - 32, 0, 0, 309, 316, 3, 162, 81, 0, 310, 316, 3, 168, 84, 0, 311, 312, 3, - 162, 81, 0, 312, 313, 5, 3, 0, 0, 313, 314, 3, 168, 84, 0, 314, 316, 1, - 0, 0, 0, 315, 309, 1, 0, 0, 0, 315, 310, 1, 0, 0, 0, 315, 311, 1, 0, 0, - 0, 315, 316, 1, 0, 0, 0, 316, 15, 1, 0, 0, 0, 317, 319, 5, 36, 0, 0, 318, - 320, 5, 56, 0, 0, 319, 318, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 321, - 1, 0, 0, 0, 321, 322, 3, 94, 47, 0, 322, 323, 5, 34, 0, 0, 323, 324, 3, - 162, 81, 0, 324, 17, 1, 0, 0, 0, 325, 327, 5, 39, 0, 0, 326, 328, 7, 0, - 0, 0, 327, 326, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 333, 1, 0, 0, 0, - 329, 331, 5, 139, 0, 0, 330, 332, 3, 192, 96, 0, 331, 330, 1, 0, 0, 0, - 331, 332, 1, 0, 0, 0, 332, 334, 1, 0, 0, 0, 333, 329, 1, 0, 0, 0, 333, - 334, 1, 0, 0, 0, 334, 19, 1, 0, 0, 0, 335, 340, 7, 1, 0, 0, 336, 338, 5, - 139, 0, 0, 337, 339, 3, 192, 96, 0, 338, 337, 1, 0, 0, 0, 338, 339, 1, - 0, 0, 0, 339, 341, 1, 0, 0, 0, 340, 336, 1, 0, 0, 0, 340, 341, 1, 0, 0, - 0, 341, 21, 1, 0, 0, 0, 342, 344, 5, 151, 0, 0, 343, 345, 5, 120, 0, 0, - 344, 343, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, - 351, 3, 124, 62, 0, 347, 348, 5, 6, 0, 0, 348, 350, 3, 124, 62, 0, 349, - 347, 1, 0, 0, 0, 350, 353, 1, 0, 0, 0, 351, 349, 1, 0, 0, 0, 351, 352, - 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 351, 1, 0, 0, 0, 354, 342, 1, 0, - 0, 0, 354, 355, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 366, 3, 136, 68, - 0, 357, 359, 5, 141, 0, 0, 358, 360, 5, 30, 0, 0, 359, 358, 1, 0, 0, 0, - 359, 360, 1, 0, 0, 0, 360, 364, 1, 0, 0, 0, 361, 364, 5, 92, 0, 0, 362, - 364, 5, 70, 0, 0, 363, 357, 1, 0, 0, 0, 363, 361, 1, 0, 0, 0, 363, 362, - 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 367, 3, 136, 68, 0, 366, 363, 1, - 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 366, 1, 0, 0, 0, 368, 369, 1, 0, 0, - 0, 369, 380, 1, 0, 0, 0, 370, 371, 5, 113, 0, 0, 371, 372, 5, 41, 0, 0, - 372, 377, 3, 120, 60, 0, 373, 374, 5, 6, 0, 0, 374, 376, 3, 120, 60, 0, - 375, 373, 1, 0, 0, 0, 376, 379, 1, 0, 0, 0, 377, 375, 1, 0, 0, 0, 377, - 378, 1, 0, 0, 0, 378, 381, 1, 0, 0, 0, 379, 377, 1, 0, 0, 0, 380, 370, - 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 388, 1, 0, 0, 0, 382, 383, 5, 100, - 0, 0, 383, 386, 3, 94, 47, 0, 384, 385, 7, 2, 0, 0, 385, 387, 3, 94, 47, - 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 389, 1, 0, 0, 0, 388, - 382, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 23, 1, 0, 0, 0, 390, 392, 5, - 51, 0, 0, 391, 393, 5, 142, 0, 0, 392, 391, 1, 0, 0, 0, 392, 393, 1, 0, - 0, 0, 393, 394, 1, 0, 0, 0, 394, 398, 5, 86, 0, 0, 395, 396, 5, 82, 0, - 0, 396, 397, 5, 105, 0, 0, 397, 399, 5, 72, 0, 0, 398, 395, 1, 0, 0, 0, - 398, 399, 1, 0, 0, 0, 399, 403, 1, 0, 0, 0, 400, 401, 3, 162, 81, 0, 401, - 402, 5, 3, 0, 0, 402, 404, 1, 0, 0, 0, 403, 400, 1, 0, 0, 0, 403, 404, - 1, 0, 0, 0, 404, 405, 1, 0, 0, 0, 405, 406, 3, 178, 89, 0, 406, 407, 5, - 110, 0, 0, 407, 408, 3, 166, 83, 0, 408, 409, 5, 4, 0, 0, 409, 414, 3, - 102, 51, 0, 410, 411, 5, 6, 0, 0, 411, 413, 3, 102, 51, 0, 412, 410, 1, - 0, 0, 0, 413, 416, 1, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 415, 1, 0, 0, - 0, 415, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 420, 5, 5, 0, 0, 418, - 419, 5, 150, 0, 0, 419, 421, 3, 94, 47, 0, 420, 418, 1, 0, 0, 0, 420, 421, - 1, 0, 0, 0, 421, 25, 1, 0, 0, 0, 422, 424, 5, 51, 0, 0, 423, 425, 7, 3, - 0, 0, 424, 423, 1, 0, 0, 0, 424, 425, 1, 0, 0, 0, 425, 426, 1, 0, 0, 0, - 426, 430, 5, 134, 0, 0, 427, 428, 5, 82, 0, 0, 428, 429, 5, 105, 0, 0, - 429, 431, 5, 72, 0, 0, 430, 427, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, - 435, 1, 0, 0, 0, 432, 433, 3, 162, 81, 0, 433, 434, 5, 3, 0, 0, 434, 436, - 1, 0, 0, 0, 435, 432, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, - 0, 0, 437, 456, 3, 166, 83, 0, 438, 439, 5, 4, 0, 0, 439, 446, 3, 74, 37, - 0, 440, 441, 5, 6, 0, 0, 441, 445, 3, 104, 52, 0, 442, 443, 5, 6, 0, 0, - 443, 445, 3, 74, 37, 0, 444, 440, 1, 0, 0, 0, 444, 442, 1, 0, 0, 0, 445, - 448, 1, 0, 0, 0, 446, 444, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 449, - 1, 0, 0, 0, 448, 446, 1, 0, 0, 0, 449, 452, 5, 5, 0, 0, 450, 451, 5, 152, - 0, 0, 451, 453, 5, 153, 0, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, - 0, 453, 457, 1, 0, 0, 0, 454, 455, 5, 34, 0, 0, 455, 457, 3, 64, 32, 0, - 456, 438, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 459, 1, 0, 0, 0, 458, - 460, 3, 156, 78, 0, 459, 458, 1, 0, 0, 0, 459, 460, 1, 0, 0, 0, 460, 27, - 1, 0, 0, 0, 461, 463, 5, 51, 0, 0, 462, 464, 7, 3, 0, 0, 463, 462, 1, 0, - 0, 0, 463, 464, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 469, 5, 140, 0, - 0, 466, 467, 5, 82, 0, 0, 467, 468, 5, 105, 0, 0, 468, 470, 5, 72, 0, 0, - 469, 466, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 474, 1, 0, 0, 0, 471, - 472, 3, 162, 81, 0, 472, 473, 5, 3, 0, 0, 473, 475, 1, 0, 0, 0, 474, 471, - 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 1, 0, 0, 0, 476, 481, 3, 180, - 90, 0, 477, 482, 5, 38, 0, 0, 478, 482, 5, 29, 0, 0, 479, 480, 5, 91, 0, - 0, 480, 482, 5, 108, 0, 0, 481, 477, 1, 0, 0, 0, 481, 478, 1, 0, 0, 0, - 481, 479, 1, 0, 0, 0, 481, 482, 1, 0, 0, 0, 482, 497, 1, 0, 0, 0, 483, - 498, 5, 60, 0, 0, 484, 498, 5, 90, 0, 0, 485, 495, 5, 143, 0, 0, 486, 487, - 5, 108, 0, 0, 487, 492, 3, 172, 86, 0, 488, 489, 5, 6, 0, 0, 489, 491, - 3, 172, 86, 0, 490, 488, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 490, 1, - 0, 0, 0, 492, 493, 1, 0, 0, 0, 493, 496, 1, 0, 0, 0, 494, 492, 1, 0, 0, - 0, 495, 486, 1, 0, 0, 0, 495, 496, 1, 0, 0, 0, 496, 498, 1, 0, 0, 0, 497, - 483, 1, 0, 0, 0, 497, 484, 1, 0, 0, 0, 497, 485, 1, 0, 0, 0, 498, 499, - 1, 0, 0, 0, 499, 503, 5, 110, 0, 0, 500, 501, 3, 162, 81, 0, 501, 502, - 5, 3, 0, 0, 502, 504, 1, 0, 0, 0, 503, 500, 1, 0, 0, 0, 503, 504, 1, 0, - 0, 0, 504, 505, 1, 0, 0, 0, 505, 509, 3, 166, 83, 0, 506, 507, 5, 75, 0, - 0, 507, 508, 5, 65, 0, 0, 508, 510, 5, 130, 0, 0, 509, 506, 1, 0, 0, 0, - 509, 510, 1, 0, 0, 0, 510, 513, 1, 0, 0, 0, 511, 512, 5, 149, 0, 0, 512, - 514, 3, 94, 47, 0, 513, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 515, - 1, 0, 0, 0, 515, 524, 5, 39, 0, 0, 516, 521, 3, 68, 34, 0, 517, 521, 3, - 50, 25, 0, 518, 521, 3, 34, 17, 0, 519, 521, 3, 64, 32, 0, 520, 516, 1, - 0, 0, 0, 520, 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, - 0, 521, 522, 1, 0, 0, 0, 522, 523, 5, 2, 0, 0, 523, 525, 1, 0, 0, 0, 524, - 520, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 524, 1, 0, 0, 0, 526, 527, - 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 529, 5, 67, 0, 0, 529, 29, 1, 0, - 0, 0, 530, 532, 5, 51, 0, 0, 531, 533, 7, 3, 0, 0, 532, 531, 1, 0, 0, 0, - 532, 533, 1, 0, 0, 0, 533, 534, 1, 0, 0, 0, 534, 538, 5, 147, 0, 0, 535, - 536, 5, 82, 0, 0, 536, 537, 5, 105, 0, 0, 537, 539, 5, 72, 0, 0, 538, 535, - 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 543, 1, 0, 0, 0, 540, 541, 3, 162, - 81, 0, 541, 542, 5, 3, 0, 0, 542, 544, 1, 0, 0, 0, 543, 540, 1, 0, 0, 0, - 543, 544, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, 545, 546, 3, 182, 91, 0, 546, - 547, 5, 34, 0, 0, 547, 548, 3, 64, 32, 0, 548, 31, 1, 0, 0, 0, 549, 550, - 5, 51, 0, 0, 550, 551, 5, 148, 0, 0, 551, 555, 5, 134, 0, 0, 552, 553, - 5, 82, 0, 0, 553, 554, 5, 105, 0, 0, 554, 556, 5, 72, 0, 0, 555, 552, 1, - 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 560, 1, 0, 0, 0, 557, 558, 3, 162, - 81, 0, 558, 559, 5, 3, 0, 0, 559, 561, 1, 0, 0, 0, 560, 557, 1, 0, 0, 0, - 560, 561, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 3, 166, 83, 0, 563, - 564, 5, 144, 0, 0, 564, 576, 3, 184, 92, 0, 565, 566, 5, 4, 0, 0, 566, - 571, 3, 150, 75, 0, 567, 568, 5, 6, 0, 0, 568, 570, 3, 150, 75, 0, 569, - 567, 1, 0, 0, 0, 570, 573, 1, 0, 0, 0, 571, 569, 1, 0, 0, 0, 571, 572, - 1, 0, 0, 0, 572, 574, 1, 0, 0, 0, 573, 571, 1, 0, 0, 0, 574, 575, 5, 5, - 0, 0, 575, 577, 1, 0, 0, 0, 576, 565, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, - 577, 33, 1, 0, 0, 0, 578, 580, 3, 116, 58, 0, 579, 578, 1, 0, 0, 0, 579, - 580, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 5, 60, 0, 0, 582, 583, - 5, 77, 0, 0, 583, 586, 3, 118, 59, 0, 584, 585, 5, 150, 0, 0, 585, 587, - 3, 94, 47, 0, 586, 584, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 35, 1, 0, - 0, 0, 588, 590, 3, 116, 58, 0, 589, 588, 1, 0, 0, 0, 589, 590, 1, 0, 0, - 0, 590, 591, 1, 0, 0, 0, 591, 592, 5, 60, 0, 0, 592, 593, 5, 77, 0, 0, - 593, 596, 3, 118, 59, 0, 594, 595, 5, 150, 0, 0, 595, 597, 3, 94, 47, 0, - 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 616, 1, 0, 0, 0, 598, - 599, 5, 113, 0, 0, 599, 600, 5, 41, 0, 0, 600, 605, 3, 120, 60, 0, 601, - 602, 5, 6, 0, 0, 602, 604, 3, 120, 60, 0, 603, 601, 1, 0, 0, 0, 604, 607, - 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, - 0, 0, 607, 605, 1, 0, 0, 0, 608, 598, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, - 609, 610, 1, 0, 0, 0, 610, 611, 5, 100, 0, 0, 611, 614, 3, 94, 47, 0, 612, - 613, 7, 2, 0, 0, 613, 615, 3, 94, 47, 0, 614, 612, 1, 0, 0, 0, 614, 615, - 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 608, 1, 0, 0, 0, 616, 617, 1, 0, - 0, 0, 617, 37, 1, 0, 0, 0, 618, 620, 5, 62, 0, 0, 619, 621, 5, 56, 0, 0, - 620, 619, 1, 0, 0, 0, 620, 621, 1, 0, 0, 0, 621, 622, 1, 0, 0, 0, 622, - 623, 3, 162, 81, 0, 623, 39, 1, 0, 0, 0, 624, 625, 5, 64, 0, 0, 625, 628, - 5, 86, 0, 0, 626, 627, 5, 82, 0, 0, 627, 629, 5, 72, 0, 0, 628, 626, 1, - 0, 0, 0, 628, 629, 1, 0, 0, 0, 629, 633, 1, 0, 0, 0, 630, 631, 3, 162, - 81, 0, 631, 632, 5, 3, 0, 0, 632, 634, 1, 0, 0, 0, 633, 630, 1, 0, 0, 0, - 633, 634, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 3, 178, 89, 0, 636, - 41, 1, 0, 0, 0, 637, 638, 5, 64, 0, 0, 638, 641, 5, 134, 0, 0, 639, 640, - 5, 82, 0, 0, 640, 642, 5, 72, 0, 0, 641, 639, 1, 0, 0, 0, 641, 642, 1, - 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 3, 162, 81, 0, 644, 645, 5, 3, - 0, 0, 645, 647, 1, 0, 0, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, - 647, 648, 1, 0, 0, 0, 648, 649, 3, 166, 83, 0, 649, 43, 1, 0, 0, 0, 650, - 651, 5, 64, 0, 0, 651, 654, 5, 140, 0, 0, 652, 653, 5, 82, 0, 0, 653, 655, - 5, 72, 0, 0, 654, 652, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 659, 1, 0, - 0, 0, 656, 657, 3, 162, 81, 0, 657, 658, 5, 3, 0, 0, 658, 660, 1, 0, 0, - 0, 659, 656, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 661, 1, 0, 0, 0, 661, - 662, 3, 180, 90, 0, 662, 45, 1, 0, 0, 0, 663, 664, 5, 64, 0, 0, 664, 667, - 5, 147, 0, 0, 665, 666, 5, 82, 0, 0, 666, 668, 5, 72, 0, 0, 667, 665, 1, - 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 672, 1, 0, 0, 0, 669, 670, 3, 162, - 81, 0, 670, 671, 5, 3, 0, 0, 671, 673, 1, 0, 0, 0, 672, 669, 1, 0, 0, 0, - 672, 673, 1, 0, 0, 0, 673, 674, 1, 0, 0, 0, 674, 675, 3, 182, 91, 0, 675, - 47, 1, 0, 0, 0, 676, 678, 5, 151, 0, 0, 677, 679, 5, 120, 0, 0, 678, 677, - 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 680, 1, 0, 0, 0, 680, 685, 3, 124, - 62, 0, 681, 682, 5, 6, 0, 0, 682, 684, 3, 124, 62, 0, 683, 681, 1, 0, 0, - 0, 684, 687, 1, 0, 0, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, - 689, 1, 0, 0, 0, 687, 685, 1, 0, 0, 0, 688, 676, 1, 0, 0, 0, 688, 689, - 1, 0, 0, 0, 689, 690, 1, 0, 0, 0, 690, 696, 3, 136, 68, 0, 691, 692, 3, - 138, 69, 0, 692, 693, 3, 136, 68, 0, 693, 695, 1, 0, 0, 0, 694, 691, 1, - 0, 0, 0, 695, 698, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 696, 697, 1, 0, 0, - 0, 697, 709, 1, 0, 0, 0, 698, 696, 1, 0, 0, 0, 699, 700, 5, 113, 0, 0, - 700, 701, 5, 41, 0, 0, 701, 706, 3, 120, 60, 0, 702, 703, 5, 6, 0, 0, 703, - 705, 3, 120, 60, 0, 704, 702, 1, 0, 0, 0, 705, 708, 1, 0, 0, 0, 706, 704, - 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 710, 1, 0, 0, 0, 708, 706, 1, 0, - 0, 0, 709, 699, 1, 0, 0, 0, 709, 710, 1, 0, 0, 0, 710, 717, 1, 0, 0, 0, - 711, 712, 5, 100, 0, 0, 712, 715, 3, 94, 47, 0, 713, 714, 7, 2, 0, 0, 714, - 716, 3, 94, 47, 0, 715, 713, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 718, - 1, 0, 0, 0, 717, 711, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 49, 1, 0, - 0, 0, 719, 721, 3, 116, 58, 0, 720, 719, 1, 0, 0, 0, 720, 721, 1, 0, 0, - 0, 721, 739, 1, 0, 0, 0, 722, 740, 5, 90, 0, 0, 723, 740, 5, 126, 0, 0, - 724, 725, 5, 90, 0, 0, 725, 726, 5, 112, 0, 0, 726, 740, 5, 126, 0, 0, - 727, 728, 5, 90, 0, 0, 728, 729, 5, 112, 0, 0, 729, 740, 5, 129, 0, 0, - 730, 731, 5, 90, 0, 0, 731, 732, 5, 112, 0, 0, 732, 740, 5, 26, 0, 0, 733, - 734, 5, 90, 0, 0, 734, 735, 5, 112, 0, 0, 735, 740, 5, 74, 0, 0, 736, 737, - 5, 90, 0, 0, 737, 738, 5, 112, 0, 0, 738, 740, 5, 83, 0, 0, 739, 722, 1, - 0, 0, 0, 739, 723, 1, 0, 0, 0, 739, 724, 1, 0, 0, 0, 739, 727, 1, 0, 0, - 0, 739, 730, 1, 0, 0, 0, 739, 733, 1, 0, 0, 0, 739, 736, 1, 0, 0, 0, 740, - 741, 1, 0, 0, 0, 741, 745, 5, 93, 0, 0, 742, 743, 3, 162, 81, 0, 743, 744, - 5, 3, 0, 0, 744, 746, 1, 0, 0, 0, 745, 742, 1, 0, 0, 0, 745, 746, 1, 0, - 0, 0, 746, 747, 1, 0, 0, 0, 747, 759, 3, 166, 83, 0, 748, 749, 5, 4, 0, - 0, 749, 754, 3, 172, 86, 0, 750, 751, 5, 6, 0, 0, 751, 753, 3, 172, 86, - 0, 752, 750, 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, 5, 0, 0, 758, 760, 1, 0, 0, 0, 759, 748, 1, 0, 0, 0, 759, 760, 1, 0, - 0, 0, 760, 792, 1, 0, 0, 0, 761, 762, 5, 146, 0, 0, 762, 763, 5, 4, 0, - 0, 763, 768, 3, 94, 47, 0, 764, 765, 5, 6, 0, 0, 765, 767, 3, 94, 47, 0, - 766, 764, 1, 0, 0, 0, 767, 770, 1, 0, 0, 0, 768, 766, 1, 0, 0, 0, 768, - 769, 1, 0, 0, 0, 769, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 786, - 5, 5, 0, 0, 772, 773, 5, 6, 0, 0, 773, 774, 5, 4, 0, 0, 774, 779, 3, 94, - 47, 0, 775, 776, 5, 6, 0, 0, 776, 778, 3, 94, 47, 0, 777, 775, 1, 0, 0, - 0, 778, 781, 1, 0, 0, 0, 779, 777, 1, 0, 0, 0, 779, 780, 1, 0, 0, 0, 780, - 782, 1, 0, 0, 0, 781, 779, 1, 0, 0, 0, 782, 783, 5, 5, 0, 0, 783, 785, - 1, 0, 0, 0, 784, 772, 1, 0, 0, 0, 785, 788, 1, 0, 0, 0, 786, 784, 1, 0, - 0, 0, 786, 787, 1, 0, 0, 0, 787, 793, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, - 789, 793, 3, 64, 32, 0, 790, 791, 5, 57, 0, 0, 791, 793, 5, 146, 0, 0, - 792, 761, 1, 0, 0, 0, 792, 789, 1, 0, 0, 0, 792, 790, 1, 0, 0, 0, 793, - 51, 1, 0, 0, 0, 794, 798, 5, 116, 0, 0, 795, 796, 3, 162, 81, 0, 796, 797, - 5, 3, 0, 0, 797, 799, 1, 0, 0, 0, 798, 795, 1, 0, 0, 0, 798, 799, 1, 0, - 0, 0, 799, 800, 1, 0, 0, 0, 800, 807, 3, 186, 93, 0, 801, 802, 5, 7, 0, - 0, 802, 808, 3, 122, 61, 0, 803, 804, 5, 4, 0, 0, 804, 805, 3, 122, 61, - 0, 805, 806, 5, 5, 0, 0, 806, 808, 1, 0, 0, 0, 807, 801, 1, 0, 0, 0, 807, - 803, 1, 0, 0, 0, 807, 808, 1, 0, 0, 0, 808, 53, 1, 0, 0, 0, 809, 820, 5, - 123, 0, 0, 810, 821, 3, 174, 87, 0, 811, 812, 3, 162, 81, 0, 812, 813, - 5, 3, 0, 0, 813, 815, 1, 0, 0, 0, 814, 811, 1, 0, 0, 0, 814, 815, 1, 0, - 0, 0, 815, 818, 1, 0, 0, 0, 816, 819, 3, 166, 83, 0, 817, 819, 3, 178, - 89, 0, 818, 816, 1, 0, 0, 0, 818, 817, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, - 820, 810, 1, 0, 0, 0, 820, 814, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, - 55, 1, 0, 0, 0, 822, 824, 5, 124, 0, 0, 823, 825, 5, 131, 0, 0, 824, 823, - 1, 0, 0, 0, 824, 825, 1, 0, 0, 0, 825, 826, 1, 0, 0, 0, 826, 827, 3, 188, - 94, 0, 827, 57, 1, 0, 0, 0, 828, 833, 5, 129, 0, 0, 829, 831, 5, 139, 0, - 0, 830, 832, 3, 192, 96, 0, 831, 830, 1, 0, 0, 0, 831, 832, 1, 0, 0, 0, - 832, 834, 1, 0, 0, 0, 833, 829, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, - 840, 1, 0, 0, 0, 835, 837, 5, 138, 0, 0, 836, 838, 5, 131, 0, 0, 837, 836, - 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 841, 3, 188, - 94, 0, 840, 835, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 59, 1, 0, 0, 0, - 842, 843, 5, 131, 0, 0, 843, 844, 3, 188, 94, 0, 844, 61, 1, 0, 0, 0, 845, - 847, 5, 151, 0, 0, 846, 848, 5, 120, 0, 0, 847, 846, 1, 0, 0, 0, 847, 848, - 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 854, 3, 124, 62, 0, 850, 851, 5, - 6, 0, 0, 851, 853, 3, 124, 62, 0, 852, 850, 1, 0, 0, 0, 853, 856, 1, 0, - 0, 0, 854, 852, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 858, 1, 0, 0, 0, - 856, 854, 1, 0, 0, 0, 857, 845, 1, 0, 0, 0, 857, 858, 1, 0, 0, 0, 858, - 859, 1, 0, 0, 0, 859, 870, 3, 136, 68, 0, 860, 861, 5, 113, 0, 0, 861, - 862, 5, 41, 0, 0, 862, 867, 3, 120, 60, 0, 863, 864, 5, 6, 0, 0, 864, 866, - 3, 120, 60, 0, 865, 863, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, - 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 871, 1, 0, 0, 0, 869, 867, 1, 0, 0, - 0, 870, 860, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 878, 1, 0, 0, 0, 872, - 873, 5, 100, 0, 0, 873, 876, 3, 94, 47, 0, 874, 875, 7, 2, 0, 0, 875, 877, - 3, 94, 47, 0, 876, 874, 1, 0, 0, 0, 876, 877, 1, 0, 0, 0, 877, 879, 1, - 0, 0, 0, 878, 872, 1, 0, 0, 0, 878, 879, 1, 0, 0, 0, 879, 63, 1, 0, 0, - 0, 880, 882, 5, 151, 0, 0, 881, 883, 5, 120, 0, 0, 882, 881, 1, 0, 0, 0, - 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 889, 3, 124, 62, 0, 885, - 886, 5, 6, 0, 0, 886, 888, 3, 124, 62, 0, 887, 885, 1, 0, 0, 0, 888, 891, - 1, 0, 0, 0, 889, 887, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 893, 1, 0, - 0, 0, 891, 889, 1, 0, 0, 0, 892, 880, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, - 893, 894, 1, 0, 0, 0, 894, 900, 3, 66, 33, 0, 895, 896, 3, 138, 69, 0, - 896, 897, 3, 66, 33, 0, 897, 899, 1, 0, 0, 0, 898, 895, 1, 0, 0, 0, 899, - 902, 1, 0, 0, 0, 900, 898, 1, 0, 0, 0, 900, 901, 1, 0, 0, 0, 901, 913, - 1, 0, 0, 0, 902, 900, 1, 0, 0, 0, 903, 904, 5, 113, 0, 0, 904, 905, 5, - 41, 0, 0, 905, 910, 3, 120, 60, 0, 906, 907, 5, 6, 0, 0, 907, 909, 3, 120, - 60, 0, 908, 906, 1, 0, 0, 0, 909, 912, 1, 0, 0, 0, 910, 908, 1, 0, 0, 0, - 910, 911, 1, 0, 0, 0, 911, 914, 1, 0, 0, 0, 912, 910, 1, 0, 0, 0, 913, - 903, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 921, 1, 0, 0, 0, 915, 916, - 5, 100, 0, 0, 916, 919, 3, 94, 47, 0, 917, 918, 7, 2, 0, 0, 918, 920, 3, - 94, 47, 0, 919, 917, 1, 0, 0, 0, 919, 920, 1, 0, 0, 0, 920, 922, 1, 0, - 0, 0, 921, 915, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 65, 1, 0, 0, 0, - 923, 925, 5, 132, 0, 0, 924, 926, 7, 4, 0, 0, 925, 924, 1, 0, 0, 0, 925, - 926, 1, 0, 0, 0, 926, 927, 1, 0, 0, 0, 927, 932, 3, 126, 63, 0, 928, 929, - 5, 6, 0, 0, 929, 931, 3, 126, 63, 0, 930, 928, 1, 0, 0, 0, 931, 934, 1, - 0, 0, 0, 932, 930, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 947, 1, 0, 0, - 0, 934, 932, 1, 0, 0, 0, 935, 945, 5, 77, 0, 0, 936, 941, 3, 128, 64, 0, - 937, 938, 5, 6, 0, 0, 938, 940, 3, 128, 64, 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, 946, - 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 946, 3, 130, 65, 0, 945, 936, 1, - 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 948, 1, 0, 0, 0, 947, 935, 1, 0, 0, - 0, 947, 948, 1, 0, 0, 0, 948, 951, 1, 0, 0, 0, 949, 950, 5, 150, 0, 0, - 950, 952, 3, 94, 47, 0, 951, 949, 1, 0, 0, 0, 951, 952, 1, 0, 0, 0, 952, - 967, 1, 0, 0, 0, 953, 954, 5, 80, 0, 0, 954, 955, 5, 41, 0, 0, 955, 960, - 3, 94, 47, 0, 956, 957, 5, 6, 0, 0, 957, 959, 3, 94, 47, 0, 958, 956, 1, - 0, 0, 0, 959, 962, 1, 0, 0, 0, 960, 958, 1, 0, 0, 0, 960, 961, 1, 0, 0, - 0, 961, 965, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 963, 964, 5, 81, 0, 0, 964, - 966, 3, 94, 47, 0, 965, 963, 1, 0, 0, 0, 965, 966, 1, 0, 0, 0, 966, 968, - 1, 0, 0, 0, 967, 953, 1, 0, 0, 0, 967, 968, 1, 0, 0, 0, 968, 998, 1, 0, - 0, 0, 969, 970, 5, 146, 0, 0, 970, 971, 5, 4, 0, 0, 971, 976, 3, 94, 47, - 0, 972, 973, 5, 6, 0, 0, 973, 975, 3, 94, 47, 0, 974, 972, 1, 0, 0, 0, - 975, 978, 1, 0, 0, 0, 976, 974, 1, 0, 0, 0, 976, 977, 1, 0, 0, 0, 977, - 979, 1, 0, 0, 0, 978, 976, 1, 0, 0, 0, 979, 994, 5, 5, 0, 0, 980, 981, - 5, 6, 0, 0, 981, 982, 5, 4, 0, 0, 982, 987, 3, 94, 47, 0, 983, 984, 5, - 6, 0, 0, 984, 986, 3, 94, 47, 0, 985, 983, 1, 0, 0, 0, 986, 989, 1, 0, - 0, 0, 987, 985, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 1, 0, 0, 0, - 989, 987, 1, 0, 0, 0, 990, 991, 5, 5, 0, 0, 991, 993, 1, 0, 0, 0, 992, - 980, 1, 0, 0, 0, 993, 996, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 995, - 1, 0, 0, 0, 995, 998, 1, 0, 0, 0, 996, 994, 1, 0, 0, 0, 997, 923, 1, 0, - 0, 0, 997, 969, 1, 0, 0, 0, 998, 67, 1, 0, 0, 0, 999, 1001, 3, 116, 58, - 0, 1000, 999, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, - 0, 1002, 1013, 5, 143, 0, 0, 1003, 1004, 5, 112, 0, 0, 1004, 1014, 5, 129, - 0, 0, 1005, 1006, 5, 112, 0, 0, 1006, 1014, 5, 26, 0, 0, 1007, 1008, 5, - 112, 0, 0, 1008, 1014, 5, 126, 0, 0, 1009, 1010, 5, 112, 0, 0, 1010, 1014, - 5, 74, 0, 0, 1011, 1012, 5, 112, 0, 0, 1012, 1014, 5, 83, 0, 0, 1013, 1003, - 1, 0, 0, 0, 1013, 1005, 1, 0, 0, 0, 1013, 1007, 1, 0, 0, 0, 1013, 1009, - 1, 0, 0, 0, 1013, 1011, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1015, - 1, 0, 0, 0, 1015, 1016, 3, 118, 59, 0, 1016, 1017, 5, 133, 0, 0, 1017, - 1018, 3, 172, 86, 0, 1018, 1019, 5, 7, 0, 0, 1019, 1027, 3, 94, 47, 0, - 1020, 1021, 5, 6, 0, 0, 1021, 1022, 3, 172, 86, 0, 1022, 1023, 5, 7, 0, - 0, 1023, 1024, 3, 94, 47, 0, 1024, 1026, 1, 0, 0, 0, 1025, 1020, 1, 0, - 0, 0, 1026, 1029, 1, 0, 0, 0, 1027, 1025, 1, 0, 0, 0, 1027, 1028, 1, 0, - 0, 0, 1028, 1032, 1, 0, 0, 0, 1029, 1027, 1, 0, 0, 0, 1030, 1031, 5, 150, - 0, 0, 1031, 1033, 3, 94, 47, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, - 0, 0, 0, 1033, 69, 1, 0, 0, 0, 1034, 1036, 3, 116, 58, 0, 1035, 1034, 1, - 0, 0, 0, 1035, 1036, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1048, 5, - 143, 0, 0, 1038, 1039, 5, 112, 0, 0, 1039, 1049, 5, 129, 0, 0, 1040, 1041, - 5, 112, 0, 0, 1041, 1049, 5, 26, 0, 0, 1042, 1043, 5, 112, 0, 0, 1043, - 1049, 5, 126, 0, 0, 1044, 1045, 5, 112, 0, 0, 1045, 1049, 5, 74, 0, 0, - 1046, 1047, 5, 112, 0, 0, 1047, 1049, 5, 83, 0, 0, 1048, 1038, 1, 0, 0, - 0, 1048, 1040, 1, 0, 0, 0, 1048, 1042, 1, 0, 0, 0, 1048, 1044, 1, 0, 0, - 0, 1048, 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1050, 1, 0, 0, - 0, 1050, 1051, 3, 118, 59, 0, 1051, 1052, 5, 133, 0, 0, 1052, 1053, 3, - 172, 86, 0, 1053, 1054, 5, 7, 0, 0, 1054, 1062, 3, 94, 47, 0, 1055, 1056, - 5, 6, 0, 0, 1056, 1057, 3, 172, 86, 0, 1057, 1058, 5, 7, 0, 0, 1058, 1059, - 3, 94, 47, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1055, 1, 0, 0, 0, 1061, 1064, - 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1067, - 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 5, 150, 0, 0, 1066, 1068, - 3, 94, 47, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1087, - 1, 0, 0, 0, 1069, 1070, 5, 113, 0, 0, 1070, 1071, 5, 41, 0, 0, 1071, 1076, - 3, 120, 60, 0, 1072, 1073, 5, 6, 0, 0, 1073, 1075, 3, 120, 60, 0, 1074, - 1072, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1076, - 1077, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1079, - 1069, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, - 1082, 5, 100, 0, 0, 1082, 1085, 3, 94, 47, 0, 1083, 1084, 7, 2, 0, 0, 1084, - 1086, 3, 94, 47, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, - 1088, 1, 0, 0, 0, 1087, 1079, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, - 71, 1, 0, 0, 0, 1089, 1090, 5, 145, 0, 0, 1090, 73, 1, 0, 0, 0, 1091, 1096, - 3, 172, 86, 0, 1092, 1095, 3, 78, 39, 0, 1093, 1095, 3, 76, 38, 0, 1094, - 1092, 1, 0, 0, 0, 1094, 1093, 1, 0, 0, 0, 1095, 1098, 1, 0, 0, 0, 1096, - 1094, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 75, 1, 0, 0, 0, 1098, 1096, - 1, 0, 0, 0, 1099, 1119, 3, 158, 79, 0, 1100, 1101, 5, 4, 0, 0, 1101, 1103, - 3, 142, 71, 0, 1102, 1104, 3, 194, 97, 0, 1103, 1102, 1, 0, 0, 0, 1103, - 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1106, 5, 5, 0, 0, 1106, - 1120, 1, 0, 0, 0, 1107, 1108, 5, 4, 0, 0, 1108, 1110, 3, 142, 71, 0, 1109, - 1111, 3, 194, 97, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, - 1112, 1, 0, 0, 0, 1112, 1113, 5, 6, 0, 0, 1113, 1115, 3, 142, 71, 0, 1114, - 1116, 3, 194, 97, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, - 1117, 1, 0, 0, 0, 1117, 1118, 5, 5, 0, 0, 1118, 1120, 1, 0, 0, 0, 1119, - 1100, 1, 0, 0, 0, 1119, 1107, 1, 0, 0, 0, 1119, 1120, 1, 0, 0, 0, 1120, - 77, 1, 0, 0, 0, 1121, 1122, 5, 50, 0, 0, 1122, 1124, 3, 158, 79, 0, 1123, - 1121, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1139, 1, 0, 0, 0, 1125, - 1140, 3, 80, 40, 0, 1126, 1140, 3, 82, 41, 0, 1127, 1140, 3, 84, 42, 0, - 1128, 1140, 3, 86, 43, 0, 1129, 1130, 5, 142, 0, 0, 1130, 1140, 3, 92, - 46, 0, 1131, 1132, 5, 45, 0, 0, 1132, 1133, 5, 4, 0, 0, 1133, 1134, 3, - 94, 47, 0, 1134, 1135, 5, 5, 0, 0, 1135, 1140, 1, 0, 0, 0, 1136, 1140, - 3, 88, 44, 0, 1137, 1138, 5, 46, 0, 0, 1138, 1140, 3, 174, 87, 0, 1139, - 1125, 1, 0, 0, 0, 1139, 1126, 1, 0, 0, 0, 1139, 1127, 1, 0, 0, 0, 1139, - 1128, 1, 0, 0, 0, 1139, 1129, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, - 1136, 1, 0, 0, 0, 1139, 1137, 1, 0, 0, 0, 1140, 79, 1, 0, 0, 0, 1141, 1142, - 5, 117, 0, 0, 1142, 1144, 5, 97, 0, 0, 1143, 1145, 7, 5, 0, 0, 1144, 1143, - 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1148, - 3, 92, 46, 0, 1147, 1149, 5, 37, 0, 0, 1148, 1147, 1, 0, 0, 0, 1148, 1149, - 1, 0, 0, 0, 1149, 81, 1, 0, 0, 0, 1150, 1151, 3, 96, 48, 0, 1151, 83, 1, - 0, 0, 0, 1152, 1153, 5, 105, 0, 0, 1153, 1154, 5, 107, 0, 0, 1154, 1155, - 3, 92, 46, 0, 1155, 85, 1, 0, 0, 0, 1156, 1157, 5, 107, 0, 0, 1157, 1158, - 3, 92, 46, 0, 1158, 87, 1, 0, 0, 0, 1159, 1171, 5, 57, 0, 0, 1160, 1172, - 3, 90, 45, 0, 1161, 1162, 5, 4, 0, 0, 1162, 1163, 3, 94, 47, 0, 1163, 1164, - 5, 5, 0, 0, 1164, 1172, 1, 0, 0, 0, 1165, 1166, 5, 103, 0, 0, 1166, 1167, - 5, 4, 0, 0, 1167, 1168, 3, 94, 47, 0, 1168, 1169, 5, 5, 0, 0, 1169, 1172, - 1, 0, 0, 0, 1170, 1172, 3, 194, 97, 0, 1171, 1160, 1, 0, 0, 0, 1171, 1161, - 1, 0, 0, 0, 1171, 1165, 1, 0, 0, 0, 1171, 1170, 1, 0, 0, 0, 1172, 1179, - 1, 0, 0, 0, 1173, 1175, 5, 1, 0, 0, 1174, 1176, 3, 194, 97, 0, 1175, 1174, - 1, 0, 0, 0, 1176, 1177, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, - 1, 0, 0, 0, 1178, 1180, 1, 0, 0, 0, 1179, 1173, 1, 0, 0, 0, 1179, 1180, - 1, 0, 0, 0, 1180, 89, 1, 0, 0, 0, 1181, 1184, 3, 142, 71, 0, 1182, 1184, - 3, 144, 72, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1182, 1, 0, 0, 0, 1184, 91, - 1, 0, 0, 0, 1185, 1186, 5, 110, 0, 0, 1186, 1187, 5, 49, 0, 0, 1187, 1189, - 7, 6, 0, 0, 1188, 1185, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 93, 1, - 0, 0, 0, 1190, 1191, 6, 47, -1, 0, 1191, 1267, 3, 144, 72, 0, 1192, 1267, - 5, 155, 0, 0, 1193, 1194, 3, 162, 81, 0, 1194, 1195, 5, 3, 0, 0, 1195, - 1197, 1, 0, 0, 0, 1196, 1193, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, - 1198, 1, 0, 0, 0, 1198, 1199, 3, 166, 83, 0, 1199, 1200, 5, 3, 0, 0, 1200, - 1202, 1, 0, 0, 0, 1201, 1196, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, - 1203, 1, 0, 0, 0, 1203, 1267, 3, 172, 86, 0, 1204, 1205, 3, 146, 73, 0, - 1205, 1206, 3, 94, 47, 21, 1206, 1267, 1, 0, 0, 0, 1207, 1208, 3, 160, - 80, 0, 1208, 1221, 5, 4, 0, 0, 1209, 1211, 5, 63, 0, 0, 1210, 1209, 1, - 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1217, 3, - 94, 47, 0, 1213, 1214, 5, 6, 0, 0, 1214, 1216, 3, 94, 47, 0, 1215, 1213, - 1, 0, 0, 0, 1216, 1219, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1217, 1218, - 1, 0, 0, 0, 1218, 1222, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1220, 1222, - 5, 8, 0, 0, 1221, 1210, 1, 0, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, - 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 1224, 5, 5, 0, 0, 1224, 1267, - 1, 0, 0, 0, 1225, 1226, 5, 4, 0, 0, 1226, 1227, 3, 94, 47, 0, 1227, 1228, - 5, 5, 0, 0, 1228, 1267, 1, 0, 0, 0, 1229, 1230, 5, 44, 0, 0, 1230, 1231, - 5, 4, 0, 0, 1231, 1232, 3, 94, 47, 0, 1232, 1233, 5, 34, 0, 0, 1233, 1234, - 3, 76, 38, 0, 1234, 1235, 5, 5, 0, 0, 1235, 1267, 1, 0, 0, 0, 1236, 1238, - 5, 105, 0, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, - 1, 0, 0, 0, 1239, 1241, 5, 72, 0, 0, 1240, 1237, 1, 0, 0, 0, 1240, 1241, - 1, 0, 0, 0, 1241, 1242, 1, 0, 0, 0, 1242, 1243, 5, 4, 0, 0, 1243, 1244, - 3, 64, 32, 0, 1244, 1245, 5, 5, 0, 0, 1245, 1267, 1, 0, 0, 0, 1246, 1248, - 5, 43, 0, 0, 1247, 1249, 3, 94, 47, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, - 1, 0, 0, 0, 1249, 1255, 1, 0, 0, 0, 1250, 1251, 5, 149, 0, 0, 1251, 1252, - 3, 94, 47, 0, 1252, 1253, 5, 137, 0, 0, 1253, 1254, 3, 94, 47, 0, 1254, - 1256, 1, 0, 0, 0, 1255, 1250, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, - 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, - 1260, 5, 66, 0, 0, 1260, 1262, 3, 94, 47, 0, 1261, 1259, 1, 0, 0, 0, 1261, - 1262, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 5, 67, 0, 0, 1264, - 1267, 1, 0, 0, 0, 1265, 1267, 3, 100, 50, 0, 1266, 1190, 1, 0, 0, 0, 1266, - 1192, 1, 0, 0, 0, 1266, 1201, 1, 0, 0, 0, 1266, 1204, 1, 0, 0, 0, 1266, - 1207, 1, 0, 0, 0, 1266, 1225, 1, 0, 0, 0, 1266, 1229, 1, 0, 0, 0, 1266, - 1240, 1, 0, 0, 0, 1266, 1246, 1, 0, 0, 0, 1266, 1265, 1, 0, 0, 0, 1267, - 1368, 1, 0, 0, 0, 1268, 1269, 10, 20, 0, 0, 1269, 1270, 5, 12, 0, 0, 1270, - 1367, 3, 94, 47, 21, 1271, 1272, 10, 19, 0, 0, 1272, 1273, 7, 7, 0, 0, - 1273, 1367, 3, 94, 47, 20, 1274, 1275, 10, 18, 0, 0, 1275, 1276, 7, 8, - 0, 0, 1276, 1367, 3, 94, 47, 19, 1277, 1278, 10, 17, 0, 0, 1278, 1279, - 7, 9, 0, 0, 1279, 1367, 3, 94, 47, 18, 1280, 1281, 10, 16, 0, 0, 1281, - 1282, 7, 10, 0, 0, 1282, 1367, 3, 94, 47, 17, 1283, 1296, 10, 15, 0, 0, - 1284, 1297, 5, 7, 0, 0, 1285, 1297, 5, 23, 0, 0, 1286, 1297, 5, 24, 0, - 0, 1287, 1297, 5, 25, 0, 0, 1288, 1297, 5, 94, 0, 0, 1289, 1290, 5, 94, - 0, 0, 1290, 1297, 5, 105, 0, 0, 1291, 1297, 5, 85, 0, 0, 1292, 1297, 5, - 99, 0, 0, 1293, 1297, 5, 79, 0, 0, 1294, 1297, 5, 101, 0, 0, 1295, 1297, - 5, 122, 0, 0, 1296, 1284, 1, 0, 0, 0, 1296, 1285, 1, 0, 0, 0, 1296, 1286, - 1, 0, 0, 0, 1296, 1287, 1, 0, 0, 0, 1296, 1288, 1, 0, 0, 0, 1296, 1289, - 1, 0, 0, 0, 1296, 1291, 1, 0, 0, 0, 1296, 1292, 1, 0, 0, 0, 1296, 1293, - 1, 0, 0, 0, 1296, 1294, 1, 0, 0, 0, 1296, 1295, 1, 0, 0, 0, 1297, 1298, - 1, 0, 0, 0, 1298, 1367, 3, 94, 47, 16, 1299, 1300, 10, 14, 0, 0, 1300, - 1301, 5, 33, 0, 0, 1301, 1367, 3, 94, 47, 15, 1302, 1303, 10, 13, 0, 0, - 1303, 1304, 5, 112, 0, 0, 1304, 1367, 3, 94, 47, 14, 1305, 1306, 10, 6, - 0, 0, 1306, 1308, 5, 94, 0, 0, 1307, 1309, 5, 105, 0, 0, 1308, 1307, 1, - 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1367, 3, - 94, 47, 7, 1311, 1313, 10, 5, 0, 0, 1312, 1314, 5, 105, 0, 0, 1313, 1312, - 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1316, - 5, 40, 0, 0, 1316, 1317, 3, 94, 47, 0, 1317, 1318, 5, 33, 0, 0, 1318, 1319, - 3, 94, 47, 6, 1319, 1367, 1, 0, 0, 0, 1320, 1321, 10, 9, 0, 0, 1321, 1322, - 5, 46, 0, 0, 1322, 1367, 3, 174, 87, 0, 1323, 1325, 10, 8, 0, 0, 1324, - 1326, 5, 105, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, - 1327, 1, 0, 0, 0, 1327, 1328, 7, 11, 0, 0, 1328, 1331, 3, 94, 47, 0, 1329, - 1330, 5, 69, 0, 0, 1330, 1332, 3, 94, 47, 0, 1331, 1329, 1, 0, 0, 0, 1331, - 1332, 1, 0, 0, 0, 1332, 1367, 1, 0, 0, 0, 1333, 1338, 10, 7, 0, 0, 1334, - 1339, 5, 95, 0, 0, 1335, 1339, 5, 106, 0, 0, 1336, 1337, 5, 105, 0, 0, - 1337, 1339, 5, 107, 0, 0, 1338, 1334, 1, 0, 0, 0, 1338, 1335, 1, 0, 0, - 0, 1338, 1336, 1, 0, 0, 0, 1339, 1367, 1, 0, 0, 0, 1340, 1342, 10, 4, 0, - 0, 1341, 1343, 5, 105, 0, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, - 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1364, 5, 85, 0, 0, 1345, 1355, 5, 4, - 0, 0, 1346, 1356, 3, 64, 32, 0, 1347, 1352, 3, 94, 47, 0, 1348, 1349, 5, - 6, 0, 0, 1349, 1351, 3, 94, 47, 0, 1350, 1348, 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, 1346, 1, 0, 0, 0, 1355, 1347, - 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1365, - 5, 5, 0, 0, 1358, 1359, 3, 162, 81, 0, 1359, 1360, 5, 3, 0, 0, 1360, 1362, - 1, 0, 0, 0, 1361, 1358, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1363, - 1, 0, 0, 0, 1363, 1365, 3, 166, 83, 0, 1364, 1345, 1, 0, 0, 0, 1364, 1361, - 1, 0, 0, 0, 1365, 1367, 1, 0, 0, 0, 1366, 1268, 1, 0, 0, 0, 1366, 1271, - 1, 0, 0, 0, 1366, 1274, 1, 0, 0, 0, 1366, 1277, 1, 0, 0, 0, 1366, 1280, - 1, 0, 0, 0, 1366, 1283, 1, 0, 0, 0, 1366, 1299, 1, 0, 0, 0, 1366, 1302, - 1, 0, 0, 0, 1366, 1305, 1, 0, 0, 0, 1366, 1311, 1, 0, 0, 0, 1366, 1320, - 1, 0, 0, 0, 1366, 1323, 1, 0, 0, 0, 1366, 1333, 1, 0, 0, 0, 1366, 1340, - 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, - 1, 0, 0, 0, 1369, 95, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1375, 5, - 121, 0, 0, 1372, 1373, 3, 162, 81, 0, 1373, 1374, 5, 3, 0, 0, 1374, 1376, - 1, 0, 0, 0, 1375, 1372, 1, 0, 0, 0, 1375, 1376, 1, 0, 0, 0, 1376, 1377, - 1, 0, 0, 0, 1377, 1389, 3, 176, 88, 0, 1378, 1379, 5, 4, 0, 0, 1379, 1384, - 3, 98, 49, 0, 1380, 1381, 5, 6, 0, 0, 1381, 1383, 3, 98, 49, 0, 1382, 1380, - 1, 0, 0, 0, 1383, 1386, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1385, - 1, 0, 0, 0, 1385, 1387, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1387, 1388, - 5, 5, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1378, 1, 0, 0, 0, 1389, 1390, - 1, 0, 0, 0, 1390, 1409, 1, 0, 0, 0, 1391, 1392, 5, 110, 0, 0, 1392, 1401, - 7, 12, 0, 0, 1393, 1394, 5, 133, 0, 0, 1394, 1402, 5, 107, 0, 0, 1395, - 1396, 5, 133, 0, 0, 1396, 1402, 5, 57, 0, 0, 1397, 1402, 5, 42, 0, 0, 1398, - 1402, 5, 127, 0, 0, 1399, 1400, 5, 104, 0, 0, 1400, 1402, 5, 27, 0, 0, - 1401, 1393, 1, 0, 0, 0, 1401, 1395, 1, 0, 0, 0, 1401, 1397, 1, 0, 0, 0, - 1401, 1398, 1, 0, 0, 0, 1401, 1399, 1, 0, 0, 0, 1402, 1406, 1, 0, 0, 0, - 1403, 1404, 5, 101, 0, 0, 1404, 1406, 3, 158, 79, 0, 1405, 1391, 1, 0, - 0, 0, 1405, 1403, 1, 0, 0, 0, 1406, 1408, 1, 0, 0, 0, 1407, 1405, 1, 0, - 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, - 0, 0, 1410, 1425, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1414, 5, 105, - 0, 0, 1413, 1412, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1415, 1, 0, - 0, 0, 1415, 1420, 5, 58, 0, 0, 1416, 1417, 5, 88, 0, 0, 1417, 1421, 5, - 59, 0, 0, 1418, 1419, 5, 88, 0, 0, 1419, 1421, 5, 84, 0, 0, 1420, 1416, - 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, 1423, - 1, 0, 0, 0, 1422, 1424, 5, 68, 0, 0, 1423, 1422, 1, 0, 0, 0, 1423, 1424, - 1, 0, 0, 0, 1424, 1426, 1, 0, 0, 0, 1425, 1413, 1, 0, 0, 0, 1425, 1426, - 1, 0, 0, 0, 1426, 97, 1, 0, 0, 0, 1427, 1428, 3, 158, 79, 0, 1428, 99, - 1, 0, 0, 0, 1429, 1430, 5, 119, 0, 0, 1430, 1435, 5, 4, 0, 0, 1431, 1436, - 5, 83, 0, 0, 1432, 1433, 7, 13, 0, 0, 1433, 1434, 5, 6, 0, 0, 1434, 1436, - 3, 148, 74, 0, 1435, 1431, 1, 0, 0, 0, 1435, 1432, 1, 0, 0, 0, 1436, 1437, - 1, 0, 0, 0, 1437, 1438, 5, 5, 0, 0, 1438, 101, 1, 0, 0, 0, 1439, 1442, - 3, 172, 86, 0, 1440, 1441, 5, 46, 0, 0, 1441, 1443, 3, 174, 87, 0, 1442, - 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1445, 1, 0, 0, 0, 1444, - 1446, 7, 5, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, - 103, 1, 0, 0, 0, 1447, 1448, 5, 50, 0, 0, 1448, 1450, 3, 158, 79, 0, 1449, - 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1460, 1, 0, 0, 0, 1451, - 1461, 3, 106, 53, 0, 1452, 1461, 3, 112, 56, 0, 1453, 1461, 3, 110, 55, - 0, 1454, 1455, 5, 45, 0, 0, 1455, 1456, 5, 4, 0, 0, 1456, 1457, 3, 94, - 47, 0, 1457, 1458, 5, 5, 0, 0, 1458, 1461, 1, 0, 0, 0, 1459, 1461, 3, 108, - 54, 0, 1460, 1451, 1, 0, 0, 0, 1460, 1452, 1, 0, 0, 0, 1460, 1453, 1, 0, - 0, 0, 1460, 1454, 1, 0, 0, 0, 1460, 1459, 1, 0, 0, 0, 1461, 105, 1, 0, - 0, 0, 1462, 1463, 5, 117, 0, 0, 1463, 1464, 5, 97, 0, 0, 1464, 1465, 5, - 4, 0, 0, 1465, 1470, 3, 102, 51, 0, 1466, 1467, 5, 6, 0, 0, 1467, 1469, - 3, 102, 51, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1472, 1, 0, 0, 0, 1470, 1468, - 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1470, - 1, 0, 0, 0, 1473, 1474, 5, 5, 0, 0, 1474, 1475, 3, 92, 46, 0, 1475, 107, - 1, 0, 0, 0, 1476, 1477, 5, 76, 0, 0, 1477, 1478, 5, 97, 0, 0, 1478, 1479, - 5, 4, 0, 0, 1479, 1484, 3, 114, 57, 0, 1480, 1481, 5, 6, 0, 0, 1481, 1483, - 3, 114, 57, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, - 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1487, 1, 0, 0, 0, 1486, 1484, - 1, 0, 0, 0, 1487, 1488, 5, 5, 0, 0, 1488, 1489, 3, 96, 48, 0, 1489, 109, - 1, 0, 0, 0, 1490, 1492, 5, 142, 0, 0, 1491, 1493, 5, 97, 0, 0, 1492, 1491, - 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1495, 1, 0, 0, 0, 1494, 1496, - 3, 158, 79, 0, 1495, 1494, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1497, - 1, 0, 0, 0, 1497, 1498, 5, 4, 0, 0, 1498, 1503, 3, 102, 51, 0, 1499, 1500, - 5, 6, 0, 0, 1500, 1502, 3, 102, 51, 0, 1501, 1499, 1, 0, 0, 0, 1502, 1505, - 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1506, - 1, 0, 0, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1507, 5, 5, 0, 0, 1507, 1508, - 3, 92, 46, 0, 1508, 111, 1, 0, 0, 0, 1509, 1511, 5, 97, 0, 0, 1510, 1512, - 3, 158, 79, 0, 1511, 1510, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, - 1, 0, 0, 0, 1513, 1514, 5, 4, 0, 0, 1514, 1519, 3, 102, 51, 0, 1515, 1516, - 5, 6, 0, 0, 1516, 1518, 3, 102, 51, 0, 1517, 1515, 1, 0, 0, 0, 1518, 1521, - 1, 0, 0, 0, 1519, 1517, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, - 1, 0, 0, 0, 1521, 1519, 1, 0, 0, 0, 1522, 1523, 5, 5, 0, 0, 1523, 1524, - 3, 92, 46, 0, 1524, 113, 1, 0, 0, 0, 1525, 1526, 3, 172, 86, 0, 1526, 115, - 1, 0, 0, 0, 1527, 1529, 5, 151, 0, 0, 1528, 1530, 5, 120, 0, 0, 1529, 1528, - 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, - 3, 140, 70, 0, 1532, 1533, 5, 34, 0, 0, 1533, 1534, 5, 4, 0, 0, 1534, 1535, - 3, 64, 32, 0, 1535, 1545, 5, 5, 0, 0, 1536, 1537, 5, 6, 0, 0, 1537, 1538, - 3, 140, 70, 0, 1538, 1539, 5, 34, 0, 0, 1539, 1540, 5, 4, 0, 0, 1540, 1541, - 3, 64, 32, 0, 1541, 1542, 5, 5, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1536, - 1, 0, 0, 0, 1544, 1547, 1, 0, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1546, - 1, 0, 0, 0, 1546, 117, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1548, 1549, - 3, 162, 81, 0, 1549, 1550, 5, 3, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, 1548, - 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1559, - 3, 166, 83, 0, 1554, 1555, 5, 87, 0, 0, 1555, 1556, 5, 41, 0, 0, 1556, - 1560, 3, 178, 89, 0, 1557, 1558, 5, 105, 0, 0, 1558, 1560, 5, 87, 0, 0, - 1559, 1554, 1, 0, 0, 0, 1559, 1557, 1, 0, 0, 0, 1559, 1560, 1, 0, 0, 0, - 1560, 119, 1, 0, 0, 0, 1561, 1564, 3, 94, 47, 0, 1562, 1563, 5, 46, 0, - 0, 1563, 1565, 3, 174, 87, 0, 1564, 1562, 1, 0, 0, 0, 1564, 1565, 1, 0, - 0, 0, 1565, 1567, 1, 0, 0, 0, 1566, 1568, 7, 5, 0, 0, 1567, 1566, 1, 0, - 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 121, 1, 0, 0, 0, 1569, 1573, 3, 142, - 71, 0, 1570, 1573, 3, 158, 79, 0, 1571, 1573, 5, 156, 0, 0, 1572, 1569, - 1, 0, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1571, 1, 0, 0, 0, 1573, 123, - 1, 0, 0, 0, 1574, 1586, 3, 166, 83, 0, 1575, 1576, 5, 4, 0, 0, 1576, 1581, - 3, 172, 86, 0, 1577, 1578, 5, 6, 0, 0, 1578, 1580, 3, 172, 86, 0, 1579, - 1577, 1, 0, 0, 0, 1580, 1583, 1, 0, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, - 1582, 1, 0, 0, 0, 1582, 1584, 1, 0, 0, 0, 1583, 1581, 1, 0, 0, 0, 1584, - 1585, 5, 5, 0, 0, 1585, 1587, 1, 0, 0, 0, 1586, 1575, 1, 0, 0, 0, 1586, - 1587, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, 1589, 5, 34, 0, 0, 1589, - 1590, 5, 4, 0, 0, 1590, 1591, 3, 64, 32, 0, 1591, 1592, 5, 5, 0, 0, 1592, - 125, 1, 0, 0, 0, 1593, 1606, 5, 8, 0, 0, 1594, 1595, 3, 166, 83, 0, 1595, - 1596, 5, 3, 0, 0, 1596, 1597, 5, 8, 0, 0, 1597, 1606, 1, 0, 0, 0, 1598, - 1603, 3, 94, 47, 0, 1599, 1601, 5, 34, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, - 1601, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1604, 3, 152, 76, 0, 1603, - 1600, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, - 1593, 1, 0, 0, 0, 1605, 1594, 1, 0, 0, 0, 1605, 1598, 1, 0, 0, 0, 1606, - 127, 1, 0, 0, 0, 1607, 1608, 3, 162, 81, 0, 1608, 1609, 5, 3, 0, 0, 1609, - 1611, 1, 0, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, - 1612, 1, 0, 0, 0, 1612, 1617, 3, 166, 83, 0, 1613, 1615, 5, 34, 0, 0, 1614, - 1613, 1, 0, 0, 0, 1614, 1615, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, - 1618, 3, 190, 95, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1618, 1, 0, 0, 0, 1618, - 1624, 1, 0, 0, 0, 1619, 1620, 5, 87, 0, 0, 1620, 1621, 5, 41, 0, 0, 1621, - 1625, 3, 178, 89, 0, 1622, 1623, 5, 105, 0, 0, 1623, 1625, 5, 87, 0, 0, - 1624, 1619, 1, 0, 0, 0, 1624, 1622, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, - 1625, 1655, 1, 0, 0, 0, 1626, 1636, 5, 4, 0, 0, 1627, 1632, 3, 128, 64, - 0, 1628, 1629, 5, 6, 0, 0, 1629, 1631, 3, 128, 64, 0, 1630, 1628, 1, 0, - 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, - 0, 0, 1633, 1637, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1637, 3, 130, - 65, 0, 1636, 1627, 1, 0, 0, 0, 1636, 1635, 1, 0, 0, 0, 1637, 1638, 1, 0, - 0, 0, 1638, 1643, 5, 5, 0, 0, 1639, 1641, 5, 34, 0, 0, 1640, 1639, 1, 0, - 0, 0, 1640, 1641, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1644, 3, 190, - 95, 0, 1643, 1640, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1655, 1, 0, - 0, 0, 1645, 1646, 5, 4, 0, 0, 1646, 1647, 3, 64, 32, 0, 1647, 1652, 5, - 5, 0, 0, 1648, 1650, 5, 34, 0, 0, 1649, 1648, 1, 0, 0, 0, 1649, 1650, 1, - 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1653, 3, 190, 95, 0, 1652, 1649, - 1, 0, 0, 0, 1652, 1653, 1, 0, 0, 0, 1653, 1655, 1, 0, 0, 0, 1654, 1610, - 1, 0, 0, 0, 1654, 1626, 1, 0, 0, 0, 1654, 1645, 1, 0, 0, 0, 1655, 129, - 1, 0, 0, 0, 1656, 1663, 3, 128, 64, 0, 1657, 1658, 3, 132, 66, 0, 1658, - 1659, 3, 128, 64, 0, 1659, 1660, 3, 134, 67, 0, 1660, 1662, 1, 0, 0, 0, - 1661, 1657, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, - 1663, 1664, 1, 0, 0, 0, 1664, 131, 1, 0, 0, 0, 1665, 1663, 1, 0, 0, 0, - 1666, 1680, 5, 6, 0, 0, 1667, 1669, 5, 102, 0, 0, 1668, 1667, 1, 0, 0, - 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1672, 5, 98, 0, - 0, 1671, 1673, 5, 114, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, - 0, 0, 1673, 1677, 1, 0, 0, 0, 1674, 1677, 5, 89, 0, 0, 1675, 1677, 5, 52, - 0, 0, 1676, 1670, 1, 0, 0, 0, 1676, 1674, 1, 0, 0, 0, 1676, 1675, 1, 0, - 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1680, 5, 96, - 0, 0, 1679, 1666, 1, 0, 0, 0, 1679, 1668, 1, 0, 0, 0, 1680, 133, 1, 0, - 0, 0, 1681, 1682, 5, 110, 0, 0, 1682, 1696, 3, 94, 47, 0, 1683, 1684, 5, - 144, 0, 0, 1684, 1685, 5, 4, 0, 0, 1685, 1690, 3, 172, 86, 0, 1686, 1687, - 5, 6, 0, 0, 1687, 1689, 3, 172, 86, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1692, - 1, 0, 0, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1693, - 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1693, 1694, 5, 5, 0, 0, 1694, 1696, - 1, 0, 0, 0, 1695, 1681, 1, 0, 0, 0, 1695, 1683, 1, 0, 0, 0, 1695, 1696, - 1, 0, 0, 0, 1696, 135, 1, 0, 0, 0, 1697, 1699, 5, 132, 0, 0, 1698, 1700, - 7, 4, 0, 0, 1699, 1698, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 1701, - 1, 0, 0, 0, 1701, 1706, 3, 126, 63, 0, 1702, 1703, 5, 6, 0, 0, 1703, 1705, - 3, 126, 63, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1708, 1, 0, 0, 0, 1706, 1704, - 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1721, 1, 0, 0, 0, 1708, 1706, - 1, 0, 0, 0, 1709, 1719, 5, 77, 0, 0, 1710, 1715, 3, 128, 64, 0, 1711, 1712, - 5, 6, 0, 0, 1712, 1714, 3, 128, 64, 0, 1713, 1711, 1, 0, 0, 0, 1714, 1717, - 1, 0, 0, 0, 1715, 1713, 1, 0, 0, 0, 1715, 1716, 1, 0, 0, 0, 1716, 1720, - 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1718, 1720, 3, 130, 65, 0, 1719, 1710, - 1, 0, 0, 0, 1719, 1718, 1, 0, 0, 0, 1720, 1722, 1, 0, 0, 0, 1721, 1709, - 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1725, 1, 0, 0, 0, 1723, 1724, - 5, 150, 0, 0, 1724, 1726, 3, 94, 47, 0, 1725, 1723, 1, 0, 0, 0, 1725, 1726, - 1, 0, 0, 0, 1726, 1741, 1, 0, 0, 0, 1727, 1728, 5, 80, 0, 0, 1728, 1729, - 5, 41, 0, 0, 1729, 1734, 3, 94, 47, 0, 1730, 1731, 5, 6, 0, 0, 1731, 1733, - 3, 94, 47, 0, 1732, 1730, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1732, - 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1739, 1, 0, 0, 0, 1736, 1734, - 1, 0, 0, 0, 1737, 1738, 5, 81, 0, 0, 1738, 1740, 3, 94, 47, 0, 1739, 1737, - 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1727, - 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1772, 1, 0, 0, 0, 1743, 1744, - 5, 146, 0, 0, 1744, 1745, 5, 4, 0, 0, 1745, 1750, 3, 94, 47, 0, 1746, 1747, - 5, 6, 0, 0, 1747, 1749, 3, 94, 47, 0, 1748, 1746, 1, 0, 0, 0, 1749, 1752, - 1, 0, 0, 0, 1750, 1748, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1753, - 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1753, 1768, 5, 5, 0, 0, 1754, 1755, - 5, 6, 0, 0, 1755, 1756, 5, 4, 0, 0, 1756, 1761, 3, 94, 47, 0, 1757, 1758, - 5, 6, 0, 0, 1758, 1760, 3, 94, 47, 0, 1759, 1757, 1, 0, 0, 0, 1760, 1763, - 1, 0, 0, 0, 1761, 1759, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1764, - 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1764, 1765, 5, 5, 0, 0, 1765, 1767, - 1, 0, 0, 0, 1766, 1754, 1, 0, 0, 0, 1767, 1770, 1, 0, 0, 0, 1768, 1766, - 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1768, - 1, 0, 0, 0, 1771, 1697, 1, 0, 0, 0, 1771, 1743, 1, 0, 0, 0, 1772, 137, - 1, 0, 0, 0, 1773, 1779, 5, 141, 0, 0, 1774, 1775, 5, 141, 0, 0, 1775, 1779, - 5, 30, 0, 0, 1776, 1779, 5, 92, 0, 0, 1777, 1779, 5, 70, 0, 0, 1778, 1773, - 1, 0, 0, 0, 1778, 1774, 1, 0, 0, 0, 1778, 1776, 1, 0, 0, 0, 1778, 1777, - 1, 0, 0, 0, 1779, 139, 1, 0, 0, 0, 1780, 1792, 3, 166, 83, 0, 1781, 1782, - 5, 4, 0, 0, 1782, 1787, 3, 172, 86, 0, 1783, 1784, 5, 6, 0, 0, 1784, 1786, - 3, 172, 86, 0, 1785, 1783, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1785, - 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1790, 1, 0, 0, 0, 1789, 1787, - 1, 0, 0, 0, 1790, 1791, 5, 5, 0, 0, 1791, 1793, 1, 0, 0, 0, 1792, 1781, - 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 141, 1, 0, 0, 0, 1794, 1796, - 7, 8, 0, 0, 1795, 1794, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, - 1, 0, 0, 0, 1797, 1800, 5, 154, 0, 0, 1798, 1800, 5, 8, 0, 0, 1799, 1795, - 1, 0, 0, 0, 1799, 1798, 1, 0, 0, 0, 1800, 143, 1, 0, 0, 0, 1801, 1802, - 7, 14, 0, 0, 1802, 145, 1, 0, 0, 0, 1803, 1804, 7, 15, 0, 0, 1804, 147, - 1, 0, 0, 0, 1805, 1806, 5, 156, 0, 0, 1806, 149, 1, 0, 0, 0, 1807, 1810, - 3, 94, 47, 0, 1808, 1810, 3, 74, 37, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1808, - 1, 0, 0, 0, 1810, 151, 1, 0, 0, 0, 1811, 1812, 7, 16, 0, 0, 1812, 153, - 1, 0, 0, 0, 1813, 1814, 7, 17, 0, 0, 1814, 155, 1, 0, 0, 0, 1815, 1817, - 9, 0, 0, 0, 1816, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1816, - 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 157, 1, 0, 0, 0, 1820, 1821, - 3, 194, 97, 0, 1821, 159, 1, 0, 0, 0, 1822, 1823, 3, 194, 97, 0, 1823, - 161, 1, 0, 0, 0, 1824, 1825, 3, 194, 97, 0, 1825, 163, 1, 0, 0, 0, 1826, - 1827, 3, 194, 97, 0, 1827, 165, 1, 0, 0, 0, 1828, 1829, 3, 194, 97, 0, - 1829, 167, 1, 0, 0, 0, 1830, 1831, 3, 194, 97, 0, 1831, 169, 1, 0, 0, 0, - 1832, 1833, 3, 194, 97, 0, 1833, 171, 1, 0, 0, 0, 1834, 1835, 3, 194, 97, - 0, 1835, 173, 1, 0, 0, 0, 1836, 1837, 3, 194, 97, 0, 1837, 175, 1, 0, 0, - 0, 1838, 1839, 3, 194, 97, 0, 1839, 177, 1, 0, 0, 0, 1840, 1841, 3, 194, - 97, 0, 1841, 179, 1, 0, 0, 0, 1842, 1843, 3, 194, 97, 0, 1843, 181, 1, - 0, 0, 0, 1844, 1845, 3, 194, 97, 0, 1845, 183, 1, 0, 0, 0, 1846, 1847, - 3, 194, 97, 0, 1847, 185, 1, 0, 0, 0, 1848, 1849, 3, 194, 97, 0, 1849, - 187, 1, 0, 0, 0, 1850, 1851, 3, 194, 97, 0, 1851, 189, 1, 0, 0, 0, 1852, - 1853, 3, 194, 97, 0, 1853, 191, 1, 0, 0, 0, 1854, 1855, 3, 194, 97, 0, - 1855, 193, 1, 0, 0, 0, 1856, 1864, 5, 153, 0, 0, 1857, 1864, 3, 154, 77, - 0, 1858, 1864, 5, 156, 0, 0, 1859, 1860, 5, 4, 0, 0, 1860, 1861, 3, 194, - 97, 0, 1861, 1862, 5, 5, 0, 0, 1862, 1864, 1, 0, 0, 0, 1863, 1856, 1, 0, - 0, 0, 1863, 1857, 1, 0, 0, 0, 1863, 1858, 1, 0, 0, 0, 1863, 1859, 1, 0, - 0, 0, 1864, 195, 1, 0, 0, 0, 260, 198, 200, 211, 218, 223, 229, 235, 237, - 269, 274, 279, 289, 292, 295, 298, 315, 319, 327, 331, 333, 338, 340, 344, - 351, 354, 359, 363, 368, 377, 380, 386, 388, 392, 398, 403, 414, 420, 424, - 430, 435, 444, 446, 452, 456, 459, 463, 469, 474, 481, 492, 495, 497, 503, - 509, 513, 520, 526, 532, 538, 543, 555, 560, 571, 576, 579, 586, 589, 596, - 605, 608, 614, 616, 620, 628, 633, 641, 646, 654, 659, 667, 672, 678, 685, - 688, 696, 706, 709, 715, 717, 720, 739, 745, 754, 759, 768, 779, 786, 792, - 798, 807, 814, 818, 820, 824, 831, 833, 837, 840, 847, 854, 857, 867, 870, - 876, 878, 882, 889, 892, 900, 910, 913, 919, 921, 925, 932, 941, 945, 947, - 951, 960, 965, 967, 976, 987, 994, 997, 1000, 1013, 1027, 1032, 1035, 1048, - 1062, 1067, 1076, 1079, 1085, 1087, 1094, 1096, 1103, 1110, 1115, 1119, - 1123, 1139, 1144, 1148, 1171, 1177, 1179, 1183, 1188, 1196, 1201, 1210, - 1217, 1221, 1237, 1240, 1248, 1257, 1261, 1266, 1296, 1308, 1313, 1325, - 1331, 1338, 1342, 1352, 1355, 1361, 1364, 1366, 1368, 1375, 1384, 1389, - 1401, 1405, 1409, 1413, 1420, 1423, 1425, 1435, 1442, 1445, 1449, 1460, - 1470, 1484, 1492, 1495, 1503, 1511, 1519, 1529, 1545, 1551, 1559, 1564, - 1567, 1572, 1581, 1586, 1600, 1603, 1605, 1610, 1614, 1617, 1624, 1632, - 1636, 1640, 1643, 1649, 1652, 1654, 1663, 1668, 1672, 1676, 1679, 1690, - 1695, 1699, 1706, 1715, 1719, 1721, 1725, 1734, 1739, 1741, 1750, 1761, - 1768, 1771, 1778, 1787, 1792, 1795, 1799, 1809, 1818, 1863, -} - deserializer := antlr.NewATNDeserializer(nil) - staticData.atn = deserializer.Deserialize(staticData.serializedATN) - atn := staticData.atn - staticData.decisionToDFA = make([]*antlr.DFA, len(atn.DecisionToState)) - decisionToDFA := staticData.decisionToDFA - for index, state := range atn.DecisionToState { - decisionToDFA[index] = antlr.NewDFA(state, index) - } -} - -// SqlParserInit initializes any static state used to implement SqlParser. By default the -// static state used to implement the parser is lazily initialized during the first call to -// NewSqlParser(). You can call this function if you wish to initialize the static state ahead -// of time. -func SqlParserInit() { - staticData := &sqlParserStaticData - staticData.once.Do(sqlParserInit) -} - -// NewSqlParser produces a new parser instance for the optional input antlr.TokenStream. -func NewSqlParser(input antlr.TokenStream) *SqlParser { - SqlParserInit() - this := new(SqlParser) - this.BaseParser = antlr.NewBaseParser(input) - staticData := &sqlParserStaticData - this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) - this.RuleNames = staticData.ruleNames - this.LiteralNames = staticData.literalNames - this.SymbolicNames = staticData.symbolicNames - this.GrammarFileName = "Sql.g4" - - return this -} - - -// SqlParser tokens. -const ( - SqlParserEOF = antlr.TokenEOF - SqlParserT__0 = 1 - SqlParserSCOL = 2 - SqlParserDOT = 3 - SqlParserOPEN_PAR = 4 - SqlParserCLOSE_PAR = 5 - SqlParserCOMMA = 6 - SqlParserASSIGN = 7 - SqlParserSTAR = 8 - SqlParserPLUS = 9 - SqlParserMINUS = 10 - SqlParserTILDE = 11 - SqlParserPIPE2 = 12 - SqlParserDIV = 13 - SqlParserMOD = 14 - SqlParserLT2 = 15 - SqlParserGT2 = 16 - SqlParserAMP = 17 - SqlParserPIPE = 18 - SqlParserLT = 19 - SqlParserLT_EQ = 20 - SqlParserGT = 21 - SqlParserGT_EQ = 22 - SqlParserEQ = 23 - SqlParserNOT_EQ1 = 24 - SqlParserNOT_EQ2 = 25 - SqlParserK_ABORT = 26 - SqlParserK_ACTION = 27 - SqlParserK_ADD = 28 - SqlParserK_AFTER = 29 - SqlParserK_ALL = 30 - SqlParserK_ALTER = 31 - SqlParserK_ANALYZE = 32 - SqlParserK_AND = 33 - SqlParserK_AS = 34 - SqlParserK_ASC = 35 - SqlParserK_ATTACH = 36 - SqlParserK_AUTOINCREMENT = 37 - SqlParserK_BEFORE = 38 - SqlParserK_BEGIN = 39 - SqlParserK_BETWEEN = 40 - SqlParserK_BY = 41 - SqlParserK_CASCADE = 42 - SqlParserK_CASE = 43 - SqlParserK_CAST = 44 - SqlParserK_CHECK = 45 - SqlParserK_COLLATE = 46 - SqlParserK_COLUMN = 47 - SqlParserK_COMMIT = 48 - SqlParserK_CONFLICT = 49 - SqlParserK_CONSTRAINT = 50 - SqlParserK_CREATE = 51 - SqlParserK_CROSS = 52 - SqlParserK_CURRENT_DATE = 53 - SqlParserK_CURRENT_TIME = 54 - SqlParserK_CURRENT_TIMESTAMP = 55 - SqlParserK_DATABASE = 56 - SqlParserK_DEFAULT = 57 - SqlParserK_DEFERRABLE = 58 - SqlParserK_DEFERRED = 59 - SqlParserK_DELETE = 60 - SqlParserK_DESC = 61 - SqlParserK_DETACH = 62 - SqlParserK_DISTINCT = 63 - SqlParserK_DROP = 64 - SqlParserK_EACH = 65 - SqlParserK_ELSE = 66 - SqlParserK_END = 67 - SqlParserK_ENABLE = 68 - SqlParserK_ESCAPE = 69 - SqlParserK_EXCEPT = 70 - SqlParserK_EXCLUSIVE = 71 - SqlParserK_EXISTS = 72 - SqlParserK_EXPLAIN = 73 - SqlParserK_FAIL = 74 - SqlParserK_FOR = 75 - SqlParserK_FOREIGN = 76 - SqlParserK_FROM = 77 - SqlParserK_FULL = 78 - SqlParserK_GLOB = 79 - SqlParserK_GROUP = 80 - SqlParserK_HAVING = 81 - SqlParserK_IF = 82 - SqlParserK_IGNORE = 83 - SqlParserK_IMMEDIATE = 84 - SqlParserK_IN = 85 - SqlParserK_INDEX = 86 - SqlParserK_INDEXED = 87 - SqlParserK_INITIALLY = 88 - SqlParserK_INNER = 89 - SqlParserK_INSERT = 90 - SqlParserK_INSTEAD = 91 - SqlParserK_INTERSECT = 92 - SqlParserK_INTO = 93 - SqlParserK_IS = 94 - SqlParserK_ISNULL = 95 - SqlParserK_JOIN = 96 - SqlParserK_KEY = 97 - SqlParserK_LEFT = 98 - SqlParserK_LIKE = 99 - SqlParserK_LIMIT = 100 - SqlParserK_MATCH = 101 - SqlParserK_NATURAL = 102 - SqlParserK_NEXTVAL = 103 - SqlParserK_NO = 104 - SqlParserK_NOT = 105 - SqlParserK_NOTNULL = 106 - SqlParserK_NULL = 107 - SqlParserK_OF = 108 - SqlParserK_OFFSET = 109 - SqlParserK_ON = 110 - SqlParserK_ONLY = 111 - SqlParserK_OR = 112 - SqlParserK_ORDER = 113 - SqlParserK_OUTER = 114 - SqlParserK_PLAN = 115 - SqlParserK_PRAGMA = 116 - SqlParserK_PRIMARY = 117 - SqlParserK_QUERY = 118 - SqlParserK_RAISE = 119 - SqlParserK_RECURSIVE = 120 - SqlParserK_REFERENCES = 121 - SqlParserK_REGEXP = 122 - SqlParserK_REINDEX = 123 - SqlParserK_RELEASE = 124 - SqlParserK_RENAME = 125 - SqlParserK_REPLACE = 126 - SqlParserK_RESTRICT = 127 - SqlParserK_RIGHT = 128 - SqlParserK_ROLLBACK = 129 - SqlParserK_ROW = 130 - SqlParserK_SAVEPOINT = 131 - SqlParserK_SELECT = 132 - SqlParserK_SET = 133 - SqlParserK_TABLE = 134 - SqlParserK_TEMP = 135 - SqlParserK_TEMPORARY = 136 - SqlParserK_THEN = 137 - SqlParserK_TO = 138 - SqlParserK_TRANSACTION = 139 - SqlParserK_TRIGGER = 140 - SqlParserK_UNION = 141 - SqlParserK_UNIQUE = 142 - SqlParserK_UPDATE = 143 - SqlParserK_USING = 144 - SqlParserK_VACUUM = 145 - SqlParserK_VALUES = 146 - SqlParserK_VIEW = 147 - SqlParserK_VIRTUAL = 148 - SqlParserK_WHEN = 149 - SqlParserK_WHERE = 150 - SqlParserK_WITH = 151 - SqlParserK_WITHOUT = 152 - SqlParserIDENTIFIER = 153 - SqlParserNUMERIC_LITERAL = 154 - SqlParserBIND_PARAMETER = 155 - SqlParserSTRING_LITERAL = 156 - SqlParserBLOB_LITERAL = 157 - SqlParserSINGLE_LINE_COMMENT = 158 - SqlParserMULTILINE_COMMENT = 159 - SqlParserSPACES = 160 - SqlParserUNEXPECTED_CHAR = 161 -) - -// SqlParser rules. -const ( - SqlParserRULE_parse = 0 - SqlParserRULE_error = 1 - SqlParserRULE_sql_stmt_list = 2 - SqlParserRULE_sql_stmt = 3 - SqlParserRULE_alter_table_stmt = 4 - SqlParserRULE_alter_table_add_constraint = 5 - SqlParserRULE_alter_table_add = 6 - SqlParserRULE_analyze_stmt = 7 - SqlParserRULE_attach_stmt = 8 - SqlParserRULE_begin_stmt = 9 - SqlParserRULE_commit_stmt = 10 - SqlParserRULE_compound_select_stmt = 11 - SqlParserRULE_create_index_stmt = 12 - SqlParserRULE_create_table_stmt = 13 - SqlParserRULE_create_trigger_stmt = 14 - SqlParserRULE_create_view_stmt = 15 - SqlParserRULE_create_virtual_table_stmt = 16 - SqlParserRULE_delete_stmt = 17 - SqlParserRULE_delete_stmt_limited = 18 - SqlParserRULE_detach_stmt = 19 - SqlParserRULE_drop_index_stmt = 20 - SqlParserRULE_drop_table_stmt = 21 - SqlParserRULE_drop_trigger_stmt = 22 - SqlParserRULE_drop_view_stmt = 23 - SqlParserRULE_factored_select_stmt = 24 - SqlParserRULE_insert_stmt = 25 - SqlParserRULE_pragma_stmt = 26 - SqlParserRULE_reindex_stmt = 27 - SqlParserRULE_release_stmt = 28 - SqlParserRULE_rollback_stmt = 29 - SqlParserRULE_savepoint_stmt = 30 - SqlParserRULE_simple_select_stmt = 31 - SqlParserRULE_select_stmt = 32 - SqlParserRULE_select_or_values = 33 - SqlParserRULE_update_stmt = 34 - SqlParserRULE_update_stmt_limited = 35 - SqlParserRULE_vacuum_stmt = 36 - SqlParserRULE_column_def = 37 - SqlParserRULE_type_name = 38 - SqlParserRULE_column_constraint = 39 - SqlParserRULE_column_constraint_primary_key = 40 - SqlParserRULE_column_constraint_foreign_key = 41 - SqlParserRULE_column_constraint_not_null = 42 - SqlParserRULE_column_constraint_null = 43 - SqlParserRULE_column_default = 44 - SqlParserRULE_column_default_value = 45 - SqlParserRULE_conflict_clause = 46 - SqlParserRULE_expr = 47 - SqlParserRULE_foreign_key_clause = 48 - SqlParserRULE_fk_target_column_name = 49 - SqlParserRULE_raise_function = 50 - SqlParserRULE_indexed_column = 51 - SqlParserRULE_table_constraint = 52 - SqlParserRULE_table_constraint_primary_key = 53 - SqlParserRULE_table_constraint_foreign_key = 54 - SqlParserRULE_table_constraint_unique = 55 - SqlParserRULE_table_constraint_key = 56 - SqlParserRULE_fk_origin_column_name = 57 - SqlParserRULE_with_clause = 58 - SqlParserRULE_qualified_table_name = 59 - SqlParserRULE_ordering_term = 60 - SqlParserRULE_pragma_value = 61 - SqlParserRULE_common_table_expression = 62 - SqlParserRULE_result_column = 63 - SqlParserRULE_table_or_subquery = 64 - SqlParserRULE_join_clause = 65 - SqlParserRULE_join_operator = 66 - SqlParserRULE_join_constraint = 67 - SqlParserRULE_select_core = 68 - SqlParserRULE_compound_operator = 69 - SqlParserRULE_cte_table_name = 70 - SqlParserRULE_signed_number = 71 - SqlParserRULE_literal_value = 72 - SqlParserRULE_unary_operator = 73 - SqlParserRULE_error_message = 74 - SqlParserRULE_module_argument = 75 - SqlParserRULE_column_alias = 76 - SqlParserRULE_keyword = 77 - SqlParserRULE_unknown = 78 - SqlParserRULE_name = 79 - SqlParserRULE_function_name = 80 - SqlParserRULE_database_name = 81 - SqlParserRULE_source_table_name = 82 - SqlParserRULE_table_name = 83 - SqlParserRULE_table_or_index_name = 84 - SqlParserRULE_new_table_name = 85 - SqlParserRULE_column_name = 86 - SqlParserRULE_collation_name = 87 - SqlParserRULE_foreign_table = 88 - SqlParserRULE_index_name = 89 - SqlParserRULE_trigger_name = 90 - SqlParserRULE_view_name = 91 - SqlParserRULE_module_name = 92 - SqlParserRULE_pragma_name = 93 - SqlParserRULE_savepoint_name = 94 - SqlParserRULE_table_alias = 95 - SqlParserRULE_transaction_name = 96 - SqlParserRULE_any_name = 97 -) - -// IParseContext is an interface to support dynamic dispatch. -type IParseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsParseContext differentiates from other interfaces. - IsParseContext() -} - -type ParseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyParseContext() *ParseContext { - var p = new(ParseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_parse - return p -} - -func (*ParseContext) IsParseContext() {} - -func NewParseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParseContext { - var p = new(ParseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_parse - - return p -} - -func (s *ParseContext) GetParser() antlr.Parser { return s.parser } - -func (s *ParseContext) EOF() antlr.TerminalNode { - return s.GetToken(SqlParserEOF, 0) -} - -func (s *ParseContext) AllSql_stmt_list() []ISql_stmt_listContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISql_stmt_listContext); ok { - len++ - } - } - - tst := make([]ISql_stmt_listContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISql_stmt_listContext); ok { - tst[i] = t.(ISql_stmt_listContext) - i++ - } - } - - return tst -} - -func (s *ParseContext) Sql_stmt_list(i int) ISql_stmt_listContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISql_stmt_listContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISql_stmt_listContext) -} - -func (s *ParseContext) AllError() []IErrorContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IErrorContext); ok { - len++ - } - } - - tst := make([]IErrorContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IErrorContext); ok { - tst[i] = t.(IErrorContext) - i++ - } - } - - return tst -} - -func (s *ParseContext) Error(i int) IErrorContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IErrorContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IErrorContext) -} - -func (s *ParseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *ParseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *ParseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterParse(s) - } -} - -func (s *ParseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitParse(s) - } -} - - - - -func (p *SqlParser) Parse() (localctx IParseContext) { - this := p - _ = this - - localctx = NewParseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 0, SqlParserRULE_parse) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(200) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserSCOL || _la == SqlParserK_ALTER || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DETACH - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_INSERT - 64)))) != 0) || ((((_la - 116)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 116))) & ((1 << (SqlParserK_PRAGMA - 116)) | (1 << (SqlParserK_REINDEX - 116)) | (1 << (SqlParserK_RELEASE - 116)) | (1 << (SqlParserK_REPLACE - 116)) | (1 << (SqlParserK_ROLLBACK - 116)) | (1 << (SqlParserK_SAVEPOINT - 116)) | (1 << (SqlParserK_SELECT - 116)) | (1 << (SqlParserK_UPDATE - 116)) | (1 << (SqlParserK_VACUUM - 116)) | (1 << (SqlParserK_VALUES - 116)))) != 0) || _la == SqlParserK_WITH || _la == SqlParserUNEXPECTED_CHAR { - p.SetState(198) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WITH: - { - p.SetState(196) - p.Sql_stmt_list() - } - - - case SqlParserUNEXPECTED_CHAR: - { - p.SetState(197) - p.Error() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - p.SetState(202) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(203) - p.Match(SqlParserEOF) - } - - - - return localctx -} - - -// IErrorContext is an interface to support dynamic dispatch. -type IErrorContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // Get_UNEXPECTED_CHAR returns the _UNEXPECTED_CHAR token. - Get_UNEXPECTED_CHAR() antlr.Token - - - // Set_UNEXPECTED_CHAR sets the _UNEXPECTED_CHAR token. - Set_UNEXPECTED_CHAR(antlr.Token) - - - // IsErrorContext differentiates from other interfaces. - IsErrorContext() -} - -type ErrorContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser - _UNEXPECTED_CHAR antlr.Token -} - -func NewEmptyErrorContext() *ErrorContext { - var p = new(ErrorContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_error - return p -} - -func (*ErrorContext) IsErrorContext() {} - -func NewErrorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ErrorContext { - var p = new(ErrorContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_error - - return p -} - -func (s *ErrorContext) GetParser() antlr.Parser { return s.parser } - -func (s *ErrorContext) Get_UNEXPECTED_CHAR() antlr.Token { return s._UNEXPECTED_CHAR } - - -func (s *ErrorContext) Set_UNEXPECTED_CHAR(v antlr.Token) { s._UNEXPECTED_CHAR = v } - - -func (s *ErrorContext) UNEXPECTED_CHAR() antlr.TerminalNode { - return s.GetToken(SqlParserUNEXPECTED_CHAR, 0) -} - -func (s *ErrorContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *ErrorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *ErrorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterError(s) - } -} - -func (s *ErrorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitError(s) - } -} - - - - -func (p *SqlParser) Error() (localctx IErrorContext) { - this := p - _ = this - - localctx = NewErrorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 2, SqlParserRULE_error) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(205) - - var _m = p.Match(SqlParserUNEXPECTED_CHAR) - - localctx.(*ErrorContext)._UNEXPECTED_CHAR = _m - } - - - - - - return localctx -} - - -// ISql_stmt_listContext is an interface to support dynamic dispatch. -type ISql_stmt_listContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSql_stmt_listContext differentiates from other interfaces. - IsSql_stmt_listContext() -} - -type Sql_stmt_listContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySql_stmt_listContext() *Sql_stmt_listContext { - var p = new(Sql_stmt_listContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_sql_stmt_list - return p -} - -func (*Sql_stmt_listContext) IsSql_stmt_listContext() {} - -func NewSql_stmt_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmt_listContext { - var p = new(Sql_stmt_listContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_sql_stmt_list - - return p -} - -func (s *Sql_stmt_listContext) GetParser() antlr.Parser { return s.parser } - -func (s *Sql_stmt_listContext) AllSql_stmt() []ISql_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISql_stmtContext); ok { - len++ - } - } - - tst := make([]ISql_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISql_stmtContext); ok { - tst[i] = t.(ISql_stmtContext) - i++ - } - } - - return tst -} - -func (s *Sql_stmt_listContext) Sql_stmt(i int) ISql_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISql_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISql_stmtContext) -} - -func (s *Sql_stmt_listContext) AllSCOL() []antlr.TerminalNode { - return s.GetTokens(SqlParserSCOL) -} - -func (s *Sql_stmt_listContext) SCOL(i int) antlr.TerminalNode { - return s.GetToken(SqlParserSCOL, i) -} - -func (s *Sql_stmt_listContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Sql_stmt_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Sql_stmt_listContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSql_stmt_list(s) - } -} - -func (s *Sql_stmt_listContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSql_stmt_list(s) - } -} - - - - -func (p *SqlParser) Sql_stmt_list() (localctx ISql_stmt_listContext) { - this := p - _ = this - - localctx = NewSql_stmt_listContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 4, SqlParserRULE_sql_stmt_list) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - p.SetState(211) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserSCOL { - { - p.SetState(208) - p.Match(SqlParserSCOL) - } - - - p.SetState(213) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(214) - p.Sql_stmt() - } - p.SetState(223) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - p.SetState(216) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for ok := true; ok; ok = _la == SqlParserSCOL { - { - p.SetState(215) - p.Match(SqlParserSCOL) - } - - - p.SetState(218) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(220) - p.Sql_stmt() - } - - - } - p.SetState(225) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 4, p.GetParserRuleContext()) - } - p.SetState(229) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(226) - p.Match(SqlParserSCOL) - } - - - } - p.SetState(231) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 5, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// ISql_stmtContext is an interface to support dynamic dispatch. -type ISql_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSql_stmtContext differentiates from other interfaces. - IsSql_stmtContext() -} - -type Sql_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySql_stmtContext() *Sql_stmtContext { - var p = new(Sql_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_sql_stmt - return p -} - -func (*Sql_stmtContext) IsSql_stmtContext() {} - -func NewSql_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmtContext { - var p = new(Sql_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_sql_stmt - - return p -} - -func (s *Sql_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Sql_stmtContext) Alter_table_stmt() IAlter_table_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAlter_table_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAlter_table_stmtContext) -} - -func (s *Sql_stmtContext) Analyze_stmt() IAnalyze_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAnalyze_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAnalyze_stmtContext) -} - -func (s *Sql_stmtContext) Attach_stmt() IAttach_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAttach_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAttach_stmtContext) -} - -func (s *Sql_stmtContext) Begin_stmt() IBegin_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IBegin_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IBegin_stmtContext) -} - -func (s *Sql_stmtContext) Commit_stmt() ICommit_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommit_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICommit_stmtContext) -} - -func (s *Sql_stmtContext) Compound_select_stmt() ICompound_select_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICompound_select_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICompound_select_stmtContext) -} - -func (s *Sql_stmtContext) Create_index_stmt() ICreate_index_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_index_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_index_stmtContext) -} - -func (s *Sql_stmtContext) Create_table_stmt() ICreate_table_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_table_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_table_stmtContext) -} - -func (s *Sql_stmtContext) Create_trigger_stmt() ICreate_trigger_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_trigger_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_trigger_stmtContext) -} - -func (s *Sql_stmtContext) Create_view_stmt() ICreate_view_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_view_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_view_stmtContext) -} - -func (s *Sql_stmtContext) Create_virtual_table_stmt() ICreate_virtual_table_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICreate_virtual_table_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICreate_virtual_table_stmtContext) -} - -func (s *Sql_stmtContext) Delete_stmt() IDelete_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDelete_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDelete_stmtContext) -} - -func (s *Sql_stmtContext) Delete_stmt_limited() IDelete_stmt_limitedContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDelete_stmt_limitedContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDelete_stmt_limitedContext) -} - -func (s *Sql_stmtContext) Detach_stmt() IDetach_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDetach_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDetach_stmtContext) -} - -func (s *Sql_stmtContext) Drop_index_stmt() IDrop_index_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_index_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_index_stmtContext) -} - -func (s *Sql_stmtContext) Drop_table_stmt() IDrop_table_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_table_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_table_stmtContext) -} - -func (s *Sql_stmtContext) Drop_trigger_stmt() IDrop_trigger_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_trigger_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_trigger_stmtContext) -} - -func (s *Sql_stmtContext) Drop_view_stmt() IDrop_view_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDrop_view_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDrop_view_stmtContext) -} - -func (s *Sql_stmtContext) Factored_select_stmt() IFactored_select_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFactored_select_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IFactored_select_stmtContext) -} - -func (s *Sql_stmtContext) Insert_stmt() IInsert_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IInsert_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IInsert_stmtContext) -} - -func (s *Sql_stmtContext) Pragma_stmt() IPragma_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IPragma_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IPragma_stmtContext) -} - -func (s *Sql_stmtContext) Reindex_stmt() IReindex_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IReindex_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IReindex_stmtContext) -} - -func (s *Sql_stmtContext) Release_stmt() IRelease_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IRelease_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IRelease_stmtContext) -} - -func (s *Sql_stmtContext) Rollback_stmt() IRollback_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IRollback_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IRollback_stmtContext) -} - -func (s *Sql_stmtContext) Savepoint_stmt() ISavepoint_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISavepoint_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISavepoint_stmtContext) -} - -func (s *Sql_stmtContext) Simple_select_stmt() ISimple_select_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISimple_select_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISimple_select_stmtContext) -} - -func (s *Sql_stmtContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Sql_stmtContext) Update_stmt() IUpdate_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUpdate_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUpdate_stmtContext) -} - -func (s *Sql_stmtContext) Update_stmt_limited() IUpdate_stmt_limitedContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUpdate_stmt_limitedContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUpdate_stmt_limitedContext) -} - -func (s *Sql_stmtContext) Vacuum_stmt() IVacuum_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IVacuum_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IVacuum_stmtContext) -} - -func (s *Sql_stmtContext) K_EXPLAIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXPLAIN, 0) -} - -func (s *Sql_stmtContext) K_QUERY() antlr.TerminalNode { - return s.GetToken(SqlParserK_QUERY, 0) -} - -func (s *Sql_stmtContext) K_PLAN() antlr.TerminalNode { - return s.GetToken(SqlParserK_PLAN, 0) -} - -func (s *Sql_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Sql_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Sql_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSql_stmt(s) - } -} - -func (s *Sql_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSql_stmt(s) - } -} - - - - -func (p *SqlParser) Sql_stmt() (localctx ISql_stmtContext) { - this := p - _ = this - - localctx = NewSql_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 6, SqlParserRULE_sql_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(237) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_EXPLAIN { - { - p.SetState(232) - p.Match(SqlParserK_EXPLAIN) - } - p.SetState(235) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_QUERY { - { - p.SetState(233) - p.Match(SqlParserK_QUERY) - } - { - p.SetState(234) - p.Match(SqlParserK_PLAN) - } - - } - - } - p.SetState(269) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 8, p.GetParserRuleContext()) { - case 1: - { - p.SetState(239) - p.Alter_table_stmt() - } - - - case 2: - { - p.SetState(240) - p.Analyze_stmt() - } - - - case 3: - { - p.SetState(241) - p.Attach_stmt() - } - - - case 4: - { - p.SetState(242) - p.Begin_stmt() - } - - - case 5: - { - p.SetState(243) - p.Commit_stmt() - } - - - case 6: - { - p.SetState(244) - p.Compound_select_stmt() - } - - - case 7: - { - p.SetState(245) - p.Create_index_stmt() - } - - - case 8: - { - p.SetState(246) - p.Create_table_stmt() - } - - - case 9: - { - p.SetState(247) - p.Create_trigger_stmt() - } - - - case 10: - { - p.SetState(248) - p.Create_view_stmt() - } - - - case 11: - { - p.SetState(249) - p.Create_virtual_table_stmt() - } - - - case 12: - { - p.SetState(250) - p.Delete_stmt() - } - - - case 13: - { - p.SetState(251) - p.Delete_stmt_limited() - } - - - case 14: - { - p.SetState(252) - p.Detach_stmt() - } - - - case 15: - { - p.SetState(253) - p.Drop_index_stmt() - } - - - case 16: - { - p.SetState(254) - p.Drop_table_stmt() - } - - - case 17: - { - p.SetState(255) - p.Drop_trigger_stmt() - } - - - case 18: - { - p.SetState(256) - p.Drop_view_stmt() - } - - - case 19: - { - p.SetState(257) - p.Factored_select_stmt() - } - - - case 20: - { - p.SetState(258) - p.Insert_stmt() - } - - - case 21: - { - p.SetState(259) - p.Pragma_stmt() - } - - - case 22: - { - p.SetState(260) - p.Reindex_stmt() - } - - - case 23: - { - p.SetState(261) - p.Release_stmt() - } - - - case 24: - { - p.SetState(262) - p.Rollback_stmt() - } - - - case 25: - { - p.SetState(263) - p.Savepoint_stmt() - } - - - case 26: - { - p.SetState(264) - p.Simple_select_stmt() - } - - - case 27: - { - p.SetState(265) - p.Select_stmt() - } - - - case 28: - { - p.SetState(266) - p.Update_stmt() - } - - - case 29: - { - p.SetState(267) - p.Update_stmt_limited() - } - - - case 30: - { - p.SetState(268) - p.Vacuum_stmt() - } - - } - - - - return localctx -} - - -// IAlter_table_stmtContext is an interface to support dynamic dispatch. -type IAlter_table_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAlter_table_stmtContext differentiates from other interfaces. - IsAlter_table_stmtContext() -} - -type Alter_table_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAlter_table_stmtContext() *Alter_table_stmtContext { - var p = new(Alter_table_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_alter_table_stmt - return p -} - -func (*Alter_table_stmtContext) IsAlter_table_stmtContext() {} - -func NewAlter_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_stmtContext { - var p = new(Alter_table_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_alter_table_stmt - - return p -} - -func (s *Alter_table_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Alter_table_stmtContext) K_ALTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALTER, 0) -} - -func (s *Alter_table_stmtContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *Alter_table_stmtContext) Source_table_name() ISource_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISource_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISource_table_nameContext) -} - -func (s *Alter_table_stmtContext) K_RENAME() antlr.TerminalNode { - return s.GetToken(SqlParserK_RENAME, 0) -} - -func (s *Alter_table_stmtContext) K_TO() antlr.TerminalNode { - return s.GetToken(SqlParserK_TO, 0) -} - -func (s *Alter_table_stmtContext) New_table_name() INew_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INew_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INew_table_nameContext) -} - -func (s *Alter_table_stmtContext) Alter_table_add() IAlter_table_addContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAlter_table_addContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAlter_table_addContext) -} - -func (s *Alter_table_stmtContext) Alter_table_add_constraint() IAlter_table_add_constraintContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAlter_table_add_constraintContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAlter_table_add_constraintContext) -} - -func (s *Alter_table_stmtContext) K_ADD() antlr.TerminalNode { - return s.GetToken(SqlParserK_ADD, 0) -} - -func (s *Alter_table_stmtContext) Column_def() IColumn_defContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_defContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_defContext) -} - -func (s *Alter_table_stmtContext) K_ONLY() antlr.TerminalNode { - return s.GetToken(SqlParserK_ONLY, 0) -} - -func (s *Alter_table_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Alter_table_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Alter_table_stmtContext) K_ENABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ENABLE, 0) -} - -func (s *Alter_table_stmtContext) Unknown() IUnknownContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUnknownContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUnknownContext) -} - -func (s *Alter_table_stmtContext) K_COLUMN() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLUMN, 0) -} - -func (s *Alter_table_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Alter_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Alter_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAlter_table_stmt(s) - } -} - -func (s *Alter_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAlter_table_stmt(s) - } -} - - - - -func (p *SqlParser) Alter_table_stmt() (localctx IAlter_table_stmtContext) { - this := p - _ = this - - localctx = NewAlter_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 8, SqlParserRULE_alter_table_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(271) - p.Match(SqlParserK_ALTER) - } - { - p.SetState(272) - p.Match(SqlParserK_TABLE) - } - p.SetState(274) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ONLY { - { - p.SetState(273) - p.Match(SqlParserK_ONLY) - } - - } - p.SetState(279) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 10, p.GetParserRuleContext()) == 1 { - { - p.SetState(276) - p.Database_name() - } - { - p.SetState(277) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(281) - p.Source_table_name() - } - p.SetState(292) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 12, p.GetParserRuleContext()) { - case 1: - { - p.SetState(282) - p.Match(SqlParserK_RENAME) - } - { - p.SetState(283) - p.Match(SqlParserK_TO) - } - { - p.SetState(284) - p.New_table_name() - } - - - case 2: - { - p.SetState(285) - p.Alter_table_add() - } - - - case 3: - { - p.SetState(286) - p.Alter_table_add_constraint() - } - - - case 4: - { - p.SetState(287) - p.Match(SqlParserK_ADD) - } - p.SetState(289) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 11, p.GetParserRuleContext()) == 1 { - { - p.SetState(288) - p.Match(SqlParserK_COLUMN) - } - - - } - { - p.SetState(291) - p.Column_def() - } - - } - p.SetState(295) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 13, p.GetParserRuleContext()) == 1 { - { - p.SetState(294) - p.Match(SqlParserK_ENABLE) - } - - - } - p.SetState(298) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 14, p.GetParserRuleContext()) == 1 { - { - p.SetState(297) - p.Unknown() - } - - - } - - - - return localctx -} - - -// IAlter_table_add_constraintContext is an interface to support dynamic dispatch. -type IAlter_table_add_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAlter_table_add_constraintContext differentiates from other interfaces. - IsAlter_table_add_constraintContext() -} - -type Alter_table_add_constraintContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAlter_table_add_constraintContext() *Alter_table_add_constraintContext { - var p = new(Alter_table_add_constraintContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_alter_table_add_constraint - return p -} - -func (*Alter_table_add_constraintContext) IsAlter_table_add_constraintContext() {} - -func NewAlter_table_add_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_add_constraintContext { - var p = new(Alter_table_add_constraintContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_alter_table_add_constraint - - return p -} - -func (s *Alter_table_add_constraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *Alter_table_add_constraintContext) K_ADD() antlr.TerminalNode { - return s.GetToken(SqlParserK_ADD, 0) -} - -func (s *Alter_table_add_constraintContext) K_CONSTRAINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONSTRAINT, 0) -} - -func (s *Alter_table_add_constraintContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Alter_table_add_constraintContext) Table_constraint() ITable_constraintContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraintContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraintContext) -} - -func (s *Alter_table_add_constraintContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Alter_table_add_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Alter_table_add_constraintContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAlter_table_add_constraint(s) - } -} - -func (s *Alter_table_add_constraintContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAlter_table_add_constraint(s) - } -} - - - - -func (p *SqlParser) Alter_table_add_constraint() (localctx IAlter_table_add_constraintContext) { - this := p - _ = this - - localctx = NewAlter_table_add_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, SqlParserRULE_alter_table_add_constraint) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(300) - p.Match(SqlParserK_ADD) - } - { - p.SetState(301) - p.Match(SqlParserK_CONSTRAINT) - } - { - p.SetState(302) - p.Any_name() - } - { - p.SetState(303) - p.Table_constraint() - } - - - - return localctx -} - - -// IAlter_table_addContext is an interface to support dynamic dispatch. -type IAlter_table_addContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAlter_table_addContext differentiates from other interfaces. - IsAlter_table_addContext() -} - -type Alter_table_addContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAlter_table_addContext() *Alter_table_addContext { - var p = new(Alter_table_addContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_alter_table_add - return p -} - -func (*Alter_table_addContext) IsAlter_table_addContext() {} - -func NewAlter_table_addContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Alter_table_addContext { - var p = new(Alter_table_addContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_alter_table_add - - return p -} - -func (s *Alter_table_addContext) GetParser() antlr.Parser { return s.parser } - -func (s *Alter_table_addContext) K_ADD() antlr.TerminalNode { - return s.GetToken(SqlParserK_ADD, 0) -} - -func (s *Alter_table_addContext) Table_constraint() ITable_constraintContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraintContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraintContext) -} - -func (s *Alter_table_addContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Alter_table_addContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Alter_table_addContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAlter_table_add(s) - } -} - -func (s *Alter_table_addContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAlter_table_add(s) - } -} - - - - -func (p *SqlParser) Alter_table_add() (localctx IAlter_table_addContext) { - this := p - _ = this - - localctx = NewAlter_table_addContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, SqlParserRULE_alter_table_add) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(305) - p.Match(SqlParserK_ADD) - } - { - p.SetState(306) - p.Table_constraint() - } - - - - return localctx -} - - -// IAnalyze_stmtContext is an interface to support dynamic dispatch. -type IAnalyze_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAnalyze_stmtContext differentiates from other interfaces. - IsAnalyze_stmtContext() -} - -type Analyze_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAnalyze_stmtContext() *Analyze_stmtContext { - var p = new(Analyze_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_analyze_stmt - return p -} - -func (*Analyze_stmtContext) IsAnalyze_stmtContext() {} - -func NewAnalyze_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Analyze_stmtContext { - var p = new(Analyze_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_analyze_stmt - - return p -} - -func (s *Analyze_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Analyze_stmtContext) K_ANALYZE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ANALYZE, 0) -} - -func (s *Analyze_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Analyze_stmtContext) Table_or_index_name() ITable_or_index_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_index_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_index_nameContext) -} - -func (s *Analyze_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Analyze_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Analyze_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Analyze_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAnalyze_stmt(s) - } -} - -func (s *Analyze_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAnalyze_stmt(s) - } -} - - - - -func (p *SqlParser) Analyze_stmt() (localctx IAnalyze_stmtContext) { - this := p - _ = this - - localctx = NewAnalyze_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 14, SqlParserRULE_analyze_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(308) - p.Match(SqlParserK_ANALYZE) - } - p.SetState(315) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 1 { - { - p.SetState(309) - p.Database_name() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 2 { - { - p.SetState(310) - p.Table_or_index_name() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 15, p.GetParserRuleContext()) == 3 { - { - p.SetState(311) - p.Database_name() - } - { - p.SetState(312) - p.Match(SqlParserDOT) - } - { - p.SetState(313) - p.Table_or_index_name() - } - - - } - - - - return localctx -} - - -// IAttach_stmtContext is an interface to support dynamic dispatch. -type IAttach_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAttach_stmtContext differentiates from other interfaces. - IsAttach_stmtContext() -} - -type Attach_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAttach_stmtContext() *Attach_stmtContext { - var p = new(Attach_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_attach_stmt - return p -} - -func (*Attach_stmtContext) IsAttach_stmtContext() {} - -func NewAttach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Attach_stmtContext { - var p = new(Attach_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_attach_stmt - - return p -} - -func (s *Attach_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Attach_stmtContext) K_ATTACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_ATTACH, 0) -} - -func (s *Attach_stmtContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Attach_stmtContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Attach_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Attach_stmtContext) K_DATABASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DATABASE, 0) -} - -func (s *Attach_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Attach_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Attach_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAttach_stmt(s) - } -} - -func (s *Attach_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAttach_stmt(s) - } -} - - - - -func (p *SqlParser) Attach_stmt() (localctx IAttach_stmtContext) { - this := p - _ = this - - localctx = NewAttach_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 16, SqlParserRULE_attach_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(317) - p.Match(SqlParserK_ATTACH) - } - p.SetState(319) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 16, p.GetParserRuleContext()) == 1 { - { - p.SetState(318) - p.Match(SqlParserK_DATABASE) - } - - - } - { - p.SetState(321) - p.expr(0) - } - { - p.SetState(322) - p.Match(SqlParserK_AS) - } - { - p.SetState(323) - p.Database_name() - } - - - - return localctx -} - - -// IBegin_stmtContext is an interface to support dynamic dispatch. -type IBegin_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsBegin_stmtContext differentiates from other interfaces. - IsBegin_stmtContext() -} - -type Begin_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyBegin_stmtContext() *Begin_stmtContext { - var p = new(Begin_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_begin_stmt - return p -} - -func (*Begin_stmtContext) IsBegin_stmtContext() {} - -func NewBegin_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Begin_stmtContext { - var p = new(Begin_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_begin_stmt - - return p -} - -func (s *Begin_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Begin_stmtContext) K_BEGIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEGIN, 0) -} - -func (s *Begin_stmtContext) K_TRANSACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRANSACTION, 0) -} - -func (s *Begin_stmtContext) K_DEFERRED() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRED, 0) -} - -func (s *Begin_stmtContext) K_IMMEDIATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IMMEDIATE, 0) -} - -func (s *Begin_stmtContext) K_EXCLUSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCLUSIVE, 0) -} - -func (s *Begin_stmtContext) Transaction_name() ITransaction_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITransaction_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITransaction_nameContext) -} - -func (s *Begin_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Begin_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Begin_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterBegin_stmt(s) - } -} - -func (s *Begin_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitBegin_stmt(s) - } -} - - - - -func (p *SqlParser) Begin_stmt() (localctx IBegin_stmtContext) { - this := p - _ = this - - localctx = NewBegin_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 18, SqlParserRULE_begin_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(325) - p.Match(SqlParserK_BEGIN) - } - p.SetState(327) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if ((((_la - 59)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 59))) & ((1 << (SqlParserK_DEFERRED - 59)) | (1 << (SqlParserK_EXCLUSIVE - 59)) | (1 << (SqlParserK_IMMEDIATE - 59)))) != 0) { - { - p.SetState(326) - _la = p.GetTokenStream().LA(1) - - if !(((((_la - 59)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 59))) & ((1 << (SqlParserK_DEFERRED - 59)) | (1 << (SqlParserK_EXCLUSIVE - 59)) | (1 << (SqlParserK_IMMEDIATE - 59)))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - p.SetState(333) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TRANSACTION { - { - p.SetState(329) - p.Match(SqlParserK_TRANSACTION) - } - p.SetState(331) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 18, p.GetParserRuleContext()) == 1 { - { - p.SetState(330) - p.Transaction_name() - } - - - } - - } - - - - return localctx -} - - -// ICommit_stmtContext is an interface to support dynamic dispatch. -type ICommit_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCommit_stmtContext differentiates from other interfaces. - IsCommit_stmtContext() -} - -type Commit_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCommit_stmtContext() *Commit_stmtContext { - var p = new(Commit_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_commit_stmt - return p -} - -func (*Commit_stmtContext) IsCommit_stmtContext() {} - -func NewCommit_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Commit_stmtContext { - var p = new(Commit_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_commit_stmt - - return p -} - -func (s *Commit_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Commit_stmtContext) K_COMMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_COMMIT, 0) -} - -func (s *Commit_stmtContext) K_END() antlr.TerminalNode { - return s.GetToken(SqlParserK_END, 0) -} - -func (s *Commit_stmtContext) K_TRANSACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRANSACTION, 0) -} - -func (s *Commit_stmtContext) Transaction_name() ITransaction_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITransaction_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITransaction_nameContext) -} - -func (s *Commit_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Commit_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Commit_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCommit_stmt(s) - } -} - -func (s *Commit_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCommit_stmt(s) - } -} - - - - -func (p *SqlParser) Commit_stmt() (localctx ICommit_stmtContext) { - this := p - _ = this - - localctx = NewCommit_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 20, SqlParserRULE_commit_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(335) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_COMMIT || _la == SqlParserK_END) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - p.SetState(340) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TRANSACTION { - { - p.SetState(336) - p.Match(SqlParserK_TRANSACTION) - } - p.SetState(338) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 20, p.GetParserRuleContext()) == 1 { - { - p.SetState(337) - p.Transaction_name() - } - - - } - - } - - - - return localctx -} - - -// ICompound_select_stmtContext is an interface to support dynamic dispatch. -type ICompound_select_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCompound_select_stmtContext differentiates from other interfaces. - IsCompound_select_stmtContext() -} - -type Compound_select_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCompound_select_stmtContext() *Compound_select_stmtContext { - var p = new(Compound_select_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_compound_select_stmt - return p -} - -func (*Compound_select_stmtContext) IsCompound_select_stmtContext() {} - -func NewCompound_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_select_stmtContext { - var p = new(Compound_select_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_compound_select_stmt - - return p -} - -func (s *Compound_select_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Compound_select_stmtContext) AllSelect_core() []ISelect_coreContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_coreContext); ok { - len++ - } - } - - tst := make([]ISelect_coreContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_coreContext); ok { - tst[i] = t.(ISelect_coreContext) - i++ - } - } - - return tst -} - -func (s *Compound_select_stmtContext) Select_core(i int) ISelect_coreContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_coreContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_coreContext) -} - -func (s *Compound_select_stmtContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *Compound_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - len++ - } - } - - tst := make([]ICommon_table_expressionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) - i++ - } - } - - return tst -} - -func (s *Compound_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICommon_table_expressionContext) -} - -func (s *Compound_select_stmtContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Compound_select_stmtContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Compound_select_stmtContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Compound_select_stmtContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Compound_select_stmtContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Compound_select_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Compound_select_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Compound_select_stmtContext) AllK_UNION() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_UNION) -} - -func (s *Compound_select_stmtContext) K_UNION(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_UNION, i) -} - -func (s *Compound_select_stmtContext) AllK_INTERSECT() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_INTERSECT) -} - -func (s *Compound_select_stmtContext) K_INTERSECT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_INTERSECT, i) -} - -func (s *Compound_select_stmtContext) AllK_EXCEPT() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_EXCEPT) -} - -func (s *Compound_select_stmtContext) K_EXCEPT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCEPT, i) -} - -func (s *Compound_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *Compound_select_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Compound_select_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Compound_select_stmtContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Compound_select_stmtContext) AllK_ALL() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_ALL) -} - -func (s *Compound_select_stmtContext) K_ALL(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, i) -} - -func (s *Compound_select_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Compound_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Compound_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCompound_select_stmt(s) - } -} - -func (s *Compound_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCompound_select_stmt(s) - } -} - - - - -func (p *SqlParser) Compound_select_stmt() (localctx ICompound_select_stmtContext) { - this := p - _ = this - - localctx = NewCompound_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 22, SqlParserRULE_compound_select_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(354) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(342) - p.Match(SqlParserK_WITH) - } - p.SetState(344) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 22, p.GetParserRuleContext()) == 1 { - { - p.SetState(343) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(346) - p.Common_table_expression() - } - p.SetState(351) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(347) - p.Match(SqlParserCOMMA) - } - { - p.SetState(348) - p.Common_table_expression() - } - - - p.SetState(353) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(356) - p.Select_core() - } - p.SetState(366) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for ok := true; ok; ok = _la == SqlParserK_EXCEPT || _la == SqlParserK_INTERSECT || _la == SqlParserK_UNION { - p.SetState(363) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_UNION: - { - p.SetState(357) - p.Match(SqlParserK_UNION) - } - p.SetState(359) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ALL { - { - p.SetState(358) - p.Match(SqlParserK_ALL) - } - - } - - - case SqlParserK_INTERSECT: - { - p.SetState(361) - p.Match(SqlParserK_INTERSECT) - } - - - case SqlParserK_EXCEPT: - { - p.SetState(362) - p.Match(SqlParserK_EXCEPT) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - { - p.SetState(365) - p.Select_core() - } - - - p.SetState(368) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(380) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(370) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(371) - p.Match(SqlParserK_BY) - } - { - p.SetState(372) - p.Ordering_term() - } - p.SetState(377) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(373) - p.Match(SqlParserCOMMA) - } - { - p.SetState(374) - p.Ordering_term() - } - - - p.SetState(379) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - p.SetState(388) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT { - { - p.SetState(382) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(383) - p.expr(0) - } - p.SetState(386) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(384) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(385) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// ICreate_index_stmtContext is an interface to support dynamic dispatch. -type ICreate_index_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_index_stmtContext differentiates from other interfaces. - IsCreate_index_stmtContext() -} - -type Create_index_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_index_stmtContext() *Create_index_stmtContext { - var p = new(Create_index_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_index_stmt - return p -} - -func (*Create_index_stmtContext) IsCreate_index_stmtContext() {} - -func NewCreate_index_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_index_stmtContext { - var p = new(Create_index_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_index_stmt - - return p -} - -func (s *Create_index_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_index_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_index_stmtContext) K_INDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEX, 0) -} - -func (s *Create_index_stmtContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Create_index_stmtContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *Create_index_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Create_index_stmtContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Create_index_stmtContext) AllIndexed_column() []IIndexed_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIndexed_columnContext); ok { - len++ - } - } - - tst := make([]IIndexed_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIndexed_columnContext); ok { - tst[i] = t.(IIndexed_columnContext) - i++ - } - } - - return tst -} - -func (s *Create_index_stmtContext) Indexed_column(i int) IIndexed_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndexed_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIndexed_columnContext) -} - -func (s *Create_index_stmtContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Create_index_stmtContext) K_UNIQUE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNIQUE, 0) -} - -func (s *Create_index_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_index_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_index_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_index_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_index_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Create_index_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Create_index_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Create_index_stmtContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Create_index_stmtContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Create_index_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_index_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_index_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_index_stmt(s) - } -} - -func (s *Create_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_index_stmt(s) - } -} - - - - -func (p *SqlParser) Create_index_stmt() (localctx ICreate_index_stmtContext) { - this := p - _ = this - - localctx = NewCreate_index_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 24, SqlParserRULE_create_index_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(390) - p.Match(SqlParserK_CREATE) - } - p.SetState(392) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_UNIQUE { - { - p.SetState(391) - p.Match(SqlParserK_UNIQUE) - } - - } - { - p.SetState(394) - p.Match(SqlParserK_INDEX) - } - p.SetState(398) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 33, p.GetParserRuleContext()) == 1 { - { - p.SetState(395) - p.Match(SqlParserK_IF) - } - { - p.SetState(396) - p.Match(SqlParserK_NOT) - } - { - p.SetState(397) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(403) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 34, p.GetParserRuleContext()) == 1 { - { - p.SetState(400) - p.Database_name() - } - { - p.SetState(401) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(405) - p.Index_name() - } - { - p.SetState(406) - p.Match(SqlParserK_ON) - } - { - p.SetState(407) - p.Table_name() - } - { - p.SetState(408) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(409) - p.Indexed_column() - } - p.SetState(414) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(410) - p.Match(SqlParserCOMMA) - } - { - p.SetState(411) - p.Indexed_column() - } - - - p.SetState(416) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(417) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(420) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(418) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(419) - p.expr(0) - } - - } - - - - return localctx -} - - -// ICreate_table_stmtContext is an interface to support dynamic dispatch. -type ICreate_table_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_table_stmtContext differentiates from other interfaces. - IsCreate_table_stmtContext() -} - -type Create_table_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_table_stmtContext() *Create_table_stmtContext { - var p = new(Create_table_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_table_stmt - return p -} - -func (*Create_table_stmtContext) IsCreate_table_stmtContext() {} - -func NewCreate_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_table_stmtContext { - var p = new(Create_table_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_table_stmt - - return p -} - -func (s *Create_table_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_table_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_table_stmtContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *Create_table_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Create_table_stmtContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Create_table_stmtContext) AllColumn_def() []IColumn_defContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_defContext); ok { - len++ - } - } - - tst := make([]IColumn_defContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_defContext); ok { - tst[i] = t.(IColumn_defContext) - i++ - } - } - - return tst -} - -func (s *Create_table_stmtContext) Column_def(i int) IColumn_defContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_defContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_defContext) -} - -func (s *Create_table_stmtContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Create_table_stmtContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Create_table_stmtContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Create_table_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_table_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_table_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_table_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_table_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Create_table_stmtContext) Unknown() IUnknownContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUnknownContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUnknownContext) -} - -func (s *Create_table_stmtContext) K_TEMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMP, 0) -} - -func (s *Create_table_stmtContext) K_TEMPORARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMPORARY, 0) -} - -func (s *Create_table_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Create_table_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Create_table_stmtContext) AllTable_constraint() []ITable_constraintContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_constraintContext); ok { - len++ - } - } - - tst := make([]ITable_constraintContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_constraintContext); ok { - tst[i] = t.(ITable_constraintContext) - i++ - } - } - - return tst -} - -func (s *Create_table_stmtContext) Table_constraint(i int) ITable_constraintContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraintContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraintContext) -} - -func (s *Create_table_stmtContext) K_WITHOUT() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITHOUT, 0) -} - -func (s *Create_table_stmtContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) -} - -func (s *Create_table_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_table_stmt(s) - } -} - -func (s *Create_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_table_stmt(s) - } -} - - - - -func (p *SqlParser) Create_table_stmt() (localctx ICreate_table_stmtContext) { - this := p - _ = this - - localctx = NewCreate_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 26, SqlParserRULE_create_table_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(422) - p.Match(SqlParserK_CREATE) - } - p.SetState(424) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { - { - p.SetState(423) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - { - p.SetState(426) - p.Match(SqlParserK_TABLE) - } - p.SetState(430) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 38, p.GetParserRuleContext()) == 1 { - { - p.SetState(427) - p.Match(SqlParserK_IF) - } - { - p.SetState(428) - p.Match(SqlParserK_NOT) - } - { - p.SetState(429) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(435) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 39, p.GetParserRuleContext()) == 1 { - { - p.SetState(432) - p.Database_name() - } - { - p.SetState(433) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(437) - p.Table_name() - } - p.SetState(456) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserOPEN_PAR: - { - p.SetState(438) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(439) - p.Column_def() - } - p.SetState(446) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - p.SetState(444) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 40, p.GetParserRuleContext()) { - case 1: - { - p.SetState(440) - p.Match(SqlParserCOMMA) - } - { - p.SetState(441) - p.Table_constraint() - } - - - case 2: - { - p.SetState(442) - p.Match(SqlParserCOMMA) - } - { - p.SetState(443) - p.Column_def() - } - - } - - p.SetState(448) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(449) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(452) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 42, p.GetParserRuleContext()) == 1 { - { - p.SetState(450) - p.Match(SqlParserK_WITHOUT) - } - { - p.SetState(451) - p.Match(SqlParserIDENTIFIER) - } - - - } - - - case SqlParserK_AS: - { - p.SetState(454) - p.Match(SqlParserK_AS) - } - { - p.SetState(455) - p.Select_stmt() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - p.SetState(459) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 44, p.GetParserRuleContext()) == 1 { - { - p.SetState(458) - p.Unknown() - } - - - } - - - - return localctx -} - - -// ICreate_trigger_stmtContext is an interface to support dynamic dispatch. -type ICreate_trigger_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_trigger_stmtContext differentiates from other interfaces. - IsCreate_trigger_stmtContext() -} - -type Create_trigger_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_trigger_stmtContext() *Create_trigger_stmtContext { - var p = new(Create_trigger_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_trigger_stmt - return p -} - -func (*Create_trigger_stmtContext) IsCreate_trigger_stmtContext() {} - -func NewCreate_trigger_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_trigger_stmtContext { - var p = new(Create_trigger_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_trigger_stmt - - return p -} - -func (s *Create_trigger_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_trigger_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_trigger_stmtContext) K_TRIGGER() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRIGGER, 0) -} - -func (s *Create_trigger_stmtContext) Trigger_name() ITrigger_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITrigger_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITrigger_nameContext) -} - -func (s *Create_trigger_stmtContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *Create_trigger_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Create_trigger_stmtContext) K_BEGIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEGIN, 0) -} - -func (s *Create_trigger_stmtContext) K_END() antlr.TerminalNode { - return s.GetToken(SqlParserK_END, 0) -} - -func (s *Create_trigger_stmtContext) K_DELETE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, 0) -} - -func (s *Create_trigger_stmtContext) K_INSERT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSERT, 0) -} - -func (s *Create_trigger_stmtContext) K_UPDATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, 0) -} - -func (s *Create_trigger_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_trigger_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_trigger_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_trigger_stmtContext) AllDatabase_name() []IDatabase_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IDatabase_nameContext); ok { - len++ - } - } - - tst := make([]IDatabase_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IDatabase_nameContext); ok { - tst[i] = t.(IDatabase_nameContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Database_name(i int) IDatabase_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_trigger_stmtContext) AllDOT() []antlr.TerminalNode { - return s.GetTokens(SqlParserDOT) -} - -func (s *Create_trigger_stmtContext) DOT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserDOT, i) -} - -func (s *Create_trigger_stmtContext) K_BEFORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEFORE, 0) -} - -func (s *Create_trigger_stmtContext) K_AFTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_AFTER, 0) -} - -func (s *Create_trigger_stmtContext) K_INSTEAD() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSTEAD, 0) -} - -func (s *Create_trigger_stmtContext) AllK_OF() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_OF) -} - -func (s *Create_trigger_stmtContext) K_OF(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_OF, i) -} - -func (s *Create_trigger_stmtContext) K_FOR() antlr.TerminalNode { - return s.GetToken(SqlParserK_FOR, 0) -} - -func (s *Create_trigger_stmtContext) K_EACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_EACH, 0) -} - -func (s *Create_trigger_stmtContext) K_ROW() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROW, 0) -} - -func (s *Create_trigger_stmtContext) K_WHEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHEN, 0) -} - -func (s *Create_trigger_stmtContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Create_trigger_stmtContext) AllSCOL() []antlr.TerminalNode { - return s.GetTokens(SqlParserSCOL) -} - -func (s *Create_trigger_stmtContext) SCOL(i int) antlr.TerminalNode { - return s.GetToken(SqlParserSCOL, i) -} - -func (s *Create_trigger_stmtContext) K_TEMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMP, 0) -} - -func (s *Create_trigger_stmtContext) K_TEMPORARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMPORARY, 0) -} - -func (s *Create_trigger_stmtContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Create_trigger_stmtContext) AllUpdate_stmt() []IUpdate_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IUpdate_stmtContext); ok { - len++ - } - } - - tst := make([]IUpdate_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IUpdate_stmtContext); ok { - tst[i] = t.(IUpdate_stmtContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Update_stmt(i int) IUpdate_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUpdate_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IUpdate_stmtContext) -} - -func (s *Create_trigger_stmtContext) AllInsert_stmt() []IInsert_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IInsert_stmtContext); ok { - len++ - } - } - - tst := make([]IInsert_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IInsert_stmtContext); ok { - tst[i] = t.(IInsert_stmtContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Insert_stmt(i int) IInsert_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IInsert_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IInsert_stmtContext) -} - -func (s *Create_trigger_stmtContext) AllDelete_stmt() []IDelete_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IDelete_stmtContext); ok { - len++ - } - } - - tst := make([]IDelete_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IDelete_stmtContext); ok { - tst[i] = t.(IDelete_stmtContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Delete_stmt(i int) IDelete_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDelete_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IDelete_stmtContext) -} - -func (s *Create_trigger_stmtContext) AllSelect_stmt() []ISelect_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_stmtContext); ok { - len++ - } - } - - tst := make([]ISelect_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_stmtContext); ok { - tst[i] = t.(ISelect_stmtContext) - i++ - } - } - - return tst -} - -func (s *Create_trigger_stmtContext) Select_stmt(i int) ISelect_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Create_trigger_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Create_trigger_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Create_trigger_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_trigger_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_trigger_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_trigger_stmt(s) - } -} - -func (s *Create_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_trigger_stmt(s) - } -} - - - - -func (p *SqlParser) Create_trigger_stmt() (localctx ICreate_trigger_stmtContext) { - this := p - _ = this - - localctx = NewCreate_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 28, SqlParserRULE_create_trigger_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(461) - p.Match(SqlParserK_CREATE) - } - p.SetState(463) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { - { - p.SetState(462) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - { - p.SetState(465) - p.Match(SqlParserK_TRIGGER) - } - p.SetState(469) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 46, p.GetParserRuleContext()) == 1 { - { - p.SetState(466) - p.Match(SqlParserK_IF) - } - { - p.SetState(467) - p.Match(SqlParserK_NOT) - } - { - p.SetState(468) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(474) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 47, p.GetParserRuleContext()) == 1 { - { - p.SetState(471) - p.Database_name() - } - { - p.SetState(472) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(476) - p.Trigger_name() - } - p.SetState(481) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_BEFORE: - { - p.SetState(477) - p.Match(SqlParserK_BEFORE) - } - - - case SqlParserK_AFTER: - { - p.SetState(478) - p.Match(SqlParserK_AFTER) - } - - - case SqlParserK_INSTEAD: - { - p.SetState(479) - p.Match(SqlParserK_INSTEAD) - } - { - p.SetState(480) - p.Match(SqlParserK_OF) - } - - - case SqlParserK_DELETE, SqlParserK_INSERT, SqlParserK_UPDATE: - - - - default: - } - p.SetState(497) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_DELETE: - { - p.SetState(483) - p.Match(SqlParserK_DELETE) - } - - - case SqlParserK_INSERT: - { - p.SetState(484) - p.Match(SqlParserK_INSERT) - } - - - case SqlParserK_UPDATE: - { - p.SetState(485) - p.Match(SqlParserK_UPDATE) - } - p.SetState(495) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_OF { - { - p.SetState(486) - p.Match(SqlParserK_OF) - } - { - p.SetState(487) - p.Column_name() - } - p.SetState(492) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(488) - p.Match(SqlParserCOMMA) - } - { - p.SetState(489) - p.Column_name() - } - - - p.SetState(494) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - { - p.SetState(499) - p.Match(SqlParserK_ON) - } - p.SetState(503) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 52, p.GetParserRuleContext()) == 1 { - { - p.SetState(500) - p.Database_name() - } - { - p.SetState(501) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(505) - p.Table_name() - } - p.SetState(509) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_FOR { - { - p.SetState(506) - p.Match(SqlParserK_FOR) - } - { - p.SetState(507) - p.Match(SqlParserK_EACH) - } - { - p.SetState(508) - p.Match(SqlParserK_ROW) - } - - } - p.SetState(513) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHEN { - { - p.SetState(511) - p.Match(SqlParserK_WHEN) - } - { - p.SetState(512) - p.expr(0) - } - - } - { - p.SetState(515) - p.Match(SqlParserK_BEGIN) - } - p.SetState(524) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for ok := true; ok; ok = _la == SqlParserK_DELETE || _la == SqlParserK_INSERT || ((((_la - 126)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 126))) & ((1 << (SqlParserK_REPLACE - 126)) | (1 << (SqlParserK_SELECT - 126)) | (1 << (SqlParserK_UPDATE - 126)) | (1 << (SqlParserK_VALUES - 126)) | (1 << (SqlParserK_WITH - 126)))) != 0) { - p.SetState(520) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 55, p.GetParserRuleContext()) { - case 1: - { - p.SetState(516) - p.Update_stmt() - } - - - case 2: - { - p.SetState(517) - p.Insert_stmt() - } - - - case 3: - { - p.SetState(518) - p.Delete_stmt() - } - - - case 4: - { - p.SetState(519) - p.Select_stmt() - } - - } - { - p.SetState(522) - p.Match(SqlParserSCOL) - } - - - p.SetState(526) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(528) - p.Match(SqlParserK_END) - } - - - - return localctx -} - - -// ICreate_view_stmtContext is an interface to support dynamic dispatch. -type ICreate_view_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_view_stmtContext differentiates from other interfaces. - IsCreate_view_stmtContext() -} - -type Create_view_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_view_stmtContext() *Create_view_stmtContext { - var p = new(Create_view_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_view_stmt - return p -} - -func (*Create_view_stmtContext) IsCreate_view_stmtContext() {} - -func NewCreate_view_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_view_stmtContext { - var p = new(Create_view_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_view_stmt - - return p -} - -func (s *Create_view_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_view_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_view_stmtContext) K_VIEW() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIEW, 0) -} - -func (s *Create_view_stmtContext) View_name() IView_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IView_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IView_nameContext) -} - -func (s *Create_view_stmtContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Create_view_stmtContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Create_view_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_view_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_view_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_view_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_view_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Create_view_stmtContext) K_TEMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMP, 0) -} - -func (s *Create_view_stmtContext) K_TEMPORARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMPORARY, 0) -} - -func (s *Create_view_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_view_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_view_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_view_stmt(s) - } -} - -func (s *Create_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_view_stmt(s) - } -} - - - - -func (p *SqlParser) Create_view_stmt() (localctx ICreate_view_stmtContext) { - this := p - _ = this - - localctx = NewCreate_view_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 30, SqlParserRULE_create_view_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(530) - p.Match(SqlParserK_CREATE) - } - p.SetState(532) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY { - { - p.SetState(531) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_TEMP || _la == SqlParserK_TEMPORARY) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - { - p.SetState(534) - p.Match(SqlParserK_VIEW) - } - p.SetState(538) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 58, p.GetParserRuleContext()) == 1 { - { - p.SetState(535) - p.Match(SqlParserK_IF) - } - { - p.SetState(536) - p.Match(SqlParserK_NOT) - } - { - p.SetState(537) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(543) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 59, p.GetParserRuleContext()) == 1 { - { - p.SetState(540) - p.Database_name() - } - { - p.SetState(541) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(545) - p.View_name() - } - { - p.SetState(546) - p.Match(SqlParserK_AS) - } - { - p.SetState(547) - p.Select_stmt() - } - - - - return localctx -} - - -// ICreate_virtual_table_stmtContext is an interface to support dynamic dispatch. -type ICreate_virtual_table_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCreate_virtual_table_stmtContext differentiates from other interfaces. - IsCreate_virtual_table_stmtContext() -} - -type Create_virtual_table_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCreate_virtual_table_stmtContext() *Create_virtual_table_stmtContext { - var p = new(Create_virtual_table_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_create_virtual_table_stmt - return p -} - -func (*Create_virtual_table_stmtContext) IsCreate_virtual_table_stmtContext() {} - -func NewCreate_virtual_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Create_virtual_table_stmtContext { - var p = new(Create_virtual_table_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_create_virtual_table_stmt - - return p -} - -func (s *Create_virtual_table_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Create_virtual_table_stmtContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *Create_virtual_table_stmtContext) K_VIRTUAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIRTUAL, 0) -} - -func (s *Create_virtual_table_stmtContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *Create_virtual_table_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Create_virtual_table_stmtContext) K_USING() antlr.TerminalNode { - return s.GetToken(SqlParserK_USING, 0) -} - -func (s *Create_virtual_table_stmtContext) Module_name() IModule_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IModule_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IModule_nameContext) -} - -func (s *Create_virtual_table_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Create_virtual_table_stmtContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Create_virtual_table_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Create_virtual_table_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Create_virtual_table_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Create_virtual_table_stmtContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Create_virtual_table_stmtContext) AllModule_argument() []IModule_argumentContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IModule_argumentContext); ok { - len++ - } - } - - tst := make([]IModule_argumentContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IModule_argumentContext); ok { - tst[i] = t.(IModule_argumentContext) - i++ - } - } - - return tst -} - -func (s *Create_virtual_table_stmtContext) Module_argument(i int) IModule_argumentContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IModule_argumentContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IModule_argumentContext) -} - -func (s *Create_virtual_table_stmtContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Create_virtual_table_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Create_virtual_table_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Create_virtual_table_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Create_virtual_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Create_virtual_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCreate_virtual_table_stmt(s) - } -} - -func (s *Create_virtual_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCreate_virtual_table_stmt(s) - } -} - - - - -func (p *SqlParser) Create_virtual_table_stmt() (localctx ICreate_virtual_table_stmtContext) { - this := p - _ = this - - localctx = NewCreate_virtual_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 32, SqlParserRULE_create_virtual_table_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(549) - p.Match(SqlParserK_CREATE) - } - { - p.SetState(550) - p.Match(SqlParserK_VIRTUAL) - } - { - p.SetState(551) - p.Match(SqlParserK_TABLE) - } - p.SetState(555) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 60, p.GetParserRuleContext()) == 1 { - { - p.SetState(552) - p.Match(SqlParserK_IF) - } - { - p.SetState(553) - p.Match(SqlParserK_NOT) - } - { - p.SetState(554) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(560) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 61, p.GetParserRuleContext()) == 1 { - { - p.SetState(557) - p.Database_name() - } - { - p.SetState(558) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(562) - p.Table_name() - } - { - p.SetState(563) - p.Match(SqlParserK_USING) - } - { - p.SetState(564) - p.Module_name() - } - p.SetState(576) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserOPEN_PAR { - { - p.SetState(565) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(566) - p.Module_argument() - } - p.SetState(571) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(567) - p.Match(SqlParserCOMMA) - } - { - p.SetState(568) - p.Module_argument() - } - - - p.SetState(573) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(574) - p.Match(SqlParserCLOSE_PAR) - } - - } - - - - return localctx -} - - -// IDelete_stmtContext is an interface to support dynamic dispatch. -type IDelete_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDelete_stmtContext differentiates from other interfaces. - IsDelete_stmtContext() -} - -type Delete_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDelete_stmtContext() *Delete_stmtContext { - var p = new(Delete_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_delete_stmt - return p -} - -func (*Delete_stmtContext) IsDelete_stmtContext() {} - -func NewDelete_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmtContext { - var p = new(Delete_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_delete_stmt - - return p -} - -func (s *Delete_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Delete_stmtContext) K_DELETE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, 0) -} - -func (s *Delete_stmtContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *Delete_stmtContext) Qualified_table_name() IQualified_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IQualified_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IQualified_table_nameContext) -} - -func (s *Delete_stmtContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Delete_stmtContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Delete_stmtContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Delete_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Delete_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Delete_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDelete_stmt(s) - } -} - -func (s *Delete_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDelete_stmt(s) - } -} - - - - -func (p *SqlParser) Delete_stmt() (localctx IDelete_stmtContext) { - this := p - _ = this - - localctx = NewDelete_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 34, SqlParserRULE_delete_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(579) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(578) - p.With_clause() - } - - } - { - p.SetState(581) - p.Match(SqlParserK_DELETE) - } - { - p.SetState(582) - p.Match(SqlParserK_FROM) - } - { - p.SetState(583) - p.Qualified_table_name() - } - p.SetState(586) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(584) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(585) - p.expr(0) - } - - } - - - - return localctx -} - - -// IDelete_stmt_limitedContext is an interface to support dynamic dispatch. -type IDelete_stmt_limitedContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDelete_stmt_limitedContext differentiates from other interfaces. - IsDelete_stmt_limitedContext() -} - -type Delete_stmt_limitedContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDelete_stmt_limitedContext() *Delete_stmt_limitedContext { - var p = new(Delete_stmt_limitedContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_delete_stmt_limited - return p -} - -func (*Delete_stmt_limitedContext) IsDelete_stmt_limitedContext() {} - -func NewDelete_stmt_limitedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmt_limitedContext { - var p = new(Delete_stmt_limitedContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_delete_stmt_limited - - return p -} - -func (s *Delete_stmt_limitedContext) GetParser() antlr.Parser { return s.parser } - -func (s *Delete_stmt_limitedContext) K_DELETE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, 0) -} - -func (s *Delete_stmt_limitedContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *Delete_stmt_limitedContext) Qualified_table_name() IQualified_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IQualified_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IQualified_table_nameContext) -} - -func (s *Delete_stmt_limitedContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Delete_stmt_limitedContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Delete_stmt_limitedContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Delete_stmt_limitedContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Delete_stmt_limitedContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Delete_stmt_limitedContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Delete_stmt_limitedContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Delete_stmt_limitedContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Delete_stmt_limitedContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Delete_stmt_limitedContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Delete_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Delete_stmt_limitedContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Delete_stmt_limitedContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Delete_stmt_limitedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Delete_stmt_limitedContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDelete_stmt_limited(s) - } -} - -func (s *Delete_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDelete_stmt_limited(s) - } -} - - - - -func (p *SqlParser) Delete_stmt_limited() (localctx IDelete_stmt_limitedContext) { - this := p - _ = this - - localctx = NewDelete_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 36, SqlParserRULE_delete_stmt_limited) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(589) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(588) - p.With_clause() - } - - } - { - p.SetState(591) - p.Match(SqlParserK_DELETE) - } - { - p.SetState(592) - p.Match(SqlParserK_FROM) - } - { - p.SetState(593) - p.Qualified_table_name() - } - p.SetState(596) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(594) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(595) - p.expr(0) - } - - } - p.SetState(616) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT || _la == SqlParserK_ORDER { - p.SetState(608) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(598) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(599) - p.Match(SqlParserK_BY) - } - { - p.SetState(600) - p.Ordering_term() - } - p.SetState(605) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(601) - p.Match(SqlParserCOMMA) - } - { - p.SetState(602) - p.Ordering_term() - } - - - p.SetState(607) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(610) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(611) - p.expr(0) - } - p.SetState(614) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(612) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(613) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// IDetach_stmtContext is an interface to support dynamic dispatch. -type IDetach_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDetach_stmtContext differentiates from other interfaces. - IsDetach_stmtContext() -} - -type Detach_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDetach_stmtContext() *Detach_stmtContext { - var p = new(Detach_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_detach_stmt - return p -} - -func (*Detach_stmtContext) IsDetach_stmtContext() {} - -func NewDetach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Detach_stmtContext { - var p = new(Detach_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_detach_stmt - - return p -} - -func (s *Detach_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Detach_stmtContext) K_DETACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_DETACH, 0) -} - -func (s *Detach_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Detach_stmtContext) K_DATABASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DATABASE, 0) -} - -func (s *Detach_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Detach_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Detach_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDetach_stmt(s) - } -} - -func (s *Detach_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDetach_stmt(s) - } -} - - - - -func (p *SqlParser) Detach_stmt() (localctx IDetach_stmtContext) { - this := p - _ = this - - localctx = NewDetach_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 38, SqlParserRULE_detach_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(618) - p.Match(SqlParserK_DETACH) - } - p.SetState(620) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 72, p.GetParserRuleContext()) == 1 { - { - p.SetState(619) - p.Match(SqlParserK_DATABASE) - } - - - } - { - p.SetState(622) - p.Database_name() - } - - - - return localctx -} - - -// IDrop_index_stmtContext is an interface to support dynamic dispatch. -type IDrop_index_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDrop_index_stmtContext differentiates from other interfaces. - IsDrop_index_stmtContext() -} - -type Drop_index_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDrop_index_stmtContext() *Drop_index_stmtContext { - var p = new(Drop_index_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_drop_index_stmt - return p -} - -func (*Drop_index_stmtContext) IsDrop_index_stmtContext() {} - -func NewDrop_index_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_index_stmtContext { - var p = new(Drop_index_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_drop_index_stmt - - return p -} - -func (s *Drop_index_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_index_stmtContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *Drop_index_stmtContext) K_INDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEX, 0) -} - -func (s *Drop_index_stmtContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Drop_index_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Drop_index_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Drop_index_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Drop_index_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Drop_index_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_index_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Drop_index_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDrop_index_stmt(s) - } -} - -func (s *Drop_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDrop_index_stmt(s) - } -} - - - - -func (p *SqlParser) Drop_index_stmt() (localctx IDrop_index_stmtContext) { - this := p - _ = this - - localctx = NewDrop_index_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 40, SqlParserRULE_drop_index_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(624) - p.Match(SqlParserK_DROP) - } - { - p.SetState(625) - p.Match(SqlParserK_INDEX) - } - p.SetState(628) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 73, p.GetParserRuleContext()) == 1 { - { - p.SetState(626) - p.Match(SqlParserK_IF) - } - { - p.SetState(627) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(633) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 74, p.GetParserRuleContext()) == 1 { - { - p.SetState(630) - p.Database_name() - } - { - p.SetState(631) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(635) - p.Index_name() - } - - - - return localctx -} - - -// IDrop_table_stmtContext is an interface to support dynamic dispatch. -type IDrop_table_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDrop_table_stmtContext differentiates from other interfaces. - IsDrop_table_stmtContext() -} - -type Drop_table_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDrop_table_stmtContext() *Drop_table_stmtContext { - var p = new(Drop_table_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_drop_table_stmt - return p -} - -func (*Drop_table_stmtContext) IsDrop_table_stmtContext() {} - -func NewDrop_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_table_stmtContext { - var p = new(Drop_table_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_drop_table_stmt - - return p -} - -func (s *Drop_table_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_table_stmtContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *Drop_table_stmtContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *Drop_table_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Drop_table_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Drop_table_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Drop_table_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Drop_table_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Drop_table_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Drop_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDrop_table_stmt(s) - } -} - -func (s *Drop_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDrop_table_stmt(s) - } -} - - - - -func (p *SqlParser) Drop_table_stmt() (localctx IDrop_table_stmtContext) { - this := p - _ = this - - localctx = NewDrop_table_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 42, SqlParserRULE_drop_table_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(637) - p.Match(SqlParserK_DROP) - } - { - p.SetState(638) - p.Match(SqlParserK_TABLE) - } - p.SetState(641) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 75, p.GetParserRuleContext()) == 1 { - { - p.SetState(639) - p.Match(SqlParserK_IF) - } - { - p.SetState(640) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(646) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 76, p.GetParserRuleContext()) == 1 { - { - p.SetState(643) - p.Database_name() - } - { - p.SetState(644) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(648) - p.Table_name() - } - - - - return localctx -} - - -// IDrop_trigger_stmtContext is an interface to support dynamic dispatch. -type IDrop_trigger_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDrop_trigger_stmtContext differentiates from other interfaces. - IsDrop_trigger_stmtContext() -} - -type Drop_trigger_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDrop_trigger_stmtContext() *Drop_trigger_stmtContext { - var p = new(Drop_trigger_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_drop_trigger_stmt - return p -} - -func (*Drop_trigger_stmtContext) IsDrop_trigger_stmtContext() {} - -func NewDrop_trigger_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_trigger_stmtContext { - var p = new(Drop_trigger_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_drop_trigger_stmt - - return p -} - -func (s *Drop_trigger_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_trigger_stmtContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *Drop_trigger_stmtContext) K_TRIGGER() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRIGGER, 0) -} - -func (s *Drop_trigger_stmtContext) Trigger_name() ITrigger_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITrigger_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITrigger_nameContext) -} - -func (s *Drop_trigger_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Drop_trigger_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Drop_trigger_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Drop_trigger_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Drop_trigger_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_trigger_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Drop_trigger_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDrop_trigger_stmt(s) - } -} - -func (s *Drop_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDrop_trigger_stmt(s) - } -} - - - - -func (p *SqlParser) Drop_trigger_stmt() (localctx IDrop_trigger_stmtContext) { - this := p - _ = this - - localctx = NewDrop_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 44, SqlParserRULE_drop_trigger_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(650) - p.Match(SqlParserK_DROP) - } - { - p.SetState(651) - p.Match(SqlParserK_TRIGGER) - } - p.SetState(654) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 77, p.GetParserRuleContext()) == 1 { - { - p.SetState(652) - p.Match(SqlParserK_IF) - } - { - p.SetState(653) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(659) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 78, p.GetParserRuleContext()) == 1 { - { - p.SetState(656) - p.Database_name() - } - { - p.SetState(657) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(661) - p.Trigger_name() - } - - - - return localctx -} - - -// IDrop_view_stmtContext is an interface to support dynamic dispatch. -type IDrop_view_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDrop_view_stmtContext differentiates from other interfaces. - IsDrop_view_stmtContext() -} - -type Drop_view_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDrop_view_stmtContext() *Drop_view_stmtContext { - var p = new(Drop_view_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_drop_view_stmt - return p -} - -func (*Drop_view_stmtContext) IsDrop_view_stmtContext() {} - -func NewDrop_view_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_view_stmtContext { - var p = new(Drop_view_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_drop_view_stmt - - return p -} - -func (s *Drop_view_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Drop_view_stmtContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *Drop_view_stmtContext) K_VIEW() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIEW, 0) -} - -func (s *Drop_view_stmtContext) View_name() IView_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IView_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IView_nameContext) -} - -func (s *Drop_view_stmtContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *Drop_view_stmtContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *Drop_view_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Drop_view_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Drop_view_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Drop_view_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Drop_view_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDrop_view_stmt(s) - } -} - -func (s *Drop_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDrop_view_stmt(s) - } -} - - - - -func (p *SqlParser) Drop_view_stmt() (localctx IDrop_view_stmtContext) { - this := p - _ = this - - localctx = NewDrop_view_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 46, SqlParserRULE_drop_view_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(663) - p.Match(SqlParserK_DROP) - } - { - p.SetState(664) - p.Match(SqlParserK_VIEW) - } - p.SetState(667) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 79, p.GetParserRuleContext()) == 1 { - { - p.SetState(665) - p.Match(SqlParserK_IF) - } - { - p.SetState(666) - p.Match(SqlParserK_EXISTS) - } - - - } - p.SetState(672) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 80, p.GetParserRuleContext()) == 1 { - { - p.SetState(669) - p.Database_name() - } - { - p.SetState(670) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(674) - p.View_name() - } - - - - return localctx -} - - -// IFactored_select_stmtContext is an interface to support dynamic dispatch. -type IFactored_select_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsFactored_select_stmtContext differentiates from other interfaces. - IsFactored_select_stmtContext() -} - -type Factored_select_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyFactored_select_stmtContext() *Factored_select_stmtContext { - var p = new(Factored_select_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_factored_select_stmt - return p -} - -func (*Factored_select_stmtContext) IsFactored_select_stmtContext() {} - -func NewFactored_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Factored_select_stmtContext { - var p = new(Factored_select_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_factored_select_stmt - - return p -} - -func (s *Factored_select_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Factored_select_stmtContext) AllSelect_core() []ISelect_coreContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_coreContext); ok { - len++ - } - } - - tst := make([]ISelect_coreContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_coreContext); ok { - tst[i] = t.(ISelect_coreContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Select_core(i int) ISelect_coreContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_coreContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_coreContext) -} - -func (s *Factored_select_stmtContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *Factored_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - len++ - } - } - - tst := make([]ICommon_table_expressionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICommon_table_expressionContext) -} - -func (s *Factored_select_stmtContext) AllCompound_operator() []ICompound_operatorContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICompound_operatorContext); ok { - len++ - } - } - - tst := make([]ICompound_operatorContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICompound_operatorContext); ok { - tst[i] = t.(ICompound_operatorContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Compound_operator(i int) ICompound_operatorContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICompound_operatorContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICompound_operatorContext) -} - -func (s *Factored_select_stmtContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Factored_select_stmtContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Factored_select_stmtContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Factored_select_stmtContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Factored_select_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Factored_select_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Factored_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *Factored_select_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Factored_select_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Factored_select_stmtContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Factored_select_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Factored_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Factored_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterFactored_select_stmt(s) - } -} - -func (s *Factored_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitFactored_select_stmt(s) - } -} - - - - -func (p *SqlParser) Factored_select_stmt() (localctx IFactored_select_stmtContext) { - this := p - _ = this - - localctx = NewFactored_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 48, SqlParserRULE_factored_select_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(688) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(676) - p.Match(SqlParserK_WITH) - } - p.SetState(678) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 81, p.GetParserRuleContext()) == 1 { - { - p.SetState(677) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(680) - p.Common_table_expression() - } - p.SetState(685) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(681) - p.Match(SqlParserCOMMA) - } - { - p.SetState(682) - p.Common_table_expression() - } - - - p.SetState(687) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(690) - p.Select_core() - } - p.SetState(696) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserK_EXCEPT || _la == SqlParserK_INTERSECT || _la == SqlParserK_UNION { - { - p.SetState(691) - p.Compound_operator() - } - { - p.SetState(692) - p.Select_core() - } - - - p.SetState(698) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(709) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(699) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(700) - p.Match(SqlParserK_BY) - } - { - p.SetState(701) - p.Ordering_term() - } - p.SetState(706) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(702) - p.Match(SqlParserCOMMA) - } - { - p.SetState(703) - p.Ordering_term() - } - - - p.SetState(708) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - p.SetState(717) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT { - { - p.SetState(711) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(712) - p.expr(0) - } - p.SetState(715) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(713) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(714) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// IInsert_stmtContext is an interface to support dynamic dispatch. -type IInsert_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsInsert_stmtContext differentiates from other interfaces. - IsInsert_stmtContext() -} - -type Insert_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyInsert_stmtContext() *Insert_stmtContext { - var p = new(Insert_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_insert_stmt - return p -} - -func (*Insert_stmtContext) IsInsert_stmtContext() {} - -func NewInsert_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Insert_stmtContext { - var p = new(Insert_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_insert_stmt - - return p -} - -func (s *Insert_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Insert_stmtContext) K_INTO() antlr.TerminalNode { - return s.GetToken(SqlParserK_INTO, 0) -} - -func (s *Insert_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Insert_stmtContext) K_INSERT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSERT, 0) -} - -func (s *Insert_stmtContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *Insert_stmtContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *Insert_stmtContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Insert_stmtContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Insert_stmtContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Insert_stmtContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Insert_stmtContext) K_VALUES() antlr.TerminalNode { - return s.GetToken(SqlParserK_VALUES, 0) -} - -func (s *Insert_stmtContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *Insert_stmtContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *Insert_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Insert_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Insert_stmtContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *Insert_stmtContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *Insert_stmtContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Insert_stmtContext) K_DEFAULT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFAULT, 0) -} - -func (s *Insert_stmtContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Insert_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Insert_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Insert_stmtContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Insert_stmtContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Insert_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Insert_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Insert_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Insert_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Insert_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterInsert_stmt(s) - } -} - -func (s *Insert_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitInsert_stmt(s) - } -} - - - - -func (p *SqlParser) Insert_stmt() (localctx IInsert_stmtContext) { - this := p - _ = this - - localctx = NewInsert_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 50, SqlParserRULE_insert_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(720) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(719) - p.With_clause() - } - - } - p.SetState(739) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 90, p.GetParserRuleContext()) { - case 1: - { - p.SetState(722) - p.Match(SqlParserK_INSERT) - } - - - case 2: - { - p.SetState(723) - p.Match(SqlParserK_REPLACE) - } - - - case 3: - { - p.SetState(724) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(725) - p.Match(SqlParserK_OR) - } - { - p.SetState(726) - p.Match(SqlParserK_REPLACE) - } - - - case 4: - { - p.SetState(727) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(728) - p.Match(SqlParserK_OR) - } - { - p.SetState(729) - p.Match(SqlParserK_ROLLBACK) - } - - - case 5: - { - p.SetState(730) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(731) - p.Match(SqlParserK_OR) - } - { - p.SetState(732) - p.Match(SqlParserK_ABORT) - } - - - case 6: - { - p.SetState(733) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(734) - p.Match(SqlParserK_OR) - } - { - p.SetState(735) - p.Match(SqlParserK_FAIL) - } - - - case 7: - { - p.SetState(736) - p.Match(SqlParserK_INSERT) - } - { - p.SetState(737) - p.Match(SqlParserK_OR) - } - { - p.SetState(738) - p.Match(SqlParserK_IGNORE) - } - - } - { - p.SetState(741) - p.Match(SqlParserK_INTO) - } - p.SetState(745) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 91, p.GetParserRuleContext()) == 1 { - { - p.SetState(742) - p.Database_name() - } - { - p.SetState(743) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(747) - p.Table_name() - } - p.SetState(759) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserOPEN_PAR { - { - p.SetState(748) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(749) - p.Column_name() - } - p.SetState(754) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(750) - p.Match(SqlParserCOMMA) - } - { - p.SetState(751) - p.Column_name() - } - - - p.SetState(756) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(757) - p.Match(SqlParserCLOSE_PAR) - } - - } - p.SetState(792) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 97, p.GetParserRuleContext()) { - case 1: - { - p.SetState(761) - p.Match(SqlParserK_VALUES) - } - { - p.SetState(762) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(763) - p.expr(0) - } - p.SetState(768) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(764) - p.Match(SqlParserCOMMA) - } - { - p.SetState(765) - p.expr(0) - } - - - p.SetState(770) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(771) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(786) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(772) - p.Match(SqlParserCOMMA) - } - { - p.SetState(773) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(774) - p.expr(0) - } - p.SetState(779) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(775) - p.Match(SqlParserCOMMA) - } - { - p.SetState(776) - p.expr(0) - } - - - p.SetState(781) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(782) - p.Match(SqlParserCLOSE_PAR) - } - - - p.SetState(788) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - case 2: - { - p.SetState(789) - p.Select_stmt() - } - - - case 3: - { - p.SetState(790) - p.Match(SqlParserK_DEFAULT) - } - { - p.SetState(791) - p.Match(SqlParserK_VALUES) - } - - } - - - - return localctx -} - - -// IPragma_stmtContext is an interface to support dynamic dispatch. -type IPragma_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsPragma_stmtContext differentiates from other interfaces. - IsPragma_stmtContext() -} - -type Pragma_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyPragma_stmtContext() *Pragma_stmtContext { - var p = new(Pragma_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_pragma_stmt - return p -} - -func (*Pragma_stmtContext) IsPragma_stmtContext() {} - -func NewPragma_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_stmtContext { - var p = new(Pragma_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_pragma_stmt - - return p -} - -func (s *Pragma_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Pragma_stmtContext) K_PRAGMA() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRAGMA, 0) -} - -func (s *Pragma_stmtContext) Pragma_name() IPragma_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IPragma_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IPragma_nameContext) -} - -func (s *Pragma_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Pragma_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Pragma_stmtContext) ASSIGN() antlr.TerminalNode { - return s.GetToken(SqlParserASSIGN, 0) -} - -func (s *Pragma_stmtContext) Pragma_value() IPragma_valueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IPragma_valueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IPragma_valueContext) -} - -func (s *Pragma_stmtContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Pragma_stmtContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Pragma_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Pragma_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Pragma_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterPragma_stmt(s) - } -} - -func (s *Pragma_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitPragma_stmt(s) - } -} - - - - -func (p *SqlParser) Pragma_stmt() (localctx IPragma_stmtContext) { - this := p - _ = this - - localctx = NewPragma_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 52, SqlParserRULE_pragma_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(794) - p.Match(SqlParserK_PRAGMA) - } - p.SetState(798) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 98, p.GetParserRuleContext()) == 1 { - { - p.SetState(795) - p.Database_name() - } - { - p.SetState(796) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(800) - p.Pragma_name() - } - p.SetState(807) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserASSIGN: - { - p.SetState(801) - p.Match(SqlParserASSIGN) - } - { - p.SetState(802) - p.Pragma_value() - } - - - case SqlParserOPEN_PAR: - { - p.SetState(803) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(804) - p.Pragma_value() - } - { - p.SetState(805) - p.Match(SqlParserCLOSE_PAR) - } - - - case SqlParserEOF, SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WITH, SqlParserUNEXPECTED_CHAR: - - - - default: - } - - - - return localctx -} - - -// IReindex_stmtContext is an interface to support dynamic dispatch. -type IReindex_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsReindex_stmtContext differentiates from other interfaces. - IsReindex_stmtContext() -} - -type Reindex_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyReindex_stmtContext() *Reindex_stmtContext { - var p = new(Reindex_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_reindex_stmt - return p -} - -func (*Reindex_stmtContext) IsReindex_stmtContext() {} - -func NewReindex_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Reindex_stmtContext { - var p = new(Reindex_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_reindex_stmt - - return p -} - -func (s *Reindex_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Reindex_stmtContext) K_REINDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_REINDEX, 0) -} - -func (s *Reindex_stmtContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *Reindex_stmtContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Reindex_stmtContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Reindex_stmtContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Reindex_stmtContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Reindex_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Reindex_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Reindex_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterReindex_stmt(s) - } -} - -func (s *Reindex_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitReindex_stmt(s) - } -} - - - - -func (p *SqlParser) Reindex_stmt() (localctx IReindex_stmtContext) { - this := p - _ = this - - localctx = NewReindex_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 54, SqlParserRULE_reindex_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(809) - p.Match(SqlParserK_REINDEX) - } - p.SetState(820) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 102, p.GetParserRuleContext()) == 1 { - { - p.SetState(810) - p.Collation_name() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 102, p.GetParserRuleContext()) == 2 { - p.SetState(814) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 100, p.GetParserRuleContext()) == 1 { - { - p.SetState(811) - p.Database_name() - } - { - p.SetState(812) - p.Match(SqlParserDOT) - } - - - } - p.SetState(818) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 101, p.GetParserRuleContext()) { - case 1: - { - p.SetState(816) - p.Table_name() - } - - - case 2: - { - p.SetState(817) - p.Index_name() - } - - } - - - } - - - - return localctx -} - - -// IRelease_stmtContext is an interface to support dynamic dispatch. -type IRelease_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsRelease_stmtContext differentiates from other interfaces. - IsRelease_stmtContext() -} - -type Release_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyRelease_stmtContext() *Release_stmtContext { - var p = new(Release_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_release_stmt - return p -} - -func (*Release_stmtContext) IsRelease_stmtContext() {} - -func NewRelease_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Release_stmtContext { - var p = new(Release_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_release_stmt - - return p -} - -func (s *Release_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Release_stmtContext) K_RELEASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RELEASE, 0) -} - -func (s *Release_stmtContext) Savepoint_name() ISavepoint_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISavepoint_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISavepoint_nameContext) -} - -func (s *Release_stmtContext) K_SAVEPOINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SAVEPOINT, 0) -} - -func (s *Release_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Release_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Release_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterRelease_stmt(s) - } -} - -func (s *Release_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitRelease_stmt(s) - } -} - - - - -func (p *SqlParser) Release_stmt() (localctx IRelease_stmtContext) { - this := p - _ = this - - localctx = NewRelease_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 56, SqlParserRULE_release_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(822) - p.Match(SqlParserK_RELEASE) - } - p.SetState(824) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 103, p.GetParserRuleContext()) == 1 { - { - p.SetState(823) - p.Match(SqlParserK_SAVEPOINT) - } - - - } - { - p.SetState(826) - p.Savepoint_name() - } - - - - return localctx -} - - -// IRollback_stmtContext is an interface to support dynamic dispatch. -type IRollback_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsRollback_stmtContext differentiates from other interfaces. - IsRollback_stmtContext() -} - -type Rollback_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyRollback_stmtContext() *Rollback_stmtContext { - var p = new(Rollback_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_rollback_stmt - return p -} - -func (*Rollback_stmtContext) IsRollback_stmtContext() {} - -func NewRollback_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rollback_stmtContext { - var p = new(Rollback_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_rollback_stmt - - return p -} - -func (s *Rollback_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Rollback_stmtContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Rollback_stmtContext) K_TRANSACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRANSACTION, 0) -} - -func (s *Rollback_stmtContext) K_TO() antlr.TerminalNode { - return s.GetToken(SqlParserK_TO, 0) -} - -func (s *Rollback_stmtContext) Savepoint_name() ISavepoint_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISavepoint_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISavepoint_nameContext) -} - -func (s *Rollback_stmtContext) Transaction_name() ITransaction_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITransaction_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITransaction_nameContext) -} - -func (s *Rollback_stmtContext) K_SAVEPOINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SAVEPOINT, 0) -} - -func (s *Rollback_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Rollback_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Rollback_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterRollback_stmt(s) - } -} - -func (s *Rollback_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitRollback_stmt(s) - } -} - - - - -func (p *SqlParser) Rollback_stmt() (localctx IRollback_stmtContext) { - this := p - _ = this - - localctx = NewRollback_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 58, SqlParserRULE_rollback_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(828) - p.Match(SqlParserK_ROLLBACK) - } - p.SetState(833) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TRANSACTION { - { - p.SetState(829) - p.Match(SqlParserK_TRANSACTION) - } - p.SetState(831) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 104, p.GetParserRuleContext()) == 1 { - { - p.SetState(830) - p.Transaction_name() - } - - - } - - } - p.SetState(840) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_TO { - { - p.SetState(835) - p.Match(SqlParserK_TO) - } - p.SetState(837) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 106, p.GetParserRuleContext()) == 1 { - { - p.SetState(836) - p.Match(SqlParserK_SAVEPOINT) - } - - - } - { - p.SetState(839) - p.Savepoint_name() - } - - } - - - - return localctx -} - - -// ISavepoint_stmtContext is an interface to support dynamic dispatch. -type ISavepoint_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSavepoint_stmtContext differentiates from other interfaces. - IsSavepoint_stmtContext() -} - -type Savepoint_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySavepoint_stmtContext() *Savepoint_stmtContext { - var p = new(Savepoint_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_savepoint_stmt - return p -} - -func (*Savepoint_stmtContext) IsSavepoint_stmtContext() {} - -func NewSavepoint_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_stmtContext { - var p = new(Savepoint_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_savepoint_stmt - - return p -} - -func (s *Savepoint_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Savepoint_stmtContext) K_SAVEPOINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SAVEPOINT, 0) -} - -func (s *Savepoint_stmtContext) Savepoint_name() ISavepoint_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISavepoint_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISavepoint_nameContext) -} - -func (s *Savepoint_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Savepoint_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Savepoint_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSavepoint_stmt(s) - } -} - -func (s *Savepoint_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSavepoint_stmt(s) - } -} - - - - -func (p *SqlParser) Savepoint_stmt() (localctx ISavepoint_stmtContext) { - this := p - _ = this - - localctx = NewSavepoint_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 60, SqlParserRULE_savepoint_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(842) - p.Match(SqlParserK_SAVEPOINT) - } - { - p.SetState(843) - p.Savepoint_name() - } - - - - return localctx -} - - -// ISimple_select_stmtContext is an interface to support dynamic dispatch. -type ISimple_select_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSimple_select_stmtContext differentiates from other interfaces. - IsSimple_select_stmtContext() -} - -type Simple_select_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySimple_select_stmtContext() *Simple_select_stmtContext { - var p = new(Simple_select_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_simple_select_stmt - return p -} - -func (*Simple_select_stmtContext) IsSimple_select_stmtContext() {} - -func NewSimple_select_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Simple_select_stmtContext { - var p = new(Simple_select_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_simple_select_stmt - - return p -} - -func (s *Simple_select_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Simple_select_stmtContext) Select_core() ISelect_coreContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_coreContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_coreContext) -} - -func (s *Simple_select_stmtContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *Simple_select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - len++ - } - } - - tst := make([]ICommon_table_expressionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) - i++ - } - } - - return tst -} - -func (s *Simple_select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICommon_table_expressionContext) -} - -func (s *Simple_select_stmtContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Simple_select_stmtContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Simple_select_stmtContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Simple_select_stmtContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Simple_select_stmtContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Simple_select_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Simple_select_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Simple_select_stmtContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *Simple_select_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Simple_select_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Simple_select_stmtContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Simple_select_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Simple_select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Simple_select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSimple_select_stmt(s) - } -} - -func (s *Simple_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSimple_select_stmt(s) - } -} - - - - -func (p *SqlParser) Simple_select_stmt() (localctx ISimple_select_stmtContext) { - this := p - _ = this - - localctx = NewSimple_select_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 62, SqlParserRULE_simple_select_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(857) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(845) - p.Match(SqlParserK_WITH) - } - p.SetState(847) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 108, p.GetParserRuleContext()) == 1 { - { - p.SetState(846) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(849) - p.Common_table_expression() - } - p.SetState(854) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(850) - p.Match(SqlParserCOMMA) - } - { - p.SetState(851) - p.Common_table_expression() - } - - - p.SetState(856) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(859) - p.Select_core() - } - p.SetState(870) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(860) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(861) - p.Match(SqlParserK_BY) - } - { - p.SetState(862) - p.Ordering_term() - } - p.SetState(867) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(863) - p.Match(SqlParserCOMMA) - } - { - p.SetState(864) - p.Ordering_term() - } - - - p.SetState(869) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - p.SetState(878) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT { - { - p.SetState(872) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(873) - p.expr(0) - } - p.SetState(876) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(874) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(875) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// ISelect_stmtContext is an interface to support dynamic dispatch. -type ISelect_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSelect_stmtContext differentiates from other interfaces. - IsSelect_stmtContext() -} - -type Select_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySelect_stmtContext() *Select_stmtContext { - var p = new(Select_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_select_stmt - return p -} - -func (*Select_stmtContext) IsSelect_stmtContext() {} - -func NewSelect_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_stmtContext { - var p = new(Select_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_select_stmt - - return p -} - -func (s *Select_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Select_stmtContext) AllSelect_or_values() []ISelect_or_valuesContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_or_valuesContext); ok { - len++ - } - } - - tst := make([]ISelect_or_valuesContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_or_valuesContext); ok { - tst[i] = t.(ISelect_or_valuesContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Select_or_values(i int) ISelect_or_valuesContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_or_valuesContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_or_valuesContext) -} - -func (s *Select_stmtContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *Select_stmtContext) AllCommon_table_expression() []ICommon_table_expressionContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - len++ - } - } - - tst := make([]ICommon_table_expressionContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICommon_table_expressionContext); ok { - tst[i] = t.(ICommon_table_expressionContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Common_table_expression(i int) ICommon_table_expressionContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICommon_table_expressionContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICommon_table_expressionContext) -} - -func (s *Select_stmtContext) AllCompound_operator() []ICompound_operatorContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICompound_operatorContext); ok { - len++ - } - } - - tst := make([]ICompound_operatorContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICompound_operatorContext); ok { - tst[i] = t.(ICompound_operatorContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Compound_operator(i int) ICompound_operatorContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICompound_operatorContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICompound_operatorContext) -} - -func (s *Select_stmtContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Select_stmtContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Select_stmtContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Select_stmtContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Select_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Select_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Select_stmtContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *Select_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Select_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Select_stmtContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Select_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Select_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Select_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSelect_stmt(s) - } -} - -func (s *Select_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSelect_stmt(s) - } -} - - - - -func (p *SqlParser) Select_stmt() (localctx ISelect_stmtContext) { - this := p - _ = this - - localctx = NewSelect_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 64, SqlParserRULE_select_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - p.SetState(892) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(880) - p.Match(SqlParserK_WITH) - } - p.SetState(882) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 115, p.GetParserRuleContext()) == 1 { - { - p.SetState(881) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(884) - p.Common_table_expression() - } - p.SetState(889) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(885) - p.Match(SqlParserCOMMA) - } - { - p.SetState(886) - p.Common_table_expression() - } - - - p.SetState(891) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(894) - p.Select_or_values() - } - p.SetState(900) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(895) - p.Compound_operator() - } - { - p.SetState(896) - p.Select_or_values() - } - - - } - p.SetState(902) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 118, p.GetParserRuleContext()) - } - p.SetState(913) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 120, p.GetParserRuleContext()) == 1 { - { - p.SetState(903) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(904) - p.Match(SqlParserK_BY) - } - { - p.SetState(905) - p.Ordering_term() - } - p.SetState(910) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 119, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(906) - p.Match(SqlParserCOMMA) - } - { - p.SetState(907) - p.Ordering_term() - } - - - } - p.SetState(912) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 119, p.GetParserRuleContext()) - } - - - } - p.SetState(921) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 122, p.GetParserRuleContext()) == 1 { - { - p.SetState(915) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(916) - p.expr(0) - } - p.SetState(919) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 121, p.GetParserRuleContext()) == 1 { - { - p.SetState(917) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(918) - p.expr(0) - } - - - } - - - } - - - - return localctx -} - - -// ISelect_or_valuesContext is an interface to support dynamic dispatch. -type ISelect_or_valuesContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSelect_or_valuesContext differentiates from other interfaces. - IsSelect_or_valuesContext() -} - -type Select_or_valuesContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySelect_or_valuesContext() *Select_or_valuesContext { - var p = new(Select_or_valuesContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_select_or_values - return p -} - -func (*Select_or_valuesContext) IsSelect_or_valuesContext() {} - -func NewSelect_or_valuesContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_or_valuesContext { - var p = new(Select_or_valuesContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_select_or_values - - return p -} - -func (s *Select_or_valuesContext) GetParser() antlr.Parser { return s.parser } - -func (s *Select_or_valuesContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SELECT, 0) -} - -func (s *Select_or_valuesContext) AllResult_column() []IResult_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IResult_columnContext); ok { - len++ - } - } - - tst := make([]IResult_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IResult_columnContext); ok { - tst[i] = t.(IResult_columnContext) - i++ - } - } - - return tst -} - -func (s *Select_or_valuesContext) Result_column(i int) IResult_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IResult_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IResult_columnContext) -} - -func (s *Select_or_valuesContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Select_or_valuesContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Select_or_valuesContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *Select_or_valuesContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Select_or_valuesContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Select_or_valuesContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Select_or_valuesContext) K_GROUP() antlr.TerminalNode { - return s.GetToken(SqlParserK_GROUP, 0) -} - -func (s *Select_or_valuesContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Select_or_valuesContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DISTINCT, 0) -} - -func (s *Select_or_valuesContext) K_ALL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, 0) -} - -func (s *Select_or_valuesContext) AllTable_or_subquery() []ITable_or_subqueryContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - len++ - } - } - - tst := make([]ITable_or_subqueryContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_or_subqueryContext); ok { - tst[i] = t.(ITable_or_subqueryContext) - i++ - } - } - - return tst -} - -func (s *Select_or_valuesContext) Table_or_subquery(i int) ITable_or_subqueryContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_subqueryContext) -} - -func (s *Select_or_valuesContext) Join_clause() IJoin_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IJoin_clauseContext) -} - -func (s *Select_or_valuesContext) K_HAVING() antlr.TerminalNode { - return s.GetToken(SqlParserK_HAVING, 0) -} - -func (s *Select_or_valuesContext) K_VALUES() antlr.TerminalNode { - return s.GetToken(SqlParserK_VALUES, 0) -} - -func (s *Select_or_valuesContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *Select_or_valuesContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *Select_or_valuesContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *Select_or_valuesContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *Select_or_valuesContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Select_or_valuesContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Select_or_valuesContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSelect_or_values(s) - } -} - -func (s *Select_or_valuesContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSelect_or_values(s) - } -} - - - - -func (p *SqlParser) Select_or_values() (localctx ISelect_or_valuesContext) { - this := p - _ = this - - localctx = NewSelect_or_valuesContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 66, SqlParserRULE_select_or_values) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.SetState(997) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_SELECT: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(923) - p.Match(SqlParserK_SELECT) - } - p.SetState(925) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 { - { - p.SetState(924) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ALL || _la == SqlParserK_DISTINCT) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - { - p.SetState(927) - p.Result_column() - } - p.SetState(932) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 124, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(928) - p.Match(SqlParserCOMMA) - } - { - p.SetState(929) - p.Result_column() - } - - - } - p.SetState(934) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 124, p.GetParserRuleContext()) - } - p.SetState(947) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 127, p.GetParserRuleContext()) == 1 { - { - p.SetState(935) - p.Match(SqlParserK_FROM) - } - p.SetState(945) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 126, p.GetParserRuleContext()) { - case 1: - { - p.SetState(936) - p.Table_or_subquery() - } - p.SetState(941) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 125, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(937) - p.Match(SqlParserCOMMA) - } - { - p.SetState(938) - p.Table_or_subquery() - } - - - } - p.SetState(943) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 125, p.GetParserRuleContext()) - } - - - case 2: - { - p.SetState(944) - p.Join_clause() - } - - } - - - } - p.SetState(951) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 128, p.GetParserRuleContext()) == 1 { - { - p.SetState(949) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(950) - p.expr(0) - } - - - } - p.SetState(967) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 { - { - p.SetState(953) - p.Match(SqlParserK_GROUP) - } - { - p.SetState(954) - p.Match(SqlParserK_BY) - } - { - p.SetState(955) - p.expr(0) - } - p.SetState(960) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 129, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(956) - p.Match(SqlParserCOMMA) - } - { - p.SetState(957) - p.expr(0) - } - - - } - p.SetState(962) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 129, p.GetParserRuleContext()) - } - p.SetState(965) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 130, p.GetParserRuleContext()) == 1 { - { - p.SetState(963) - p.Match(SqlParserK_HAVING) - } - { - p.SetState(964) - p.expr(0) - } - - - } - - - } - - - case SqlParserK_VALUES: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(969) - p.Match(SqlParserK_VALUES) - } - { - p.SetState(970) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(971) - p.expr(0) - } - p.SetState(976) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(972) - p.Match(SqlParserCOMMA) - } - { - p.SetState(973) - p.expr(0) - } - - - p.SetState(978) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(979) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(994) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 134, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(980) - p.Match(SqlParserCOMMA) - } - { - p.SetState(981) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(982) - p.expr(0) - } - p.SetState(987) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(983) - p.Match(SqlParserCOMMA) - } - { - p.SetState(984) - p.expr(0) - } - - - p.SetState(989) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(990) - p.Match(SqlParserCLOSE_PAR) - } - - - } - p.SetState(996) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 134, p.GetParserRuleContext()) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - return localctx -} - - -// IUpdate_stmtContext is an interface to support dynamic dispatch. -type IUpdate_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsUpdate_stmtContext differentiates from other interfaces. - IsUpdate_stmtContext() -} - -type Update_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyUpdate_stmtContext() *Update_stmtContext { - var p = new(Update_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_update_stmt - return p -} - -func (*Update_stmtContext) IsUpdate_stmtContext() {} - -func NewUpdate_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmtContext { - var p = new(Update_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_update_stmt - - return p -} - -func (s *Update_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Update_stmtContext) K_UPDATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, 0) -} - -func (s *Update_stmtContext) Qualified_table_name() IQualified_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IQualified_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IQualified_table_nameContext) -} - -func (s *Update_stmtContext) K_SET() antlr.TerminalNode { - return s.GetToken(SqlParserK_SET, 0) -} - -func (s *Update_stmtContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Update_stmtContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Update_stmtContext) AllASSIGN() []antlr.TerminalNode { - return s.GetTokens(SqlParserASSIGN) -} - -func (s *Update_stmtContext) ASSIGN(i int) antlr.TerminalNode { - return s.GetToken(SqlParserASSIGN, i) -} - -func (s *Update_stmtContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Update_stmtContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Update_stmtContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Update_stmtContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *Update_stmtContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Update_stmtContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Update_stmtContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *Update_stmtContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Update_stmtContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Update_stmtContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Update_stmtContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Update_stmtContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Update_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Update_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Update_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterUpdate_stmt(s) - } -} - -func (s *Update_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitUpdate_stmt(s) - } -} - - - - -func (p *SqlParser) Update_stmt() (localctx IUpdate_stmtContext) { - this := p - _ = this - - localctx = NewUpdate_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 68, SqlParserRULE_update_stmt) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1000) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(999) - p.With_clause() - } - - } - { - p.SetState(1002) - p.Match(SqlParserK_UPDATE) - } - p.SetState(1013) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 1 { - { - p.SetState(1003) - p.Match(SqlParserK_OR) - } - { - p.SetState(1004) - p.Match(SqlParserK_ROLLBACK) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 2 { - { - p.SetState(1005) - p.Match(SqlParserK_OR) - } - { - p.SetState(1006) - p.Match(SqlParserK_ABORT) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 3 { - { - p.SetState(1007) - p.Match(SqlParserK_OR) - } - { - p.SetState(1008) - p.Match(SqlParserK_REPLACE) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 4 { - { - p.SetState(1009) - p.Match(SqlParserK_OR) - } - { - p.SetState(1010) - p.Match(SqlParserK_FAIL) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 137, p.GetParserRuleContext()) == 5 { - { - p.SetState(1011) - p.Match(SqlParserK_OR) - } - { - p.SetState(1012) - p.Match(SqlParserK_IGNORE) - } - - - } - { - p.SetState(1015) - p.Qualified_table_name() - } - { - p.SetState(1016) - p.Match(SqlParserK_SET) - } - { - p.SetState(1017) - p.Column_name() - } - { - p.SetState(1018) - p.Match(SqlParserASSIGN) - } - { - p.SetState(1019) - p.expr(0) - } - p.SetState(1027) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1020) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1021) - p.Column_name() - } - { - p.SetState(1022) - p.Match(SqlParserASSIGN) - } - { - p.SetState(1023) - p.expr(0) - } - - - p.SetState(1029) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1032) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(1030) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(1031) - p.expr(0) - } - - } - - - - return localctx -} - - -// IUpdate_stmt_limitedContext is an interface to support dynamic dispatch. -type IUpdate_stmt_limitedContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsUpdate_stmt_limitedContext differentiates from other interfaces. - IsUpdate_stmt_limitedContext() -} - -type Update_stmt_limitedContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyUpdate_stmt_limitedContext() *Update_stmt_limitedContext { - var p = new(Update_stmt_limitedContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_update_stmt_limited - return p -} - -func (*Update_stmt_limitedContext) IsUpdate_stmt_limitedContext() {} - -func NewUpdate_stmt_limitedContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmt_limitedContext { - var p = new(Update_stmt_limitedContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_update_stmt_limited - - return p -} - -func (s *Update_stmt_limitedContext) GetParser() antlr.Parser { return s.parser } - -func (s *Update_stmt_limitedContext) K_UPDATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, 0) -} - -func (s *Update_stmt_limitedContext) Qualified_table_name() IQualified_table_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IQualified_table_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IQualified_table_nameContext) -} - -func (s *Update_stmt_limitedContext) K_SET() antlr.TerminalNode { - return s.GetToken(SqlParserK_SET, 0) -} - -func (s *Update_stmt_limitedContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Update_stmt_limitedContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Update_stmt_limitedContext) AllASSIGN() []antlr.TerminalNode { - return s.GetTokens(SqlParserASSIGN) -} - -func (s *Update_stmt_limitedContext) ASSIGN(i int) antlr.TerminalNode { - return s.GetToken(SqlParserASSIGN, i) -} - -func (s *Update_stmt_limitedContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Update_stmt_limitedContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Update_stmt_limitedContext) With_clause() IWith_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IWith_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IWith_clauseContext) -} - -func (s *Update_stmt_limitedContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *Update_stmt_limitedContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Update_stmt_limitedContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Update_stmt_limitedContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *Update_stmt_limitedContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Update_stmt_limitedContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Update_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Update_stmt_limitedContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Update_stmt_limitedContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Update_stmt_limitedContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *Update_stmt_limitedContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *Update_stmt_limitedContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Update_stmt_limitedContext) AllOrdering_term() []IOrdering_termContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IOrdering_termContext); ok { - len++ - } - } - - tst := make([]IOrdering_termContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IOrdering_termContext); ok { - tst[i] = t.(IOrdering_termContext) - i++ - } - } - - return tst -} - -func (s *Update_stmt_limitedContext) Ordering_term(i int) IOrdering_termContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IOrdering_termContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IOrdering_termContext) -} - -func (s *Update_stmt_limitedContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *Update_stmt_limitedContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Update_stmt_limitedContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Update_stmt_limitedContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterUpdate_stmt_limited(s) - } -} - -func (s *Update_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitUpdate_stmt_limited(s) - } -} - - - - -func (p *SqlParser) Update_stmt_limited() (localctx IUpdate_stmt_limitedContext) { - this := p - _ = this - - localctx = NewUpdate_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 70, SqlParserRULE_update_stmt_limited) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1035) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WITH { - { - p.SetState(1034) - p.With_clause() - } - - } - { - p.SetState(1037) - p.Match(SqlParserK_UPDATE) - } - p.SetState(1048) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 1 { - { - p.SetState(1038) - p.Match(SqlParserK_OR) - } - { - p.SetState(1039) - p.Match(SqlParserK_ROLLBACK) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 2 { - { - p.SetState(1040) - p.Match(SqlParserK_OR) - } - { - p.SetState(1041) - p.Match(SqlParserK_ABORT) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 3 { - { - p.SetState(1042) - p.Match(SqlParserK_OR) - } - { - p.SetState(1043) - p.Match(SqlParserK_REPLACE) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 4 { - { - p.SetState(1044) - p.Match(SqlParserK_OR) - } - { - p.SetState(1045) - p.Match(SqlParserK_FAIL) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 141, p.GetParserRuleContext()) == 5 { - { - p.SetState(1046) - p.Match(SqlParserK_OR) - } - { - p.SetState(1047) - p.Match(SqlParserK_IGNORE) - } - - - } - { - p.SetState(1050) - p.Qualified_table_name() - } - { - p.SetState(1051) - p.Match(SqlParserK_SET) - } - { - p.SetState(1052) - p.Column_name() - } - { - p.SetState(1053) - p.Match(SqlParserASSIGN) - } - { - p.SetState(1054) - p.expr(0) - } - p.SetState(1062) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1055) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1056) - p.Column_name() - } - { - p.SetState(1057) - p.Match(SqlParserASSIGN) - } - { - p.SetState(1058) - p.expr(0) - } - - - p.SetState(1064) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1067) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(1065) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(1066) - p.expr(0) - } - - } - p.SetState(1087) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_LIMIT || _la == SqlParserK_ORDER { - p.SetState(1079) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ORDER { - { - p.SetState(1069) - p.Match(SqlParserK_ORDER) - } - { - p.SetState(1070) - p.Match(SqlParserK_BY) - } - { - p.SetState(1071) - p.Ordering_term() - } - p.SetState(1076) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1072) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1073) - p.Ordering_term() - } - - - p.SetState(1078) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - } - { - p.SetState(1081) - p.Match(SqlParserK_LIMIT) - } - { - p.SetState(1082) - p.expr(0) - } - p.SetState(1085) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserCOMMA || _la == SqlParserK_OFFSET { - { - p.SetState(1083) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserCOMMA || _la == SqlParserK_OFFSET) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1084) - p.expr(0) - } - - } - - } - - - - return localctx -} - - -// IVacuum_stmtContext is an interface to support dynamic dispatch. -type IVacuum_stmtContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsVacuum_stmtContext differentiates from other interfaces. - IsVacuum_stmtContext() -} - -type Vacuum_stmtContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyVacuum_stmtContext() *Vacuum_stmtContext { - var p = new(Vacuum_stmtContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_vacuum_stmt - return p -} - -func (*Vacuum_stmtContext) IsVacuum_stmtContext() {} - -func NewVacuum_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Vacuum_stmtContext { - var p = new(Vacuum_stmtContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_vacuum_stmt - - return p -} - -func (s *Vacuum_stmtContext) GetParser() antlr.Parser { return s.parser } - -func (s *Vacuum_stmtContext) K_VACUUM() antlr.TerminalNode { - return s.GetToken(SqlParserK_VACUUM, 0) -} - -func (s *Vacuum_stmtContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Vacuum_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Vacuum_stmtContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterVacuum_stmt(s) - } -} - -func (s *Vacuum_stmtContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitVacuum_stmt(s) - } -} - - - - -func (p *SqlParser) Vacuum_stmt() (localctx IVacuum_stmtContext) { - this := p - _ = this - - localctx = NewVacuum_stmtContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 72, SqlParserRULE_vacuum_stmt) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1089) - p.Match(SqlParserK_VACUUM) - } - - - - return localctx -} - - -// IColumn_defContext is an interface to support dynamic dispatch. -type IColumn_defContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_defContext differentiates from other interfaces. - IsColumn_defContext() -} - -type Column_defContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_defContext() *Column_defContext { - var p = new(Column_defContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_def - return p -} - -func (*Column_defContext) IsColumn_defContext() {} - -func NewColumn_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defContext { - var p = new(Column_defContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_def - - return p -} - -func (s *Column_defContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_defContext) Column_name() IColumn_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Column_defContext) AllColumn_constraint() []IColumn_constraintContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_constraintContext); ok { - len++ - } - } - - tst := make([]IColumn_constraintContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_constraintContext); ok { - tst[i] = t.(IColumn_constraintContext) - i++ - } - } - - return tst -} - -func (s *Column_defContext) Column_constraint(i int) IColumn_constraintContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraintContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraintContext) -} - -func (s *Column_defContext) AllType_name() []IType_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IType_nameContext); ok { - len++ - } - } - - tst := make([]IType_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IType_nameContext); ok { - tst[i] = t.(IType_nameContext) - i++ - } - } - - return tst -} - -func (s *Column_defContext) Type_name(i int) IType_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IType_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IType_nameContext) -} - -func (s *Column_defContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_defContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_defContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_def(s) - } -} - -func (s *Column_defContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_def(s) - } -} - - - - -func (p *SqlParser) Column_def() (localctx IColumn_defContext) { - this := p - _ = this - - localctx = NewColumn_defContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 74, SqlParserRULE_column_def) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1091) - p.Column_name() - } - p.SetState(1096) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 149, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - p.SetState(1094) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 148, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1092) - p.Column_constraint() - } - - - case 2: - { - p.SetState(1093) - p.Type_name() - } - - } - - } - p.SetState(1098) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 149, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// IType_nameContext is an interface to support dynamic dispatch. -type IType_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsType_nameContext differentiates from other interfaces. - IsType_nameContext() -} - -type Type_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyType_nameContext() *Type_nameContext { - var p = new(Type_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_type_name - return p -} - -func (*Type_nameContext) IsType_nameContext() {} - -func NewType_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Type_nameContext { - var p = new(Type_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_type_name - - return p -} - -func (s *Type_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Type_nameContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Type_nameContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Type_nameContext) AllSigned_number() []ISigned_numberContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISigned_numberContext); ok { - len++ - } - } - - tst := make([]ISigned_numberContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISigned_numberContext); ok { - tst[i] = t.(ISigned_numberContext) - i++ - } - } - - return tst -} - -func (s *Type_nameContext) Signed_number(i int) ISigned_numberContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISigned_numberContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISigned_numberContext) -} - -func (s *Type_nameContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Type_nameContext) COMMA() antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, 0) -} - -func (s *Type_nameContext) AllAny_name() []IAny_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAny_nameContext); ok { - len++ - } - } - - tst := make([]IAny_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAny_nameContext); ok { - tst[i] = t.(IAny_nameContext) - i++ - } - } - - return tst -} - -func (s *Type_nameContext) Any_name(i int) IAny_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Type_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Type_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Type_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterType_name(s) - } -} - -func (s *Type_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitType_name(s) - } -} - - - - -func (p *SqlParser) Type_name() (localctx IType_nameContext) { - this := p - _ = this - - localctx = NewType_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 76, SqlParserRULE_type_name) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1099) - p.Name() - } - p.SetState(1119) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 153, p.GetParserRuleContext()) == 1 { - { - p.SetState(1100) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1101) - p.Signed_number() - } - p.SetState(1103) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { - { - p.SetState(1102) - p.Any_name() - } - - } - { - p.SetState(1105) - p.Match(SqlParserCLOSE_PAR) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 153, p.GetParserRuleContext()) == 2 { - { - p.SetState(1107) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1108) - p.Signed_number() - } - p.SetState(1110) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { - { - p.SetState(1109) - p.Any_name() - } - - } - { - p.SetState(1112) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1113) - p.Signed_number() - } - p.SetState(1115) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if (((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserOPEN_PAR) | (1 << SqlParserK_ABORT) | (1 << SqlParserK_ACTION) | (1 << SqlParserK_ADD) | (1 << SqlParserK_AFTER) | (1 << SqlParserK_ALL) | (1 << SqlParserK_ALTER))) != 0) || ((((_la - 32)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 32))) & ((1 << (SqlParserK_ANALYZE - 32)) | (1 << (SqlParserK_AND - 32)) | (1 << (SqlParserK_AS - 32)) | (1 << (SqlParserK_ASC - 32)) | (1 << (SqlParserK_ATTACH - 32)) | (1 << (SqlParserK_AUTOINCREMENT - 32)) | (1 << (SqlParserK_BEFORE - 32)) | (1 << (SqlParserK_BEGIN - 32)) | (1 << (SqlParserK_BETWEEN - 32)) | (1 << (SqlParserK_BY - 32)) | (1 << (SqlParserK_CASCADE - 32)) | (1 << (SqlParserK_CASE - 32)) | (1 << (SqlParserK_CAST - 32)) | (1 << (SqlParserK_CHECK - 32)) | (1 << (SqlParserK_COLLATE - 32)) | (1 << (SqlParserK_COLUMN - 32)) | (1 << (SqlParserK_COMMIT - 32)) | (1 << (SqlParserK_CONFLICT - 32)) | (1 << (SqlParserK_CONSTRAINT - 32)) | (1 << (SqlParserK_CREATE - 32)) | (1 << (SqlParserK_CROSS - 32)) | (1 << (SqlParserK_CURRENT_DATE - 32)) | (1 << (SqlParserK_CURRENT_TIME - 32)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 32)) | (1 << (SqlParserK_DATABASE - 32)) | (1 << (SqlParserK_DEFAULT - 32)) | (1 << (SqlParserK_DEFERRABLE - 32)) | (1 << (SqlParserK_DEFERRED - 32)) | (1 << (SqlParserK_DELETE - 32)) | (1 << (SqlParserK_DESC - 32)) | (1 << (SqlParserK_DETACH - 32)) | (1 << (SqlParserK_DISTINCT - 32)))) != 0) || ((((_la - 64)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 64))) & ((1 << (SqlParserK_DROP - 64)) | (1 << (SqlParserK_EACH - 64)) | (1 << (SqlParserK_ELSE - 64)) | (1 << (SqlParserK_END - 64)) | (1 << (SqlParserK_ENABLE - 64)) | (1 << (SqlParserK_ESCAPE - 64)) | (1 << (SqlParserK_EXCEPT - 64)) | (1 << (SqlParserK_EXCLUSIVE - 64)) | (1 << (SqlParserK_EXISTS - 64)) | (1 << (SqlParserK_EXPLAIN - 64)) | (1 << (SqlParserK_FAIL - 64)) | (1 << (SqlParserK_FOR - 64)) | (1 << (SqlParserK_FOREIGN - 64)) | (1 << (SqlParserK_FROM - 64)) | (1 << (SqlParserK_FULL - 64)) | (1 << (SqlParserK_GLOB - 64)) | (1 << (SqlParserK_GROUP - 64)) | (1 << (SqlParserK_HAVING - 64)) | (1 << (SqlParserK_IF - 64)) | (1 << (SqlParserK_IGNORE - 64)) | (1 << (SqlParserK_IMMEDIATE - 64)) | (1 << (SqlParserK_IN - 64)) | (1 << (SqlParserK_INDEX - 64)) | (1 << (SqlParserK_INDEXED - 64)) | (1 << (SqlParserK_INITIALLY - 64)) | (1 << (SqlParserK_INNER - 64)) | (1 << (SqlParserK_INSERT - 64)) | (1 << (SqlParserK_INSTEAD - 64)) | (1 << (SqlParserK_INTERSECT - 64)) | (1 << (SqlParserK_INTO - 64)) | (1 << (SqlParserK_IS - 64)) | (1 << (SqlParserK_ISNULL - 64)))) != 0) || ((((_la - 96)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 96))) & ((1 << (SqlParserK_JOIN - 96)) | (1 << (SqlParserK_KEY - 96)) | (1 << (SqlParserK_LEFT - 96)) | (1 << (SqlParserK_LIKE - 96)) | (1 << (SqlParserK_LIMIT - 96)) | (1 << (SqlParserK_MATCH - 96)) | (1 << (SqlParserK_NATURAL - 96)) | (1 << (SqlParserK_NEXTVAL - 96)) | (1 << (SqlParserK_NO - 96)) | (1 << (SqlParserK_NOT - 96)) | (1 << (SqlParserK_NOTNULL - 96)) | (1 << (SqlParserK_NULL - 96)) | (1 << (SqlParserK_OF - 96)) | (1 << (SqlParserK_OFFSET - 96)) | (1 << (SqlParserK_ON - 96)) | (1 << (SqlParserK_OR - 96)) | (1 << (SqlParserK_ORDER - 96)) | (1 << (SqlParserK_OUTER - 96)) | (1 << (SqlParserK_PLAN - 96)) | (1 << (SqlParserK_PRAGMA - 96)) | (1 << (SqlParserK_PRIMARY - 96)) | (1 << (SqlParserK_QUERY - 96)) | (1 << (SqlParserK_RAISE - 96)) | (1 << (SqlParserK_RECURSIVE - 96)) | (1 << (SqlParserK_REFERENCES - 96)) | (1 << (SqlParserK_REGEXP - 96)) | (1 << (SqlParserK_REINDEX - 96)) | (1 << (SqlParserK_RELEASE - 96)) | (1 << (SqlParserK_RENAME - 96)) | (1 << (SqlParserK_REPLACE - 96)) | (1 << (SqlParserK_RESTRICT - 96)))) != 0) || ((((_la - 128)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 128))) & ((1 << (SqlParserK_RIGHT - 128)) | (1 << (SqlParserK_ROLLBACK - 128)) | (1 << (SqlParserK_ROW - 128)) | (1 << (SqlParserK_SAVEPOINT - 128)) | (1 << (SqlParserK_SELECT - 128)) | (1 << (SqlParserK_SET - 128)) | (1 << (SqlParserK_TABLE - 128)) | (1 << (SqlParserK_TEMP - 128)) | (1 << (SqlParserK_TEMPORARY - 128)) | (1 << (SqlParserK_THEN - 128)) | (1 << (SqlParserK_TO - 128)) | (1 << (SqlParserK_TRANSACTION - 128)) | (1 << (SqlParserK_TRIGGER - 128)) | (1 << (SqlParserK_UNION - 128)) | (1 << (SqlParserK_UNIQUE - 128)) | (1 << (SqlParserK_UPDATE - 128)) | (1 << (SqlParserK_USING - 128)) | (1 << (SqlParserK_VACUUM - 128)) | (1 << (SqlParserK_VALUES - 128)) | (1 << (SqlParserK_VIEW - 128)) | (1 << (SqlParserK_VIRTUAL - 128)) | (1 << (SqlParserK_WHEN - 128)) | (1 << (SqlParserK_WHERE - 128)) | (1 << (SqlParserK_WITH - 128)) | (1 << (SqlParserK_WITHOUT - 128)) | (1 << (SqlParserIDENTIFIER - 128)) | (1 << (SqlParserSTRING_LITERAL - 128)))) != 0) { - { - p.SetState(1114) - p.Any_name() - } - - } - { - p.SetState(1117) - p.Match(SqlParserCLOSE_PAR) - } - - - } - - - - return localctx -} - - -// IColumn_constraintContext is an interface to support dynamic dispatch. -type IColumn_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraintContext differentiates from other interfaces. - IsColumn_constraintContext() -} - -type Column_constraintContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraintContext() *Column_constraintContext { - var p = new(Column_constraintContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint - return p -} - -func (*Column_constraintContext) IsColumn_constraintContext() {} - -func NewColumn_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraintContext { - var p = new(Column_constraintContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint - - return p -} - -func (s *Column_constraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraintContext) Column_constraint_primary_key() IColumn_constraint_primary_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraint_primary_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraint_primary_keyContext) -} - -func (s *Column_constraintContext) Column_constraint_foreign_key() IColumn_constraint_foreign_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraint_foreign_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraint_foreign_keyContext) -} - -func (s *Column_constraintContext) Column_constraint_not_null() IColumn_constraint_not_nullContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraint_not_nullContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraint_not_nullContext) -} - -func (s *Column_constraintContext) Column_constraint_null() IColumn_constraint_nullContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_constraint_nullContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_constraint_nullContext) -} - -func (s *Column_constraintContext) K_UNIQUE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNIQUE, 0) -} - -func (s *Column_constraintContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Column_constraintContext) K_CHECK() antlr.TerminalNode { - return s.GetToken(SqlParserK_CHECK, 0) -} - -func (s *Column_constraintContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Column_constraintContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Column_constraintContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Column_constraintContext) Column_default() IColumn_defaultContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_defaultContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_defaultContext) -} - -func (s *Column_constraintContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *Column_constraintContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *Column_constraintContext) K_CONSTRAINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONSTRAINT, 0) -} - -func (s *Column_constraintContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Column_constraintContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraintContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint(s) - } -} - -func (s *Column_constraintContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint(s) - } -} - - - - -func (p *SqlParser) Column_constraint() (localctx IColumn_constraintContext) { - this := p - _ = this - - localctx = NewColumn_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 78, SqlParserRULE_column_constraint) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1123) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_CONSTRAINT { - { - p.SetState(1121) - p.Match(SqlParserK_CONSTRAINT) - } - { - p.SetState(1122) - p.Name() - } - - } - p.SetState(1139) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_PRIMARY: - { - p.SetState(1125) - p.Column_constraint_primary_key() - } - - - case SqlParserK_REFERENCES: - { - p.SetState(1126) - p.Column_constraint_foreign_key() - } - - - case SqlParserK_NOT: - { - p.SetState(1127) - p.Column_constraint_not_null() - } - - - case SqlParserK_NULL: - { - p.SetState(1128) - p.Column_constraint_null() - } - - - case SqlParserK_UNIQUE: - { - p.SetState(1129) - p.Match(SqlParserK_UNIQUE) - } - { - p.SetState(1130) - p.Conflict_clause() - } - - - case SqlParserK_CHECK: - { - p.SetState(1131) - p.Match(SqlParserK_CHECK) - } - { - p.SetState(1132) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1133) - p.expr(0) - } - { - p.SetState(1134) - p.Match(SqlParserCLOSE_PAR) - } - - - case SqlParserK_DEFAULT: - { - p.SetState(1136) - p.Column_default() - } - - - case SqlParserK_COLLATE: - { - p.SetState(1137) - p.Match(SqlParserK_COLLATE) - } - { - p.SetState(1138) - p.Collation_name() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - - return localctx -} - - -// IColumn_constraint_primary_keyContext is an interface to support dynamic dispatch. -type IColumn_constraint_primary_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraint_primary_keyContext differentiates from other interfaces. - IsColumn_constraint_primary_keyContext() -} - -type Column_constraint_primary_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraint_primary_keyContext() *Column_constraint_primary_keyContext { - var p = new(Column_constraint_primary_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint_primary_key - return p -} - -func (*Column_constraint_primary_keyContext) IsColumn_constraint_primary_keyContext() {} - -func NewColumn_constraint_primary_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_primary_keyContext { - var p = new(Column_constraint_primary_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint_primary_key - - return p -} - -func (s *Column_constraint_primary_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraint_primary_keyContext) K_PRIMARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRIMARY, 0) -} - -func (s *Column_constraint_primary_keyContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Column_constraint_primary_keyContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Column_constraint_primary_keyContext) K_AUTOINCREMENT() antlr.TerminalNode { - return s.GetToken(SqlParserK_AUTOINCREMENT, 0) -} - -func (s *Column_constraint_primary_keyContext) K_ASC() antlr.TerminalNode { - return s.GetToken(SqlParserK_ASC, 0) -} - -func (s *Column_constraint_primary_keyContext) K_DESC() antlr.TerminalNode { - return s.GetToken(SqlParserK_DESC, 0) -} - -func (s *Column_constraint_primary_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraint_primary_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraint_primary_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint_primary_key(s) - } -} - -func (s *Column_constraint_primary_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint_primary_key(s) - } -} - - - - -func (p *SqlParser) Column_constraint_primary_key() (localctx IColumn_constraint_primary_keyContext) { - this := p - _ = this - - localctx = NewColumn_constraint_primary_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 80, SqlParserRULE_column_constraint_primary_key) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1141) - p.Match(SqlParserK_PRIMARY) - } - { - p.SetState(1142) - p.Match(SqlParserK_KEY) - } - p.SetState(1144) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 156, p.GetParserRuleContext()) == 1 { - { - p.SetState(1143) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - { - p.SetState(1146) - p.Conflict_clause() - } - p.SetState(1148) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 157, p.GetParserRuleContext()) == 1 { - { - p.SetState(1147) - p.Match(SqlParserK_AUTOINCREMENT) - } - - - } - - - - return localctx -} - - -// IColumn_constraint_foreign_keyContext is an interface to support dynamic dispatch. -type IColumn_constraint_foreign_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraint_foreign_keyContext differentiates from other interfaces. - IsColumn_constraint_foreign_keyContext() -} - -type Column_constraint_foreign_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraint_foreign_keyContext() *Column_constraint_foreign_keyContext { - var p = new(Column_constraint_foreign_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint_foreign_key - return p -} - -func (*Column_constraint_foreign_keyContext) IsColumn_constraint_foreign_keyContext() {} - -func NewColumn_constraint_foreign_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_foreign_keyContext { - var p = new(Column_constraint_foreign_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint_foreign_key - - return p -} - -func (s *Column_constraint_foreign_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraint_foreign_keyContext) Foreign_key_clause() IForeign_key_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForeign_key_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IForeign_key_clauseContext) -} - -func (s *Column_constraint_foreign_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraint_foreign_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraint_foreign_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint_foreign_key(s) - } -} - -func (s *Column_constraint_foreign_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint_foreign_key(s) - } -} - - - - -func (p *SqlParser) Column_constraint_foreign_key() (localctx IColumn_constraint_foreign_keyContext) { - this := p - _ = this - - localctx = NewColumn_constraint_foreign_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 82, SqlParserRULE_column_constraint_foreign_key) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1150) - p.Foreign_key_clause() - } - - - - return localctx -} - - -// IColumn_constraint_not_nullContext is an interface to support dynamic dispatch. -type IColumn_constraint_not_nullContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraint_not_nullContext differentiates from other interfaces. - IsColumn_constraint_not_nullContext() -} - -type Column_constraint_not_nullContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraint_not_nullContext() *Column_constraint_not_nullContext { - var p = new(Column_constraint_not_nullContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint_not_null - return p -} - -func (*Column_constraint_not_nullContext) IsColumn_constraint_not_nullContext() {} - -func NewColumn_constraint_not_nullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_not_nullContext { - var p = new(Column_constraint_not_nullContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint_not_null - - return p -} - -func (s *Column_constraint_not_nullContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraint_not_nullContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Column_constraint_not_nullContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *Column_constraint_not_nullContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Column_constraint_not_nullContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraint_not_nullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraint_not_nullContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint_not_null(s) - } -} - -func (s *Column_constraint_not_nullContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint_not_null(s) - } -} - - - - -func (p *SqlParser) Column_constraint_not_null() (localctx IColumn_constraint_not_nullContext) { - this := p - _ = this - - localctx = NewColumn_constraint_not_nullContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 84, SqlParserRULE_column_constraint_not_null) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1152) - p.Match(SqlParserK_NOT) - } - { - p.SetState(1153) - p.Match(SqlParserK_NULL) - } - { - p.SetState(1154) - p.Conflict_clause() - } - - - - return localctx -} - - -// IColumn_constraint_nullContext is an interface to support dynamic dispatch. -type IColumn_constraint_nullContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_constraint_nullContext differentiates from other interfaces. - IsColumn_constraint_nullContext() -} - -type Column_constraint_nullContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_constraint_nullContext() *Column_constraint_nullContext { - var p = new(Column_constraint_nullContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_constraint_null - return p -} - -func (*Column_constraint_nullContext) IsColumn_constraint_nullContext() {} - -func NewColumn_constraint_nullContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraint_nullContext { - var p = new(Column_constraint_nullContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_constraint_null - - return p -} - -func (s *Column_constraint_nullContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_constraint_nullContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *Column_constraint_nullContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Column_constraint_nullContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_constraint_nullContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_constraint_nullContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_constraint_null(s) - } -} - -func (s *Column_constraint_nullContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_constraint_null(s) - } -} - - - - -func (p *SqlParser) Column_constraint_null() (localctx IColumn_constraint_nullContext) { - this := p - _ = this - - localctx = NewColumn_constraint_nullContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 86, SqlParserRULE_column_constraint_null) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1156) - p.Match(SqlParserK_NULL) - } - { - p.SetState(1157) - p.Conflict_clause() - } - - - - return localctx -} - - -// IColumn_defaultContext is an interface to support dynamic dispatch. -type IColumn_defaultContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_defaultContext differentiates from other interfaces. - IsColumn_defaultContext() -} - -type Column_defaultContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_defaultContext() *Column_defaultContext { - var p = new(Column_defaultContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_default - return p -} - -func (*Column_defaultContext) IsColumn_defaultContext() {} - -func NewColumn_defaultContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defaultContext { - var p = new(Column_defaultContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_default - - return p -} - -func (s *Column_defaultContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_defaultContext) K_DEFAULT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFAULT, 0) -} - -func (s *Column_defaultContext) Column_default_value() IColumn_default_valueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_default_valueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_default_valueContext) -} - -func (s *Column_defaultContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Column_defaultContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Column_defaultContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Column_defaultContext) K_NEXTVAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NEXTVAL, 0) -} - -func (s *Column_defaultContext) AllAny_name() []IAny_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IAny_nameContext); ok { - len++ - } - } - - tst := make([]IAny_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IAny_nameContext); ok { - tst[i] = t.(IAny_nameContext) - i++ - } - } - - return tst -} - -func (s *Column_defaultContext) Any_name(i int) IAny_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Column_defaultContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_defaultContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_defaultContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_default(s) - } -} - -func (s *Column_defaultContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_default(s) - } -} - - - - -func (p *SqlParser) Column_default() (localctx IColumn_defaultContext) { - this := p - _ = this - - localctx = NewColumn_defaultContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 88, SqlParserRULE_column_default) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1159) - p.Match(SqlParserK_DEFAULT) - } - p.SetState(1171) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 158, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1160) - p.Column_default_value() - } - - - case 2: - { - p.SetState(1161) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1162) - p.expr(0) - } - { - p.SetState(1163) - p.Match(SqlParserCLOSE_PAR) - } - - - case 3: - { - p.SetState(1165) - p.Match(SqlParserK_NEXTVAL) - } - { - p.SetState(1166) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1167) - p.expr(0) - } - { - p.SetState(1168) - p.Match(SqlParserCLOSE_PAR) - } - - - case 4: - { - p.SetState(1170) - p.Any_name() - } - - } - p.SetState(1179) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 { - { - p.SetState(1173) - p.Match(SqlParserT__0) - } - p.SetState(1175) - p.GetErrorHandler().Sync(p) - _alt = 1 - for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - switch _alt { - case 1: - { - p.SetState(1174) - p.Any_name() - } - - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - p.SetState(1177) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 159, p.GetParserRuleContext()) - } - - - } - - - - return localctx -} - - -// IColumn_default_valueContext is an interface to support dynamic dispatch. -type IColumn_default_valueContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_default_valueContext differentiates from other interfaces. - IsColumn_default_valueContext() -} - -type Column_default_valueContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_default_valueContext() *Column_default_valueContext { - var p = new(Column_default_valueContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_default_value - return p -} - -func (*Column_default_valueContext) IsColumn_default_valueContext() {} - -func NewColumn_default_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_default_valueContext { - var p = new(Column_default_valueContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_default_value - - return p -} - -func (s *Column_default_valueContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_default_valueContext) Signed_number() ISigned_numberContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISigned_numberContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISigned_numberContext) -} - -func (s *Column_default_valueContext) Literal_value() ILiteral_valueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ILiteral_valueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ILiteral_valueContext) -} - -func (s *Column_default_valueContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_default_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_default_valueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_default_value(s) - } -} - -func (s *Column_default_valueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_default_value(s) - } -} - - - - -func (p *SqlParser) Column_default_value() (localctx IColumn_default_valueContext) { - this := p - _ = this - - localctx = NewColumn_default_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 90, SqlParserRULE_column_default_value) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1183) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 161, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1181) - p.Signed_number() - } - - - case 2: - { - p.SetState(1182) - p.Literal_value() - } - - } - - - - return localctx -} - - -// IConflict_clauseContext is an interface to support dynamic dispatch. -type IConflict_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsConflict_clauseContext differentiates from other interfaces. - IsConflict_clauseContext() -} - -type Conflict_clauseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyConflict_clauseContext() *Conflict_clauseContext { - var p = new(Conflict_clauseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_conflict_clause - return p -} - -func (*Conflict_clauseContext) IsConflict_clauseContext() {} - -func NewConflict_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Conflict_clauseContext { - var p = new(Conflict_clauseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_conflict_clause - - return p -} - -func (s *Conflict_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Conflict_clauseContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *Conflict_clauseContext) K_CONFLICT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONFLICT, 0) -} - -func (s *Conflict_clauseContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Conflict_clauseContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Conflict_clauseContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Conflict_clauseContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Conflict_clauseContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *Conflict_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Conflict_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Conflict_clauseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterConflict_clause(s) - } -} - -func (s *Conflict_clauseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitConflict_clause(s) - } -} - - - - -func (p *SqlParser) Conflict_clause() (localctx IConflict_clauseContext) { - this := p - _ = this - - localctx = NewConflict_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 92, SqlParserRULE_conflict_clause) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1188) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 162, p.GetParserRuleContext()) == 1 { - { - p.SetState(1185) - p.Match(SqlParserK_ON) - } - { - p.SetState(1186) - p.Match(SqlParserK_CONFLICT) - } - { - p.SetState(1187) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ABORT || _la == SqlParserK_FAIL || _la == SqlParserK_IGNORE || _la == SqlParserK_REPLACE || _la == SqlParserK_ROLLBACK) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - - - - return localctx -} - - -// IExprContext is an interface to support dynamic dispatch. -type IExprContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsExprContext differentiates from other interfaces. - IsExprContext() -} - -type ExprContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyExprContext() *ExprContext { - var p = new(ExprContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_expr - return p -} - -func (*ExprContext) IsExprContext() {} - -func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext { - var p = new(ExprContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_expr - - return p -} - -func (s *ExprContext) GetParser() antlr.Parser { return s.parser } - -func (s *ExprContext) Literal_value() ILiteral_valueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ILiteral_valueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ILiteral_valueContext) -} - -func (s *ExprContext) BIND_PARAMETER() antlr.TerminalNode { - return s.GetToken(SqlParserBIND_PARAMETER, 0) -} - -func (s *ExprContext) Column_name() IColumn_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *ExprContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *ExprContext) AllDOT() []antlr.TerminalNode { - return s.GetTokens(SqlParserDOT) -} - -func (s *ExprContext) DOT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserDOT, i) -} - -func (s *ExprContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *ExprContext) Unary_operator() IUnary_operatorContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IUnary_operatorContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IUnary_operatorContext) -} - -func (s *ExprContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *ExprContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *ExprContext) Function_name() IFunction_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFunction_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IFunction_nameContext) -} - -func (s *ExprContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *ExprContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *ExprContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) -} - -func (s *ExprContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DISTINCT, 0) -} - -func (s *ExprContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *ExprContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *ExprContext) K_CAST() antlr.TerminalNode { - return s.GetToken(SqlParserK_CAST, 0) -} - -func (s *ExprContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *ExprContext) Type_name() IType_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IType_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IType_nameContext) -} - -func (s *ExprContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *ExprContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *ExprContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *ExprContext) K_CASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CASE, 0) -} - -func (s *ExprContext) K_END() antlr.TerminalNode { - return s.GetToken(SqlParserK_END, 0) -} - -func (s *ExprContext) AllK_WHEN() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_WHEN) -} - -func (s *ExprContext) K_WHEN(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_WHEN, i) -} - -func (s *ExprContext) AllK_THEN() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_THEN) -} - -func (s *ExprContext) K_THEN(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_THEN, i) -} - -func (s *ExprContext) K_ELSE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ELSE, 0) -} - -func (s *ExprContext) Raise_function() IRaise_functionContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IRaise_functionContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IRaise_functionContext) -} - -func (s *ExprContext) PIPE2() antlr.TerminalNode { - return s.GetToken(SqlParserPIPE2, 0) -} - -func (s *ExprContext) DIV() antlr.TerminalNode { - return s.GetToken(SqlParserDIV, 0) -} - -func (s *ExprContext) MOD() antlr.TerminalNode { - return s.GetToken(SqlParserMOD, 0) -} - -func (s *ExprContext) PLUS() antlr.TerminalNode { - return s.GetToken(SqlParserPLUS, 0) -} - -func (s *ExprContext) MINUS() antlr.TerminalNode { - return s.GetToken(SqlParserMINUS, 0) -} - -func (s *ExprContext) LT2() antlr.TerminalNode { - return s.GetToken(SqlParserLT2, 0) -} - -func (s *ExprContext) GT2() antlr.TerminalNode { - return s.GetToken(SqlParserGT2, 0) -} - -func (s *ExprContext) AMP() antlr.TerminalNode { - return s.GetToken(SqlParserAMP, 0) -} - -func (s *ExprContext) PIPE() antlr.TerminalNode { - return s.GetToken(SqlParserPIPE, 0) -} - -func (s *ExprContext) LT() antlr.TerminalNode { - return s.GetToken(SqlParserLT, 0) -} - -func (s *ExprContext) LT_EQ() antlr.TerminalNode { - return s.GetToken(SqlParserLT_EQ, 0) -} - -func (s *ExprContext) GT() antlr.TerminalNode { - return s.GetToken(SqlParserGT, 0) -} - -func (s *ExprContext) GT_EQ() antlr.TerminalNode { - return s.GetToken(SqlParserGT_EQ, 0) -} - -func (s *ExprContext) ASSIGN() antlr.TerminalNode { - return s.GetToken(SqlParserASSIGN, 0) -} - -func (s *ExprContext) EQ() antlr.TerminalNode { - return s.GetToken(SqlParserEQ, 0) -} - -func (s *ExprContext) NOT_EQ1() antlr.TerminalNode { - return s.GetToken(SqlParserNOT_EQ1, 0) -} - -func (s *ExprContext) NOT_EQ2() antlr.TerminalNode { - return s.GetToken(SqlParserNOT_EQ2, 0) -} - -func (s *ExprContext) K_IS() antlr.TerminalNode { - return s.GetToken(SqlParserK_IS, 0) -} - -func (s *ExprContext) K_IN() antlr.TerminalNode { - return s.GetToken(SqlParserK_IN, 0) -} - -func (s *ExprContext) K_LIKE() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIKE, 0) -} - -func (s *ExprContext) K_GLOB() antlr.TerminalNode { - return s.GetToken(SqlParserK_GLOB, 0) -} - -func (s *ExprContext) K_MATCH() antlr.TerminalNode { - return s.GetToken(SqlParserK_MATCH, 0) -} - -func (s *ExprContext) K_REGEXP() antlr.TerminalNode { - return s.GetToken(SqlParserK_REGEXP, 0) -} - -func (s *ExprContext) K_AND() antlr.TerminalNode { - return s.GetToken(SqlParserK_AND, 0) -} - -func (s *ExprContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *ExprContext) K_BETWEEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BETWEEN, 0) -} - -func (s *ExprContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *ExprContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *ExprContext) K_ESCAPE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ESCAPE, 0) -} - -func (s *ExprContext) K_ISNULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ISNULL, 0) -} - -func (s *ExprContext) K_NOTNULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOTNULL, 0) -} - -func (s *ExprContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *ExprContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *ExprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *ExprContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterExpr(s) - } -} - -func (s *ExprContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitExpr(s) - } -} - - - - - -func (p *SqlParser) Expr() (localctx IExprContext) { - return p.expr(0) -} - -func (p *SqlParser) expr(_p int) (localctx IExprContext) { - this := p - _ = this - - var _parentctx antlr.ParserRuleContext = p.GetParserRuleContext() - _parentState := p.GetState() - localctx = NewExprContext(p, p.GetParserRuleContext(), _parentState) - var _prevctx IExprContext = localctx - var _ antlr.ParserRuleContext = _prevctx // TODO: To prevent unused variable warning. - _startState := 94 - p.EnterRecursionRule(localctx, 94, SqlParserRULE_expr, _p) - var _la int - - - defer func() { - p.UnrollRecursionContexts(_parentctx) - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - p.SetState(1266) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 173, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1191) - p.Literal_value() - } - - - case 2: - { - p.SetState(1192) - p.Match(SqlParserBIND_PARAMETER) - } - - - case 3: - p.SetState(1201) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 164, p.GetParserRuleContext()) == 1 { - p.SetState(1196) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 163, p.GetParserRuleContext()) == 1 { - { - p.SetState(1193) - p.Database_name() - } - { - p.SetState(1194) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1198) - p.Table_name() - } - { - p.SetState(1199) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1203) - p.Column_name() - } - - - case 4: - { - p.SetState(1204) - p.Unary_operator() - } - { - p.SetState(1205) - p.expr(21) - } - - - case 5: - { - p.SetState(1207) - p.Function_name() - } - { - p.SetState(1208) - p.Match(SqlParserOPEN_PAR) - } - p.SetState(1221) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserOPEN_PAR, SqlParserPLUS, SqlParserMINUS, SqlParserTILDE, SqlParserK_ABORT, SqlParserK_ACTION, SqlParserK_ADD, SqlParserK_AFTER, SqlParserK_ALL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_AND, SqlParserK_AS, SqlParserK_ASC, SqlParserK_ATTACH, SqlParserK_AUTOINCREMENT, SqlParserK_BEFORE, SqlParserK_BEGIN, SqlParserK_BETWEEN, SqlParserK_BY, SqlParserK_CASCADE, SqlParserK_CASE, SqlParserK_CAST, SqlParserK_CHECK, SqlParserK_COLLATE, SqlParserK_COLUMN, SqlParserK_COMMIT, SqlParserK_CONFLICT, SqlParserK_CONSTRAINT, SqlParserK_CREATE, SqlParserK_CROSS, SqlParserK_CURRENT_DATE, SqlParserK_CURRENT_TIME, SqlParserK_CURRENT_TIMESTAMP, SqlParserK_DATABASE, SqlParserK_DEFAULT, SqlParserK_DEFERRABLE, SqlParserK_DEFERRED, SqlParserK_DELETE, SqlParserK_DESC, SqlParserK_DETACH, SqlParserK_DISTINCT, SqlParserK_DROP, SqlParserK_EACH, SqlParserK_ELSE, SqlParserK_END, SqlParserK_ENABLE, SqlParserK_ESCAPE, SqlParserK_EXCEPT, SqlParserK_EXCLUSIVE, SqlParserK_EXISTS, SqlParserK_EXPLAIN, SqlParserK_FAIL, SqlParserK_FOR, SqlParserK_FOREIGN, SqlParserK_FROM, SqlParserK_FULL, SqlParserK_GLOB, SqlParserK_GROUP, SqlParserK_HAVING, SqlParserK_IF, SqlParserK_IGNORE, SqlParserK_IMMEDIATE, SqlParserK_IN, SqlParserK_INDEX, SqlParserK_INDEXED, SqlParserK_INITIALLY, SqlParserK_INNER, SqlParserK_INSERT, SqlParserK_INSTEAD, SqlParserK_INTERSECT, SqlParserK_INTO, SqlParserK_IS, SqlParserK_ISNULL, SqlParserK_JOIN, SqlParserK_KEY, SqlParserK_LEFT, SqlParserK_LIKE, SqlParserK_LIMIT, SqlParserK_MATCH, SqlParserK_NATURAL, SqlParserK_NEXTVAL, SqlParserK_NO, SqlParserK_NOT, SqlParserK_NOTNULL, SqlParserK_NULL, SqlParserK_OF, SqlParserK_OFFSET, SqlParserK_ON, SqlParserK_OR, SqlParserK_ORDER, SqlParserK_OUTER, SqlParserK_PLAN, SqlParserK_PRAGMA, SqlParserK_PRIMARY, SqlParserK_QUERY, SqlParserK_RAISE, SqlParserK_RECURSIVE, SqlParserK_REFERENCES, SqlParserK_REGEXP, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_RENAME, SqlParserK_REPLACE, SqlParserK_RESTRICT, SqlParserK_RIGHT, SqlParserK_ROLLBACK, SqlParserK_ROW, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_TABLE, SqlParserK_TEMP, SqlParserK_TEMPORARY, SqlParserK_THEN, SqlParserK_TO, SqlParserK_TRANSACTION, SqlParserK_TRIGGER, SqlParserK_UNION, SqlParserK_UNIQUE, SqlParserK_UPDATE, SqlParserK_USING, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_VIEW, SqlParserK_VIRTUAL, SqlParserK_WHEN, SqlParserK_WHERE, SqlParserK_WITH, SqlParserK_WITHOUT, SqlParserIDENTIFIER, SqlParserNUMERIC_LITERAL, SqlParserBIND_PARAMETER, SqlParserSTRING_LITERAL, SqlParserBLOB_LITERAL: - p.SetState(1210) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 { - { - p.SetState(1209) - p.Match(SqlParserK_DISTINCT) - } - - - } - { - p.SetState(1212) - p.expr(0) - } - p.SetState(1217) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1213) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1214) - p.expr(0) - } - - - p.SetState(1219) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - case SqlParserSTAR: - { - p.SetState(1220) - p.Match(SqlParserSTAR) - } - - - case SqlParserCLOSE_PAR: - - - - default: - } - { - p.SetState(1223) - p.Match(SqlParserCLOSE_PAR) - } - - - case 6: - { - p.SetState(1225) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1226) - p.expr(0) - } - { - p.SetState(1227) - p.Match(SqlParserCLOSE_PAR) - } - - - case 7: - { - p.SetState(1229) - p.Match(SqlParserK_CAST) - } - { - p.SetState(1230) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1231) - p.expr(0) - } - { - p.SetState(1232) - p.Match(SqlParserK_AS) - } - { - p.SetState(1233) - p.Type_name() - } - { - p.SetState(1234) - p.Match(SqlParserCLOSE_PAR) - } - - - case 8: - p.SetState(1240) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_EXISTS || _la == SqlParserK_NOT { - p.SetState(1237) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1236) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1239) - p.Match(SqlParserK_EXISTS) - } - - } - { - p.SetState(1242) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1243) - p.Select_stmt() - } - { - p.SetState(1244) - p.Match(SqlParserCLOSE_PAR) - } - - - case 9: - { - p.SetState(1246) - p.Match(SqlParserK_CASE) - } - p.SetState(1248) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 170, p.GetParserRuleContext()) == 1 { - { - p.SetState(1247) - p.expr(0) - } - - - } - p.SetState(1255) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for ok := true; ok; ok = _la == SqlParserK_WHEN { - { - p.SetState(1250) - p.Match(SqlParserK_WHEN) - } - { - p.SetState(1251) - p.expr(0) - } - { - p.SetState(1252) - p.Match(SqlParserK_THEN) - } - { - p.SetState(1253) - p.expr(0) - } - - - p.SetState(1257) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1261) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ELSE { - { - p.SetState(1259) - p.Match(SqlParserK_ELSE) - } - { - p.SetState(1260) - p.expr(0) - } - - } - { - p.SetState(1263) - p.Match(SqlParserK_END) - } - - - case 10: - { - p.SetState(1265) - p.Raise_function() - } - - } - p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1)) - p.SetState(1368) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 186, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - if p.GetParseListeners() != nil { - p.TriggerExitRuleEvent() - } - _prevctx = localctx - p.SetState(1366) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 185, p.GetParserRuleContext()) { - case 1: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1268) - - if !(p.Precpred(p.GetParserRuleContext(), 20)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 20)", "")) - } - { - p.SetState(1269) - p.Match(SqlParserPIPE2) - } - { - p.SetState(1270) - p.expr(21) - } - - - case 2: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1271) - - if !(p.Precpred(p.GetParserRuleContext(), 19)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", "")) - } - { - p.SetState(1272) - _la = p.GetTokenStream().LA(1) - - if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserSTAR) | (1 << SqlParserDIV) | (1 << SqlParserMOD))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1273) - p.expr(20) - } - - - case 3: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1274) - - if !(p.Precpred(p.GetParserRuleContext(), 18)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", "")) - } - { - p.SetState(1275) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserPLUS || _la == SqlParserMINUS) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1276) - p.expr(19) - } - - - case 4: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1277) - - if !(p.Precpred(p.GetParserRuleContext(), 17)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", "")) - } - { - p.SetState(1278) - _la = p.GetTokenStream().LA(1) - - if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserLT2) | (1 << SqlParserGT2) | (1 << SqlParserAMP) | (1 << SqlParserPIPE))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1279) - p.expr(18) - } - - - case 5: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1280) - - if !(p.Precpred(p.GetParserRuleContext(), 16)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 16)", "")) - } - { - p.SetState(1281) - _la = p.GetTokenStream().LA(1) - - if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserLT) | (1 << SqlParserLT_EQ) | (1 << SqlParserGT) | (1 << SqlParserGT_EQ))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1282) - p.expr(17) - } - - - case 6: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1283) - - if !(p.Precpred(p.GetParserRuleContext(), 15)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", "")) - } - p.SetState(1296) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 174, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1284) - p.Match(SqlParserASSIGN) - } - - - case 2: - { - p.SetState(1285) - p.Match(SqlParserEQ) - } - - - case 3: - { - p.SetState(1286) - p.Match(SqlParserNOT_EQ1) - } - - - case 4: - { - p.SetState(1287) - p.Match(SqlParserNOT_EQ2) - } - - - case 5: - { - p.SetState(1288) - p.Match(SqlParserK_IS) - } - - - case 6: - { - p.SetState(1289) - p.Match(SqlParserK_IS) - } - { - p.SetState(1290) - p.Match(SqlParserK_NOT) - } - - - case 7: - { - p.SetState(1291) - p.Match(SqlParserK_IN) - } - - - case 8: - { - p.SetState(1292) - p.Match(SqlParserK_LIKE) - } - - - case 9: - { - p.SetState(1293) - p.Match(SqlParserK_GLOB) - } - - - case 10: - { - p.SetState(1294) - p.Match(SqlParserK_MATCH) - } - - - case 11: - { - p.SetState(1295) - p.Match(SqlParserK_REGEXP) - } - - } - { - p.SetState(1298) - p.expr(16) - } - - - case 7: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1299) - - if !(p.Precpred(p.GetParserRuleContext(), 14)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", "")) - } - { - p.SetState(1300) - p.Match(SqlParserK_AND) - } - { - p.SetState(1301) - p.expr(15) - } - - - case 8: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1302) - - if !(p.Precpred(p.GetParserRuleContext(), 13)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 13)", "")) - } - { - p.SetState(1303) - p.Match(SqlParserK_OR) - } - { - p.SetState(1304) - p.expr(14) - } - - - case 9: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1305) - - if !(p.Precpred(p.GetParserRuleContext(), 6)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", "")) - } - { - p.SetState(1306) - p.Match(SqlParserK_IS) - } - p.SetState(1308) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 175, p.GetParserRuleContext()) == 1 { - { - p.SetState(1307) - p.Match(SqlParserK_NOT) - } - - - } - { - p.SetState(1310) - p.expr(7) - } - - - case 10: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1311) - - if !(p.Precpred(p.GetParserRuleContext(), 5)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", "")) - } - p.SetState(1313) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1312) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1315) - p.Match(SqlParserK_BETWEEN) - } - { - p.SetState(1316) - p.expr(0) - } - { - p.SetState(1317) - p.Match(SqlParserK_AND) - } - { - p.SetState(1318) - p.expr(6) - } - - - case 11: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1320) - - if !(p.Precpred(p.GetParserRuleContext(), 9)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", "")) - } - { - p.SetState(1321) - p.Match(SqlParserK_COLLATE) - } - { - p.SetState(1322) - p.Collation_name() - } - - - case 12: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1323) - - if !(p.Precpred(p.GetParserRuleContext(), 8)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", "")) - } - p.SetState(1325) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1324) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1327) - _la = p.GetTokenStream().LA(1) - - if !(((((_la - 79)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 79))) & ((1 << (SqlParserK_GLOB - 79)) | (1 << (SqlParserK_LIKE - 79)) | (1 << (SqlParserK_MATCH - 79)))) != 0) || _la == SqlParserK_REGEXP) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1328) - p.expr(0) - } - p.SetState(1331) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 178, p.GetParserRuleContext()) == 1 { - { - p.SetState(1329) - p.Match(SqlParserK_ESCAPE) - } - { - p.SetState(1330) - p.expr(0) - } - - - } - - - case 13: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1333) - - if !(p.Precpred(p.GetParserRuleContext(), 7)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", "")) - } - p.SetState(1338) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_ISNULL: - { - p.SetState(1334) - p.Match(SqlParserK_ISNULL) - } - - - case SqlParserK_NOTNULL: - { - p.SetState(1335) - p.Match(SqlParserK_NOTNULL) - } - - - case SqlParserK_NOT: - { - p.SetState(1336) - p.Match(SqlParserK_NOT) - } - { - p.SetState(1337) - p.Match(SqlParserK_NULL) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - case 14: - localctx = NewExprContext(p, _parentctx, _parentState) - p.PushNewRecursionContext(localctx, _startState, SqlParserRULE_expr) - p.SetState(1340) - - if !(p.Precpred(p.GetParserRuleContext(), 4)) { - panic(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", "")) - } - p.SetState(1342) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1341) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1344) - p.Match(SqlParserK_IN) - } - p.SetState(1364) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 184, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1345) - p.Match(SqlParserOPEN_PAR) - } - p.SetState(1355) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 182, p.GetParserRuleContext()) == 1 { - { - p.SetState(1346) - p.Select_stmt() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 182, p.GetParserRuleContext()) == 2 { - { - p.SetState(1347) - p.expr(0) - } - p.SetState(1352) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1348) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1349) - p.expr(0) - } - - - p.SetState(1354) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - } - { - p.SetState(1357) - p.Match(SqlParserCLOSE_PAR) - } - - - case 2: - p.SetState(1361) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 183, p.GetParserRuleContext()) == 1 { - { - p.SetState(1358) - p.Database_name() - } - { - p.SetState(1359) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1363) - p.Table_name() - } - - } - - } - - } - p.SetState(1370) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 186, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// IForeign_key_clauseContext is an interface to support dynamic dispatch. -type IForeign_key_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsForeign_key_clauseContext differentiates from other interfaces. - IsForeign_key_clauseContext() -} - -type Foreign_key_clauseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyForeign_key_clauseContext() *Foreign_key_clauseContext { - var p = new(Foreign_key_clauseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_foreign_key_clause - return p -} - -func (*Foreign_key_clauseContext) IsForeign_key_clauseContext() {} - -func NewForeign_key_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_key_clauseContext { - var p = new(Foreign_key_clauseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_foreign_key_clause - - return p -} - -func (s *Foreign_key_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Foreign_key_clauseContext) K_REFERENCES() antlr.TerminalNode { - return s.GetToken(SqlParserK_REFERENCES, 0) -} - -func (s *Foreign_key_clauseContext) Foreign_table() IForeign_tableContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForeign_tableContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IForeign_tableContext) -} - -func (s *Foreign_key_clauseContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Foreign_key_clauseContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Foreign_key_clauseContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Foreign_key_clauseContext) AllFk_target_column_name() []IFk_target_column_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IFk_target_column_nameContext); ok { - len++ - } - } - - tst := make([]IFk_target_column_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IFk_target_column_nameContext); ok { - tst[i] = t.(IFk_target_column_nameContext) - i++ - } - } - - return tst -} - -func (s *Foreign_key_clauseContext) Fk_target_column_name(i int) IFk_target_column_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFk_target_column_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IFk_target_column_nameContext) -} - -func (s *Foreign_key_clauseContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Foreign_key_clauseContext) K_DEFERRABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRABLE, 0) -} - -func (s *Foreign_key_clauseContext) AllK_ON() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_ON) -} - -func (s *Foreign_key_clauseContext) K_ON(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, i) -} - -func (s *Foreign_key_clauseContext) AllK_MATCH() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_MATCH) -} - -func (s *Foreign_key_clauseContext) K_MATCH(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_MATCH, i) -} - -func (s *Foreign_key_clauseContext) AllName() []INameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(INameContext); ok { - len++ - } - } - - tst := make([]INameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(INameContext); ok { - tst[i] = t.(INameContext) - i++ - } - } - - return tst -} - -func (s *Foreign_key_clauseContext) Name(i int) INameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Foreign_key_clauseContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Foreign_key_clauseContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Foreign_key_clauseContext) AllK_DELETE() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_DELETE) -} - -func (s *Foreign_key_clauseContext) K_DELETE(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, i) -} - -func (s *Foreign_key_clauseContext) AllK_UPDATE() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_UPDATE) -} - -func (s *Foreign_key_clauseContext) K_UPDATE(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, i) -} - -func (s *Foreign_key_clauseContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Foreign_key_clauseContext) K_INITIALLY() antlr.TerminalNode { - return s.GetToken(SqlParserK_INITIALLY, 0) -} - -func (s *Foreign_key_clauseContext) K_DEFERRED() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRED, 0) -} - -func (s *Foreign_key_clauseContext) K_IMMEDIATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IMMEDIATE, 0) -} - -func (s *Foreign_key_clauseContext) K_ENABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ENABLE, 0) -} - -func (s *Foreign_key_clauseContext) AllK_SET() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_SET) -} - -func (s *Foreign_key_clauseContext) K_SET(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_SET, i) -} - -func (s *Foreign_key_clauseContext) AllK_NULL() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_NULL) -} - -func (s *Foreign_key_clauseContext) K_NULL(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, i) -} - -func (s *Foreign_key_clauseContext) AllK_DEFAULT() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_DEFAULT) -} - -func (s *Foreign_key_clauseContext) K_DEFAULT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFAULT, i) -} - -func (s *Foreign_key_clauseContext) AllK_CASCADE() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_CASCADE) -} - -func (s *Foreign_key_clauseContext) K_CASCADE(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_CASCADE, i) -} - -func (s *Foreign_key_clauseContext) AllK_RESTRICT() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_RESTRICT) -} - -func (s *Foreign_key_clauseContext) K_RESTRICT(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_RESTRICT, i) -} - -func (s *Foreign_key_clauseContext) AllK_NO() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_NO) -} - -func (s *Foreign_key_clauseContext) K_NO(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_NO, i) -} - -func (s *Foreign_key_clauseContext) AllK_ACTION() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_ACTION) -} - -func (s *Foreign_key_clauseContext) K_ACTION(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_ACTION, i) -} - -func (s *Foreign_key_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Foreign_key_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Foreign_key_clauseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterForeign_key_clause(s) - } -} - -func (s *Foreign_key_clauseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitForeign_key_clause(s) - } -} - - - - -func (p *SqlParser) Foreign_key_clause() (localctx IForeign_key_clauseContext) { - this := p - _ = this - - localctx = NewForeign_key_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 96, SqlParserRULE_foreign_key_clause) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1371) - p.Match(SqlParserK_REFERENCES) - } - p.SetState(1375) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 187, p.GetParserRuleContext()) == 1 { - { - p.SetState(1372) - p.Database_name() - } - { - p.SetState(1373) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1377) - p.Foreign_table() - } - p.SetState(1389) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 189, p.GetParserRuleContext()) == 1 { - { - p.SetState(1378) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1379) - p.Fk_target_column_name() - } - p.SetState(1384) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1380) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1381) - p.Fk_target_column_name() - } - - - p.SetState(1386) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1387) - p.Match(SqlParserCLOSE_PAR) - } - - - } - p.SetState(1409) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 192, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - p.SetState(1405) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_ON: - { - p.SetState(1391) - p.Match(SqlParserK_ON) - } - { - p.SetState(1392) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_DELETE || _la == SqlParserK_UPDATE) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - p.SetState(1401) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 190, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1393) - p.Match(SqlParserK_SET) - } - { - p.SetState(1394) - p.Match(SqlParserK_NULL) - } - - - case 2: - { - p.SetState(1395) - p.Match(SqlParserK_SET) - } - { - p.SetState(1396) - p.Match(SqlParserK_DEFAULT) - } - - - case 3: - { - p.SetState(1397) - p.Match(SqlParserK_CASCADE) - } - - - case 4: - { - p.SetState(1398) - p.Match(SqlParserK_RESTRICT) - } - - - case 5: - { - p.SetState(1399) - p.Match(SqlParserK_NO) - } - { - p.SetState(1400) - p.Match(SqlParserK_ACTION) - } - - } - - - case SqlParserK_MATCH: - { - p.SetState(1403) - p.Match(SqlParserK_MATCH) - } - { - p.SetState(1404) - p.Name() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - } - p.SetState(1411) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 192, p.GetParserRuleContext()) - } - p.SetState(1425) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 196, p.GetParserRuleContext()) == 1 { - p.SetState(1413) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NOT { - { - p.SetState(1412) - p.Match(SqlParserK_NOT) - } - - } - { - p.SetState(1415) - p.Match(SqlParserK_DEFERRABLE) - } - p.SetState(1420) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 194, p.GetParserRuleContext()) == 1 { - { - p.SetState(1416) - p.Match(SqlParserK_INITIALLY) - } - { - p.SetState(1417) - p.Match(SqlParserK_DEFERRED) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 194, p.GetParserRuleContext()) == 2 { - { - p.SetState(1418) - p.Match(SqlParserK_INITIALLY) - } - { - p.SetState(1419) - p.Match(SqlParserK_IMMEDIATE) - } - - - } - p.SetState(1423) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 195, p.GetParserRuleContext()) == 1 { - { - p.SetState(1422) - p.Match(SqlParserK_ENABLE) - } - - - } - - - } - - - - return localctx -} - - -// IFk_target_column_nameContext is an interface to support dynamic dispatch. -type IFk_target_column_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsFk_target_column_nameContext differentiates from other interfaces. - IsFk_target_column_nameContext() -} - -type Fk_target_column_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyFk_target_column_nameContext() *Fk_target_column_nameContext { - var p = new(Fk_target_column_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_fk_target_column_name - return p -} - -func (*Fk_target_column_nameContext) IsFk_target_column_nameContext() {} - -func NewFk_target_column_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_target_column_nameContext { - var p = new(Fk_target_column_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_fk_target_column_name - - return p -} - -func (s *Fk_target_column_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Fk_target_column_nameContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Fk_target_column_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Fk_target_column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Fk_target_column_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterFk_target_column_name(s) - } -} - -func (s *Fk_target_column_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitFk_target_column_name(s) - } -} - - - - -func (p *SqlParser) Fk_target_column_name() (localctx IFk_target_column_nameContext) { - this := p - _ = this - - localctx = NewFk_target_column_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 98, SqlParserRULE_fk_target_column_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1427) - p.Name() - } - - - - return localctx -} - - -// IRaise_functionContext is an interface to support dynamic dispatch. -type IRaise_functionContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsRaise_functionContext differentiates from other interfaces. - IsRaise_functionContext() -} - -type Raise_functionContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyRaise_functionContext() *Raise_functionContext { - var p = new(Raise_functionContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_raise_function - return p -} - -func (*Raise_functionContext) IsRaise_functionContext() {} - -func NewRaise_functionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Raise_functionContext { - var p = new(Raise_functionContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_raise_function - - return p -} - -func (s *Raise_functionContext) GetParser() antlr.Parser { return s.parser } - -func (s *Raise_functionContext) K_RAISE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RAISE, 0) -} - -func (s *Raise_functionContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Raise_functionContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Raise_functionContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *Raise_functionContext) COMMA() antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, 0) -} - -func (s *Raise_functionContext) Error_message() IError_messageContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IError_messageContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IError_messageContext) -} - -func (s *Raise_functionContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *Raise_functionContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *Raise_functionContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *Raise_functionContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Raise_functionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Raise_functionContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterRaise_function(s) - } -} - -func (s *Raise_functionContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitRaise_function(s) - } -} - - - - -func (p *SqlParser) Raise_function() (localctx IRaise_functionContext) { - this := p - _ = this - - localctx = NewRaise_functionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 100, SqlParserRULE_raise_function) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1429) - p.Match(SqlParserK_RAISE) - } - { - p.SetState(1430) - p.Match(SqlParserOPEN_PAR) - } - p.SetState(1435) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_IGNORE: - { - p.SetState(1431) - p.Match(SqlParserK_IGNORE) - } - - - case SqlParserK_ABORT, SqlParserK_FAIL, SqlParserK_ROLLBACK: - { - p.SetState(1432) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ABORT || _la == SqlParserK_FAIL || _la == SqlParserK_ROLLBACK) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - { - p.SetState(1433) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1434) - p.Error_message() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - { - p.SetState(1437) - p.Match(SqlParserCLOSE_PAR) - } - - - - return localctx -} - - -// IIndexed_columnContext is an interface to support dynamic dispatch. -type IIndexed_columnContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsIndexed_columnContext differentiates from other interfaces. - IsIndexed_columnContext() -} - -type Indexed_columnContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyIndexed_columnContext() *Indexed_columnContext { - var p = new(Indexed_columnContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_indexed_column - return p -} - -func (*Indexed_columnContext) IsIndexed_columnContext() {} - -func NewIndexed_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Indexed_columnContext { - var p = new(Indexed_columnContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_indexed_column - - return p -} - -func (s *Indexed_columnContext) GetParser() antlr.Parser { return s.parser } - -func (s *Indexed_columnContext) Column_name() IColumn_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Indexed_columnContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *Indexed_columnContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *Indexed_columnContext) K_ASC() antlr.TerminalNode { - return s.GetToken(SqlParserK_ASC, 0) -} - -func (s *Indexed_columnContext) K_DESC() antlr.TerminalNode { - return s.GetToken(SqlParserK_DESC, 0) -} - -func (s *Indexed_columnContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Indexed_columnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Indexed_columnContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterIndexed_column(s) - } -} - -func (s *Indexed_columnContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitIndexed_column(s) - } -} - - - - -func (p *SqlParser) Indexed_column() (localctx IIndexed_columnContext) { - this := p - _ = this - - localctx = NewIndexed_columnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 102, SqlParserRULE_indexed_column) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1439) - p.Column_name() - } - p.SetState(1442) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_COLLATE { - { - p.SetState(1440) - p.Match(SqlParserK_COLLATE) - } - { - p.SetState(1441) - p.Collation_name() - } - - } - p.SetState(1445) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_ASC || _la == SqlParserK_DESC { - { - p.SetState(1444) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - - - - return localctx -} - - -// ITable_constraintContext is an interface to support dynamic dispatch. -type ITable_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraintContext differentiates from other interfaces. - IsTable_constraintContext() -} - -type Table_constraintContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraintContext() *Table_constraintContext { - var p = new(Table_constraintContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint - return p -} - -func (*Table_constraintContext) IsTable_constraintContext() {} - -func NewTable_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraintContext { - var p = new(Table_constraintContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint - - return p -} - -func (s *Table_constraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraintContext) Table_constraint_primary_key() ITable_constraint_primary_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraint_primary_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraint_primary_keyContext) -} - -func (s *Table_constraintContext) Table_constraint_key() ITable_constraint_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraint_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraint_keyContext) -} - -func (s *Table_constraintContext) Table_constraint_unique() ITable_constraint_uniqueContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraint_uniqueContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraint_uniqueContext) -} - -func (s *Table_constraintContext) K_CHECK() antlr.TerminalNode { - return s.GetToken(SqlParserK_CHECK, 0) -} - -func (s *Table_constraintContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraintContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Table_constraintContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraintContext) Table_constraint_foreign_key() ITable_constraint_foreign_keyContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_constraint_foreign_keyContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_constraint_foreign_keyContext) -} - -func (s *Table_constraintContext) K_CONSTRAINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONSTRAINT, 0) -} - -func (s *Table_constraintContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Table_constraintContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraintContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint(s) - } -} - -func (s *Table_constraintContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint(s) - } -} - - - - -func (p *SqlParser) Table_constraint() (localctx ITable_constraintContext) { - this := p - _ = this - - localctx = NewTable_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 104, SqlParserRULE_table_constraint) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1449) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_CONSTRAINT { - { - p.SetState(1447) - p.Match(SqlParserK_CONSTRAINT) - } - { - p.SetState(1448) - p.Name() - } - - } - p.SetState(1460) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_PRIMARY: - { - p.SetState(1451) - p.Table_constraint_primary_key() - } - - - case SqlParserK_KEY: - { - p.SetState(1452) - p.Table_constraint_key() - } - - - case SqlParserK_UNIQUE: - { - p.SetState(1453) - p.Table_constraint_unique() - } - - - case SqlParserK_CHECK: - { - p.SetState(1454) - p.Match(SqlParserK_CHECK) - } - { - p.SetState(1455) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1456) - p.expr(0) - } - { - p.SetState(1457) - p.Match(SqlParserCLOSE_PAR) - } - - - case SqlParserK_FOREIGN: - { - p.SetState(1459) - p.Table_constraint_foreign_key() - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - - return localctx -} - - -// ITable_constraint_primary_keyContext is an interface to support dynamic dispatch. -type ITable_constraint_primary_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraint_primary_keyContext differentiates from other interfaces. - IsTable_constraint_primary_keyContext() -} - -type Table_constraint_primary_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraint_primary_keyContext() *Table_constraint_primary_keyContext { - var p = new(Table_constraint_primary_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint_primary_key - return p -} - -func (*Table_constraint_primary_keyContext) IsTable_constraint_primary_keyContext() {} - -func NewTable_constraint_primary_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_primary_keyContext { - var p = new(Table_constraint_primary_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint_primary_key - - return p -} - -func (s *Table_constraint_primary_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraint_primary_keyContext) K_PRIMARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRIMARY, 0) -} - -func (s *Table_constraint_primary_keyContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Table_constraint_primary_keyContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraint_primary_keyContext) AllIndexed_column() []IIndexed_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIndexed_columnContext); ok { - len++ - } - } - - tst := make([]IIndexed_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIndexed_columnContext); ok { - tst[i] = t.(IIndexed_columnContext) - i++ - } - } - - return tst -} - -func (s *Table_constraint_primary_keyContext) Indexed_column(i int) IIndexed_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndexed_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIndexed_columnContext) -} - -func (s *Table_constraint_primary_keyContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraint_primary_keyContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Table_constraint_primary_keyContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_constraint_primary_keyContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_constraint_primary_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraint_primary_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraint_primary_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint_primary_key(s) - } -} - -func (s *Table_constraint_primary_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint_primary_key(s) - } -} - - - - -func (p *SqlParser) Table_constraint_primary_key() (localctx ITable_constraint_primary_keyContext) { - this := p - _ = this - - localctx = NewTable_constraint_primary_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 106, SqlParserRULE_table_constraint_primary_key) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1462) - p.Match(SqlParserK_PRIMARY) - } - { - p.SetState(1463) - p.Match(SqlParserK_KEY) - } - { - p.SetState(1464) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1465) - p.Indexed_column() - } - p.SetState(1470) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1466) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1467) - p.Indexed_column() - } - - - p.SetState(1472) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1473) - p.Match(SqlParserCLOSE_PAR) - } - { - p.SetState(1474) - p.Conflict_clause() - } - - - - return localctx -} - - -// ITable_constraint_foreign_keyContext is an interface to support dynamic dispatch. -type ITable_constraint_foreign_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraint_foreign_keyContext differentiates from other interfaces. - IsTable_constraint_foreign_keyContext() -} - -type Table_constraint_foreign_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraint_foreign_keyContext() *Table_constraint_foreign_keyContext { - var p = new(Table_constraint_foreign_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint_foreign_key - return p -} - -func (*Table_constraint_foreign_keyContext) IsTable_constraint_foreign_keyContext() {} - -func NewTable_constraint_foreign_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_foreign_keyContext { - var p = new(Table_constraint_foreign_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint_foreign_key - - return p -} - -func (s *Table_constraint_foreign_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraint_foreign_keyContext) K_FOREIGN() antlr.TerminalNode { - return s.GetToken(SqlParserK_FOREIGN, 0) -} - -func (s *Table_constraint_foreign_keyContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Table_constraint_foreign_keyContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraint_foreign_keyContext) AllFk_origin_column_name() []IFk_origin_column_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IFk_origin_column_nameContext); ok { - len++ - } - } - - tst := make([]IFk_origin_column_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IFk_origin_column_nameContext); ok { - tst[i] = t.(IFk_origin_column_nameContext) - i++ - } - } - - return tst -} - -func (s *Table_constraint_foreign_keyContext) Fk_origin_column_name(i int) IFk_origin_column_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IFk_origin_column_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IFk_origin_column_nameContext) -} - -func (s *Table_constraint_foreign_keyContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraint_foreign_keyContext) Foreign_key_clause() IForeign_key_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IForeign_key_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IForeign_key_clauseContext) -} - -func (s *Table_constraint_foreign_keyContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_constraint_foreign_keyContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_constraint_foreign_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraint_foreign_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraint_foreign_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint_foreign_key(s) - } -} - -func (s *Table_constraint_foreign_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint_foreign_key(s) - } -} - - - - -func (p *SqlParser) Table_constraint_foreign_key() (localctx ITable_constraint_foreign_keyContext) { - this := p - _ = this - - localctx = NewTable_constraint_foreign_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 108, SqlParserRULE_table_constraint_foreign_key) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1476) - p.Match(SqlParserK_FOREIGN) - } - { - p.SetState(1477) - p.Match(SqlParserK_KEY) - } - { - p.SetState(1478) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1479) - p.Fk_origin_column_name() - } - p.SetState(1484) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1480) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1481) - p.Fk_origin_column_name() - } - - - p.SetState(1486) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1487) - p.Match(SqlParserCLOSE_PAR) - } - { - p.SetState(1488) - p.Foreign_key_clause() - } - - - - return localctx -} - - -// ITable_constraint_uniqueContext is an interface to support dynamic dispatch. -type ITable_constraint_uniqueContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraint_uniqueContext differentiates from other interfaces. - IsTable_constraint_uniqueContext() -} - -type Table_constraint_uniqueContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraint_uniqueContext() *Table_constraint_uniqueContext { - var p = new(Table_constraint_uniqueContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint_unique - return p -} - -func (*Table_constraint_uniqueContext) IsTable_constraint_uniqueContext() {} - -func NewTable_constraint_uniqueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_uniqueContext { - var p = new(Table_constraint_uniqueContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint_unique - - return p -} - -func (s *Table_constraint_uniqueContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraint_uniqueContext) K_UNIQUE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNIQUE, 0) -} - -func (s *Table_constraint_uniqueContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraint_uniqueContext) AllIndexed_column() []IIndexed_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIndexed_columnContext); ok { - len++ - } - } - - tst := make([]IIndexed_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIndexed_columnContext); ok { - tst[i] = t.(IIndexed_columnContext) - i++ - } - } - - return tst -} - -func (s *Table_constraint_uniqueContext) Indexed_column(i int) IIndexed_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndexed_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIndexed_columnContext) -} - -func (s *Table_constraint_uniqueContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraint_uniqueContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Table_constraint_uniqueContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Table_constraint_uniqueContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Table_constraint_uniqueContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_constraint_uniqueContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_constraint_uniqueContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraint_uniqueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraint_uniqueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint_unique(s) - } -} - -func (s *Table_constraint_uniqueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint_unique(s) - } -} - - - - -func (p *SqlParser) Table_constraint_unique() (localctx ITable_constraint_uniqueContext) { - this := p - _ = this - - localctx = NewTable_constraint_uniqueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 110, SqlParserRULE_table_constraint_unique) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1490) - p.Match(SqlParserK_UNIQUE) - } - p.SetState(1492) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 204, p.GetParserRuleContext()) == 1 { - { - p.SetState(1491) - p.Match(SqlParserK_KEY) - } - - - } - p.SetState(1495) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 205, p.GetParserRuleContext()) == 1 { - { - p.SetState(1494) - p.Name() - } - - - } - { - p.SetState(1497) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1498) - p.Indexed_column() - } - p.SetState(1503) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1499) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1500) - p.Indexed_column() - } - - - p.SetState(1505) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1506) - p.Match(SqlParserCLOSE_PAR) - } - { - p.SetState(1507) - p.Conflict_clause() - } - - - - return localctx -} - - -// ITable_constraint_keyContext is an interface to support dynamic dispatch. -type ITable_constraint_keyContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_constraint_keyContext differentiates from other interfaces. - IsTable_constraint_keyContext() -} - -type Table_constraint_keyContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_constraint_keyContext() *Table_constraint_keyContext { - var p = new(Table_constraint_keyContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_constraint_key - return p -} - -func (*Table_constraint_keyContext) IsTable_constraint_keyContext() {} - -func NewTable_constraint_keyContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraint_keyContext { - var p = new(Table_constraint_keyContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_constraint_key - - return p -} - -func (s *Table_constraint_keyContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_constraint_keyContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *Table_constraint_keyContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_constraint_keyContext) AllIndexed_column() []IIndexed_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IIndexed_columnContext); ok { - len++ - } - } - - tst := make([]IIndexed_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IIndexed_columnContext); ok { - tst[i] = t.(IIndexed_columnContext) - i++ - } - } - - return tst -} - -func (s *Table_constraint_keyContext) Indexed_column(i int) IIndexed_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndexed_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IIndexed_columnContext) -} - -func (s *Table_constraint_keyContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_constraint_keyContext) Conflict_clause() IConflict_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IConflict_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IConflict_clauseContext) -} - -func (s *Table_constraint_keyContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Table_constraint_keyContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_constraint_keyContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_constraint_keyContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_constraint_keyContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_constraint_keyContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_constraint_key(s) - } -} - -func (s *Table_constraint_keyContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_constraint_key(s) - } -} - - - - -func (p *SqlParser) Table_constraint_key() (localctx ITable_constraint_keyContext) { - this := p - _ = this - - localctx = NewTable_constraint_keyContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 112, SqlParserRULE_table_constraint_key) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1509) - p.Match(SqlParserK_KEY) - } - p.SetState(1511) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 207, p.GetParserRuleContext()) == 1 { - { - p.SetState(1510) - p.Name() - } - - - } - { - p.SetState(1513) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1514) - p.Indexed_column() - } - p.SetState(1519) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1515) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1516) - p.Indexed_column() - } - - - p.SetState(1521) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1522) - p.Match(SqlParserCLOSE_PAR) - } - { - p.SetState(1523) - p.Conflict_clause() - } - - - - return localctx -} - - -// IFk_origin_column_nameContext is an interface to support dynamic dispatch. -type IFk_origin_column_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsFk_origin_column_nameContext differentiates from other interfaces. - IsFk_origin_column_nameContext() -} - -type Fk_origin_column_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyFk_origin_column_nameContext() *Fk_origin_column_nameContext { - var p = new(Fk_origin_column_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_fk_origin_column_name - return p -} - -func (*Fk_origin_column_nameContext) IsFk_origin_column_nameContext() {} - -func NewFk_origin_column_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Fk_origin_column_nameContext { - var p = new(Fk_origin_column_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_fk_origin_column_name - - return p -} - -func (s *Fk_origin_column_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Fk_origin_column_nameContext) Column_name() IColumn_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Fk_origin_column_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Fk_origin_column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Fk_origin_column_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterFk_origin_column_name(s) - } -} - -func (s *Fk_origin_column_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitFk_origin_column_name(s) - } -} - - - - -func (p *SqlParser) Fk_origin_column_name() (localctx IFk_origin_column_nameContext) { - this := p - _ = this - - localctx = NewFk_origin_column_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 114, SqlParserRULE_fk_origin_column_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1525) - p.Column_name() - } - - - - return localctx -} - - -// IWith_clauseContext is an interface to support dynamic dispatch. -type IWith_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsWith_clauseContext differentiates from other interfaces. - IsWith_clauseContext() -} - -type With_clauseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyWith_clauseContext() *With_clauseContext { - var p = new(With_clauseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_with_clause - return p -} - -func (*With_clauseContext) IsWith_clauseContext() {} - -func NewWith_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *With_clauseContext { - var p = new(With_clauseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_with_clause - - return p -} - -func (s *With_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *With_clauseContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *With_clauseContext) AllCte_table_name() []ICte_table_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ICte_table_nameContext); ok { - len++ - } - } - - tst := make([]ICte_table_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ICte_table_nameContext); ok { - tst[i] = t.(ICte_table_nameContext) - i++ - } - } - - return tst -} - -func (s *With_clauseContext) Cte_table_name(i int) ICte_table_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICte_table_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ICte_table_nameContext) -} - -func (s *With_clauseContext) AllK_AS() []antlr.TerminalNode { - return s.GetTokens(SqlParserK_AS) -} - -func (s *With_clauseContext) K_AS(i int) antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, i) -} - -func (s *With_clauseContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *With_clauseContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *With_clauseContext) AllSelect_stmt() []ISelect_stmtContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ISelect_stmtContext); ok { - len++ - } - } - - tst := make([]ISelect_stmtContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ISelect_stmtContext); ok { - tst[i] = t.(ISelect_stmtContext) - i++ - } - } - - return tst -} - -func (s *With_clauseContext) Select_stmt(i int) ISelect_stmtContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *With_clauseContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *With_clauseContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *With_clauseContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *With_clauseContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *With_clauseContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *With_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *With_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *With_clauseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterWith_clause(s) - } -} - -func (s *With_clauseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitWith_clause(s) - } -} - - - - -func (p *SqlParser) With_clause() (localctx IWith_clauseContext) { - this := p - _ = this - - localctx = NewWith_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 116, SqlParserRULE_with_clause) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1527) - p.Match(SqlParserK_WITH) - } - p.SetState(1529) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 209, p.GetParserRuleContext()) == 1 { - { - p.SetState(1528) - p.Match(SqlParserK_RECURSIVE) - } - - - } - { - p.SetState(1531) - p.Cte_table_name() - } - { - p.SetState(1532) - p.Match(SqlParserK_AS) - } - { - p.SetState(1533) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1534) - p.Select_stmt() - } - { - p.SetState(1535) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(1545) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1536) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1537) - p.Cte_table_name() - } - { - p.SetState(1538) - p.Match(SqlParserK_AS) - } - { - p.SetState(1539) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1540) - p.Select_stmt() - } - { - p.SetState(1541) - p.Match(SqlParserCLOSE_PAR) - } - - - p.SetState(1547) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - - return localctx -} - - -// IQualified_table_nameContext is an interface to support dynamic dispatch. -type IQualified_table_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsQualified_table_nameContext differentiates from other interfaces. - IsQualified_table_nameContext() -} - -type Qualified_table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyQualified_table_nameContext() *Qualified_table_nameContext { - var p = new(Qualified_table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_qualified_table_name - return p -} - -func (*Qualified_table_nameContext) IsQualified_table_nameContext() {} - -func NewQualified_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Qualified_table_nameContext { - var p = new(Qualified_table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_qualified_table_name - - return p -} - -func (s *Qualified_table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Qualified_table_nameContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Qualified_table_nameContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Qualified_table_nameContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Qualified_table_nameContext) K_INDEXED() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEXED, 0) -} - -func (s *Qualified_table_nameContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Qualified_table_nameContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Qualified_table_nameContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Qualified_table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Qualified_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Qualified_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterQualified_table_name(s) - } -} - -func (s *Qualified_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitQualified_table_name(s) - } -} - - - - -func (p *SqlParser) Qualified_table_name() (localctx IQualified_table_nameContext) { - this := p - _ = this - - localctx = NewQualified_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 118, SqlParserRULE_qualified_table_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1551) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 211, p.GetParserRuleContext()) == 1 { - { - p.SetState(1548) - p.Database_name() - } - { - p.SetState(1549) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1553) - p.Table_name() - } - p.SetState(1559) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_INDEXED: - { - p.SetState(1554) - p.Match(SqlParserK_INDEXED) - } - { - p.SetState(1555) - p.Match(SqlParserK_BY) - } - { - p.SetState(1556) - p.Index_name() - } - - - case SqlParserK_NOT: - { - p.SetState(1557) - p.Match(SqlParserK_NOT) - } - { - p.SetState(1558) - p.Match(SqlParserK_INDEXED) - } - - - case SqlParserEOF, SqlParserSCOL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_ATTACH, SqlParserK_BEGIN, SqlParserK_COMMIT, SqlParserK_CREATE, SqlParserK_DELETE, SqlParserK_DETACH, SqlParserK_DROP, SqlParserK_END, SqlParserK_EXPLAIN, SqlParserK_INSERT, SqlParserK_LIMIT, SqlParserK_ORDER, SqlParserK_PRAGMA, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_REPLACE, SqlParserK_ROLLBACK, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_UPDATE, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_WHERE, SqlParserK_WITH, SqlParserUNEXPECTED_CHAR: - - - - default: - } - - - - return localctx -} - - -// IOrdering_termContext is an interface to support dynamic dispatch. -type IOrdering_termContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsOrdering_termContext differentiates from other interfaces. - IsOrdering_termContext() -} - -type Ordering_termContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyOrdering_termContext() *Ordering_termContext { - var p = new(Ordering_termContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_ordering_term - return p -} - -func (*Ordering_termContext) IsOrdering_termContext() {} - -func NewOrdering_termContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Ordering_termContext { - var p = new(Ordering_termContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_ordering_term - - return p -} - -func (s *Ordering_termContext) GetParser() antlr.Parser { return s.parser } - -func (s *Ordering_termContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Ordering_termContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *Ordering_termContext) Collation_name() ICollation_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ICollation_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ICollation_nameContext) -} - -func (s *Ordering_termContext) K_ASC() antlr.TerminalNode { - return s.GetToken(SqlParserK_ASC, 0) -} - -func (s *Ordering_termContext) K_DESC() antlr.TerminalNode { - return s.GetToken(SqlParserK_DESC, 0) -} - -func (s *Ordering_termContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Ordering_termContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Ordering_termContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterOrdering_term(s) - } -} - -func (s *Ordering_termContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitOrdering_term(s) - } -} - - - - -func (p *SqlParser) Ordering_term() (localctx IOrdering_termContext) { - this := p - _ = this - - localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 120, SqlParserRULE_ordering_term) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1561) - p.expr(0) - } - p.SetState(1564) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 213, p.GetParserRuleContext()) == 1 { - { - p.SetState(1562) - p.Match(SqlParserK_COLLATE) - } - { - p.SetState(1563) - p.Collation_name() - } - - - } - p.SetState(1567) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 214, p.GetParserRuleContext()) == 1 { - { - p.SetState(1566) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ASC || _la == SqlParserK_DESC) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - - - - return localctx -} - - -// IPragma_valueContext is an interface to support dynamic dispatch. -type IPragma_valueContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsPragma_valueContext differentiates from other interfaces. - IsPragma_valueContext() -} - -type Pragma_valueContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyPragma_valueContext() *Pragma_valueContext { - var p = new(Pragma_valueContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_pragma_value - return p -} - -func (*Pragma_valueContext) IsPragma_valueContext() {} - -func NewPragma_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_valueContext { - var p = new(Pragma_valueContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_pragma_value - - return p -} - -func (s *Pragma_valueContext) GetParser() antlr.Parser { return s.parser } - -func (s *Pragma_valueContext) Signed_number() ISigned_numberContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISigned_numberContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISigned_numberContext) -} - -func (s *Pragma_valueContext) Name() INameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(INameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(INameContext) -} - -func (s *Pragma_valueContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Pragma_valueContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Pragma_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Pragma_valueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterPragma_value(s) - } -} - -func (s *Pragma_valueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitPragma_value(s) - } -} - - - - -func (p *SqlParser) Pragma_value() (localctx IPragma_valueContext) { - this := p - _ = this - - localctx = NewPragma_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 122, SqlParserRULE_pragma_value) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1572) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 215, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1569) - p.Signed_number() - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1570) - p.Name() - } - - - case 3: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1571) - p.Match(SqlParserSTRING_LITERAL) - } - - } - - - return localctx -} - - -// ICommon_table_expressionContext is an interface to support dynamic dispatch. -type ICommon_table_expressionContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCommon_table_expressionContext differentiates from other interfaces. - IsCommon_table_expressionContext() -} - -type Common_table_expressionContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCommon_table_expressionContext() *Common_table_expressionContext { - var p = new(Common_table_expressionContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_common_table_expression - return p -} - -func (*Common_table_expressionContext) IsCommon_table_expressionContext() {} - -func NewCommon_table_expressionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Common_table_expressionContext { - var p = new(Common_table_expressionContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_common_table_expression - - return p -} - -func (s *Common_table_expressionContext) GetParser() antlr.Parser { return s.parser } - -func (s *Common_table_expressionContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Common_table_expressionContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Common_table_expressionContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *Common_table_expressionContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *Common_table_expressionContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Common_table_expressionContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *Common_table_expressionContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *Common_table_expressionContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Common_table_expressionContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Common_table_expressionContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Common_table_expressionContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Common_table_expressionContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Common_table_expressionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Common_table_expressionContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCommon_table_expression(s) - } -} - -func (s *Common_table_expressionContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCommon_table_expression(s) - } -} - - - - -func (p *SqlParser) Common_table_expression() (localctx ICommon_table_expressionContext) { - this := p - _ = this - - localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 124, SqlParserRULE_common_table_expression) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1574) - p.Table_name() - } - p.SetState(1586) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserOPEN_PAR { - { - p.SetState(1575) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1576) - p.Column_name() - } - p.SetState(1581) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1577) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1578) - p.Column_name() - } - - - p.SetState(1583) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1584) - p.Match(SqlParserCLOSE_PAR) - } - - } - { - p.SetState(1588) - p.Match(SqlParserK_AS) - } - { - p.SetState(1589) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1590) - p.Select_stmt() - } - { - p.SetState(1591) - p.Match(SqlParserCLOSE_PAR) - } - - - - return localctx -} - - -// IResult_columnContext is an interface to support dynamic dispatch. -type IResult_columnContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsResult_columnContext differentiates from other interfaces. - IsResult_columnContext() -} - -type Result_columnContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyResult_columnContext() *Result_columnContext { - var p = new(Result_columnContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_result_column - return p -} - -func (*Result_columnContext) IsResult_columnContext() {} - -func NewResult_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Result_columnContext { - var p = new(Result_columnContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_result_column - - return p -} - -func (s *Result_columnContext) GetParser() antlr.Parser { return s.parser } - -func (s *Result_columnContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) -} - -func (s *Result_columnContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Result_columnContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Result_columnContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Result_columnContext) Column_alias() IColumn_aliasContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_aliasContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_aliasContext) -} - -func (s *Result_columnContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Result_columnContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Result_columnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Result_columnContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterResult_column(s) - } -} - -func (s *Result_columnContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitResult_column(s) - } -} - - - - -func (p *SqlParser) Result_column() (localctx IResult_columnContext) { - this := p - _ = this - - localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 126, SqlParserRULE_result_column) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1605) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 220, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1593) - p.Match(SqlParserSTAR) - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1594) - p.Table_name() - } - { - p.SetState(1595) - p.Match(SqlParserDOT) - } - { - p.SetState(1596) - p.Match(SqlParserSTAR) - } - - - case 3: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1598) - p.expr(0) - } - p.SetState(1603) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 219, p.GetParserRuleContext()) == 1 { - p.SetState(1600) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_AS { - { - p.SetState(1599) - p.Match(SqlParserK_AS) - } - - } - { - p.SetState(1602) - p.Column_alias() - } - - - } - - } - - - return localctx -} - - -// ITable_or_subqueryContext is an interface to support dynamic dispatch. -type ITable_or_subqueryContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_or_subqueryContext differentiates from other interfaces. - IsTable_or_subqueryContext() -} - -type Table_or_subqueryContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_or_subqueryContext() *Table_or_subqueryContext { - var p = new(Table_or_subqueryContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_or_subquery - return p -} - -func (*Table_or_subqueryContext) IsTable_or_subqueryContext() {} - -func NewTable_or_subqueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_or_subqueryContext { - var p = new(Table_or_subqueryContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_or_subquery - - return p -} - -func (s *Table_or_subqueryContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_or_subqueryContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Table_or_subqueryContext) Database_name() IDatabase_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IDatabase_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IDatabase_nameContext) -} - -func (s *Table_or_subqueryContext) DOT() antlr.TerminalNode { - return s.GetToken(SqlParserDOT, 0) -} - -func (s *Table_or_subqueryContext) Table_alias() ITable_aliasContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_aliasContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_aliasContext) -} - -func (s *Table_or_subqueryContext) K_INDEXED() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEXED, 0) -} - -func (s *Table_or_subqueryContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Table_or_subqueryContext) Index_name() IIndex_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IIndex_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IIndex_nameContext) -} - -func (s *Table_or_subqueryContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Table_or_subqueryContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *Table_or_subqueryContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Table_or_subqueryContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Table_or_subqueryContext) AllTable_or_subquery() []ITable_or_subqueryContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - len++ - } - } - - tst := make([]ITable_or_subqueryContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_or_subqueryContext); ok { - tst[i] = t.(ITable_or_subqueryContext) - i++ - } - } - - return tst -} - -func (s *Table_or_subqueryContext) Table_or_subquery(i int) ITable_or_subqueryContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_subqueryContext) -} - -func (s *Table_or_subqueryContext) Join_clause() IJoin_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IJoin_clauseContext) -} - -func (s *Table_or_subqueryContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Table_or_subqueryContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Table_or_subqueryContext) Select_stmt() ISelect_stmtContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ISelect_stmtContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ISelect_stmtContext) -} - -func (s *Table_or_subqueryContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_or_subqueryContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_or_subqueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_or_subquery(s) - } -} - -func (s *Table_or_subqueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_or_subquery(s) - } -} - - - - -func (p *SqlParser) Table_or_subquery() (localctx ITable_or_subqueryContext) { - this := p - _ = this - - localctx = NewTable_or_subqueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 128, SqlParserRULE_table_or_subquery) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1654) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 231, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - p.SetState(1610) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 221, p.GetParserRuleContext()) == 1 { - { - p.SetState(1607) - p.Database_name() - } - { - p.SetState(1608) - p.Match(SqlParserDOT) - } - - - } - { - p.SetState(1612) - p.Table_name() - } - p.SetState(1617) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 223, p.GetParserRuleContext()) == 1 { - p.SetState(1614) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 222, p.GetParserRuleContext()) == 1 { - { - p.SetState(1613) - p.Match(SqlParserK_AS) - } - - - } - { - p.SetState(1616) - p.Table_alias() - } - - - } - p.SetState(1624) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 224, p.GetParserRuleContext()) == 1 { - { - p.SetState(1619) - p.Match(SqlParserK_INDEXED) - } - { - p.SetState(1620) - p.Match(SqlParserK_BY) - } - { - p.SetState(1621) - p.Index_name() - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 224, p.GetParserRuleContext()) == 2 { - { - p.SetState(1622) - p.Match(SqlParserK_NOT) - } - { - p.SetState(1623) - p.Match(SqlParserK_INDEXED) - } - - - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1626) - p.Match(SqlParserOPEN_PAR) - } - p.SetState(1636) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 226, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1627) - p.Table_or_subquery() - } - p.SetState(1632) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1628) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1629) - p.Table_or_subquery() - } - - - p.SetState(1634) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - case 2: - { - p.SetState(1635) - p.Join_clause() - } - - } - { - p.SetState(1638) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(1643) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 228, p.GetParserRuleContext()) == 1 { - p.SetState(1640) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 227, p.GetParserRuleContext()) == 1 { - { - p.SetState(1639) - p.Match(SqlParserK_AS) - } - - - } - { - p.SetState(1642) - p.Table_alias() - } - - - } - - - case 3: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1645) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1646) - p.Select_stmt() - } - { - p.SetState(1647) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(1652) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 230, p.GetParserRuleContext()) == 1 { - p.SetState(1649) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 229, p.GetParserRuleContext()) == 1 { - { - p.SetState(1648) - p.Match(SqlParserK_AS) - } - - - } - { - p.SetState(1651) - p.Table_alias() - } - - - } - - } - - - return localctx -} - - -// IJoin_clauseContext is an interface to support dynamic dispatch. -type IJoin_clauseContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsJoin_clauseContext differentiates from other interfaces. - IsJoin_clauseContext() -} - -type Join_clauseContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyJoin_clauseContext() *Join_clauseContext { - var p = new(Join_clauseContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_join_clause - return p -} - -func (*Join_clauseContext) IsJoin_clauseContext() {} - -func NewJoin_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_clauseContext { - var p = new(Join_clauseContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_join_clause - - return p -} - -func (s *Join_clauseContext) GetParser() antlr.Parser { return s.parser } - -func (s *Join_clauseContext) AllTable_or_subquery() []ITable_or_subqueryContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - len++ - } - } - - tst := make([]ITable_or_subqueryContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_or_subqueryContext); ok { - tst[i] = t.(ITable_or_subqueryContext) - i++ - } - } - - return tst -} - -func (s *Join_clauseContext) Table_or_subquery(i int) ITable_or_subqueryContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_subqueryContext) -} - -func (s *Join_clauseContext) AllJoin_operator() []IJoin_operatorContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IJoin_operatorContext); ok { - len++ - } - } - - tst := make([]IJoin_operatorContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IJoin_operatorContext); ok { - tst[i] = t.(IJoin_operatorContext) - i++ - } - } - - return tst -} - -func (s *Join_clauseContext) Join_operator(i int) IJoin_operatorContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_operatorContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IJoin_operatorContext) -} - -func (s *Join_clauseContext) AllJoin_constraint() []IJoin_constraintContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IJoin_constraintContext); ok { - len++ - } - } - - tst := make([]IJoin_constraintContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IJoin_constraintContext); ok { - tst[i] = t.(IJoin_constraintContext) - i++ - } - } - - return tst -} - -func (s *Join_clauseContext) Join_constraint(i int) IJoin_constraintContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_constraintContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IJoin_constraintContext) -} - -func (s *Join_clauseContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Join_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Join_clauseContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterJoin_clause(s) - } -} - -func (s *Join_clauseContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitJoin_clause(s) - } -} - - - - -func (p *SqlParser) Join_clause() (localctx IJoin_clauseContext) { - this := p - _ = this - - localctx = NewJoin_clauseContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 130, SqlParserRULE_join_clause) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1656) - p.Table_or_subquery() - } - p.SetState(1663) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 232, p.GetParserRuleContext()) - - for _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - if _alt == 1 { - { - p.SetState(1657) - p.Join_operator() - } - { - p.SetState(1658) - p.Table_or_subquery() - } - { - p.SetState(1659) - p.Join_constraint() - } - - - } - p.SetState(1665) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 232, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// IJoin_operatorContext is an interface to support dynamic dispatch. -type IJoin_operatorContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsJoin_operatorContext differentiates from other interfaces. - IsJoin_operatorContext() -} - -type Join_operatorContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyJoin_operatorContext() *Join_operatorContext { - var p = new(Join_operatorContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_join_operator - return p -} - -func (*Join_operatorContext) IsJoin_operatorContext() {} - -func NewJoin_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_operatorContext { - var p = new(Join_operatorContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_join_operator - - return p -} - -func (s *Join_operatorContext) GetParser() antlr.Parser { return s.parser } - -func (s *Join_operatorContext) COMMA() antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, 0) -} - -func (s *Join_operatorContext) K_JOIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_JOIN, 0) -} - -func (s *Join_operatorContext) K_NATURAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NATURAL, 0) -} - -func (s *Join_operatorContext) K_LEFT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LEFT, 0) -} - -func (s *Join_operatorContext) K_INNER() antlr.TerminalNode { - return s.GetToken(SqlParserK_INNER, 0) -} - -func (s *Join_operatorContext) K_CROSS() antlr.TerminalNode { - return s.GetToken(SqlParserK_CROSS, 0) -} - -func (s *Join_operatorContext) K_OUTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_OUTER, 0) -} - -func (s *Join_operatorContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Join_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Join_operatorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterJoin_operator(s) - } -} - -func (s *Join_operatorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitJoin_operator(s) - } -} - - - - -func (p *SqlParser) Join_operator() (localctx IJoin_operatorContext) { - this := p - _ = this - - localctx = NewJoin_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 132, SqlParserRULE_join_operator) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1679) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserCOMMA: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1666) - p.Match(SqlParserCOMMA) - } - - - case SqlParserK_CROSS, SqlParserK_INNER, SqlParserK_JOIN, SqlParserK_LEFT, SqlParserK_NATURAL: - p.EnterOuterAlt(localctx, 2) - p.SetState(1668) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_NATURAL { - { - p.SetState(1667) - p.Match(SqlParserK_NATURAL) - } - - } - p.SetState(1676) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_LEFT: - { - p.SetState(1670) - p.Match(SqlParserK_LEFT) - } - p.SetState(1672) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_OUTER { - { - p.SetState(1671) - p.Match(SqlParserK_OUTER) - } - - } - - - case SqlParserK_INNER: - { - p.SetState(1674) - p.Match(SqlParserK_INNER) - } - - - case SqlParserK_CROSS: - { - p.SetState(1675) - p.Match(SqlParserK_CROSS) - } - - - case SqlParserK_JOIN: - - - - default: - } - { - p.SetState(1678) - p.Match(SqlParserK_JOIN) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - return localctx -} - - -// IJoin_constraintContext is an interface to support dynamic dispatch. -type IJoin_constraintContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsJoin_constraintContext differentiates from other interfaces. - IsJoin_constraintContext() -} - -type Join_constraintContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyJoin_constraintContext() *Join_constraintContext { - var p = new(Join_constraintContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_join_constraint - return p -} - -func (*Join_constraintContext) IsJoin_constraintContext() {} - -func NewJoin_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_constraintContext { - var p = new(Join_constraintContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_join_constraint - - return p -} - -func (s *Join_constraintContext) GetParser() antlr.Parser { return s.parser } - -func (s *Join_constraintContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *Join_constraintContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Join_constraintContext) K_USING() antlr.TerminalNode { - return s.GetToken(SqlParserK_USING, 0) -} - -func (s *Join_constraintContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Join_constraintContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Join_constraintContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Join_constraintContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Join_constraintContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Join_constraintContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Join_constraintContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Join_constraintContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Join_constraintContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterJoin_constraint(s) - } -} - -func (s *Join_constraintContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitJoin_constraint(s) - } -} - - - - -func (p *SqlParser) Join_constraint() (localctx IJoin_constraintContext) { - this := p - _ = this - - localctx = NewJoin_constraintContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 134, SqlParserRULE_join_constraint) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1695) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 238, p.GetParserRuleContext()) == 1 { - { - p.SetState(1681) - p.Match(SqlParserK_ON) - } - { - p.SetState(1682) - p.expr(0) - } - - } else if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 238, p.GetParserRuleContext()) == 2 { - { - p.SetState(1683) - p.Match(SqlParserK_USING) - } - { - p.SetState(1684) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1685) - p.Column_name() - } - p.SetState(1690) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1686) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1687) - p.Column_name() - } - - - p.SetState(1692) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1693) - p.Match(SqlParserCLOSE_PAR) - } - - - } - - - - return localctx -} - - -// ISelect_coreContext is an interface to support dynamic dispatch. -type ISelect_coreContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSelect_coreContext differentiates from other interfaces. - IsSelect_coreContext() -} - -type Select_coreContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySelect_coreContext() *Select_coreContext { - var p = new(Select_coreContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_select_core - return p -} - -func (*Select_coreContext) IsSelect_coreContext() {} - -func NewSelect_coreContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_coreContext { - var p = new(Select_coreContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_select_core - - return p -} - -func (s *Select_coreContext) GetParser() antlr.Parser { return s.parser } - -func (s *Select_coreContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SELECT, 0) -} - -func (s *Select_coreContext) AllResult_column() []IResult_columnContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IResult_columnContext); ok { - len++ - } - } - - tst := make([]IResult_columnContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IResult_columnContext); ok { - tst[i] = t.(IResult_columnContext) - i++ - } - } - - return tst -} - -func (s *Select_coreContext) Result_column(i int) IResult_columnContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IResult_columnContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IResult_columnContext) -} - -func (s *Select_coreContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Select_coreContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Select_coreContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *Select_coreContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *Select_coreContext) AllExpr() []IExprContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IExprContext); ok { - len++ - } - } - - tst := make([]IExprContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IExprContext); ok { - tst[i] = t.(IExprContext) - i++ - } - } - - return tst -} - -func (s *Select_coreContext) Expr(i int) IExprContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Select_coreContext) K_GROUP() antlr.TerminalNode { - return s.GetToken(SqlParserK_GROUP, 0) -} - -func (s *Select_coreContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *Select_coreContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DISTINCT, 0) -} - -func (s *Select_coreContext) K_ALL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, 0) -} - -func (s *Select_coreContext) AllTable_or_subquery() []ITable_or_subqueryContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - len++ - } - } - - tst := make([]ITable_or_subqueryContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(ITable_or_subqueryContext); ok { - tst[i] = t.(ITable_or_subqueryContext) - i++ - } - } - - return tst -} - -func (s *Select_coreContext) Table_or_subquery(i int) ITable_or_subqueryContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_or_subqueryContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(ITable_or_subqueryContext) -} - -func (s *Select_coreContext) Join_clause() IJoin_clauseContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IJoin_clauseContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IJoin_clauseContext) -} - -func (s *Select_coreContext) K_HAVING() antlr.TerminalNode { - return s.GetToken(SqlParserK_HAVING, 0) -} - -func (s *Select_coreContext) K_VALUES() antlr.TerminalNode { - return s.GetToken(SqlParserK_VALUES, 0) -} - -func (s *Select_coreContext) AllOPEN_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserOPEN_PAR) -} - -func (s *Select_coreContext) OPEN_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, i) -} - -func (s *Select_coreContext) AllCLOSE_PAR() []antlr.TerminalNode { - return s.GetTokens(SqlParserCLOSE_PAR) -} - -func (s *Select_coreContext) CLOSE_PAR(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, i) -} - -func (s *Select_coreContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Select_coreContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Select_coreContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSelect_core(s) - } -} - -func (s *Select_coreContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSelect_core(s) - } -} - - - - -func (p *SqlParser) Select_core() (localctx ISelect_coreContext) { - this := p - _ = this - - localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 136, SqlParserRULE_select_core) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1771) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserK_SELECT: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1697) - p.Match(SqlParserK_SELECT) - } - p.SetState(1699) - p.GetErrorHandler().Sync(p) - - - if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 239, p.GetParserRuleContext()) == 1 { - { - p.SetState(1698) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserK_ALL || _la == SqlParserK_DISTINCT) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - } - { - p.SetState(1701) - p.Result_column() - } - p.SetState(1706) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1702) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1703) - p.Result_column() - } - - - p.SetState(1708) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1721) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_FROM { - { - p.SetState(1709) - p.Match(SqlParserK_FROM) - } - p.SetState(1719) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 242, p.GetParserRuleContext()) { - case 1: - { - p.SetState(1710) - p.Table_or_subquery() - } - p.SetState(1715) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1711) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1712) - p.Table_or_subquery() - } - - - p.SetState(1717) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - case 2: - { - p.SetState(1718) - p.Join_clause() - } - - } - - } - p.SetState(1725) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_WHERE { - { - p.SetState(1723) - p.Match(SqlParserK_WHERE) - } - { - p.SetState(1724) - p.expr(0) - } - - } - p.SetState(1741) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_GROUP { - { - p.SetState(1727) - p.Match(SqlParserK_GROUP) - } - { - p.SetState(1728) - p.Match(SqlParserK_BY) - } - { - p.SetState(1729) - p.expr(0) - } - p.SetState(1734) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1730) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1731) - p.expr(0) - } - - - p.SetState(1736) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - p.SetState(1739) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserK_HAVING { - { - p.SetState(1737) - p.Match(SqlParserK_HAVING) - } - { - p.SetState(1738) - p.expr(0) - } - - } - - } - - - case SqlParserK_VALUES: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1743) - p.Match(SqlParserK_VALUES) - } - { - p.SetState(1744) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1745) - p.expr(0) - } - p.SetState(1750) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1746) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1747) - p.expr(0) - } - - - p.SetState(1752) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1753) - p.Match(SqlParserCLOSE_PAR) - } - p.SetState(1768) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1754) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1755) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1756) - p.expr(0) - } - p.SetState(1761) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1757) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1758) - p.expr(0) - } - - - p.SetState(1763) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1764) - p.Match(SqlParserCLOSE_PAR) - } - - - p.SetState(1770) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - return localctx -} - - -// ICompound_operatorContext is an interface to support dynamic dispatch. -type ICompound_operatorContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCompound_operatorContext differentiates from other interfaces. - IsCompound_operatorContext() -} - -type Compound_operatorContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCompound_operatorContext() *Compound_operatorContext { - var p = new(Compound_operatorContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_compound_operator - return p -} - -func (*Compound_operatorContext) IsCompound_operatorContext() {} - -func NewCompound_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_operatorContext { - var p = new(Compound_operatorContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_compound_operator - - return p -} - -func (s *Compound_operatorContext) GetParser() antlr.Parser { return s.parser } - -func (s *Compound_operatorContext) K_UNION() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNION, 0) -} - -func (s *Compound_operatorContext) K_ALL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, 0) -} - -func (s *Compound_operatorContext) K_INTERSECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INTERSECT, 0) -} - -func (s *Compound_operatorContext) K_EXCEPT() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCEPT, 0) -} - -func (s *Compound_operatorContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Compound_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Compound_operatorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCompound_operator(s) - } -} - -func (s *Compound_operatorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCompound_operator(s) - } -} - - - - -func (p *SqlParser) Compound_operator() (localctx ICompound_operatorContext) { - this := p - _ = this - - localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 138, SqlParserRULE_compound_operator) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1778) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 252, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1773) - p.Match(SqlParserK_UNION) - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1774) - p.Match(SqlParserK_UNION) - } - { - p.SetState(1775) - p.Match(SqlParserK_ALL) - } - - - case 3: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1776) - p.Match(SqlParserK_INTERSECT) - } - - - case 4: - p.EnterOuterAlt(localctx, 4) - { - p.SetState(1777) - p.Match(SqlParserK_EXCEPT) - } - - } - - - return localctx -} - - -// ICte_table_nameContext is an interface to support dynamic dispatch. -type ICte_table_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCte_table_nameContext differentiates from other interfaces. - IsCte_table_nameContext() -} - -type Cte_table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCte_table_nameContext() *Cte_table_nameContext { - var p = new(Cte_table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_cte_table_name - return p -} - -func (*Cte_table_nameContext) IsCte_table_nameContext() {} - -func NewCte_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Cte_table_nameContext { - var p = new(Cte_table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_cte_table_name - - return p -} - -func (s *Cte_table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Cte_table_nameContext) Table_name() ITable_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(ITable_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(ITable_nameContext) -} - -func (s *Cte_table_nameContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Cte_table_nameContext) AllColumn_name() []IColumn_nameContext { - children := s.GetChildren() - len := 0 - for _, ctx := range children { - if _, ok := ctx.(IColumn_nameContext); ok { - len++ - } - } - - tst := make([]IColumn_nameContext, len) - i := 0 - for _, ctx := range children { - if t, ok := ctx.(IColumn_nameContext); ok { - tst[i] = t.(IColumn_nameContext) - i++ - } - } - - return tst -} - -func (s *Cte_table_nameContext) Column_name(i int) IColumn_nameContext { - var t antlr.RuleContext; - j := 0 - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_nameContext); ok { - if j == i { - t = ctx.(antlr.RuleContext); - break - } - j++ - } - } - - if t == nil { - return nil - } - - return t.(IColumn_nameContext) -} - -func (s *Cte_table_nameContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Cte_table_nameContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(SqlParserCOMMA) -} - -func (s *Cte_table_nameContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(SqlParserCOMMA, i) -} - -func (s *Cte_table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Cte_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Cte_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCte_table_name(s) - } -} - -func (s *Cte_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCte_table_name(s) - } -} - - - - -func (p *SqlParser) Cte_table_name() (localctx ICte_table_nameContext) { - this := p - _ = this - - localctx = NewCte_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 140, SqlParserRULE_cte_table_name) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1780) - p.Table_name() - } - p.SetState(1792) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserOPEN_PAR { - { - p.SetState(1781) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1782) - p.Column_name() - } - p.SetState(1787) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - for _la == SqlParserCOMMA { - { - p.SetState(1783) - p.Match(SqlParserCOMMA) - } - { - p.SetState(1784) - p.Column_name() - } - - - p.SetState(1789) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - } - { - p.SetState(1790) - p.Match(SqlParserCLOSE_PAR) - } - - } - - - - return localctx -} - - -// ISigned_numberContext is an interface to support dynamic dispatch. -type ISigned_numberContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSigned_numberContext differentiates from other interfaces. - IsSigned_numberContext() -} - -type Signed_numberContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySigned_numberContext() *Signed_numberContext { - var p = new(Signed_numberContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_signed_number - return p -} - -func (*Signed_numberContext) IsSigned_numberContext() {} - -func NewSigned_numberContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Signed_numberContext { - var p = new(Signed_numberContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_signed_number - - return p -} - -func (s *Signed_numberContext) GetParser() antlr.Parser { return s.parser } - -func (s *Signed_numberContext) NUMERIC_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserNUMERIC_LITERAL, 0) -} - -func (s *Signed_numberContext) STAR() antlr.TerminalNode { - return s.GetToken(SqlParserSTAR, 0) -} - -func (s *Signed_numberContext) PLUS() antlr.TerminalNode { - return s.GetToken(SqlParserPLUS, 0) -} - -func (s *Signed_numberContext) MINUS() antlr.TerminalNode { - return s.GetToken(SqlParserMINUS, 0) -} - -func (s *Signed_numberContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Signed_numberContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Signed_numberContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSigned_number(s) - } -} - -func (s *Signed_numberContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSigned_number(s) - } -} - - - - -func (p *SqlParser) Signed_number() (localctx ISigned_numberContext) { - this := p - _ = this - - localctx = NewSigned_numberContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 142, SqlParserRULE_signed_number) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - p.SetState(1799) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserPLUS, SqlParserMINUS, SqlParserNUMERIC_LITERAL: - p.SetState(1795) - p.GetErrorHandler().Sync(p) - _la = p.GetTokenStream().LA(1) - - - if _la == SqlParserPLUS || _la == SqlParserMINUS { - { - p.SetState(1794) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserPLUS || _la == SqlParserMINUS) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - } - { - p.SetState(1797) - p.Match(SqlParserNUMERIC_LITERAL) - } - - - case SqlParserSTAR: - { - p.SetState(1798) - p.Match(SqlParserSTAR) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - - return localctx -} - - -// ILiteral_valueContext is an interface to support dynamic dispatch. -type ILiteral_valueContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsLiteral_valueContext differentiates from other interfaces. - IsLiteral_valueContext() -} - -type Literal_valueContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyLiteral_valueContext() *Literal_valueContext { - var p = new(Literal_valueContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_literal_value - return p -} - -func (*Literal_valueContext) IsLiteral_valueContext() {} - -func NewLiteral_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Literal_valueContext { - var p = new(Literal_valueContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_literal_value - - return p -} - -func (s *Literal_valueContext) GetParser() antlr.Parser { return s.parser } - -func (s *Literal_valueContext) NUMERIC_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserNUMERIC_LITERAL, 0) -} - -func (s *Literal_valueContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Literal_valueContext) BLOB_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserBLOB_LITERAL, 0) -} - -func (s *Literal_valueContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *Literal_valueContext) K_CURRENT_TIME() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_TIME, 0) -} - -func (s *Literal_valueContext) K_CURRENT_DATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_DATE, 0) -} - -func (s *Literal_valueContext) K_CURRENT_TIMESTAMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_TIMESTAMP, 0) -} - -func (s *Literal_valueContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Literal_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Literal_valueContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterLiteral_value(s) - } -} - -func (s *Literal_valueContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitLiteral_value(s) - } -} - - - - -func (p *SqlParser) Literal_value() (localctx ILiteral_valueContext) { - this := p - _ = this - - localctx = NewLiteral_valueContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 144, SqlParserRULE_literal_value) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1801) - _la = p.GetTokenStream().LA(1) - - if !(((((_la - 53)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 53))) & ((1 << (SqlParserK_CURRENT_DATE - 53)) | (1 << (SqlParserK_CURRENT_TIME - 53)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 53)))) != 0) || _la == SqlParserK_NULL || ((((_la - 154)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 154))) & ((1 << (SqlParserNUMERIC_LITERAL - 154)) | (1 << (SqlParserSTRING_LITERAL - 154)) | (1 << (SqlParserBLOB_LITERAL - 154)))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - - return localctx -} - - -// IUnary_operatorContext is an interface to support dynamic dispatch. -type IUnary_operatorContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsUnary_operatorContext differentiates from other interfaces. - IsUnary_operatorContext() -} - -type Unary_operatorContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyUnary_operatorContext() *Unary_operatorContext { - var p = new(Unary_operatorContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_unary_operator - return p -} - -func (*Unary_operatorContext) IsUnary_operatorContext() {} - -func NewUnary_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Unary_operatorContext { - var p = new(Unary_operatorContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_unary_operator - - return p -} - -func (s *Unary_operatorContext) GetParser() antlr.Parser { return s.parser } - -func (s *Unary_operatorContext) MINUS() antlr.TerminalNode { - return s.GetToken(SqlParserMINUS, 0) -} - -func (s *Unary_operatorContext) PLUS() antlr.TerminalNode { - return s.GetToken(SqlParserPLUS, 0) -} - -func (s *Unary_operatorContext) TILDE() antlr.TerminalNode { - return s.GetToken(SqlParserTILDE, 0) -} - -func (s *Unary_operatorContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *Unary_operatorContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Unary_operatorContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Unary_operatorContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterUnary_operator(s) - } -} - -func (s *Unary_operatorContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitUnary_operator(s) - } -} - - - - -func (p *SqlParser) Unary_operator() (localctx IUnary_operatorContext) { - this := p - _ = this - - localctx = NewUnary_operatorContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 146, SqlParserRULE_unary_operator) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1803) - _la = p.GetTokenStream().LA(1) - - if !((((_la) & -(0x1f+1)) == 0 && ((1 << uint(_la)) & ((1 << SqlParserPLUS) | (1 << SqlParserMINUS) | (1 << SqlParserTILDE))) != 0) || _la == SqlParserK_NOT) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - - return localctx -} - - -// IError_messageContext is an interface to support dynamic dispatch. -type IError_messageContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsError_messageContext differentiates from other interfaces. - IsError_messageContext() -} - -type Error_messageContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyError_messageContext() *Error_messageContext { - var p = new(Error_messageContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_error_message - return p -} - -func (*Error_messageContext) IsError_messageContext() {} - -func NewError_messageContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Error_messageContext { - var p = new(Error_messageContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_error_message - - return p -} - -func (s *Error_messageContext) GetParser() antlr.Parser { return s.parser } - -func (s *Error_messageContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Error_messageContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Error_messageContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Error_messageContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterError_message(s) - } -} - -func (s *Error_messageContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitError_message(s) - } -} - - - - -func (p *SqlParser) Error_message() (localctx IError_messageContext) { - this := p - _ = this - - localctx = NewError_messageContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 148, SqlParserRULE_error_message) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1805) - p.Match(SqlParserSTRING_LITERAL) - } - - - - return localctx -} - - -// IModule_argumentContext is an interface to support dynamic dispatch. -type IModule_argumentContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsModule_argumentContext differentiates from other interfaces. - IsModule_argumentContext() -} - -type Module_argumentContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyModule_argumentContext() *Module_argumentContext { - var p = new(Module_argumentContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_module_argument - return p -} - -func (*Module_argumentContext) IsModule_argumentContext() {} - -func NewModule_argumentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_argumentContext { - var p = new(Module_argumentContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_module_argument - - return p -} - -func (s *Module_argumentContext) GetParser() antlr.Parser { return s.parser } - -func (s *Module_argumentContext) Expr() IExprContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IExprContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IExprContext) -} - -func (s *Module_argumentContext) Column_def() IColumn_defContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IColumn_defContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IColumn_defContext) -} - -func (s *Module_argumentContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Module_argumentContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Module_argumentContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterModule_argument(s) - } -} - -func (s *Module_argumentContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitModule_argument(s) - } -} - - - - -func (p *SqlParser) Module_argument() (localctx IModule_argumentContext) { - this := p - _ = this - - localctx = NewModule_argumentContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 150, SqlParserRULE_module_argument) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1809) - p.GetErrorHandler().Sync(p) - switch p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 257, p.GetParserRuleContext()) { - case 1: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1807) - p.expr(0) - } - - - case 2: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1808) - p.Column_def() - } - - } - - - return localctx -} - - -// IColumn_aliasContext is an interface to support dynamic dispatch. -type IColumn_aliasContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_aliasContext differentiates from other interfaces. - IsColumn_aliasContext() -} - -type Column_aliasContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_aliasContext() *Column_aliasContext { - var p = new(Column_aliasContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_alias - return p -} - -func (*Column_aliasContext) IsColumn_aliasContext() {} - -func NewColumn_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_aliasContext { - var p = new(Column_aliasContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_alias - - return p -} - -func (s *Column_aliasContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_aliasContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) -} - -func (s *Column_aliasContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Column_aliasContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_aliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_aliasContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_alias(s) - } -} - -func (s *Column_aliasContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_alias(s) - } -} - - - - -func (p *SqlParser) Column_alias() (localctx IColumn_aliasContext) { - this := p - _ = this - - localctx = NewColumn_aliasContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 152, SqlParserRULE_column_alias) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1811) - _la = p.GetTokenStream().LA(1) - - if !(_la == SqlParserIDENTIFIER || _la == SqlParserSTRING_LITERAL) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - - return localctx -} - - -// IKeywordContext is an interface to support dynamic dispatch. -type IKeywordContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsKeywordContext differentiates from other interfaces. - IsKeywordContext() -} - -type KeywordContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyKeywordContext() *KeywordContext { - var p = new(KeywordContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_keyword - return p -} - -func (*KeywordContext) IsKeywordContext() {} - -func NewKeywordContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KeywordContext { - var p = new(KeywordContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_keyword - - return p -} - -func (s *KeywordContext) GetParser() antlr.Parser { return s.parser } - -func (s *KeywordContext) K_ABORT() antlr.TerminalNode { - return s.GetToken(SqlParserK_ABORT, 0) -} - -func (s *KeywordContext) K_ACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_ACTION, 0) -} - -func (s *KeywordContext) K_ADD() antlr.TerminalNode { - return s.GetToken(SqlParserK_ADD, 0) -} - -func (s *KeywordContext) K_AFTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_AFTER, 0) -} - -func (s *KeywordContext) K_ALL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALL, 0) -} - -func (s *KeywordContext) K_ALTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ALTER, 0) -} - -func (s *KeywordContext) K_ANALYZE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ANALYZE, 0) -} - -func (s *KeywordContext) K_AND() antlr.TerminalNode { - return s.GetToken(SqlParserK_AND, 0) -} - -func (s *KeywordContext) K_AS() antlr.TerminalNode { - return s.GetToken(SqlParserK_AS, 0) -} - -func (s *KeywordContext) K_ASC() antlr.TerminalNode { - return s.GetToken(SqlParserK_ASC, 0) -} - -func (s *KeywordContext) K_ATTACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_ATTACH, 0) -} - -func (s *KeywordContext) K_AUTOINCREMENT() antlr.TerminalNode { - return s.GetToken(SqlParserK_AUTOINCREMENT, 0) -} - -func (s *KeywordContext) K_BEFORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEFORE, 0) -} - -func (s *KeywordContext) K_BEGIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BEGIN, 0) -} - -func (s *KeywordContext) K_BETWEEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_BETWEEN, 0) -} - -func (s *KeywordContext) K_BY() antlr.TerminalNode { - return s.GetToken(SqlParserK_BY, 0) -} - -func (s *KeywordContext) K_CASCADE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CASCADE, 0) -} - -func (s *KeywordContext) K_CASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CASE, 0) -} - -func (s *KeywordContext) K_CAST() antlr.TerminalNode { - return s.GetToken(SqlParserK_CAST, 0) -} - -func (s *KeywordContext) K_CHECK() antlr.TerminalNode { - return s.GetToken(SqlParserK_CHECK, 0) -} - -func (s *KeywordContext) K_COLLATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLLATE, 0) -} - -func (s *KeywordContext) K_COLUMN() antlr.TerminalNode { - return s.GetToken(SqlParserK_COLUMN, 0) -} - -func (s *KeywordContext) K_COMMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_COMMIT, 0) -} - -func (s *KeywordContext) K_CONFLICT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONFLICT, 0) -} - -func (s *KeywordContext) K_CONSTRAINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_CONSTRAINT, 0) -} - -func (s *KeywordContext) K_CREATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CREATE, 0) -} - -func (s *KeywordContext) K_CROSS() antlr.TerminalNode { - return s.GetToken(SqlParserK_CROSS, 0) -} - -func (s *KeywordContext) K_CURRENT_DATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_DATE, 0) -} - -func (s *KeywordContext) K_CURRENT_TIME() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_TIME, 0) -} - -func (s *KeywordContext) K_CURRENT_TIMESTAMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_CURRENT_TIMESTAMP, 0) -} - -func (s *KeywordContext) K_DATABASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DATABASE, 0) -} - -func (s *KeywordContext) K_DEFAULT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFAULT, 0) -} - -func (s *KeywordContext) K_DEFERRABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRABLE, 0) -} - -func (s *KeywordContext) K_DEFERRED() antlr.TerminalNode { - return s.GetToken(SqlParserK_DEFERRED, 0) -} - -func (s *KeywordContext) K_DELETE() antlr.TerminalNode { - return s.GetToken(SqlParserK_DELETE, 0) -} - -func (s *KeywordContext) K_DESC() antlr.TerminalNode { - return s.GetToken(SqlParserK_DESC, 0) -} - -func (s *KeywordContext) K_DETACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_DETACH, 0) -} - -func (s *KeywordContext) K_DISTINCT() antlr.TerminalNode { - return s.GetToken(SqlParserK_DISTINCT, 0) -} - -func (s *KeywordContext) K_DROP() antlr.TerminalNode { - return s.GetToken(SqlParserK_DROP, 0) -} - -func (s *KeywordContext) K_EACH() antlr.TerminalNode { - return s.GetToken(SqlParserK_EACH, 0) -} - -func (s *KeywordContext) K_ELSE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ELSE, 0) -} - -func (s *KeywordContext) K_END() antlr.TerminalNode { - return s.GetToken(SqlParserK_END, 0) -} - -func (s *KeywordContext) K_ENABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ENABLE, 0) -} - -func (s *KeywordContext) K_ESCAPE() antlr.TerminalNode { - return s.GetToken(SqlParserK_ESCAPE, 0) -} - -func (s *KeywordContext) K_EXCEPT() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCEPT, 0) -} - -func (s *KeywordContext) K_EXCLUSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXCLUSIVE, 0) -} - -func (s *KeywordContext) K_EXISTS() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXISTS, 0) -} - -func (s *KeywordContext) K_EXPLAIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_EXPLAIN, 0) -} - -func (s *KeywordContext) K_FAIL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FAIL, 0) -} - -func (s *KeywordContext) K_FOR() antlr.TerminalNode { - return s.GetToken(SqlParserK_FOR, 0) -} - -func (s *KeywordContext) K_FOREIGN() antlr.TerminalNode { - return s.GetToken(SqlParserK_FOREIGN, 0) -} - -func (s *KeywordContext) K_FROM() antlr.TerminalNode { - return s.GetToken(SqlParserK_FROM, 0) -} - -func (s *KeywordContext) K_FULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_FULL, 0) -} - -func (s *KeywordContext) K_GLOB() antlr.TerminalNode { - return s.GetToken(SqlParserK_GLOB, 0) -} - -func (s *KeywordContext) K_GROUP() antlr.TerminalNode { - return s.GetToken(SqlParserK_GROUP, 0) -} - -func (s *KeywordContext) K_HAVING() antlr.TerminalNode { - return s.GetToken(SqlParserK_HAVING, 0) -} - -func (s *KeywordContext) K_IF() antlr.TerminalNode { - return s.GetToken(SqlParserK_IF, 0) -} - -func (s *KeywordContext) K_IGNORE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IGNORE, 0) -} - -func (s *KeywordContext) K_IMMEDIATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_IMMEDIATE, 0) -} - -func (s *KeywordContext) K_IN() antlr.TerminalNode { - return s.GetToken(SqlParserK_IN, 0) -} - -func (s *KeywordContext) K_INDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEX, 0) -} - -func (s *KeywordContext) K_INDEXED() antlr.TerminalNode { - return s.GetToken(SqlParserK_INDEXED, 0) -} - -func (s *KeywordContext) K_INITIALLY() antlr.TerminalNode { - return s.GetToken(SqlParserK_INITIALLY, 0) -} - -func (s *KeywordContext) K_INNER() antlr.TerminalNode { - return s.GetToken(SqlParserK_INNER, 0) -} - -func (s *KeywordContext) K_INSERT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSERT, 0) -} - -func (s *KeywordContext) K_INSTEAD() antlr.TerminalNode { - return s.GetToken(SqlParserK_INSTEAD, 0) -} - -func (s *KeywordContext) K_INTERSECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_INTERSECT, 0) -} - -func (s *KeywordContext) K_INTO() antlr.TerminalNode { - return s.GetToken(SqlParserK_INTO, 0) -} - -func (s *KeywordContext) K_IS() antlr.TerminalNode { - return s.GetToken(SqlParserK_IS, 0) -} - -func (s *KeywordContext) K_ISNULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_ISNULL, 0) -} - -func (s *KeywordContext) K_JOIN() antlr.TerminalNode { - return s.GetToken(SqlParserK_JOIN, 0) -} - -func (s *KeywordContext) K_KEY() antlr.TerminalNode { - return s.GetToken(SqlParserK_KEY, 0) -} - -func (s *KeywordContext) K_LEFT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LEFT, 0) -} - -func (s *KeywordContext) K_LIKE() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIKE, 0) -} - -func (s *KeywordContext) K_LIMIT() antlr.TerminalNode { - return s.GetToken(SqlParserK_LIMIT, 0) -} - -func (s *KeywordContext) K_MATCH() antlr.TerminalNode { - return s.GetToken(SqlParserK_MATCH, 0) -} - -func (s *KeywordContext) K_NATURAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NATURAL, 0) -} - -func (s *KeywordContext) K_NO() antlr.TerminalNode { - return s.GetToken(SqlParserK_NO, 0) -} - -func (s *KeywordContext) K_NOT() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOT, 0) -} - -func (s *KeywordContext) K_NOTNULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NOTNULL, 0) -} - -func (s *KeywordContext) K_NULL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NULL, 0) -} - -func (s *KeywordContext) K_OF() antlr.TerminalNode { - return s.GetToken(SqlParserK_OF, 0) -} - -func (s *KeywordContext) K_OFFSET() antlr.TerminalNode { - return s.GetToken(SqlParserK_OFFSET, 0) -} - -func (s *KeywordContext) K_ON() antlr.TerminalNode { - return s.GetToken(SqlParserK_ON, 0) -} - -func (s *KeywordContext) K_OR() antlr.TerminalNode { - return s.GetToken(SqlParserK_OR, 0) -} - -func (s *KeywordContext) K_ORDER() antlr.TerminalNode { - return s.GetToken(SqlParserK_ORDER, 0) -} - -func (s *KeywordContext) K_OUTER() antlr.TerminalNode { - return s.GetToken(SqlParserK_OUTER, 0) -} - -func (s *KeywordContext) K_PLAN() antlr.TerminalNode { - return s.GetToken(SqlParserK_PLAN, 0) -} - -func (s *KeywordContext) K_PRAGMA() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRAGMA, 0) -} - -func (s *KeywordContext) K_PRIMARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_PRIMARY, 0) -} - -func (s *KeywordContext) K_QUERY() antlr.TerminalNode { - return s.GetToken(SqlParserK_QUERY, 0) -} - -func (s *KeywordContext) K_RAISE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RAISE, 0) -} - -func (s *KeywordContext) K_RECURSIVE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RECURSIVE, 0) -} - -func (s *KeywordContext) K_REFERENCES() antlr.TerminalNode { - return s.GetToken(SqlParserK_REFERENCES, 0) -} - -func (s *KeywordContext) K_REGEXP() antlr.TerminalNode { - return s.GetToken(SqlParserK_REGEXP, 0) -} - -func (s *KeywordContext) K_REINDEX() antlr.TerminalNode { - return s.GetToken(SqlParserK_REINDEX, 0) -} - -func (s *KeywordContext) K_RELEASE() antlr.TerminalNode { - return s.GetToken(SqlParserK_RELEASE, 0) -} - -func (s *KeywordContext) K_RENAME() antlr.TerminalNode { - return s.GetToken(SqlParserK_RENAME, 0) -} - -func (s *KeywordContext) K_REPLACE() antlr.TerminalNode { - return s.GetToken(SqlParserK_REPLACE, 0) -} - -func (s *KeywordContext) K_RESTRICT() antlr.TerminalNode { - return s.GetToken(SqlParserK_RESTRICT, 0) -} - -func (s *KeywordContext) K_RIGHT() antlr.TerminalNode { - return s.GetToken(SqlParserK_RIGHT, 0) -} - -func (s *KeywordContext) K_ROLLBACK() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROLLBACK, 0) -} - -func (s *KeywordContext) K_ROW() antlr.TerminalNode { - return s.GetToken(SqlParserK_ROW, 0) -} - -func (s *KeywordContext) K_SAVEPOINT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SAVEPOINT, 0) -} - -func (s *KeywordContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(SqlParserK_SELECT, 0) -} - -func (s *KeywordContext) K_SET() antlr.TerminalNode { - return s.GetToken(SqlParserK_SET, 0) -} - -func (s *KeywordContext) K_TABLE() antlr.TerminalNode { - return s.GetToken(SqlParserK_TABLE, 0) -} - -func (s *KeywordContext) K_TEMP() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMP, 0) -} - -func (s *KeywordContext) K_TEMPORARY() antlr.TerminalNode { - return s.GetToken(SqlParserK_TEMPORARY, 0) -} - -func (s *KeywordContext) K_THEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_THEN, 0) -} - -func (s *KeywordContext) K_TO() antlr.TerminalNode { - return s.GetToken(SqlParserK_TO, 0) -} - -func (s *KeywordContext) K_TRANSACTION() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRANSACTION, 0) -} - -func (s *KeywordContext) K_TRIGGER() antlr.TerminalNode { - return s.GetToken(SqlParserK_TRIGGER, 0) -} - -func (s *KeywordContext) K_UNION() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNION, 0) -} - -func (s *KeywordContext) K_UNIQUE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UNIQUE, 0) -} - -func (s *KeywordContext) K_UPDATE() antlr.TerminalNode { - return s.GetToken(SqlParserK_UPDATE, 0) -} - -func (s *KeywordContext) K_USING() antlr.TerminalNode { - return s.GetToken(SqlParserK_USING, 0) -} - -func (s *KeywordContext) K_VACUUM() antlr.TerminalNode { - return s.GetToken(SqlParserK_VACUUM, 0) -} - -func (s *KeywordContext) K_VALUES() antlr.TerminalNode { - return s.GetToken(SqlParserK_VALUES, 0) -} - -func (s *KeywordContext) K_VIEW() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIEW, 0) -} - -func (s *KeywordContext) K_VIRTUAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_VIRTUAL, 0) -} - -func (s *KeywordContext) K_WHEN() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHEN, 0) -} - -func (s *KeywordContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(SqlParserK_WHERE, 0) -} - -func (s *KeywordContext) K_WITH() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITH, 0) -} - -func (s *KeywordContext) K_WITHOUT() antlr.TerminalNode { - return s.GetToken(SqlParserK_WITHOUT, 0) -} - -func (s *KeywordContext) K_NEXTVAL() antlr.TerminalNode { - return s.GetToken(SqlParserK_NEXTVAL, 0) -} - -func (s *KeywordContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *KeywordContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *KeywordContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterKeyword(s) - } -} - -func (s *KeywordContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitKeyword(s) - } -} - - - - -func (p *SqlParser) Keyword() (localctx IKeywordContext) { - this := p - _ = this - - localctx = NewKeywordContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 154, SqlParserRULE_keyword) - var _la int - - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1813) - _la = p.GetTokenStream().LA(1) - - if !(((((_la - 26)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 26))) & ((1 << (SqlParserK_ABORT - 26)) | (1 << (SqlParserK_ACTION - 26)) | (1 << (SqlParserK_ADD - 26)) | (1 << (SqlParserK_AFTER - 26)) | (1 << (SqlParserK_ALL - 26)) | (1 << (SqlParserK_ALTER - 26)) | (1 << (SqlParserK_ANALYZE - 26)) | (1 << (SqlParserK_AND - 26)) | (1 << (SqlParserK_AS - 26)) | (1 << (SqlParserK_ASC - 26)) | (1 << (SqlParserK_ATTACH - 26)) | (1 << (SqlParserK_AUTOINCREMENT - 26)) | (1 << (SqlParserK_BEFORE - 26)) | (1 << (SqlParserK_BEGIN - 26)) | (1 << (SqlParserK_BETWEEN - 26)) | (1 << (SqlParserK_BY - 26)) | (1 << (SqlParserK_CASCADE - 26)) | (1 << (SqlParserK_CASE - 26)) | (1 << (SqlParserK_CAST - 26)) | (1 << (SqlParserK_CHECK - 26)) | (1 << (SqlParserK_COLLATE - 26)) | (1 << (SqlParserK_COLUMN - 26)) | (1 << (SqlParserK_COMMIT - 26)) | (1 << (SqlParserK_CONFLICT - 26)) | (1 << (SqlParserK_CONSTRAINT - 26)) | (1 << (SqlParserK_CREATE - 26)) | (1 << (SqlParserK_CROSS - 26)) | (1 << (SqlParserK_CURRENT_DATE - 26)) | (1 << (SqlParserK_CURRENT_TIME - 26)) | (1 << (SqlParserK_CURRENT_TIMESTAMP - 26)) | (1 << (SqlParserK_DATABASE - 26)) | (1 << (SqlParserK_DEFAULT - 26)))) != 0) || ((((_la - 58)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 58))) & ((1 << (SqlParserK_DEFERRABLE - 58)) | (1 << (SqlParserK_DEFERRED - 58)) | (1 << (SqlParserK_DELETE - 58)) | (1 << (SqlParserK_DESC - 58)) | (1 << (SqlParserK_DETACH - 58)) | (1 << (SqlParserK_DISTINCT - 58)) | (1 << (SqlParserK_DROP - 58)) | (1 << (SqlParserK_EACH - 58)) | (1 << (SqlParserK_ELSE - 58)) | (1 << (SqlParserK_END - 58)) | (1 << (SqlParserK_ENABLE - 58)) | (1 << (SqlParserK_ESCAPE - 58)) | (1 << (SqlParserK_EXCEPT - 58)) | (1 << (SqlParserK_EXCLUSIVE - 58)) | (1 << (SqlParserK_EXISTS - 58)) | (1 << (SqlParserK_EXPLAIN - 58)) | (1 << (SqlParserK_FAIL - 58)) | (1 << (SqlParserK_FOR - 58)) | (1 << (SqlParserK_FOREIGN - 58)) | (1 << (SqlParserK_FROM - 58)) | (1 << (SqlParserK_FULL - 58)) | (1 << (SqlParserK_GLOB - 58)) | (1 << (SqlParserK_GROUP - 58)) | (1 << (SqlParserK_HAVING - 58)) | (1 << (SqlParserK_IF - 58)) | (1 << (SqlParserK_IGNORE - 58)) | (1 << (SqlParserK_IMMEDIATE - 58)) | (1 << (SqlParserK_IN - 58)) | (1 << (SqlParserK_INDEX - 58)) | (1 << (SqlParserK_INDEXED - 58)) | (1 << (SqlParserK_INITIALLY - 58)) | (1 << (SqlParserK_INNER - 58)))) != 0) || ((((_la - 90)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 90))) & ((1 << (SqlParserK_INSERT - 90)) | (1 << (SqlParserK_INSTEAD - 90)) | (1 << (SqlParserK_INTERSECT - 90)) | (1 << (SqlParserK_INTO - 90)) | (1 << (SqlParserK_IS - 90)) | (1 << (SqlParserK_ISNULL - 90)) | (1 << (SqlParserK_JOIN - 90)) | (1 << (SqlParserK_KEY - 90)) | (1 << (SqlParserK_LEFT - 90)) | (1 << (SqlParserK_LIKE - 90)) | (1 << (SqlParserK_LIMIT - 90)) | (1 << (SqlParserK_MATCH - 90)) | (1 << (SqlParserK_NATURAL - 90)) | (1 << (SqlParserK_NEXTVAL - 90)) | (1 << (SqlParserK_NO - 90)) | (1 << (SqlParserK_NOT - 90)) | (1 << (SqlParserK_NOTNULL - 90)) | (1 << (SqlParserK_NULL - 90)) | (1 << (SqlParserK_OF - 90)) | (1 << (SqlParserK_OFFSET - 90)) | (1 << (SqlParserK_ON - 90)) | (1 << (SqlParserK_OR - 90)) | (1 << (SqlParserK_ORDER - 90)) | (1 << (SqlParserK_OUTER - 90)) | (1 << (SqlParserK_PLAN - 90)) | (1 << (SqlParserK_PRAGMA - 90)) | (1 << (SqlParserK_PRIMARY - 90)) | (1 << (SqlParserK_QUERY - 90)) | (1 << (SqlParserK_RAISE - 90)) | (1 << (SqlParserK_RECURSIVE - 90)) | (1 << (SqlParserK_REFERENCES - 90)))) != 0) || ((((_la - 122)) & -(0x1f+1)) == 0 && ((1 << uint((_la - 122))) & ((1 << (SqlParserK_REGEXP - 122)) | (1 << (SqlParserK_REINDEX - 122)) | (1 << (SqlParserK_RELEASE - 122)) | (1 << (SqlParserK_RENAME - 122)) | (1 << (SqlParserK_REPLACE - 122)) | (1 << (SqlParserK_RESTRICT - 122)) | (1 << (SqlParserK_RIGHT - 122)) | (1 << (SqlParserK_ROLLBACK - 122)) | (1 << (SqlParserK_ROW - 122)) | (1 << (SqlParserK_SAVEPOINT - 122)) | (1 << (SqlParserK_SELECT - 122)) | (1 << (SqlParserK_SET - 122)) | (1 << (SqlParserK_TABLE - 122)) | (1 << (SqlParserK_TEMP - 122)) | (1 << (SqlParserK_TEMPORARY - 122)) | (1 << (SqlParserK_THEN - 122)) | (1 << (SqlParserK_TO - 122)) | (1 << (SqlParserK_TRANSACTION - 122)) | (1 << (SqlParserK_TRIGGER - 122)) | (1 << (SqlParserK_UNION - 122)) | (1 << (SqlParserK_UNIQUE - 122)) | (1 << (SqlParserK_UPDATE - 122)) | (1 << (SqlParserK_USING - 122)) | (1 << (SqlParserK_VACUUM - 122)) | (1 << (SqlParserK_VALUES - 122)) | (1 << (SqlParserK_VIEW - 122)) | (1 << (SqlParserK_VIRTUAL - 122)) | (1 << (SqlParserK_WHEN - 122)) | (1 << (SqlParserK_WHERE - 122)) | (1 << (SqlParserK_WITH - 122)) | (1 << (SqlParserK_WITHOUT - 122)))) != 0)) { - p.GetErrorHandler().RecoverInline(p) - } else { - p.GetErrorHandler().ReportMatch(p) - p.Consume() - } - } - - - - return localctx -} - - -// IUnknownContext is an interface to support dynamic dispatch. -type IUnknownContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsUnknownContext differentiates from other interfaces. - IsUnknownContext() -} - -type UnknownContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyUnknownContext() *UnknownContext { - var p = new(UnknownContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_unknown - return p -} - -func (*UnknownContext) IsUnknownContext() {} - -func NewUnknownContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *UnknownContext { - var p = new(UnknownContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_unknown - - return p -} - -func (s *UnknownContext) GetParser() antlr.Parser { return s.parser } -func (s *UnknownContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *UnknownContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *UnknownContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterUnknown(s) - } -} - -func (s *UnknownContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitUnknown(s) - } -} - - - - -func (p *SqlParser) Unknown() (localctx IUnknownContext) { - this := p - _ = this - - localctx = NewUnknownContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 156, SqlParserRULE_unknown) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - var _alt int - - p.EnterOuterAlt(localctx, 1) - p.SetState(1816) - p.GetErrorHandler().Sync(p) - _alt = 1 - for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber { - switch _alt { - case 1: - p.SetState(1815) - p.MatchWildcard() - - - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - p.SetState(1818) - p.GetErrorHandler().Sync(p) - _alt = p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 258, p.GetParserRuleContext()) - } - - - - return localctx -} - - -// INameContext is an interface to support dynamic dispatch. -type INameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsNameContext differentiates from other interfaces. - IsNameContext() -} - -type NameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyNameContext() *NameContext { - var p = new(NameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_name - return p -} - -func (*NameContext) IsNameContext() {} - -func NewNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NameContext { - var p = new(NameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_name - - return p -} - -func (s *NameContext) GetParser() antlr.Parser { return s.parser } - -func (s *NameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *NameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *NameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *NameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterName(s) - } -} - -func (s *NameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitName(s) - } -} - - - - -func (p *SqlParser) Name() (localctx INameContext) { - this := p - _ = this - - localctx = NewNameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 158, SqlParserRULE_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1820) - p.Any_name() - } - - - - return localctx -} - - -// IFunction_nameContext is an interface to support dynamic dispatch. -type IFunction_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsFunction_nameContext differentiates from other interfaces. - IsFunction_nameContext() -} - -type Function_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyFunction_nameContext() *Function_nameContext { - var p = new(Function_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_function_name - return p -} - -func (*Function_nameContext) IsFunction_nameContext() {} - -func NewFunction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Function_nameContext { - var p = new(Function_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_function_name - - return p -} - -func (s *Function_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Function_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Function_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Function_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Function_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterFunction_name(s) - } -} - -func (s *Function_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitFunction_name(s) - } -} - - - - -func (p *SqlParser) Function_name() (localctx IFunction_nameContext) { - this := p - _ = this - - localctx = NewFunction_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 160, SqlParserRULE_function_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1822) - p.Any_name() - } - - - - return localctx -} - - -// IDatabase_nameContext is an interface to support dynamic dispatch. -type IDatabase_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsDatabase_nameContext differentiates from other interfaces. - IsDatabase_nameContext() -} - -type Database_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyDatabase_nameContext() *Database_nameContext { - var p = new(Database_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_database_name - return p -} - -func (*Database_nameContext) IsDatabase_nameContext() {} - -func NewDatabase_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Database_nameContext { - var p = new(Database_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_database_name - - return p -} - -func (s *Database_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Database_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Database_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Database_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Database_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterDatabase_name(s) - } -} - -func (s *Database_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitDatabase_name(s) - } -} - - - - -func (p *SqlParser) Database_name() (localctx IDatabase_nameContext) { - this := p - _ = this - - localctx = NewDatabase_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 162, SqlParserRULE_database_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1824) - p.Any_name() - } - - - - return localctx -} - - -// ISource_table_nameContext is an interface to support dynamic dispatch. -type ISource_table_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSource_table_nameContext differentiates from other interfaces. - IsSource_table_nameContext() -} - -type Source_table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySource_table_nameContext() *Source_table_nameContext { - var p = new(Source_table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_source_table_name - return p -} - -func (*Source_table_nameContext) IsSource_table_nameContext() {} - -func NewSource_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Source_table_nameContext { - var p = new(Source_table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_source_table_name - - return p -} - -func (s *Source_table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Source_table_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Source_table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Source_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Source_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSource_table_name(s) - } -} - -func (s *Source_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSource_table_name(s) - } -} - - - - -func (p *SqlParser) Source_table_name() (localctx ISource_table_nameContext) { - this := p - _ = this - - localctx = NewSource_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 164, SqlParserRULE_source_table_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1826) - p.Any_name() - } - - - - return localctx -} - - -// ITable_nameContext is an interface to support dynamic dispatch. -type ITable_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_nameContext differentiates from other interfaces. - IsTable_nameContext() -} - -type Table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_nameContext() *Table_nameContext { - var p = new(Table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_name - return p -} - -func (*Table_nameContext) IsTable_nameContext() {} - -func NewTable_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_nameContext { - var p = new(Table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_name - - return p -} - -func (s *Table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_name(s) - } -} - -func (s *Table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_name(s) - } -} - - - - -func (p *SqlParser) Table_name() (localctx ITable_nameContext) { - this := p - _ = this - - localctx = NewTable_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 166, SqlParserRULE_table_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1828) - p.Any_name() - } - - - - return localctx -} - - -// ITable_or_index_nameContext is an interface to support dynamic dispatch. -type ITable_or_index_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_or_index_nameContext differentiates from other interfaces. - IsTable_or_index_nameContext() -} - -type Table_or_index_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_or_index_nameContext() *Table_or_index_nameContext { - var p = new(Table_or_index_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_or_index_name - return p -} - -func (*Table_or_index_nameContext) IsTable_or_index_nameContext() {} - -func NewTable_or_index_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_or_index_nameContext { - var p = new(Table_or_index_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_or_index_name - - return p -} - -func (s *Table_or_index_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_or_index_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Table_or_index_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_or_index_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_or_index_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_or_index_name(s) - } -} - -func (s *Table_or_index_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_or_index_name(s) - } -} - - - - -func (p *SqlParser) Table_or_index_name() (localctx ITable_or_index_nameContext) { - this := p - _ = this - - localctx = NewTable_or_index_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 168, SqlParserRULE_table_or_index_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1830) - p.Any_name() - } - - - - return localctx -} - - -// INew_table_nameContext is an interface to support dynamic dispatch. -type INew_table_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsNew_table_nameContext differentiates from other interfaces. - IsNew_table_nameContext() -} - -type New_table_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyNew_table_nameContext() *New_table_nameContext { - var p = new(New_table_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_new_table_name - return p -} - -func (*New_table_nameContext) IsNew_table_nameContext() {} - -func NewNew_table_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *New_table_nameContext { - var p = new(New_table_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_new_table_name - - return p -} - -func (s *New_table_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *New_table_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *New_table_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *New_table_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *New_table_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterNew_table_name(s) - } -} - -func (s *New_table_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitNew_table_name(s) - } -} - - - - -func (p *SqlParser) New_table_name() (localctx INew_table_nameContext) { - this := p - _ = this - - localctx = NewNew_table_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 170, SqlParserRULE_new_table_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1832) - p.Any_name() - } - - - - return localctx -} - - -// IColumn_nameContext is an interface to support dynamic dispatch. -type IColumn_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsColumn_nameContext differentiates from other interfaces. - IsColumn_nameContext() -} - -type Column_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyColumn_nameContext() *Column_nameContext { - var p = new(Column_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_column_name - return p -} - -func (*Column_nameContext) IsColumn_nameContext() {} - -func NewColumn_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_nameContext { - var p = new(Column_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_column_name - - return p -} - -func (s *Column_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Column_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Column_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Column_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Column_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterColumn_name(s) - } -} - -func (s *Column_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitColumn_name(s) - } -} - - - - -func (p *SqlParser) Column_name() (localctx IColumn_nameContext) { - this := p - _ = this - - localctx = NewColumn_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 172, SqlParserRULE_column_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1834) - p.Any_name() - } - - - - return localctx -} - - -// ICollation_nameContext is an interface to support dynamic dispatch. -type ICollation_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsCollation_nameContext differentiates from other interfaces. - IsCollation_nameContext() -} - -type Collation_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyCollation_nameContext() *Collation_nameContext { - var p = new(Collation_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_collation_name - return p -} - -func (*Collation_nameContext) IsCollation_nameContext() {} - -func NewCollation_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Collation_nameContext { - var p = new(Collation_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_collation_name - - return p -} - -func (s *Collation_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Collation_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Collation_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Collation_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Collation_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterCollation_name(s) - } -} - -func (s *Collation_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitCollation_name(s) - } -} - - - - -func (p *SqlParser) Collation_name() (localctx ICollation_nameContext) { - this := p - _ = this - - localctx = NewCollation_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 174, SqlParserRULE_collation_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1836) - p.Any_name() - } - - - - return localctx -} - - -// IForeign_tableContext is an interface to support dynamic dispatch. -type IForeign_tableContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsForeign_tableContext differentiates from other interfaces. - IsForeign_tableContext() -} - -type Foreign_tableContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyForeign_tableContext() *Foreign_tableContext { - var p = new(Foreign_tableContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_foreign_table - return p -} - -func (*Foreign_tableContext) IsForeign_tableContext() {} - -func NewForeign_tableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_tableContext { - var p = new(Foreign_tableContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_foreign_table - - return p -} - -func (s *Foreign_tableContext) GetParser() antlr.Parser { return s.parser } - -func (s *Foreign_tableContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Foreign_tableContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Foreign_tableContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Foreign_tableContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterForeign_table(s) - } -} - -func (s *Foreign_tableContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitForeign_table(s) - } -} - - - - -func (p *SqlParser) Foreign_table() (localctx IForeign_tableContext) { - this := p - _ = this - - localctx = NewForeign_tableContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 176, SqlParserRULE_foreign_table) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1838) - p.Any_name() - } - - - - return localctx -} - - -// IIndex_nameContext is an interface to support dynamic dispatch. -type IIndex_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsIndex_nameContext differentiates from other interfaces. - IsIndex_nameContext() -} - -type Index_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyIndex_nameContext() *Index_nameContext { - var p = new(Index_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_index_name - return p -} - -func (*Index_nameContext) IsIndex_nameContext() {} - -func NewIndex_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Index_nameContext { - var p = new(Index_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_index_name - - return p -} - -func (s *Index_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Index_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Index_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Index_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Index_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterIndex_name(s) - } -} - -func (s *Index_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitIndex_name(s) - } -} - - - - -func (p *SqlParser) Index_name() (localctx IIndex_nameContext) { - this := p - _ = this - - localctx = NewIndex_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 178, SqlParserRULE_index_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1840) - p.Any_name() - } - - - - return localctx -} - - -// ITrigger_nameContext is an interface to support dynamic dispatch. -type ITrigger_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTrigger_nameContext differentiates from other interfaces. - IsTrigger_nameContext() -} - -type Trigger_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTrigger_nameContext() *Trigger_nameContext { - var p = new(Trigger_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_trigger_name - return p -} - -func (*Trigger_nameContext) IsTrigger_nameContext() {} - -func NewTrigger_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Trigger_nameContext { - var p = new(Trigger_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_trigger_name - - return p -} - -func (s *Trigger_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Trigger_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Trigger_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Trigger_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Trigger_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTrigger_name(s) - } -} - -func (s *Trigger_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTrigger_name(s) - } -} - - - - -func (p *SqlParser) Trigger_name() (localctx ITrigger_nameContext) { - this := p - _ = this - - localctx = NewTrigger_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 180, SqlParserRULE_trigger_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1842) - p.Any_name() - } - - - - return localctx -} - - -// IView_nameContext is an interface to support dynamic dispatch. -type IView_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsView_nameContext differentiates from other interfaces. - IsView_nameContext() -} - -type View_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyView_nameContext() *View_nameContext { - var p = new(View_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_view_name - return p -} - -func (*View_nameContext) IsView_nameContext() {} - -func NewView_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *View_nameContext { - var p = new(View_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_view_name - - return p -} - -func (s *View_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *View_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *View_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *View_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *View_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterView_name(s) - } -} - -func (s *View_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitView_name(s) - } -} - - - - -func (p *SqlParser) View_name() (localctx IView_nameContext) { - this := p - _ = this - - localctx = NewView_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 182, SqlParserRULE_view_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1844) - p.Any_name() - } - - - - return localctx -} - - -// IModule_nameContext is an interface to support dynamic dispatch. -type IModule_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsModule_nameContext differentiates from other interfaces. - IsModule_nameContext() -} - -type Module_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyModule_nameContext() *Module_nameContext { - var p = new(Module_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_module_name - return p -} - -func (*Module_nameContext) IsModule_nameContext() {} - -func NewModule_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_nameContext { - var p = new(Module_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_module_name - - return p -} - -func (s *Module_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Module_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Module_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Module_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Module_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterModule_name(s) - } -} - -func (s *Module_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitModule_name(s) - } -} - - - - -func (p *SqlParser) Module_name() (localctx IModule_nameContext) { - this := p - _ = this - - localctx = NewModule_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 184, SqlParserRULE_module_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1846) - p.Any_name() - } - - - - return localctx -} - - -// IPragma_nameContext is an interface to support dynamic dispatch. -type IPragma_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsPragma_nameContext differentiates from other interfaces. - IsPragma_nameContext() -} - -type Pragma_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyPragma_nameContext() *Pragma_nameContext { - var p = new(Pragma_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_pragma_name - return p -} - -func (*Pragma_nameContext) IsPragma_nameContext() {} - -func NewPragma_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_nameContext { - var p = new(Pragma_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_pragma_name - - return p -} - -func (s *Pragma_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Pragma_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Pragma_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Pragma_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Pragma_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterPragma_name(s) - } -} - -func (s *Pragma_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitPragma_name(s) - } -} - - - - -func (p *SqlParser) Pragma_name() (localctx IPragma_nameContext) { - this := p - _ = this - - localctx = NewPragma_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 186, SqlParserRULE_pragma_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1848) - p.Any_name() - } - - - - return localctx -} - - -// ISavepoint_nameContext is an interface to support dynamic dispatch. -type ISavepoint_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsSavepoint_nameContext differentiates from other interfaces. - IsSavepoint_nameContext() -} - -type Savepoint_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptySavepoint_nameContext() *Savepoint_nameContext { - var p = new(Savepoint_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_savepoint_name - return p -} - -func (*Savepoint_nameContext) IsSavepoint_nameContext() {} - -func NewSavepoint_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_nameContext { - var p = new(Savepoint_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_savepoint_name - - return p -} - -func (s *Savepoint_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Savepoint_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Savepoint_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Savepoint_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Savepoint_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterSavepoint_name(s) - } -} - -func (s *Savepoint_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitSavepoint_name(s) - } -} - - - - -func (p *SqlParser) Savepoint_name() (localctx ISavepoint_nameContext) { - this := p - _ = this - - localctx = NewSavepoint_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 188, SqlParserRULE_savepoint_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1850) - p.Any_name() - } - - - - return localctx -} - - -// ITable_aliasContext is an interface to support dynamic dispatch. -type ITable_aliasContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTable_aliasContext differentiates from other interfaces. - IsTable_aliasContext() -} - -type Table_aliasContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTable_aliasContext() *Table_aliasContext { - var p = new(Table_aliasContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_table_alias - return p -} - -func (*Table_aliasContext) IsTable_aliasContext() {} - -func NewTable_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_aliasContext { - var p = new(Table_aliasContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_table_alias - - return p -} - -func (s *Table_aliasContext) GetParser() antlr.Parser { return s.parser } - -func (s *Table_aliasContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Table_aliasContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Table_aliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Table_aliasContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTable_alias(s) - } -} - -func (s *Table_aliasContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTable_alias(s) - } -} - - - - -func (p *SqlParser) Table_alias() (localctx ITable_aliasContext) { - this := p - _ = this - - localctx = NewTable_aliasContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 190, SqlParserRULE_table_alias) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1852) - p.Any_name() - } - - - - return localctx -} - - -// ITransaction_nameContext is an interface to support dynamic dispatch. -type ITransaction_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsTransaction_nameContext differentiates from other interfaces. - IsTransaction_nameContext() -} - -type Transaction_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyTransaction_nameContext() *Transaction_nameContext { - var p = new(Transaction_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_transaction_name - return p -} - -func (*Transaction_nameContext) IsTransaction_nameContext() {} - -func NewTransaction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Transaction_nameContext { - var p = new(Transaction_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_transaction_name - - return p -} - -func (s *Transaction_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Transaction_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Transaction_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Transaction_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Transaction_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterTransaction_name(s) - } -} - -func (s *Transaction_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitTransaction_name(s) - } -} - - - - -func (p *SqlParser) Transaction_name() (localctx ITransaction_nameContext) { - this := p - _ = this - - localctx = NewTransaction_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 192, SqlParserRULE_transaction_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1854) - p.Any_name() - } - - - - return localctx -} - - -// IAny_nameContext is an interface to support dynamic dispatch. -type IAny_nameContext interface { - antlr.ParserRuleContext - - // GetParser returns the parser. - GetParser() antlr.Parser - - // IsAny_nameContext differentiates from other interfaces. - IsAny_nameContext() -} - -type Any_nameContext struct { - *antlr.BaseParserRuleContext - parser antlr.Parser -} - -func NewEmptyAny_nameContext() *Any_nameContext { - var p = new(Any_nameContext) - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = SqlParserRULE_any_name - return p -} - -func (*Any_nameContext) IsAny_nameContext() {} - -func NewAny_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Any_nameContext { - var p = new(Any_nameContext) - - p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) - - p.parser = parser - p.RuleIndex = SqlParserRULE_any_name - - return p -} - -func (s *Any_nameContext) GetParser() antlr.Parser { return s.parser } - -func (s *Any_nameContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(SqlParserIDENTIFIER, 0) -} - -func (s *Any_nameContext) Keyword() IKeywordContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IKeywordContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IKeywordContext) -} - -func (s *Any_nameContext) STRING_LITERAL() antlr.TerminalNode { - return s.GetToken(SqlParserSTRING_LITERAL, 0) -} - -func (s *Any_nameContext) OPEN_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserOPEN_PAR, 0) -} - -func (s *Any_nameContext) Any_name() IAny_nameContext { - var t antlr.RuleContext; - for _, ctx := range s.GetChildren() { - if _, ok := ctx.(IAny_nameContext); ok { - t = ctx.(antlr.RuleContext); - break - } - } - - if t == nil { - return nil - } - - return t.(IAny_nameContext) -} - -func (s *Any_nameContext) CLOSE_PAR() antlr.TerminalNode { - return s.GetToken(SqlParserCLOSE_PAR, 0) -} - -func (s *Any_nameContext) GetRuleContext() antlr.RuleContext { - return s -} - -func (s *Any_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { - return antlr.TreesStringTree(s, ruleNames, recog) -} - - -func (s *Any_nameContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.EnterAny_name(s) - } -} - -func (s *Any_nameContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(SqlListener); ok { - listenerT.ExitAny_name(s) - } -} - - - - -func (p *SqlParser) Any_name() (localctx IAny_nameContext) { - this := p - _ = this - - localctx = NewAny_nameContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 194, SqlParserRULE_any_name) - - defer func() { - p.ExitRule() - }() - - defer func() { - if err := recover(); err != nil { - if v, ok := err.(antlr.RecognitionException); ok { - localctx.SetException(v) - p.GetErrorHandler().ReportError(p, v) - p.GetErrorHandler().Recover(p, v) - } else { - panic(err) - } - } - }() - - p.SetState(1863) - p.GetErrorHandler().Sync(p) - - switch p.GetTokenStream().LA(1) { - case SqlParserIDENTIFIER: - p.EnterOuterAlt(localctx, 1) - { - p.SetState(1856) - p.Match(SqlParserIDENTIFIER) - } - - - case SqlParserK_ABORT, SqlParserK_ACTION, SqlParserK_ADD, SqlParserK_AFTER, SqlParserK_ALL, SqlParserK_ALTER, SqlParserK_ANALYZE, SqlParserK_AND, SqlParserK_AS, SqlParserK_ASC, SqlParserK_ATTACH, SqlParserK_AUTOINCREMENT, SqlParserK_BEFORE, SqlParserK_BEGIN, SqlParserK_BETWEEN, SqlParserK_BY, SqlParserK_CASCADE, SqlParserK_CASE, SqlParserK_CAST, SqlParserK_CHECK, SqlParserK_COLLATE, SqlParserK_COLUMN, SqlParserK_COMMIT, SqlParserK_CONFLICT, SqlParserK_CONSTRAINT, SqlParserK_CREATE, SqlParserK_CROSS, SqlParserK_CURRENT_DATE, SqlParserK_CURRENT_TIME, SqlParserK_CURRENT_TIMESTAMP, SqlParserK_DATABASE, SqlParserK_DEFAULT, SqlParserK_DEFERRABLE, SqlParserK_DEFERRED, SqlParserK_DELETE, SqlParserK_DESC, SqlParserK_DETACH, SqlParserK_DISTINCT, SqlParserK_DROP, SqlParserK_EACH, SqlParserK_ELSE, SqlParserK_END, SqlParserK_ENABLE, SqlParserK_ESCAPE, SqlParserK_EXCEPT, SqlParserK_EXCLUSIVE, SqlParserK_EXISTS, SqlParserK_EXPLAIN, SqlParserK_FAIL, SqlParserK_FOR, SqlParserK_FOREIGN, SqlParserK_FROM, SqlParserK_FULL, SqlParserK_GLOB, SqlParserK_GROUP, SqlParserK_HAVING, SqlParserK_IF, SqlParserK_IGNORE, SqlParserK_IMMEDIATE, SqlParserK_IN, SqlParserK_INDEX, SqlParserK_INDEXED, SqlParserK_INITIALLY, SqlParserK_INNER, SqlParserK_INSERT, SqlParserK_INSTEAD, SqlParserK_INTERSECT, SqlParserK_INTO, SqlParserK_IS, SqlParserK_ISNULL, SqlParserK_JOIN, SqlParserK_KEY, SqlParserK_LEFT, SqlParserK_LIKE, SqlParserK_LIMIT, SqlParserK_MATCH, SqlParserK_NATURAL, SqlParserK_NEXTVAL, SqlParserK_NO, SqlParserK_NOT, SqlParserK_NOTNULL, SqlParserK_NULL, SqlParserK_OF, SqlParserK_OFFSET, SqlParserK_ON, SqlParserK_OR, SqlParserK_ORDER, SqlParserK_OUTER, SqlParserK_PLAN, SqlParserK_PRAGMA, SqlParserK_PRIMARY, SqlParserK_QUERY, SqlParserK_RAISE, SqlParserK_RECURSIVE, SqlParserK_REFERENCES, SqlParserK_REGEXP, SqlParserK_REINDEX, SqlParserK_RELEASE, SqlParserK_RENAME, SqlParserK_REPLACE, SqlParserK_RESTRICT, SqlParserK_RIGHT, SqlParserK_ROLLBACK, SqlParserK_ROW, SqlParserK_SAVEPOINT, SqlParserK_SELECT, SqlParserK_SET, SqlParserK_TABLE, SqlParserK_TEMP, SqlParserK_TEMPORARY, SqlParserK_THEN, SqlParserK_TO, SqlParserK_TRANSACTION, SqlParserK_TRIGGER, SqlParserK_UNION, SqlParserK_UNIQUE, SqlParserK_UPDATE, SqlParserK_USING, SqlParserK_VACUUM, SqlParserK_VALUES, SqlParserK_VIEW, SqlParserK_VIRTUAL, SqlParserK_WHEN, SqlParserK_WHERE, SqlParserK_WITH, SqlParserK_WITHOUT: - p.EnterOuterAlt(localctx, 2) - { - p.SetState(1857) - p.Keyword() - } - - - case SqlParserSTRING_LITERAL: - p.EnterOuterAlt(localctx, 3) - { - p.SetState(1858) - p.Match(SqlParserSTRING_LITERAL) - } - - - case SqlParserOPEN_PAR: - p.EnterOuterAlt(localctx, 4) - { - p.SetState(1859) - p.Match(SqlParserOPEN_PAR) - } - { - p.SetState(1860) - p.Any_name() - } - { - p.SetState(1861) - p.Match(SqlParserCLOSE_PAR) - } - - - - default: - panic(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil)) - } - - - return localctx -} - - -func (p *SqlParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool { - switch ruleIndex { - case 47: - var t *ExprContext = nil - if localctx != nil { t = localctx.(*ExprContext) } - return p.Expr_Sempred(t, predIndex) - - - default: - panic("No predicate with index: " + fmt.Sprint(ruleIndex)) - } -} - -func (p *SqlParser) Expr_Sempred(localctx antlr.RuleContext, predIndex int) bool { - this := p - _ = this - - switch predIndex { - case 0: - return p.Precpred(p.GetParserRuleContext(), 20) - - case 1: - return p.Precpred(p.GetParserRuleContext(), 19) - - case 2: - return p.Precpred(p.GetParserRuleContext(), 18) - - case 3: - return p.Precpred(p.GetParserRuleContext(), 17) - - case 4: - return p.Precpred(p.GetParserRuleContext(), 16) - - case 5: - return p.Precpred(p.GetParserRuleContext(), 15) - - case 6: - return p.Precpred(p.GetParserRuleContext(), 14) - - case 7: - return p.Precpred(p.GetParserRuleContext(), 13) - - case 8: - return p.Precpred(p.GetParserRuleContext(), 6) - - case 9: - return p.Precpred(p.GetParserRuleContext(), 5) - - case 10: - return p.Precpred(p.GetParserRuleContext(), 9) - - case 11: - return p.Precpred(p.GetParserRuleContext(), 8) - - case 12: - return p.Precpred(p.GetParserRuleContext(), 7) - - case 13: - return p.Precpred(p.GetParserRuleContext(), 4) - - default: - panic("No predicate with index: " + fmt.Sprint(predIndex)) - } -} - From 8dc2a1d71fc90393e36e2a204e4140257a6a52b9 Mon Sep 17 00:00:00 2001 From: "DESKTOP-2U40D3L\\Anton" Date: Fri, 1 Jul 2022 14:45:46 +0300 Subject: [PATCH 3/3] some update --- go.mod | 2 +- go.sum | 2 + processor/stream_processor/{sql.g4 => Sql.g4} | 8 +- processor/stream_processor/parser/Sql.interp | 88 +++ .../parser/{sql.tokens => Sql.tokens} | 0 processor/stream_processor/parser/sql.interp | 87 --- .../parser/sql_base_listener.go | 64 +- .../stream_processor/parser/sql_lexer.go | 84 +-- .../stream_processor/parser/sql_lexer_test.go | 32 +- .../stream_processor/parser/sql_listener.go | 14 +- .../stream_processor/parser/sql_parser.go | 705 +++++++++++------- .../parser/stream_listener.go | 46 ++ 12 files changed, 686 insertions(+), 446 deletions(-) rename processor/stream_processor/{sql.g4 => Sql.g4} (94%) create mode 100644 processor/stream_processor/parser/Sql.interp rename processor/stream_processor/parser/{sql.tokens => Sql.tokens} (100%) delete mode 100644 processor/stream_processor/parser/sql.interp create mode 100644 processor/stream_processor/parser/stream_listener.go diff --git a/go.mod b/go.mod index 87cc8f3371c3..77d835991a92 100644 --- a/go.mod +++ b/go.mod @@ -536,7 +536,7 @@ require ( ) require ( - github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 + github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e github.com/go-kit/kit v0.12.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/shirou/gopsutil v3.21.10+incompatible // indirect diff --git a/go.sum b/go.sum index f6fe624b5c3e..d3c362e3a35c 100644 --- a/go.sum +++ b/go.sum @@ -295,6 +295,8 @@ github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966 h1:mEzJ8SH4M5wDL8C4a17yX2YeD/FIXV5w8FJekByaBi0= github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220527190237-ee62e23da966/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e h1:bt6SW1eSSvdmmsG0KqyxYXorcTnFBTX7hfVR1+68+jg= +github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220626175859-9abda183db8e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= diff --git a/processor/stream_processor/sql.g4 b/processor/stream_processor/Sql.g4 similarity index 94% rename from processor/stream_processor/sql.g4 rename to processor/stream_processor/Sql.g4 index a77272f09750..cb343d3d7cad 100644 --- a/processor/stream_processor/sql.g4 +++ b/processor/stream_processor/Sql.g4 @@ -1,4 +1,4 @@ -grammar sql; +grammar Sql; @@ -23,9 +23,13 @@ column whereStatement : ( K_WHERE expr )? - | K_WINDOW_TUMBLING NUMERIC_LITERAL( K_WHERE expr )? (groupBy) + | (tumblingWindow) ( K_WHERE expr )? (groupBy) ; +tumblingWindow + : K_WINDOW_TUMBLING NUMERIC_LITERAL( K_WHERE expr )? + ; + groupBy : K_GROUP_BY column ; diff --git a/processor/stream_processor/parser/Sql.interp b/processor/stream_processor/parser/Sql.interp new file mode 100644 index 000000000000..c71b4dcbc65a --- /dev/null +++ b/processor/stream_processor/parser/Sql.interp @@ -0,0 +1,88 @@ +token literal names: +null +null +',' +'(' +')' +';' +null +null +null +null +null +null +null +null +'=' +'>' +'<' +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +'*' + +token symbolic names: +null +SPACE +COMMA +L_BRACKET +R_BRACKET +EOQ +K_SELECT +K_WHERE +K_WINDOW_TUMBLING +K_GROUP_BY +K_AND +K_OR +K_IS +K_LIKE +K_EQUAL +K_GREATER +K_LESS +K_LESS_EQUAL +K_GREATER_EQUAL +K_NOT_EQUAL +K_NULL +K_IS_NULL +K_IS_NOT_NULL +K_NOT +K_NOT_IN +K_IN +K_COUNT +K_MIN +K_MAX +K_AVG +IDENTIFIER +NUMERIC_LITERAL +STRING_LITERAL +STAR + +rule names: +sqlQuery +selectQuery +resultColumns +column +whereStatement +tumblingWindow +groupBy +avg +expr +comparisonOperator +literalValue + + +atn: +[4, 1, 33, 100, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, 43, 8, 2, 11, 2, 12, 2, 44, 1, 2, 3, 2, 48, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 54, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 59, 8, 4, 1, 4, 1, 4, 3, 4, 63, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 69, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, 24, 25, 1, 0, 31, 32, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, 0, 0, 0, 25, 26, 5, 6, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 5, 0, 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 2, 0, 0, 34, 36, 3, 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 2, 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 33, 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, 1, 0, 0, 0, 49, 50, 5, 30, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 7, 0, 0, 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 7, 0, 0, 57, 59, 3, 16, 8, 0, 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, 9, 1, 0, 0, 0, 64, 65, 5, 8, 0, 0, 65, 68, 5, 31, 0, 0, 66, 67, 5, 7, 0, 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, 73, 74, 7, 0, 0, 0, 74, 75, 5, 3, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, 4, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 30, 0, 0, 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, 5, 30, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, 0, 96, 19, 1, 0, 0, 0, 97, 98, 7, 4, 0, 0, 98, 21, 1, 0, 0, 0, 10, 28, 37, 44, 47, 53, 58, 62, 68, 85, 92] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql.tokens b/processor/stream_processor/parser/Sql.tokens similarity index 100% rename from processor/stream_processor/parser/sql.tokens rename to processor/stream_processor/parser/Sql.tokens diff --git a/processor/stream_processor/parser/sql.interp b/processor/stream_processor/parser/sql.interp deleted file mode 100644 index 5715cebdcc30..000000000000 --- a/processor/stream_processor/parser/sql.interp +++ /dev/null @@ -1,87 +0,0 @@ -token literal names: -null -null -',' -'(' -')' -';' -null -null -null -null -null -null -null -null -'=' -'>' -'<' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'*' - -token symbolic names: -null -SPACE -COMMA -L_BRACKET -R_BRACKET -EOQ -K_SELECT -K_WHERE -K_WINDOW_TUMBLING -K_GROUP_BY -K_AND -K_OR -K_IS -K_LIKE -K_EQUAL -K_GREATER -K_LESS -K_LESS_EQUAL -K_GREATER_EQUAL -K_NOT_EQUAL -K_NULL -K_IS_NULL -K_IS_NOT_NULL -K_NOT -K_NOT_IN -K_IN -K_COUNT -K_MIN -K_MAX -K_AVG -IDENTIFIER -NUMERIC_LITERAL -STRING_LITERAL -STAR - -rule names: -sqlQuery -selectQuery -resultColumns -column -whereStatement -groupBy -avg -expr -comparisonOperator -literalValue - - -atn: -[4, 1, 33, 92, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 27, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 4, 2, 34, 8, 2, 11, 2, 12, 2, 35, 1, 2, 1, 2, 1, 2, 4, 2, 41, 8, 2, 11, 2, 12, 2, 42, 1, 2, 3, 2, 46, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 52, 8, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 58, 8, 4, 1, 4, 3, 4, 61, 8, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 78, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 83, 8, 7, 10, 7, 12, 7, 86, 9, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 0, 1, 14, 10, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, 24, 25, 1, 0, 31, 32, 91, 0, 20, 1, 0, 0, 0, 2, 23, 1, 0, 0, 0, 4, 45, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 77, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, 89, 1, 0, 0, 0, 20, 21, 3, 2, 1, 0, 21, 22, 5, 0, 0, 1, 22, 1, 1, 0, 0, 0, 23, 24, 5, 6, 0, 0, 24, 26, 3, 4, 2, 0, 25, 27, 3, 8, 4, 0, 26, 25, 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, 29, 3, 1, 0, 0, 0, 30, 33, 3, 6, 3, 0, 31, 32, 5, 2, 0, 0, 32, 34, 3, 6, 3, 0, 33, 31, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, 1, 0, 0, 0, 36, 46, 1, 0, 0, 0, 37, 40, 3, 12, 6, 0, 38, 39, 5, 2, 0, 0, 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 46, 5, 33, 0, 0, 45, 30, 1, 0, 0, 0, 45, 37, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 5, 1, 0, 0, 0, 47, 48, 5, 30, 0, 0, 48, 7, 1, 0, 0, 0, 49, 50, 5, 7, 0, 0, 50, 52, 3, 14, 7, 0, 51, 49, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 61, 1, 0, 0, 0, 53, 54, 5, 8, 0, 0, 54, 57, 5, 31, 0, 0, 55, 56, 5, 7, 0, 0, 56, 58, 3, 14, 7, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 61, 3, 10, 5, 0, 60, 51, 1, 0, 0, 0, 60, 53, 1, 0, 0, 0, 61, 9, 1, 0, 0, 0, 62, 63, 5, 9, 0, 0, 63, 64, 3, 6, 3, 0, 64, 11, 1, 0, 0, 0, 65, 66, 7, 0, 0, 0, 66, 67, 5, 3, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 5, 4, 0, 0, 69, 13, 1, 0, 0, 0, 70, 71, 6, 7, -1, 0, 71, 72, 5, 30, 0, 0, 72, 73, 3, 16, 8, 0, 73, 74, 3, 18, 9, 0, 74, 78, 1, 0, 0, 0, 75, 76, 5, 30, 0, 0, 76, 78, 7, 1, 0, 0, 77, 70, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 84, 1, 0, 0, 0, 79, 80, 10, 2, 0, 0, 80, 81, 7, 2, 0, 0, 81, 83, 3, 14, 7, 3, 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, 0, 0, 0, 85, 15, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 7, 3, 0, 0, 88, 17, 1, 0, 0, 0, 89, 90, 7, 4, 0, 0, 90, 19, 1, 0, 0, 0, 9, 26, 35, 42, 45, 51, 57, 60, 77, 84] \ No newline at end of file diff --git a/processor/stream_processor/parser/sql_base_listener.go b/processor/stream_processor/parser/sql_base_listener.go index eab0cc0960f8..cd534e38bd17 100644 --- a/processor/stream_processor/parser/sql_base_listener.go +++ b/processor/stream_processor/parser/sql_base_listener.go @@ -1,82 +1,88 @@ -// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. -package parser // sql +package parser // Sql import "github.com/antlr/antlr4/runtime/Go/antlr" -// BasesqlListener is a complete listener for a parse tree produced by sqlParser. -type BasesqlListener struct{} +// BaseSqlListener is a complete listener for a parse tree produced by SqlParser. +type BaseSqlListener struct{} -var _ sqlListener = &BasesqlListener{} +var _ SqlListener = &BaseSqlListener{} // VisitTerminal is called when a terminal node is visited. -func (s *BasesqlListener) VisitTerminal(node antlr.TerminalNode) {} +func (s *BaseSqlListener) VisitTerminal(node antlr.TerminalNode) {} // VisitErrorNode is called when an error node is visited. -func (s *BasesqlListener) VisitErrorNode(node antlr.ErrorNode) {} +func (s *BaseSqlListener) VisitErrorNode(node antlr.ErrorNode) {} // EnterEveryRule is called when any rule is entered. -func (s *BasesqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} +func (s *BaseSqlListener) EnterEveryRule(ctx antlr.ParserRuleContext) {} // ExitEveryRule is called when any rule is exited. -func (s *BasesqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} +func (s *BaseSqlListener) ExitEveryRule(ctx antlr.ParserRuleContext) {} // EnterSqlQuery is called when production sqlQuery is entered. -func (s *BasesqlListener) EnterSqlQuery(ctx *SqlQueryContext) {} +func (s *BaseSqlListener) EnterSqlQuery(ctx *SqlQueryContext) {} // ExitSqlQuery is called when production sqlQuery is exited. -func (s *BasesqlListener) ExitSqlQuery(ctx *SqlQueryContext) {} +func (s *BaseSqlListener) ExitSqlQuery(ctx *SqlQueryContext) {} // EnterSelectQuery is called when production selectQuery is entered. -func (s *BasesqlListener) EnterSelectQuery(ctx *SelectQueryContext) {} +func (s *BaseSqlListener) EnterSelectQuery(ctx *SelectQueryContext) {} // ExitSelectQuery is called when production selectQuery is exited. -func (s *BasesqlListener) ExitSelectQuery(ctx *SelectQueryContext) {} +func (s *BaseSqlListener) ExitSelectQuery(ctx *SelectQueryContext) {} // EnterResultColumns is called when production resultColumns is entered. -func (s *BasesqlListener) EnterResultColumns(ctx *ResultColumnsContext) {} +func (s *BaseSqlListener) EnterResultColumns(ctx *ResultColumnsContext) {} // ExitResultColumns is called when production resultColumns is exited. -func (s *BasesqlListener) ExitResultColumns(ctx *ResultColumnsContext) {} +func (s *BaseSqlListener) ExitResultColumns(ctx *ResultColumnsContext) {} // EnterColumn is called when production column is entered. -func (s *BasesqlListener) EnterColumn(ctx *ColumnContext) {} +func (s *BaseSqlListener) EnterColumn(ctx *ColumnContext) {} // ExitColumn is called when production column is exited. -func (s *BasesqlListener) ExitColumn(ctx *ColumnContext) {} +func (s *BaseSqlListener) ExitColumn(ctx *ColumnContext) {} // EnterWhereStatement is called when production whereStatement is entered. -func (s *BasesqlListener) EnterWhereStatement(ctx *WhereStatementContext) {} +func (s *BaseSqlListener) EnterWhereStatement(ctx *WhereStatementContext) {} // ExitWhereStatement is called when production whereStatement is exited. -func (s *BasesqlListener) ExitWhereStatement(ctx *WhereStatementContext) {} +func (s *BaseSqlListener) ExitWhereStatement(ctx *WhereStatementContext) {} + +// EnterTumblingWindow is called when production tumblingWindow is entered. +func (s *BaseSqlListener) EnterTumblingWindow(ctx *TumblingWindowContext) {} + +// ExitTumblingWindow is called when production tumblingWindow is exited. +func (s *BaseSqlListener) ExitTumblingWindow(ctx *TumblingWindowContext) {} // EnterGroupBy is called when production groupBy is entered. -func (s *BasesqlListener) EnterGroupBy(ctx *GroupByContext) {} +func (s *BaseSqlListener) EnterGroupBy(ctx *GroupByContext) {} // ExitGroupBy is called when production groupBy is exited. -func (s *BasesqlListener) ExitGroupBy(ctx *GroupByContext) {} +func (s *BaseSqlListener) ExitGroupBy(ctx *GroupByContext) {} // EnterAvg is called when production avg is entered. -func (s *BasesqlListener) EnterAvg(ctx *AvgContext) {} +func (s *BaseSqlListener) EnterAvg(ctx *AvgContext) {} // ExitAvg is called when production avg is exited. -func (s *BasesqlListener) ExitAvg(ctx *AvgContext) {} +func (s *BaseSqlListener) ExitAvg(ctx *AvgContext) {} // EnterExpr is called when production expr is entered. -func (s *BasesqlListener) EnterExpr(ctx *ExprContext) {} +func (s *BaseSqlListener) EnterExpr(ctx *ExprContext) {} // ExitExpr is called when production expr is exited. -func (s *BasesqlListener) ExitExpr(ctx *ExprContext) {} +func (s *BaseSqlListener) ExitExpr(ctx *ExprContext) {} // EnterComparisonOperator is called when production comparisonOperator is entered. -func (s *BasesqlListener) EnterComparisonOperator(ctx *ComparisonOperatorContext) {} +func (s *BaseSqlListener) EnterComparisonOperator(ctx *ComparisonOperatorContext) {} // ExitComparisonOperator is called when production comparisonOperator is exited. -func (s *BasesqlListener) ExitComparisonOperator(ctx *ComparisonOperatorContext) {} +func (s *BaseSqlListener) ExitComparisonOperator(ctx *ComparisonOperatorContext) {} // EnterLiteralValue is called when production literalValue is entered. -func (s *BasesqlListener) EnterLiteralValue(ctx *LiteralValueContext) {} +func (s *BaseSqlListener) EnterLiteralValue(ctx *LiteralValueContext) {} // ExitLiteralValue is called when production literalValue is exited. -func (s *BasesqlListener) ExitLiteralValue(ctx *LiteralValueContext) {} +func (s *BaseSqlListener) ExitLiteralValue(ctx *LiteralValueContext) {} diff --git a/processor/stream_processor/parser/sql_lexer.go b/processor/stream_processor/parser/sql_lexer.go index 17f65aaa0567..2db918272171 100644 --- a/processor/stream_processor/parser/sql_lexer.go +++ b/processor/stream_processor/parser/sql_lexer.go @@ -1,4 +1,4 @@ -// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. package parser @@ -15,7 +15,7 @@ var _ = fmt.Printf var _ = sync.Once{} var _ = unicode.IsLetter -type sqlLexer struct { +type SqlLexer struct { *antlr.BaseLexer channelNames []string modeNames []string @@ -256,19 +256,19 @@ func sqllexerLexerInit() { } } -// sqlLexerInit initializes any static state used to implement sqlLexer. By default the +// SqlLexerInit initializes any static state used to implement SqlLexer. By default the // static state used to implement the lexer is lazily initialized during the first call to -// NewsqlLexer(). You can call this function if you wish to initialize the static state ahead +// NewSqlLexer(). You can call this function if you wish to initialize the static state ahead // of time. func SqlLexerInit() { staticData := &sqllexerLexerStaticData staticData.once.Do(sqllexerLexerInit) } -// NewsqlLexer produces a new lexer instance for the optional input antlr.CharStream. -func NewsqlLexer(input antlr.CharStream) *sqlLexer { +// NewSqlLexer produces a new lexer instance for the optional input antlr.CharStream. +func NewSqlLexer(input antlr.CharStream) *SqlLexer { SqlLexerInit() - l := new(sqlLexer) + l := new(SqlLexer) l.BaseLexer = antlr.NewBaseLexer(input) staticData := &sqllexerLexerStaticData l.Interpreter = antlr.NewLexerATNSimulator(l, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) @@ -277,45 +277,45 @@ func NewsqlLexer(input antlr.CharStream) *sqlLexer { l.RuleNames = staticData.ruleNames l.LiteralNames = staticData.literalNames l.SymbolicNames = staticData.symbolicNames - l.GrammarFileName = "sql.g4" + l.GrammarFileName = "Sql.g4" // TODO: l.EOF = antlr.TokenEOF return l } -// sqlLexer tokens. +// SqlLexer tokens. const ( - sqlLexerSPACE = 1 - sqlLexerCOMMA = 2 - sqlLexerL_BRACKET = 3 - sqlLexerR_BRACKET = 4 - sqlLexerEOQ = 5 - sqlLexerK_SELECT = 6 - sqlLexerK_WHERE = 7 - sqlLexerK_WINDOW_TUMBLING = 8 - sqlLexerK_GROUP_BY = 9 - sqlLexerK_AND = 10 - sqlLexerK_OR = 11 - sqlLexerK_IS = 12 - sqlLexerK_LIKE = 13 - sqlLexerK_EQUAL = 14 - sqlLexerK_GREATER = 15 - sqlLexerK_LESS = 16 - sqlLexerK_LESS_EQUAL = 17 - sqlLexerK_GREATER_EQUAL = 18 - sqlLexerK_NOT_EQUAL = 19 - sqlLexerK_NULL = 20 - sqlLexerK_IS_NULL = 21 - sqlLexerK_IS_NOT_NULL = 22 - sqlLexerK_NOT = 23 - sqlLexerK_NOT_IN = 24 - sqlLexerK_IN = 25 - sqlLexerK_COUNT = 26 - sqlLexerK_MIN = 27 - sqlLexerK_MAX = 28 - sqlLexerK_AVG = 29 - sqlLexerIDENTIFIER = 30 - sqlLexerNUMERIC_LITERAL = 31 - sqlLexerSTRING_LITERAL = 32 - sqlLexerSTAR = 33 + SqlLexerSPACE = 1 + SqlLexerCOMMA = 2 + SqlLexerL_BRACKET = 3 + SqlLexerR_BRACKET = 4 + SqlLexerEOQ = 5 + SqlLexerK_SELECT = 6 + SqlLexerK_WHERE = 7 + SqlLexerK_WINDOW_TUMBLING = 8 + SqlLexerK_GROUP_BY = 9 + SqlLexerK_AND = 10 + SqlLexerK_OR = 11 + SqlLexerK_IS = 12 + SqlLexerK_LIKE = 13 + SqlLexerK_EQUAL = 14 + SqlLexerK_GREATER = 15 + SqlLexerK_LESS = 16 + SqlLexerK_LESS_EQUAL = 17 + SqlLexerK_GREATER_EQUAL = 18 + SqlLexerK_NOT_EQUAL = 19 + SqlLexerK_NULL = 20 + SqlLexerK_IS_NULL = 21 + SqlLexerK_IS_NOT_NULL = 22 + SqlLexerK_NOT = 23 + SqlLexerK_NOT_IN = 24 + SqlLexerK_IN = 25 + SqlLexerK_COUNT = 26 + SqlLexerK_MIN = 27 + SqlLexerK_MAX = 28 + SqlLexerK_AVG = 29 + SqlLexerIDENTIFIER = 30 + SqlLexerNUMERIC_LITERAL = 31 + SqlLexerSTRING_LITERAL = 32 + SqlLexerSTAR = 33 ) diff --git a/processor/stream_processor/parser/sql_lexer_test.go b/processor/stream_processor/parser/sql_lexer_test.go index 2330b42b7cfc..1f953e6d0b32 100644 --- a/processor/stream_processor/parser/sql_lexer_test.go +++ b/processor/stream_processor/parser/sql_lexer_test.go @@ -1,14 +1,17 @@ package parser import ( + "context" "fmt" "github.com/antlr/antlr4/runtime/Go/antlr" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" "testing" ) func TestSelectExpr(t *testing.T) { is := antlr.NewInputStream(`SELECT field1, min(field2) WHERE field3 <= 3 and field4 is not null `) - lexer := NewsqlLexer(is) + lexer := NewSqlLexer(is) for { t := lexer.NextToken() @@ -20,3 +23,30 @@ func TestSelectExpr(t *testing.T) { } } + +func TestParser(t *testing.T) { + is := antlr.NewInputStream("SELEct field1, field2 WHERE field3 > 3 and field4 IS 'test';") + + lexer := NewSqlLexer(is) + stream := antlr.NewCommonTokenStream(lexer, antlr.TokenDefaultChannel) + + // Create the Parser + p := NewSqlParser(stream) + in := make(chan plog.LogRecord) + out := make(chan plog.LogRecord) + ctx := context.TODO() + + listener := NewStreamListener(in, out, ctx) + + antlr.ParseTreeWalkerDefault.Walk(&listener, p.SelectQuery()) + +} + +func createSampleLog() plog.LogRecord { + record := plog.NewLogRecord() + record.Attributes().Insert("name", pcommon.NewValueString("kwak")) + record.Attributes().Insert("source", pcommon.NewValueString("some")) + record.Attributes().InsertBool("alive", true) + return record + +} diff --git a/processor/stream_processor/parser/sql_listener.go b/processor/stream_processor/parser/sql_listener.go index 4e8bfde019cc..db0be63157de 100644 --- a/processor/stream_processor/parser/sql_listener.go +++ b/processor/stream_processor/parser/sql_listener.go @@ -1,11 +1,11 @@ -// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. -package parser // sql +package parser // Sql import "github.com/antlr/antlr4/runtime/Go/antlr" -// sqlListener is a complete listener for a parse tree produced by sqlParser. -type sqlListener interface { +// SqlListener is a complete listener for a parse tree produced by SqlParser. +type SqlListener interface { antlr.ParseTreeListener // EnterSqlQuery is called when entering the sqlQuery production. @@ -23,6 +23,9 @@ type sqlListener interface { // EnterWhereStatement is called when entering the whereStatement production. EnterWhereStatement(c *WhereStatementContext) + // EnterTumblingWindow is called when entering the tumblingWindow production. + EnterTumblingWindow(c *TumblingWindowContext) + // EnterGroupBy is called when entering the groupBy production. EnterGroupBy(c *GroupByContext) @@ -53,6 +56,9 @@ type sqlListener interface { // ExitWhereStatement is called when exiting the whereStatement production. ExitWhereStatement(c *WhereStatementContext) + // ExitTumblingWindow is called when exiting the tumblingWindow production. + ExitTumblingWindow(c *TumblingWindowContext) + // ExitGroupBy is called when exiting the groupBy production. ExitGroupBy(c *GroupByContext) diff --git a/processor/stream_processor/parser/sql_parser.go b/processor/stream_processor/parser/sql_parser.go index aacef8c5d518..995018349bb8 100644 --- a/processor/stream_processor/parser/sql_parser.go +++ b/processor/stream_processor/parser/sql_parser.go @@ -1,6 +1,6 @@ -// Code generated from sql.g4 by ANTLR 4.10.1. DO NOT EDIT. +// Code generated from Sql.g4 by ANTLR 4.10.1. DO NOT EDIT. -package parser // sql +package parser // Sql import ( "fmt" @@ -15,7 +15,7 @@ var _ = fmt.Printf var _ = strconv.Itoa var _ = sync.Once{} -type sqlParser struct { +type SqlParser struct { *antlr.BaseParser } @@ -47,47 +47,50 @@ func sqlParserInit() { } staticData.ruleNames = []string{ "sqlQuery", "selectQuery", "resultColumns", "column", "whereStatement", - "groupBy", "avg", "expr", "comparisonOperator", "literalValue", + "tumblingWindow", "groupBy", "avg", "expr", "comparisonOperator", "literalValue", } staticData.predictionContextCache = antlr.NewPredictionContextCache() staticData.serializedATN = []int32{ - 4, 1, 33, 92, 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, 1, 0, 1, - 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 27, 8, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, - 4, 2, 34, 8, 2, 11, 2, 12, 2, 35, 1, 2, 1, 2, 1, 2, 4, 2, 41, 8, 2, 11, - 2, 12, 2, 42, 1, 2, 3, 2, 46, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 3, 4, 52, 8, - 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 58, 8, 4, 1, 4, 3, 4, 61, 8, 4, 1, 5, - 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, - 1, 7, 1, 7, 3, 7, 78, 8, 7, 1, 7, 1, 7, 1, 7, 5, 7, 83, 8, 7, 10, 7, 12, - 7, 86, 9, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 0, 1, 14, 10, 0, 2, 4, 6, 8, - 10, 12, 14, 16, 18, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, - 0, 12, 19, 24, 25, 1, 0, 31, 32, 91, 0, 20, 1, 0, 0, 0, 2, 23, 1, 0, 0, - 0, 4, 45, 1, 0, 0, 0, 6, 47, 1, 0, 0, 0, 8, 60, 1, 0, 0, 0, 10, 62, 1, - 0, 0, 0, 12, 65, 1, 0, 0, 0, 14, 77, 1, 0, 0, 0, 16, 87, 1, 0, 0, 0, 18, - 89, 1, 0, 0, 0, 20, 21, 3, 2, 1, 0, 21, 22, 5, 0, 0, 1, 22, 1, 1, 0, 0, - 0, 23, 24, 5, 6, 0, 0, 24, 26, 3, 4, 2, 0, 25, 27, 3, 8, 4, 0, 26, 25, - 1, 0, 0, 0, 26, 27, 1, 0, 0, 0, 27, 28, 1, 0, 0, 0, 28, 29, 5, 5, 0, 0, - 29, 3, 1, 0, 0, 0, 30, 33, 3, 6, 3, 0, 31, 32, 5, 2, 0, 0, 32, 34, 3, 6, - 3, 0, 33, 31, 1, 0, 0, 0, 34, 35, 1, 0, 0, 0, 35, 33, 1, 0, 0, 0, 35, 36, - 1, 0, 0, 0, 36, 46, 1, 0, 0, 0, 37, 40, 3, 12, 6, 0, 38, 39, 5, 2, 0, 0, - 39, 41, 3, 12, 6, 0, 40, 38, 1, 0, 0, 0, 41, 42, 1, 0, 0, 0, 42, 40, 1, - 0, 0, 0, 42, 43, 1, 0, 0, 0, 43, 46, 1, 0, 0, 0, 44, 46, 5, 33, 0, 0, 45, - 30, 1, 0, 0, 0, 45, 37, 1, 0, 0, 0, 45, 44, 1, 0, 0, 0, 46, 5, 1, 0, 0, - 0, 47, 48, 5, 30, 0, 0, 48, 7, 1, 0, 0, 0, 49, 50, 5, 7, 0, 0, 50, 52, - 3, 14, 7, 0, 51, 49, 1, 0, 0, 0, 51, 52, 1, 0, 0, 0, 52, 61, 1, 0, 0, 0, - 53, 54, 5, 8, 0, 0, 54, 57, 5, 31, 0, 0, 55, 56, 5, 7, 0, 0, 56, 58, 3, - 14, 7, 0, 57, 55, 1, 0, 0, 0, 57, 58, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, - 61, 3, 10, 5, 0, 60, 51, 1, 0, 0, 0, 60, 53, 1, 0, 0, 0, 61, 9, 1, 0, 0, - 0, 62, 63, 5, 9, 0, 0, 63, 64, 3, 6, 3, 0, 64, 11, 1, 0, 0, 0, 65, 66, - 7, 0, 0, 0, 66, 67, 5, 3, 0, 0, 67, 68, 3, 6, 3, 0, 68, 69, 5, 4, 0, 0, - 69, 13, 1, 0, 0, 0, 70, 71, 6, 7, -1, 0, 71, 72, 5, 30, 0, 0, 72, 73, 3, - 16, 8, 0, 73, 74, 3, 18, 9, 0, 74, 78, 1, 0, 0, 0, 75, 76, 5, 30, 0, 0, - 76, 78, 7, 1, 0, 0, 77, 70, 1, 0, 0, 0, 77, 75, 1, 0, 0, 0, 78, 84, 1, - 0, 0, 0, 79, 80, 10, 2, 0, 0, 80, 81, 7, 2, 0, 0, 81, 83, 3, 14, 7, 3, - 82, 79, 1, 0, 0, 0, 83, 86, 1, 0, 0, 0, 84, 82, 1, 0, 0, 0, 84, 85, 1, - 0, 0, 0, 85, 15, 1, 0, 0, 0, 86, 84, 1, 0, 0, 0, 87, 88, 7, 3, 0, 0, 88, - 17, 1, 0, 0, 0, 89, 90, 7, 4, 0, 0, 90, 19, 1, 0, 0, 0, 9, 26, 35, 42, - 45, 51, 57, 60, 77, 84, + 4, 1, 33, 100, 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, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 29, 8, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 2, 4, 2, 36, 8, 2, 11, 2, 12, 2, 37, 1, 2, 1, 2, 1, 2, 4, 2, + 43, 8, 2, 11, 2, 12, 2, 44, 1, 2, 3, 2, 48, 8, 2, 1, 3, 1, 3, 1, 4, 1, + 4, 3, 4, 54, 8, 4, 1, 4, 1, 4, 1, 4, 3, 4, 59, 8, 4, 1, 4, 1, 4, 3, 4, + 63, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 69, 8, 5, 1, 6, 1, 6, 1, 6, 1, + 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, + 8, 86, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 91, 8, 8, 10, 8, 12, 8, 94, 9, 8, + 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 0, 1, 16, 11, 0, 2, 4, 6, 8, 10, 12, 14, + 16, 18, 20, 0, 5, 1, 0, 26, 29, 1, 0, 21, 22, 1, 0, 10, 11, 2, 0, 12, 19, + 24, 25, 1, 0, 31, 32, 99, 0, 22, 1, 0, 0, 0, 2, 25, 1, 0, 0, 0, 4, 47, + 1, 0, 0, 0, 6, 49, 1, 0, 0, 0, 8, 62, 1, 0, 0, 0, 10, 64, 1, 0, 0, 0, 12, + 70, 1, 0, 0, 0, 14, 73, 1, 0, 0, 0, 16, 85, 1, 0, 0, 0, 18, 95, 1, 0, 0, + 0, 20, 97, 1, 0, 0, 0, 22, 23, 3, 2, 1, 0, 23, 24, 5, 0, 0, 1, 24, 1, 1, + 0, 0, 0, 25, 26, 5, 6, 0, 0, 26, 28, 3, 4, 2, 0, 27, 29, 3, 8, 4, 0, 28, + 27, 1, 0, 0, 0, 28, 29, 1, 0, 0, 0, 29, 30, 1, 0, 0, 0, 30, 31, 5, 5, 0, + 0, 31, 3, 1, 0, 0, 0, 32, 35, 3, 6, 3, 0, 33, 34, 5, 2, 0, 0, 34, 36, 3, + 6, 3, 0, 35, 33, 1, 0, 0, 0, 36, 37, 1, 0, 0, 0, 37, 35, 1, 0, 0, 0, 37, + 38, 1, 0, 0, 0, 38, 48, 1, 0, 0, 0, 39, 42, 3, 14, 7, 0, 40, 41, 5, 2, + 0, 0, 41, 43, 3, 14, 7, 0, 42, 40, 1, 0, 0, 0, 43, 44, 1, 0, 0, 0, 44, + 42, 1, 0, 0, 0, 44, 45, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 48, 5, 33, + 0, 0, 47, 32, 1, 0, 0, 0, 47, 39, 1, 0, 0, 0, 47, 46, 1, 0, 0, 0, 48, 5, + 1, 0, 0, 0, 49, 50, 5, 30, 0, 0, 50, 7, 1, 0, 0, 0, 51, 52, 5, 7, 0, 0, + 52, 54, 3, 16, 8, 0, 53, 51, 1, 0, 0, 0, 53, 54, 1, 0, 0, 0, 54, 63, 1, + 0, 0, 0, 55, 58, 3, 10, 5, 0, 56, 57, 5, 7, 0, 0, 57, 59, 3, 16, 8, 0, + 58, 56, 1, 0, 0, 0, 58, 59, 1, 0, 0, 0, 59, 60, 1, 0, 0, 0, 60, 61, 3, + 12, 6, 0, 61, 63, 1, 0, 0, 0, 62, 53, 1, 0, 0, 0, 62, 55, 1, 0, 0, 0, 63, + 9, 1, 0, 0, 0, 64, 65, 5, 8, 0, 0, 65, 68, 5, 31, 0, 0, 66, 67, 5, 7, 0, + 0, 67, 69, 3, 16, 8, 0, 68, 66, 1, 0, 0, 0, 68, 69, 1, 0, 0, 0, 69, 11, + 1, 0, 0, 0, 70, 71, 5, 9, 0, 0, 71, 72, 3, 6, 3, 0, 72, 13, 1, 0, 0, 0, + 73, 74, 7, 0, 0, 0, 74, 75, 5, 3, 0, 0, 75, 76, 3, 6, 3, 0, 76, 77, 5, + 4, 0, 0, 77, 15, 1, 0, 0, 0, 78, 79, 6, 8, -1, 0, 79, 80, 5, 30, 0, 0, + 80, 81, 3, 18, 9, 0, 81, 82, 3, 20, 10, 0, 82, 86, 1, 0, 0, 0, 83, 84, + 5, 30, 0, 0, 84, 86, 7, 1, 0, 0, 85, 78, 1, 0, 0, 0, 85, 83, 1, 0, 0, 0, + 86, 92, 1, 0, 0, 0, 87, 88, 10, 2, 0, 0, 88, 89, 7, 2, 0, 0, 89, 91, 3, + 16, 8, 3, 90, 87, 1, 0, 0, 0, 91, 94, 1, 0, 0, 0, 92, 90, 1, 0, 0, 0, 92, + 93, 1, 0, 0, 0, 93, 17, 1, 0, 0, 0, 94, 92, 1, 0, 0, 0, 95, 96, 7, 3, 0, + 0, 96, 19, 1, 0, 0, 0, 97, 98, 7, 4, 0, 0, 98, 21, 1, 0, 0, 0, 10, 28, + 37, 44, 47, 53, 58, 62, 68, 85, 92, } deserializer := antlr.NewATNDeserializer(nil) staticData.atn = deserializer.Deserialize(staticData.serializedATN) @@ -99,80 +102,81 @@ func sqlParserInit() { } } -// sqlParserInit initializes any static state used to implement sqlParser. By default the +// SqlParserInit initializes any static state used to implement SqlParser. By default the // static state used to implement the parser is lazily initialized during the first call to -// NewsqlParser(). You can call this function if you wish to initialize the static state ahead +// NewSqlParser(). You can call this function if you wish to initialize the static state ahead // of time. func SqlParserInit() { staticData := &sqlParserStaticData staticData.once.Do(sqlParserInit) } -// NewsqlParser produces a new parser instance for the optional input antlr.TokenStream. -func NewsqlParser(input antlr.TokenStream) *sqlParser { +// NewSqlParser produces a new parser instance for the optional input antlr.TokenStream. +func NewSqlParser(input antlr.TokenStream) *SqlParser { SqlParserInit() - this := new(sqlParser) + this := new(SqlParser) this.BaseParser = antlr.NewBaseParser(input) staticData := &sqlParserStaticData this.Interpreter = antlr.NewParserATNSimulator(this, staticData.atn, staticData.decisionToDFA, staticData.predictionContextCache) this.RuleNames = staticData.ruleNames this.LiteralNames = staticData.literalNames this.SymbolicNames = staticData.symbolicNames - this.GrammarFileName = "sql.g4" + this.GrammarFileName = "Sql.g4" return this } -// sqlParser tokens. +// SqlParser tokens. const ( - sqlParserEOF = antlr.TokenEOF - sqlParserSPACE = 1 - sqlParserCOMMA = 2 - sqlParserL_BRACKET = 3 - sqlParserR_BRACKET = 4 - sqlParserEOQ = 5 - sqlParserK_SELECT = 6 - sqlParserK_WHERE = 7 - sqlParserK_WINDOW_TUMBLING = 8 - sqlParserK_GROUP_BY = 9 - sqlParserK_AND = 10 - sqlParserK_OR = 11 - sqlParserK_IS = 12 - sqlParserK_LIKE = 13 - sqlParserK_EQUAL = 14 - sqlParserK_GREATER = 15 - sqlParserK_LESS = 16 - sqlParserK_LESS_EQUAL = 17 - sqlParserK_GREATER_EQUAL = 18 - sqlParserK_NOT_EQUAL = 19 - sqlParserK_NULL = 20 - sqlParserK_IS_NULL = 21 - sqlParserK_IS_NOT_NULL = 22 - sqlParserK_NOT = 23 - sqlParserK_NOT_IN = 24 - sqlParserK_IN = 25 - sqlParserK_COUNT = 26 - sqlParserK_MIN = 27 - sqlParserK_MAX = 28 - sqlParserK_AVG = 29 - sqlParserIDENTIFIER = 30 - sqlParserNUMERIC_LITERAL = 31 - sqlParserSTRING_LITERAL = 32 - sqlParserSTAR = 33 + SqlParserEOF = antlr.TokenEOF + SqlParserSPACE = 1 + SqlParserCOMMA = 2 + SqlParserL_BRACKET = 3 + SqlParserR_BRACKET = 4 + SqlParserEOQ = 5 + SqlParserK_SELECT = 6 + SqlParserK_WHERE = 7 + SqlParserK_WINDOW_TUMBLING = 8 + SqlParserK_GROUP_BY = 9 + SqlParserK_AND = 10 + SqlParserK_OR = 11 + SqlParserK_IS = 12 + SqlParserK_LIKE = 13 + SqlParserK_EQUAL = 14 + SqlParserK_GREATER = 15 + SqlParserK_LESS = 16 + SqlParserK_LESS_EQUAL = 17 + SqlParserK_GREATER_EQUAL = 18 + SqlParserK_NOT_EQUAL = 19 + SqlParserK_NULL = 20 + SqlParserK_IS_NULL = 21 + SqlParserK_IS_NOT_NULL = 22 + SqlParserK_NOT = 23 + SqlParserK_NOT_IN = 24 + SqlParserK_IN = 25 + SqlParserK_COUNT = 26 + SqlParserK_MIN = 27 + SqlParserK_MAX = 28 + SqlParserK_AVG = 29 + SqlParserIDENTIFIER = 30 + SqlParserNUMERIC_LITERAL = 31 + SqlParserSTRING_LITERAL = 32 + SqlParserSTAR = 33 ) -// sqlParser rules. +// SqlParser rules. const ( - sqlParserRULE_sqlQuery = 0 - sqlParserRULE_selectQuery = 1 - sqlParserRULE_resultColumns = 2 - sqlParserRULE_column = 3 - sqlParserRULE_whereStatement = 4 - sqlParserRULE_groupBy = 5 - sqlParserRULE_avg = 6 - sqlParserRULE_expr = 7 - sqlParserRULE_comparisonOperator = 8 - sqlParserRULE_literalValue = 9 + SqlParserRULE_sqlQuery = 0 + SqlParserRULE_selectQuery = 1 + SqlParserRULE_resultColumns = 2 + SqlParserRULE_column = 3 + SqlParserRULE_whereStatement = 4 + SqlParserRULE_tumblingWindow = 5 + SqlParserRULE_groupBy = 6 + SqlParserRULE_avg = 7 + SqlParserRULE_expr = 8 + SqlParserRULE_comparisonOperator = 9 + SqlParserRULE_literalValue = 10 ) // ISqlQueryContext is an interface to support dynamic dispatch. @@ -194,7 +198,7 @@ type SqlQueryContext struct { func NewEmptySqlQueryContext() *SqlQueryContext { var p = new(SqlQueryContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_sqlQuery + p.RuleIndex = SqlParserRULE_sqlQuery return p } @@ -206,7 +210,7 @@ func NewSqlQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, inv p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_sqlQuery + p.RuleIndex = SqlParserRULE_sqlQuery return p } @@ -230,7 +234,7 @@ func (s *SqlQueryContext) SelectQuery() ISelectQueryContext { } func (s *SqlQueryContext) EOF() antlr.TerminalNode { - return s.GetToken(sqlParserEOF, 0) + return s.GetToken(SqlParserEOF, 0) } func (s *SqlQueryContext) GetRuleContext() antlr.RuleContext { @@ -242,23 +246,23 @@ func (s *SqlQueryContext) ToStringTree(ruleNames []string, recog antlr.Recognize } func (s *SqlQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterSqlQuery(s) } } func (s *SqlQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitSqlQuery(s) } } -func (p *sqlParser) SqlQuery() (localctx ISqlQueryContext) { +func (p *SqlParser) SqlQuery() (localctx ISqlQueryContext) { this := p _ = this localctx = NewSqlQueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 0, sqlParserRULE_sqlQuery) + p.EnterRule(localctx, 0, SqlParserRULE_sqlQuery) defer func() { p.ExitRule() @@ -278,12 +282,12 @@ func (p *sqlParser) SqlQuery() (localctx ISqlQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(20) + p.SetState(22) p.SelectQuery() } { - p.SetState(21) - p.Match(sqlParserEOF) + p.SetState(23) + p.Match(SqlParserEOF) } return localctx @@ -308,7 +312,7 @@ type SelectQueryContext struct { func NewEmptySelectQueryContext() *SelectQueryContext { var p = new(SelectQueryContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_selectQuery + p.RuleIndex = SqlParserRULE_selectQuery return p } @@ -320,7 +324,7 @@ func NewSelectQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_selectQuery + p.RuleIndex = SqlParserRULE_selectQuery return p } @@ -328,11 +332,11 @@ func NewSelectQueryContext(parser antlr.Parser, parent antlr.ParserRuleContext, func (s *SelectQueryContext) GetParser() antlr.Parser { return s.parser } func (s *SelectQueryContext) K_SELECT() antlr.TerminalNode { - return s.GetToken(sqlParserK_SELECT, 0) + return s.GetToken(SqlParserK_SELECT, 0) } func (s *SelectQueryContext) EOQ() antlr.TerminalNode { - return s.GetToken(sqlParserEOQ, 0) + return s.GetToken(SqlParserEOQ, 0) } func (s *SelectQueryContext) ResultColumns() IResultColumnsContext { @@ -376,23 +380,23 @@ func (s *SelectQueryContext) ToStringTree(ruleNames []string, recog antlr.Recogn } func (s *SelectQueryContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterSelectQuery(s) } } func (s *SelectQueryContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitSelectQuery(s) } } -func (p *sqlParser) SelectQuery() (localctx ISelectQueryContext) { +func (p *SqlParser) SelectQuery() (localctx ISelectQueryContext) { this := p _ = this localctx = NewSelectQueryContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 2, sqlParserRULE_selectQuery) + p.EnterRule(localctx, 2, SqlParserRULE_selectQuery) defer func() { p.ExitRule() @@ -412,28 +416,28 @@ func (p *sqlParser) SelectQuery() (localctx ISelectQueryContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(23) - p.Match(sqlParserK_SELECT) + p.SetState(25) + p.Match(SqlParserK_SELECT) } { - p.SetState(24) + p.SetState(26) p.ResultColumns() } - p.SetState(26) + p.SetState(28) p.GetErrorHandler().Sync(p) if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 0, p.GetParserRuleContext()) == 1 { { - p.SetState(25) + p.SetState(27) p.WhereStatement() } } { - p.SetState(28) - p.Match(sqlParserEOQ) + p.SetState(30) + p.Match(SqlParserEOQ) } return localctx @@ -458,7 +462,7 @@ type ResultColumnsContext struct { func NewEmptyResultColumnsContext() *ResultColumnsContext { var p = new(ResultColumnsContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_resultColumns + p.RuleIndex = SqlParserRULE_resultColumns return p } @@ -470,7 +474,7 @@ func NewResultColumnsContext(parser antlr.Parser, parent antlr.ParserRuleContext p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_resultColumns + p.RuleIndex = SqlParserRULE_resultColumns return p } @@ -519,11 +523,11 @@ func (s *ResultColumnsContext) Column(i int) IColumnContext { } func (s *ResultColumnsContext) AllCOMMA() []antlr.TerminalNode { - return s.GetTokens(sqlParserCOMMA) + return s.GetTokens(SqlParserCOMMA) } func (s *ResultColumnsContext) COMMA(i int) antlr.TerminalNode { - return s.GetToken(sqlParserCOMMA, i) + return s.GetToken(SqlParserCOMMA, i) } func (s *ResultColumnsContext) AllAvg() []IAvgContext { @@ -568,7 +572,7 @@ func (s *ResultColumnsContext) Avg(i int) IAvgContext { } func (s *ResultColumnsContext) STAR() antlr.TerminalNode { - return s.GetToken(sqlParserSTAR, 0) + return s.GetToken(SqlParserSTAR, 0) } func (s *ResultColumnsContext) GetRuleContext() antlr.RuleContext { @@ -580,23 +584,23 @@ func (s *ResultColumnsContext) ToStringTree(ruleNames []string, recog antlr.Reco } func (s *ResultColumnsContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterResultColumns(s) } } func (s *ResultColumnsContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitResultColumns(s) } } -func (p *sqlParser) ResultColumns() (localctx IResultColumnsContext) { +func (p *SqlParser) ResultColumns() (localctx IResultColumnsContext) { this := p _ = this localctx = NewResultColumnsContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 4, sqlParserRULE_resultColumns) + p.EnterRule(localctx, 4, SqlParserRULE_resultColumns) var _la int defer func() { @@ -615,65 +619,65 @@ func (p *sqlParser) ResultColumns() (localctx IResultColumnsContext) { } }() - p.SetState(45) + p.SetState(47) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { - case sqlParserIDENTIFIER: + case SqlParserIDENTIFIER: p.EnterOuterAlt(localctx, 1) { - p.SetState(30) + p.SetState(32) p.Column() } - p.SetState(33) + p.SetState(35) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = _la == sqlParserCOMMA { + for ok := true; ok; ok = _la == SqlParserCOMMA { { - p.SetState(31) - p.Match(sqlParserCOMMA) + p.SetState(33) + p.Match(SqlParserCOMMA) } { - p.SetState(32) + p.SetState(34) p.Column() } - p.SetState(35) + p.SetState(37) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } - case sqlParserK_COUNT, sqlParserK_MIN, sqlParserK_MAX, sqlParserK_AVG: + case SqlParserK_COUNT, SqlParserK_MIN, SqlParserK_MAX, SqlParserK_AVG: p.EnterOuterAlt(localctx, 2) { - p.SetState(37) + p.SetState(39) p.Avg() } - p.SetState(40) + p.SetState(42) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - for ok := true; ok; ok = _la == sqlParserCOMMA { + for ok := true; ok; ok = _la == SqlParserCOMMA { { - p.SetState(38) - p.Match(sqlParserCOMMA) + p.SetState(40) + p.Match(SqlParserCOMMA) } { - p.SetState(39) + p.SetState(41) p.Avg() } - p.SetState(42) + p.SetState(44) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) } - case sqlParserSTAR: + case SqlParserSTAR: p.EnterOuterAlt(localctx, 3) { - p.SetState(44) - p.Match(sqlParserSTAR) + p.SetState(46) + p.Match(SqlParserSTAR) } default: @@ -702,7 +706,7 @@ type ColumnContext struct { func NewEmptyColumnContext() *ColumnContext { var p = new(ColumnContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_column + p.RuleIndex = SqlParserRULE_column return p } @@ -714,7 +718,7 @@ func NewColumnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invok p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_column + p.RuleIndex = SqlParserRULE_column return p } @@ -722,7 +726,7 @@ func NewColumnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invok func (s *ColumnContext) GetParser() antlr.Parser { return s.parser } func (s *ColumnContext) IDENTIFIER() antlr.TerminalNode { - return s.GetToken(sqlParserIDENTIFIER, 0) + return s.GetToken(SqlParserIDENTIFIER, 0) } func (s *ColumnContext) GetRuleContext() antlr.RuleContext { @@ -734,23 +738,23 @@ func (s *ColumnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) } func (s *ColumnContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterColumn(s) } } func (s *ColumnContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitColumn(s) } } -func (p *sqlParser) Column() (localctx IColumnContext) { +func (p *SqlParser) Column() (localctx IColumnContext) { this := p _ = this localctx = NewColumnContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 6, sqlParserRULE_column) + p.EnterRule(localctx, 6, SqlParserRULE_column) defer func() { p.ExitRule() @@ -770,8 +774,8 @@ func (p *sqlParser) Column() (localctx IColumnContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(47) - p.Match(sqlParserIDENTIFIER) + p.SetState(49) + p.Match(SqlParserIDENTIFIER) } return localctx @@ -796,7 +800,7 @@ type WhereStatementContext struct { func NewEmptyWhereStatementContext() *WhereStatementContext { var p = new(WhereStatementContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_whereStatement + p.RuleIndex = SqlParserRULE_whereStatement return p } @@ -808,7 +812,7 @@ func NewWhereStatementContext(parser antlr.Parser, parent antlr.ParserRuleContex p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_whereStatement + p.RuleIndex = SqlParserRULE_whereStatement return p } @@ -816,7 +820,7 @@ func NewWhereStatementContext(parser antlr.Parser, parent antlr.ParserRuleContex func (s *WhereStatementContext) GetParser() antlr.Parser { return s.parser } func (s *WhereStatementContext) K_WHERE() antlr.TerminalNode { - return s.GetToken(sqlParserK_WHERE, 0) + return s.GetToken(SqlParserK_WHERE, 0) } func (s *WhereStatementContext) Expr() IExprContext { @@ -835,12 +839,20 @@ func (s *WhereStatementContext) Expr() IExprContext { return t.(IExprContext) } -func (s *WhereStatementContext) K_WINDOW_TUMBLING() antlr.TerminalNode { - return s.GetToken(sqlParserK_WINDOW_TUMBLING, 0) -} +func (s *WhereStatementContext) TumblingWindow() ITumblingWindowContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(ITumblingWindowContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } -func (s *WhereStatementContext) NUMERIC_LITERAL() antlr.TerminalNode { - return s.GetToken(sqlParserNUMERIC_LITERAL, 0) + if t == nil { + return nil + } + + return t.(ITumblingWindowContext) } func (s *WhereStatementContext) GroupBy() IGroupByContext { @@ -868,23 +880,23 @@ func (s *WhereStatementContext) ToStringTree(ruleNames []string, recog antlr.Rec } func (s *WhereStatementContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterWhereStatement(s) } } func (s *WhereStatementContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitWhereStatement(s) } } -func (p *sqlParser) WhereStatement() (localctx IWhereStatementContext) { +func (p *SqlParser) WhereStatement() (localctx IWhereStatementContext) { this := p _ = this localctx = NewWhereStatementContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 8, sqlParserRULE_whereStatement) + p.EnterRule(localctx, 8, SqlParserRULE_whereStatement) var _la int defer func() { @@ -903,56 +915,53 @@ func (p *sqlParser) WhereStatement() (localctx IWhereStatementContext) { } }() - p.SetState(60) + p.SetState(62) p.GetErrorHandler().Sync(p) switch p.GetTokenStream().LA(1) { - case sqlParserEOQ, sqlParserK_WHERE: + case SqlParserEOQ, SqlParserK_WHERE: p.EnterOuterAlt(localctx, 1) - p.SetState(51) + p.SetState(53) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if _la == sqlParserK_WHERE { + if _la == SqlParserK_WHERE { { - p.SetState(49) - p.Match(sqlParserK_WHERE) + p.SetState(51) + p.Match(SqlParserK_WHERE) } { - p.SetState(50) + p.SetState(52) p.expr(0) } } - case sqlParserK_WINDOW_TUMBLING: + case SqlParserK_WINDOW_TUMBLING: p.EnterOuterAlt(localctx, 2) { - p.SetState(53) - p.Match(sqlParserK_WINDOW_TUMBLING) - } - { - p.SetState(54) - p.Match(sqlParserNUMERIC_LITERAL) + p.SetState(55) + p.TumblingWindow() } - p.SetState(57) + + p.SetState(58) p.GetErrorHandler().Sync(p) _la = p.GetTokenStream().LA(1) - if _la == sqlParserK_WHERE { + if _la == SqlParserK_WHERE { { - p.SetState(55) - p.Match(sqlParserK_WHERE) + p.SetState(56) + p.Match(SqlParserK_WHERE) } { - p.SetState(56) + p.SetState(57) p.expr(0) } } { - p.SetState(59) + p.SetState(60) p.GroupBy() } @@ -963,6 +972,142 @@ func (p *sqlParser) WhereStatement() (localctx IWhereStatementContext) { return localctx } +// ITumblingWindowContext is an interface to support dynamic dispatch. +type ITumblingWindowContext interface { + antlr.ParserRuleContext + + // GetParser returns the parser. + GetParser() antlr.Parser + + // IsTumblingWindowContext differentiates from other interfaces. + IsTumblingWindowContext() +} + +type TumblingWindowContext struct { + *antlr.BaseParserRuleContext + parser antlr.Parser +} + +func NewEmptyTumblingWindowContext() *TumblingWindowContext { + var p = new(TumblingWindowContext) + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) + p.RuleIndex = SqlParserRULE_tumblingWindow + return p +} + +func (*TumblingWindowContext) IsTumblingWindowContext() {} + +func NewTumblingWindowContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *TumblingWindowContext { + var p = new(TumblingWindowContext) + + p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) + + p.parser = parser + p.RuleIndex = SqlParserRULE_tumblingWindow + + return p +} + +func (s *TumblingWindowContext) GetParser() antlr.Parser { return s.parser } + +func (s *TumblingWindowContext) K_WINDOW_TUMBLING() antlr.TerminalNode { + return s.GetToken(SqlParserK_WINDOW_TUMBLING, 0) +} + +func (s *TumblingWindowContext) NUMERIC_LITERAL() antlr.TerminalNode { + return s.GetToken(SqlParserNUMERIC_LITERAL, 0) +} + +func (s *TumblingWindowContext) K_WHERE() antlr.TerminalNode { + return s.GetToken(SqlParserK_WHERE, 0) +} + +func (s *TumblingWindowContext) Expr() IExprContext { + var t antlr.RuleContext + for _, ctx := range s.GetChildren() { + if _, ok := ctx.(IExprContext); ok { + t = ctx.(antlr.RuleContext) + break + } + } + + if t == nil { + return nil + } + + return t.(IExprContext) +} + +func (s *TumblingWindowContext) GetRuleContext() antlr.RuleContext { + return s +} + +func (s *TumblingWindowContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string { + return antlr.TreesStringTree(s, ruleNames, recog) +} + +func (s *TumblingWindowContext) EnterRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.EnterTumblingWindow(s) + } +} + +func (s *TumblingWindowContext) ExitRule(listener antlr.ParseTreeListener) { + if listenerT, ok := listener.(SqlListener); ok { + listenerT.ExitTumblingWindow(s) + } +} + +func (p *SqlParser) TumblingWindow() (localctx ITumblingWindowContext) { + this := p + _ = this + + localctx = NewTumblingWindowContext(p, p.GetParserRuleContext(), p.GetState()) + p.EnterRule(localctx, 10, SqlParserRULE_tumblingWindow) + + defer func() { + p.ExitRule() + }() + + defer func() { + if err := recover(); err != nil { + if v, ok := err.(antlr.RecognitionException); ok { + localctx.SetException(v) + p.GetErrorHandler().ReportError(p, v) + p.GetErrorHandler().Recover(p, v) + } else { + panic(err) + } + } + }() + + p.EnterOuterAlt(localctx, 1) + { + p.SetState(64) + p.Match(SqlParserK_WINDOW_TUMBLING) + } + { + p.SetState(65) + p.Match(SqlParserNUMERIC_LITERAL) + } + p.SetState(68) + p.GetErrorHandler().Sync(p) + + if p.GetInterpreter().AdaptivePredict(p.GetTokenStream(), 7, p.GetParserRuleContext()) == 1 { + { + p.SetState(66) + p.Match(SqlParserK_WHERE) + } + { + p.SetState(67) + p.expr(0) + } + + } + + return localctx +} + // IGroupByContext is an interface to support dynamic dispatch. type IGroupByContext interface { antlr.ParserRuleContext @@ -982,7 +1127,7 @@ type GroupByContext struct { func NewEmptyGroupByContext() *GroupByContext { var p = new(GroupByContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_groupBy + p.RuleIndex = SqlParserRULE_groupBy return p } @@ -994,7 +1139,7 @@ func NewGroupByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invo p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_groupBy + p.RuleIndex = SqlParserRULE_groupBy return p } @@ -1002,7 +1147,7 @@ func NewGroupByContext(parser antlr.Parser, parent antlr.ParserRuleContext, invo func (s *GroupByContext) GetParser() antlr.Parser { return s.parser } func (s *GroupByContext) K_GROUP_BY() antlr.TerminalNode { - return s.GetToken(sqlParserK_GROUP_BY, 0) + return s.GetToken(SqlParserK_GROUP_BY, 0) } func (s *GroupByContext) Column() IColumnContext { @@ -1030,23 +1175,23 @@ func (s *GroupByContext) ToStringTree(ruleNames []string, recog antlr.Recognizer } func (s *GroupByContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterGroupBy(s) } } func (s *GroupByContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitGroupBy(s) } } -func (p *sqlParser) GroupBy() (localctx IGroupByContext) { +func (p *SqlParser) GroupBy() (localctx IGroupByContext) { this := p _ = this localctx = NewGroupByContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 10, sqlParserRULE_groupBy) + p.EnterRule(localctx, 12, SqlParserRULE_groupBy) defer func() { p.ExitRule() @@ -1066,11 +1211,11 @@ func (p *sqlParser) GroupBy() (localctx IGroupByContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(62) - p.Match(sqlParserK_GROUP_BY) + p.SetState(70) + p.Match(SqlParserK_GROUP_BY) } { - p.SetState(63) + p.SetState(71) p.Column() } @@ -1096,7 +1241,7 @@ type AvgContext struct { func NewEmptyAvgContext() *AvgContext { var p = new(AvgContext) p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(nil, -1) - p.RuleIndex = sqlParserRULE_avg + p.RuleIndex = SqlParserRULE_avg return p } @@ -1108,7 +1253,7 @@ func NewAvgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invoking p.BaseParserRuleContext = antlr.NewBaseParserRuleContext(parent, invokingState) p.parser = parser - p.RuleIndex = sqlParserRULE_avg + p.RuleIndex = SqlParserRULE_avg return p } @@ -1116,7 +1261,7 @@ func NewAvgContext(parser antlr.Parser, parent antlr.ParserRuleContext, invoking func (s *AvgContext) GetParser() antlr.Parser { return s.parser } func (s *AvgContext) L_BRACKET() antlr.TerminalNode { - return s.GetToken(sqlParserL_BRACKET, 0) + return s.GetToken(SqlParserL_BRACKET, 0) } func (s *AvgContext) Column() IColumnContext { @@ -1136,23 +1281,23 @@ func (s *AvgContext) Column() IColumnContext { } func (s *AvgContext) R_BRACKET() antlr.TerminalNode { - return s.GetToken(sqlParserR_BRACKET, 0) + return s.GetToken(SqlParserR_BRACKET, 0) } func (s *AvgContext) K_MIN() antlr.TerminalNode { - return s.GetToken(sqlParserK_MIN, 0) + return s.GetToken(SqlParserK_MIN, 0) } func (s *AvgContext) K_MAX() antlr.TerminalNode { - return s.GetToken(sqlParserK_MAX, 0) + return s.GetToken(SqlParserK_MAX, 0) } func (s *AvgContext) K_COUNT() antlr.TerminalNode { - return s.GetToken(sqlParserK_COUNT, 0) + return s.GetToken(SqlParserK_COUNT, 0) } func (s *AvgContext) K_AVG() antlr.TerminalNode { - return s.GetToken(sqlParserK_AVG, 0) + return s.GetToken(SqlParserK_AVG, 0) } func (s *AvgContext) GetRuleContext() antlr.RuleContext { @@ -1164,23 +1309,23 @@ func (s *AvgContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) st } func (s *AvgContext) EnterRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.EnterAvg(s) } } func (s *AvgContext) ExitRule(listener antlr.ParseTreeListener) { - if listenerT, ok := listener.(sqlListener); ok { + if listenerT, ok := listener.(SqlListener); ok { listenerT.ExitAvg(s) } } -func (p *sqlParser) Avg() (localctx IAvgContext) { +func (p *SqlParser) Avg() (localctx IAvgContext) { this := p _ = this localctx = NewAvgContext(p, p.GetParserRuleContext(), p.GetState()) - p.EnterRule(localctx, 12, sqlParserRULE_avg) + p.EnterRule(localctx, 14, SqlParserRULE_avg) var _la int defer func() { @@ -1201,10 +1346,10 @@ func (p *sqlParser) Avg() (localctx IAvgContext) { p.EnterOuterAlt(localctx, 1) { - p.SetState(65) + p.SetState(73) _la = p.GetTokenStream().LA(1) - if !(((_la)&-(0x1f+1)) == 0 && ((1<