diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index 0fc2461..aa28174 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -40,7 +40,7 @@ jobs:
run: go get ./...
- name: Vet
- run: go vet -v ./...
+ run: go vet -v $(go list ./... | grep -v "github.com/tursodatabase/libsql-client-go/sqliteparser$")
- name: Install sqlclosecheck
run: go install github.com/ryanrolds/sqlclosecheck@latest
@@ -49,7 +49,7 @@ jobs:
run: go vet -vettool=${HOME}/go/bin/sqlclosecheck ./...
- name: Run golangci-lint
- uses: golangci/golangci-lint-action@v3
+ uses: golangci/golangci-lint-action@v6
- name: Build
run: go build -v ./...
diff --git a/go.mod b/go.mod
index 703faab..ce1be20 100644
--- a/go.mod
+++ b/go.mod
@@ -4,15 +4,8 @@ go 1.20
require (
github.com/antlr4-go/antlr/v4 v4.13.0
- github.com/libsql/sqlite-antlr4-parser v0.0.0-20240327125255-dbf53b6cbf06
- github.com/stretchr/testify v1.9.0
golang.org/x/sync v0.3.0
nhooyr.io/websocket v1.8.10
)
-require (
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
-)
+require golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 // indirect
diff --git a/go.sum b/go.sum
index 121251a..69595cf 100644
--- a/go.sum
+++ b/go.sum
@@ -1,20 +1,8 @@
github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/libsql/sqlite-antlr4-parser v0.0.0-20240327125255-dbf53b6cbf06 h1:JLvn7D+wXjH9g4Jsjo+VqmzTUpl/LX7vfr6VOfSWTdM=
-github.com/libsql/sqlite-antlr4-parser v0.0.0-20240327125255-dbf53b6cbf06/go.mod h1:FUkZ5OHjlGPjnM2UyGJz9TypXQFgYqw6AFNO1UiROTM=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
-github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
nhooyr.io/websocket v1.8.10 h1:mv4p+MnGrLDcPlBoWsvPP7XCzTYMXP9F9eIGoKbgx7Q=
nhooyr.io/websocket v1.8.10/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c=
diff --git a/libsql/internal/http/shared/statement.go b/libsql/internal/http/shared/statement.go
index 6ec80c1..ce44055 100644
--- a/libsql/internal/http/shared/statement.go
+++ b/libsql/internal/http/shared/statement.go
@@ -8,8 +8,8 @@ import (
"sort"
"github.com/antlr4-go/antlr/v4"
- "github.com/libsql/sqlite-antlr4-parser/sqliteparser"
- "github.com/libsql/sqlite-antlr4-parser/sqliteparserutils"
+ "github.com/tursodatabase/libsql-client-go/sqliteparser"
+ "github.com/tursodatabase/libsql-client-go/sqliteparserutils"
)
type ParamsInfo struct {
diff --git a/sqliteparser/README.md b/sqliteparser/README.md
new file mode 100644
index 0000000..0e4b743
--- /dev/null
+++ b/sqliteparser/README.md
@@ -0,0 +1,18 @@
+# ANTLR SQLite Parser
+
+This project is just a generation of a [ANTLR4](https://www.antlr.org/) go parser using [SQLite grammar](https://github.com/antlr/grammars-v4/tree/master/sql/sqlite) from [antlr/grammars-v4](https://github.com/antlr/grammars-v4/tree/master) project. Its only reason to exist is to avoid forcing everyone that want a simple parser to install JAVA.
+
+You can find the grammar inside `./grammar` and the generated parser inside `./sqliteparser`
+
+## Generate parser
+
+### Requirements
+- JAVA 11+ installed
+- ANTLR4 compelte java binaries. Link [here](https://www.antlr.org/download.html)
+ - Put the binary inside `/usr/local/lib`
+
+Important: The parser inside `./sqliteparser` was generated using OpenJDK 11 and ANTLR 4.12.0
+
+### Steps
+- Just run `./generate-parser.sh`
+
diff --git a/sqliteparser/SQLiteLexer.interp b/sqliteparser/SQLiteLexer.interp
new file mode 100644
index 0000000..1670a80
--- /dev/null
+++ b/sqliteparser/SQLiteLexer.interp
@@ -0,0 +1,598 @@
+token literal names:
+null
+';'
+'.'
+'('
+')'
+','
+'='
+'*'
+'+'
+'-'
+'~'
+'||'
+'/'
+'%'
+'<<'
+'>>'
+'&'
+'|'
+'<'
+'<='
+'>'
+'>='
+'=='
+'!='
+'<>'
+'ABORT'
+'ACTION'
+'ADD'
+'AFTER'
+'ALL'
+'ALTER'
+'ANALYZE'
+'AND'
+'AS'
+'ASC'
+'ATTACH'
+'AUTOINCREMENT'
+'BEFORE'
+'BEGIN'
+'BETWEEN'
+'BY'
+'CASCADE'
+'CASE'
+'CAST'
+'CHECK'
+'COLLATE'
+'COLUMN'
+'COMMIT'
+'CONFLICT'
+'CONSTRAINT'
+'CREATE'
+'CROSS'
+'CURRENT_DATE'
+'CURRENT_TIME'
+'CURRENT_TIMESTAMP'
+'DATABASE'
+'DEFAULT'
+'DEFERRABLE'
+'DEFERRED'
+'DELETE'
+'DESC'
+'DETACH'
+'DISTINCT'
+'DROP'
+'EACH'
+'ELSE'
+'END'
+'ESCAPE'
+'EXCEPT'
+'EXCLUSIVE'
+'EXISTS'
+'EXPLAIN'
+'FAIL'
+'FOR'
+'FOREIGN'
+'FROM'
+'FULL'
+'GLOB'
+'GROUP'
+'HAVING'
+'IF'
+'IGNORE'
+'IMMEDIATE'
+'IN'
+'INDEX'
+'INDEXED'
+'INITIALLY'
+'INNER'
+'INSERT'
+'INSTEAD'
+'INTERSECT'
+'INTO'
+'IS'
+'ISNULL'
+'JOIN'
+'KEY'
+'LEFT'
+'LIKE'
+'LIMIT'
+'MATCH'
+'NATURAL'
+'NO'
+'NOT'
+'NOTNULL'
+'NULL'
+'OF'
+'OFFSET'
+'ON'
+'OR'
+'ORDER'
+'OUTER'
+'PLAN'
+'PRAGMA'
+'PRIMARY'
+'QUERY'
+'RAISE'
+'RECURSIVE'
+'REFERENCES'
+'REGEXP'
+'REINDEX'
+'RELEASE'
+'RENAME'
+'REPLACE'
+'RESTRICT'
+'RETURNING'
+'RIGHT'
+'ROLLBACK'
+'ROW'
+'ROWS'
+'SAVEPOINT'
+'SELECT'
+'SET'
+'TABLE'
+'TEMP'
+'TEMPORARY'
+'THEN'
+'TO'
+'TRANSACTION'
+'TRIGGER'
+'UNION'
+'UNIQUE'
+'UPDATE'
+'USING'
+'VACUUM'
+'VALUES'
+'VIEW'
+'VIRTUAL'
+'WHEN'
+'WHERE'
+'WITH'
+'WITHOUT'
+'FIRST_VALUE'
+'OVER'
+'PARTITION'
+'RANGE'
+'PRECEDING'
+'UNBOUNDED'
+'CURRENT'
+'FOLLOWING'
+'CUME_DIST'
+'DENSE_RANK'
+'LAG'
+'LAST_VALUE'
+'LEAD'
+'NTH_VALUE'
+'NTILE'
+'PERCENT_RANK'
+'RANK'
+'ROW_NUMBER'
+'GENERATED'
+'ALWAYS'
+'STORED'
+'TRUE'
+'FALSE'
+'WINDOW'
+'NULLS'
+'FIRST'
+'LAST'
+'FILTER'
+'GROUPS'
+'EXCLUDE'
+'TIES'
+'OTHERS'
+'DO'
+'NOTHING'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+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
+ABORT_
+ACTION_
+ADD_
+AFTER_
+ALL_
+ALTER_
+ANALYZE_
+AND_
+AS_
+ASC_
+ATTACH_
+AUTOINCREMENT_
+BEFORE_
+BEGIN_
+BETWEEN_
+BY_
+CASCADE_
+CASE_
+CAST_
+CHECK_
+COLLATE_
+COLUMN_
+COMMIT_
+CONFLICT_
+CONSTRAINT_
+CREATE_
+CROSS_
+CURRENT_DATE_
+CURRENT_TIME_
+CURRENT_TIMESTAMP_
+DATABASE_
+DEFAULT_
+DEFERRABLE_
+DEFERRED_
+DELETE_
+DESC_
+DETACH_
+DISTINCT_
+DROP_
+EACH_
+ELSE_
+END_
+ESCAPE_
+EXCEPT_
+EXCLUSIVE_
+EXISTS_
+EXPLAIN_
+FAIL_
+FOR_
+FOREIGN_
+FROM_
+FULL_
+GLOB_
+GROUP_
+HAVING_
+IF_
+IGNORE_
+IMMEDIATE_
+IN_
+INDEX_
+INDEXED_
+INITIALLY_
+INNER_
+INSERT_
+INSTEAD_
+INTERSECT_
+INTO_
+IS_
+ISNULL_
+JOIN_
+KEY_
+LEFT_
+LIKE_
+LIMIT_
+MATCH_
+NATURAL_
+NO_
+NOT_
+NOTNULL_
+NULL_
+OF_
+OFFSET_
+ON_
+OR_
+ORDER_
+OUTER_
+PLAN_
+PRAGMA_
+PRIMARY_
+QUERY_
+RAISE_
+RECURSIVE_
+REFERENCES_
+REGEXP_
+REINDEX_
+RELEASE_
+RENAME_
+REPLACE_
+RESTRICT_
+RETURNING_
+RIGHT_
+ROLLBACK_
+ROW_
+ROWS_
+SAVEPOINT_
+SELECT_
+SET_
+TABLE_
+TEMP_
+TEMPORARY_
+THEN_
+TO_
+TRANSACTION_
+TRIGGER_
+UNION_
+UNIQUE_
+UPDATE_
+USING_
+VACUUM_
+VALUES_
+VIEW_
+VIRTUAL_
+WHEN_
+WHERE_
+WITH_
+WITHOUT_
+FIRST_VALUE_
+OVER_
+PARTITION_
+RANGE_
+PRECEDING_
+UNBOUNDED_
+CURRENT_
+FOLLOWING_
+CUME_DIST_
+DENSE_RANK_
+LAG_
+LAST_VALUE_
+LEAD_
+NTH_VALUE_
+NTILE_
+PERCENT_RANK_
+RANK_
+ROW_NUMBER_
+GENERATED_
+ALWAYS_
+STORED_
+TRUE_
+FALSE_
+WINDOW_
+NULLS_
+FIRST_
+LAST_
+FILTER_
+GROUPS_
+EXCLUDE_
+TIES_
+OTHERS_
+DO_
+NOTHING_
+IDENTIFIER
+NUMERIC_LITERAL
+BIND_PARAMETER
+STRING_LITERAL
+BLOB_LITERAL
+SINGLE_LINE_COMMENT
+MULTILINE_COMMENT
+SPACES
+UNEXPECTED_CHAR
+
+rule names:
+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
+ABORT_
+ACTION_
+ADD_
+AFTER_
+ALL_
+ALTER_
+ANALYZE_
+AND_
+AS_
+ASC_
+ATTACH_
+AUTOINCREMENT_
+BEFORE_
+BEGIN_
+BETWEEN_
+BY_
+CASCADE_
+CASE_
+CAST_
+CHECK_
+COLLATE_
+COLUMN_
+COMMIT_
+CONFLICT_
+CONSTRAINT_
+CREATE_
+CROSS_
+CURRENT_DATE_
+CURRENT_TIME_
+CURRENT_TIMESTAMP_
+DATABASE_
+DEFAULT_
+DEFERRABLE_
+DEFERRED_
+DELETE_
+DESC_
+DETACH_
+DISTINCT_
+DROP_
+EACH_
+ELSE_
+END_
+ESCAPE_
+EXCEPT_
+EXCLUSIVE_
+EXISTS_
+EXPLAIN_
+FAIL_
+FOR_
+FOREIGN_
+FROM_
+FULL_
+GLOB_
+GROUP_
+HAVING_
+IF_
+IGNORE_
+IMMEDIATE_
+IN_
+INDEX_
+INDEXED_
+INITIALLY_
+INNER_
+INSERT_
+INSTEAD_
+INTERSECT_
+INTO_
+IS_
+ISNULL_
+JOIN_
+KEY_
+LEFT_
+LIKE_
+LIMIT_
+MATCH_
+NATURAL_
+NO_
+NOT_
+NOTNULL_
+NULL_
+OF_
+OFFSET_
+ON_
+OR_
+ORDER_
+OUTER_
+PLAN_
+PRAGMA_
+PRIMARY_
+QUERY_
+RAISE_
+RECURSIVE_
+REFERENCES_
+REGEXP_
+REINDEX_
+RELEASE_
+RENAME_
+REPLACE_
+RESTRICT_
+RETURNING_
+RIGHT_
+ROLLBACK_
+ROW_
+ROWS_
+SAVEPOINT_
+SELECT_
+SET_
+TABLE_
+TEMP_
+TEMPORARY_
+THEN_
+TO_
+TRANSACTION_
+TRIGGER_
+UNION_
+UNIQUE_
+UPDATE_
+USING_
+VACUUM_
+VALUES_
+VIEW_
+VIRTUAL_
+WHEN_
+WHERE_
+WITH_
+WITHOUT_
+FIRST_VALUE_
+OVER_
+PARTITION_
+RANGE_
+PRECEDING_
+UNBOUNDED_
+CURRENT_
+FOLLOWING_
+CUME_DIST_
+DENSE_RANK_
+LAG_
+LAST_VALUE_
+LEAD_
+NTH_VALUE_
+NTILE_
+PERCENT_RANK_
+RANK_
+ROW_NUMBER_
+GENERATED_
+ALWAYS_
+STORED_
+TRUE_
+FALSE_
+WINDOW_
+NULLS_
+FIRST_
+LAST_
+FILTER_
+GROUPS_
+EXCLUDE_
+TIES_
+OTHERS_
+DO_
+NOTHING_
+IDENTIFIER
+NUMERIC_LITERAL
+BIND_PARAMETER
+STRING_LITERAL
+BLOB_LITERAL
+SINGLE_LINE_COMMENT
+MULTILINE_COMMENT
+SPACES
+UNEXPECTED_CHAR
+HEX_DIGIT
+DIGIT
+
+channel names:
+DEFAULT_TOKEN_CHANNEL
+HIDDEN
+
+mode names:
+DEFAULT_MODE
+
+atn:
+[4, 0, 193, 1704, 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, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 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, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 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, 24, 1, 24, 1, 24, 1, 25, 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, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 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, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 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, 47, 1, 47, 1, 48, 1, 48, 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, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 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, 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, 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, 56, 1, 56, 1, 56, 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, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 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, 66, 1, 66, 1, 66, 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, 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, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 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, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 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, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 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, 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, 88, 1, 88, 1, 89, 1, 89, 1, 89, 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, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 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, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 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, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 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, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 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, 114, 1, 115, 1, 115, 1, 115, 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, 116, 1, 116, 1, 116, 1, 117, 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, 118, 1, 118, 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, 121, 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, 122, 1, 123, 1, 123, 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, 125, 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, 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, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 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, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 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, 140, 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, 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, 143, 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, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 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, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1562, 8, 184, 10, 184, 12, 184, 1565, 9, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1572, 8, 184, 10, 184, 12, 184, 1575, 9, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1580, 8, 184, 10, 184, 12, 184, 1583, 9, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1588, 8, 184, 10, 184, 12, 184, 1591, 9, 184, 3, 184, 1593, 8, 184, 1, 185, 4, 185, 1596, 8, 185, 11, 185, 12, 185, 1597, 1, 185, 1, 185, 5, 185, 1602, 8, 185, 10, 185, 12, 185, 1605, 9, 185, 3, 185, 1607, 8, 185, 1, 185, 1, 185, 4, 185, 1611, 8, 185, 11, 185, 12, 185, 1612, 3, 185, 1615, 8, 185, 1, 185, 1, 185, 3, 185, 1619, 8, 185, 1, 185, 4, 185, 1622, 8, 185, 11, 185, 12, 185, 1623, 3, 185, 1626, 8, 185, 1, 185, 1, 185, 1, 185, 1, 185, 4, 185, 1632, 8, 185, 11, 185, 12, 185, 1633, 3, 185, 1636, 8, 185, 1, 186, 1, 186, 5, 186, 1640, 8, 186, 10, 186, 12, 186, 1643, 9, 186, 1, 186, 1, 186, 3, 186, 1647, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 5, 187, 1653, 8, 187, 10, 187, 12, 187, 1656, 9, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 5, 189, 1667, 8, 189, 10, 189, 12, 189, 1670, 9, 189, 1, 189, 3, 189, 1673, 8, 189, 1, 189, 1, 189, 3, 189, 1677, 8, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 1685, 8, 190, 10, 190, 12, 190, 1688, 9, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 1686, 0, 195, 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, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 0, 389, 0, 1, 0, 38, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 79, 79, 111, 111, 2, 0, 82, 82, 114, 114, 2, 0, 84, 84, 116, 116, 2, 0, 67, 67, 99, 99, 2, 0, 73, 73, 105, 105, 2, 0, 78, 78, 110, 110, 2, 0, 68, 68, 100, 100, 2, 0, 70, 70, 102, 102, 2, 0, 69, 69, 101, 101, 2, 0, 76, 76, 108, 108, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 83, 83, 115, 115, 2, 0, 72, 72, 104, 104, 2, 0, 85, 85, 117, 117, 2, 0, 77, 77, 109, 109, 2, 0, 71, 71, 103, 103, 2, 0, 87, 87, 119, 119, 2, 0, 75, 75, 107, 107, 2, 0, 80, 80, 112, 112, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, 106, 2, 0, 81, 81, 113, 113, 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, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 1728, 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, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 1, 391, 1, 0, 0, 0, 3, 393, 1, 0, 0, 0, 5, 395, 1, 0, 0, 0, 7, 397, 1, 0, 0, 0, 9, 399, 1, 0, 0, 0, 11, 401, 1, 0, 0, 0, 13, 403, 1, 0, 0, 0, 15, 405, 1, 0, 0, 0, 17, 407, 1, 0, 0, 0, 19, 409, 1, 0, 0, 0, 21, 411, 1, 0, 0, 0, 23, 414, 1, 0, 0, 0, 25, 416, 1, 0, 0, 0, 27, 418, 1, 0, 0, 0, 29, 421, 1, 0, 0, 0, 31, 424, 1, 0, 0, 0, 33, 426, 1, 0, 0, 0, 35, 428, 1, 0, 0, 0, 37, 430, 1, 0, 0, 0, 39, 433, 1, 0, 0, 0, 41, 435, 1, 0, 0, 0, 43, 438, 1, 0, 0, 0, 45, 441, 1, 0, 0, 0, 47, 444, 1, 0, 0, 0, 49, 447, 1, 0, 0, 0, 51, 453, 1, 0, 0, 0, 53, 460, 1, 0, 0, 0, 55, 464, 1, 0, 0, 0, 57, 470, 1, 0, 0, 0, 59, 474, 1, 0, 0, 0, 61, 480, 1, 0, 0, 0, 63, 488, 1, 0, 0, 0, 65, 492, 1, 0, 0, 0, 67, 495, 1, 0, 0, 0, 69, 499, 1, 0, 0, 0, 71, 506, 1, 0, 0, 0, 73, 520, 1, 0, 0, 0, 75, 527, 1, 0, 0, 0, 77, 533, 1, 0, 0, 0, 79, 541, 1, 0, 0, 0, 81, 544, 1, 0, 0, 0, 83, 552, 1, 0, 0, 0, 85, 557, 1, 0, 0, 0, 87, 562, 1, 0, 0, 0, 89, 568, 1, 0, 0, 0, 91, 576, 1, 0, 0, 0, 93, 583, 1, 0, 0, 0, 95, 590, 1, 0, 0, 0, 97, 599, 1, 0, 0, 0, 99, 610, 1, 0, 0, 0, 101, 617, 1, 0, 0, 0, 103, 623, 1, 0, 0, 0, 105, 636, 1, 0, 0, 0, 107, 649, 1, 0, 0, 0, 109, 667, 1, 0, 0, 0, 111, 676, 1, 0, 0, 0, 113, 684, 1, 0, 0, 0, 115, 695, 1, 0, 0, 0, 117, 704, 1, 0, 0, 0, 119, 711, 1, 0, 0, 0, 121, 716, 1, 0, 0, 0, 123, 723, 1, 0, 0, 0, 125, 732, 1, 0, 0, 0, 127, 737, 1, 0, 0, 0, 129, 742, 1, 0, 0, 0, 131, 747, 1, 0, 0, 0, 133, 751, 1, 0, 0, 0, 135, 758, 1, 0, 0, 0, 137, 765, 1, 0, 0, 0, 139, 775, 1, 0, 0, 0, 141, 782, 1, 0, 0, 0, 143, 790, 1, 0, 0, 0, 145, 795, 1, 0, 0, 0, 147, 799, 1, 0, 0, 0, 149, 807, 1, 0, 0, 0, 151, 812, 1, 0, 0, 0, 153, 817, 1, 0, 0, 0, 155, 822, 1, 0, 0, 0, 157, 828, 1, 0, 0, 0, 159, 835, 1, 0, 0, 0, 161, 838, 1, 0, 0, 0, 163, 845, 1, 0, 0, 0, 165, 855, 1, 0, 0, 0, 167, 858, 1, 0, 0, 0, 169, 864, 1, 0, 0, 0, 171, 872, 1, 0, 0, 0, 173, 882, 1, 0, 0, 0, 175, 888, 1, 0, 0, 0, 177, 895, 1, 0, 0, 0, 179, 903, 1, 0, 0, 0, 181, 913, 1, 0, 0, 0, 183, 918, 1, 0, 0, 0, 185, 921, 1, 0, 0, 0, 187, 928, 1, 0, 0, 0, 189, 933, 1, 0, 0, 0, 191, 937, 1, 0, 0, 0, 193, 942, 1, 0, 0, 0, 195, 947, 1, 0, 0, 0, 197, 953, 1, 0, 0, 0, 199, 959, 1, 0, 0, 0, 201, 967, 1, 0, 0, 0, 203, 970, 1, 0, 0, 0, 205, 974, 1, 0, 0, 0, 207, 982, 1, 0, 0, 0, 209, 987, 1, 0, 0, 0, 211, 990, 1, 0, 0, 0, 213, 997, 1, 0, 0, 0, 215, 1000, 1, 0, 0, 0, 217, 1003, 1, 0, 0, 0, 219, 1009, 1, 0, 0, 0, 221, 1015, 1, 0, 0, 0, 223, 1020, 1, 0, 0, 0, 225, 1027, 1, 0, 0, 0, 227, 1035, 1, 0, 0, 0, 229, 1041, 1, 0, 0, 0, 231, 1047, 1, 0, 0, 0, 233, 1057, 1, 0, 0, 0, 235, 1068, 1, 0, 0, 0, 237, 1075, 1, 0, 0, 0, 239, 1083, 1, 0, 0, 0, 241, 1091, 1, 0, 0, 0, 243, 1098, 1, 0, 0, 0, 245, 1106, 1, 0, 0, 0, 247, 1115, 1, 0, 0, 0, 249, 1125, 1, 0, 0, 0, 251, 1131, 1, 0, 0, 0, 253, 1140, 1, 0, 0, 0, 255, 1144, 1, 0, 0, 0, 257, 1149, 1, 0, 0, 0, 259, 1159, 1, 0, 0, 0, 261, 1166, 1, 0, 0, 0, 263, 1170, 1, 0, 0, 0, 265, 1176, 1, 0, 0, 0, 267, 1181, 1, 0, 0, 0, 269, 1191, 1, 0, 0, 0, 271, 1196, 1, 0, 0, 0, 273, 1199, 1, 0, 0, 0, 275, 1211, 1, 0, 0, 0, 277, 1219, 1, 0, 0, 0, 279, 1225, 1, 0, 0, 0, 281, 1232, 1, 0, 0, 0, 283, 1239, 1, 0, 0, 0, 285, 1245, 1, 0, 0, 0, 287, 1252, 1, 0, 0, 0, 289, 1259, 1, 0, 0, 0, 291, 1264, 1, 0, 0, 0, 293, 1272, 1, 0, 0, 0, 295, 1277, 1, 0, 0, 0, 297, 1283, 1, 0, 0, 0, 299, 1288, 1, 0, 0, 0, 301, 1296, 1, 0, 0, 0, 303, 1308, 1, 0, 0, 0, 305, 1313, 1, 0, 0, 0, 307, 1323, 1, 0, 0, 0, 309, 1329, 1, 0, 0, 0, 311, 1339, 1, 0, 0, 0, 313, 1349, 1, 0, 0, 0, 315, 1357, 1, 0, 0, 0, 317, 1367, 1, 0, 0, 0, 319, 1377, 1, 0, 0, 0, 321, 1388, 1, 0, 0, 0, 323, 1392, 1, 0, 0, 0, 325, 1403, 1, 0, 0, 0, 327, 1408, 1, 0, 0, 0, 329, 1418, 1, 0, 0, 0, 331, 1424, 1, 0, 0, 0, 333, 1437, 1, 0, 0, 0, 335, 1442, 1, 0, 0, 0, 337, 1453, 1, 0, 0, 0, 339, 1463, 1, 0, 0, 0, 341, 1470, 1, 0, 0, 0, 343, 1477, 1, 0, 0, 0, 345, 1482, 1, 0, 0, 0, 347, 1488, 1, 0, 0, 0, 349, 1495, 1, 0, 0, 0, 351, 1501, 1, 0, 0, 0, 353, 1507, 1, 0, 0, 0, 355, 1512, 1, 0, 0, 0, 357, 1519, 1, 0, 0, 0, 359, 1526, 1, 0, 0, 0, 361, 1534, 1, 0, 0, 0, 363, 1539, 1, 0, 0, 0, 365, 1546, 1, 0, 0, 0, 367, 1549, 1, 0, 0, 0, 369, 1592, 1, 0, 0, 0, 371, 1635, 1, 0, 0, 0, 373, 1646, 1, 0, 0, 0, 375, 1648, 1, 0, 0, 0, 377, 1659, 1, 0, 0, 0, 379, 1662, 1, 0, 0, 0, 381, 1680, 1, 0, 0, 0, 383, 1694, 1, 0, 0, 0, 385, 1698, 1, 0, 0, 0, 387, 1700, 1, 0, 0, 0, 389, 1702, 1, 0, 0, 0, 391, 392, 5, 59, 0, 0, 392, 2, 1, 0, 0, 0, 393, 394, 5, 46, 0, 0, 394, 4, 1, 0, 0, 0, 395, 396, 5, 40, 0, 0, 396, 6, 1, 0, 0, 0, 397, 398, 5, 41, 0, 0, 398, 8, 1, 0, 0, 0, 399, 400, 5, 44, 0, 0, 400, 10, 1, 0, 0, 0, 401, 402, 5, 61, 0, 0, 402, 12, 1, 0, 0, 0, 403, 404, 5, 42, 0, 0, 404, 14, 1, 0, 0, 0, 405, 406, 5, 43, 0, 0, 406, 16, 1, 0, 0, 0, 407, 408, 5, 45, 0, 0, 408, 18, 1, 0, 0, 0, 409, 410, 5, 126, 0, 0, 410, 20, 1, 0, 0, 0, 411, 412, 5, 124, 0, 0, 412, 413, 5, 124, 0, 0, 413, 22, 1, 0, 0, 0, 414, 415, 5, 47, 0, 0, 415, 24, 1, 0, 0, 0, 416, 417, 5, 37, 0, 0, 417, 26, 1, 0, 0, 0, 418, 419, 5, 60, 0, 0, 419, 420, 5, 60, 0, 0, 420, 28, 1, 0, 0, 0, 421, 422, 5, 62, 0, 0, 422, 423, 5, 62, 0, 0, 423, 30, 1, 0, 0, 0, 424, 425, 5, 38, 0, 0, 425, 32, 1, 0, 0, 0, 426, 427, 5, 124, 0, 0, 427, 34, 1, 0, 0, 0, 428, 429, 5, 60, 0, 0, 429, 36, 1, 0, 0, 0, 430, 431, 5, 60, 0, 0, 431, 432, 5, 61, 0, 0, 432, 38, 1, 0, 0, 0, 433, 434, 5, 62, 0, 0, 434, 40, 1, 0, 0, 0, 435, 436, 5, 62, 0, 0, 436, 437, 5, 61, 0, 0, 437, 42, 1, 0, 0, 0, 438, 439, 5, 61, 0, 0, 439, 440, 5, 61, 0, 0, 440, 44, 1, 0, 0, 0, 441, 442, 5, 33, 0, 0, 442, 443, 5, 61, 0, 0, 443, 46, 1, 0, 0, 0, 444, 445, 5, 60, 0, 0, 445, 446, 5, 62, 0, 0, 446, 48, 1, 0, 0, 0, 447, 448, 7, 0, 0, 0, 448, 449, 7, 1, 0, 0, 449, 450, 7, 2, 0, 0, 450, 451, 7, 3, 0, 0, 451, 452, 7, 4, 0, 0, 452, 50, 1, 0, 0, 0, 453, 454, 7, 0, 0, 0, 454, 455, 7, 5, 0, 0, 455, 456, 7, 4, 0, 0, 456, 457, 7, 6, 0, 0, 457, 458, 7, 2, 0, 0, 458, 459, 7, 7, 0, 0, 459, 52, 1, 0, 0, 0, 460, 461, 7, 0, 0, 0, 461, 462, 7, 8, 0, 0, 462, 463, 7, 8, 0, 0, 463, 54, 1, 0, 0, 0, 464, 465, 7, 0, 0, 0, 465, 466, 7, 9, 0, 0, 466, 467, 7, 4, 0, 0, 467, 468, 7, 10, 0, 0, 468, 469, 7, 3, 0, 0, 469, 56, 1, 0, 0, 0, 470, 471, 7, 0, 0, 0, 471, 472, 7, 11, 0, 0, 472, 473, 7, 11, 0, 0, 473, 58, 1, 0, 0, 0, 474, 475, 7, 0, 0, 0, 475, 476, 7, 11, 0, 0, 476, 477, 7, 4, 0, 0, 477, 478, 7, 10, 0, 0, 478, 479, 7, 3, 0, 0, 479, 60, 1, 0, 0, 0, 480, 481, 7, 0, 0, 0, 481, 482, 7, 7, 0, 0, 482, 483, 7, 0, 0, 0, 483, 484, 7, 11, 0, 0, 484, 485, 7, 12, 0, 0, 485, 486, 7, 13, 0, 0, 486, 487, 7, 10, 0, 0, 487, 62, 1, 0, 0, 0, 488, 489, 7, 0, 0, 0, 489, 490, 7, 7, 0, 0, 490, 491, 7, 8, 0, 0, 491, 64, 1, 0, 0, 0, 492, 493, 7, 0, 0, 0, 493, 494, 7, 14, 0, 0, 494, 66, 1, 0, 0, 0, 495, 496, 7, 0, 0, 0, 496, 497, 7, 14, 0, 0, 497, 498, 7, 5, 0, 0, 498, 68, 1, 0, 0, 0, 499, 500, 7, 0, 0, 0, 500, 501, 7, 4, 0, 0, 501, 502, 7, 4, 0, 0, 502, 503, 7, 0, 0, 0, 503, 504, 7, 5, 0, 0, 504, 505, 7, 15, 0, 0, 505, 70, 1, 0, 0, 0, 506, 507, 7, 0, 0, 0, 507, 508, 7, 16, 0, 0, 508, 509, 7, 4, 0, 0, 509, 510, 7, 2, 0, 0, 510, 511, 7, 6, 0, 0, 511, 512, 7, 7, 0, 0, 512, 513, 7, 5, 0, 0, 513, 514, 7, 3, 0, 0, 514, 515, 7, 10, 0, 0, 515, 516, 7, 17, 0, 0, 516, 517, 7, 10, 0, 0, 517, 518, 7, 7, 0, 0, 518, 519, 7, 4, 0, 0, 519, 72, 1, 0, 0, 0, 520, 521, 7, 1, 0, 0, 521, 522, 7, 10, 0, 0, 522, 523, 7, 9, 0, 0, 523, 524, 7, 2, 0, 0, 524, 525, 7, 3, 0, 0, 525, 526, 7, 10, 0, 0, 526, 74, 1, 0, 0, 0, 527, 528, 7, 1, 0, 0, 528, 529, 7, 10, 0, 0, 529, 530, 7, 18, 0, 0, 530, 531, 7, 6, 0, 0, 531, 532, 7, 7, 0, 0, 532, 76, 1, 0, 0, 0, 533, 534, 7, 1, 0, 0, 534, 535, 7, 10, 0, 0, 535, 536, 7, 4, 0, 0, 536, 537, 7, 19, 0, 0, 537, 538, 7, 10, 0, 0, 538, 539, 7, 10, 0, 0, 539, 540, 7, 7, 0, 0, 540, 78, 1, 0, 0, 0, 541, 542, 7, 1, 0, 0, 542, 543, 7, 12, 0, 0, 543, 80, 1, 0, 0, 0, 544, 545, 7, 5, 0, 0, 545, 546, 7, 0, 0, 0, 546, 547, 7, 14, 0, 0, 547, 548, 7, 5, 0, 0, 548, 549, 7, 0, 0, 0, 549, 550, 7, 8, 0, 0, 550, 551, 7, 10, 0, 0, 551, 82, 1, 0, 0, 0, 552, 553, 7, 5, 0, 0, 553, 554, 7, 0, 0, 0, 554, 555, 7, 14, 0, 0, 555, 556, 7, 10, 0, 0, 556, 84, 1, 0, 0, 0, 557, 558, 7, 5, 0, 0, 558, 559, 7, 0, 0, 0, 559, 560, 7, 14, 0, 0, 560, 561, 7, 4, 0, 0, 561, 86, 1, 0, 0, 0, 562, 563, 7, 5, 0, 0, 563, 564, 7, 15, 0, 0, 564, 565, 7, 10, 0, 0, 565, 566, 7, 5, 0, 0, 566, 567, 7, 20, 0, 0, 567, 88, 1, 0, 0, 0, 568, 569, 7, 5, 0, 0, 569, 570, 7, 2, 0, 0, 570, 571, 7, 11, 0, 0, 571, 572, 7, 11, 0, 0, 572, 573, 7, 0, 0, 0, 573, 574, 7, 4, 0, 0, 574, 575, 7, 10, 0, 0, 575, 90, 1, 0, 0, 0, 576, 577, 7, 5, 0, 0, 577, 578, 7, 2, 0, 0, 578, 579, 7, 11, 0, 0, 579, 580, 7, 16, 0, 0, 580, 581, 7, 17, 0, 0, 581, 582, 7, 7, 0, 0, 582, 92, 1, 0, 0, 0, 583, 584, 7, 5, 0, 0, 584, 585, 7, 2, 0, 0, 585, 586, 7, 17, 0, 0, 586, 587, 7, 17, 0, 0, 587, 588, 7, 6, 0, 0, 588, 589, 7, 4, 0, 0, 589, 94, 1, 0, 0, 0, 590, 591, 7, 5, 0, 0, 591, 592, 7, 2, 0, 0, 592, 593, 7, 7, 0, 0, 593, 594, 7, 9, 0, 0, 594, 595, 7, 11, 0, 0, 595, 596, 7, 6, 0, 0, 596, 597, 7, 5, 0, 0, 597, 598, 7, 4, 0, 0, 598, 96, 1, 0, 0, 0, 599, 600, 7, 5, 0, 0, 600, 601, 7, 2, 0, 0, 601, 602, 7, 7, 0, 0, 602, 603, 7, 14, 0, 0, 603, 604, 7, 4, 0, 0, 604, 605, 7, 3, 0, 0, 605, 606, 7, 0, 0, 0, 606, 607, 7, 6, 0, 0, 607, 608, 7, 7, 0, 0, 608, 609, 7, 4, 0, 0, 609, 98, 1, 0, 0, 0, 610, 611, 7, 5, 0, 0, 611, 612, 7, 3, 0, 0, 612, 613, 7, 10, 0, 0, 613, 614, 7, 0, 0, 0, 614, 615, 7, 4, 0, 0, 615, 616, 7, 10, 0, 0, 616, 100, 1, 0, 0, 0, 617, 618, 7, 5, 0, 0, 618, 619, 7, 3, 0, 0, 619, 620, 7, 2, 0, 0, 620, 621, 7, 14, 0, 0, 621, 622, 7, 14, 0, 0, 622, 102, 1, 0, 0, 0, 623, 624, 7, 5, 0, 0, 624, 625, 7, 16, 0, 0, 625, 626, 7, 3, 0, 0, 626, 627, 7, 3, 0, 0, 627, 628, 7, 10, 0, 0, 628, 629, 7, 7, 0, 0, 629, 630, 7, 4, 0, 0, 630, 631, 5, 95, 0, 0, 631, 632, 7, 8, 0, 0, 632, 633, 7, 0, 0, 0, 633, 634, 7, 4, 0, 0, 634, 635, 7, 10, 0, 0, 635, 104, 1, 0, 0, 0, 636, 637, 7, 5, 0, 0, 637, 638, 7, 16, 0, 0, 638, 639, 7, 3, 0, 0, 639, 640, 7, 3, 0, 0, 640, 641, 7, 10, 0, 0, 641, 642, 7, 7, 0, 0, 642, 643, 7, 4, 0, 0, 643, 644, 5, 95, 0, 0, 644, 645, 7, 4, 0, 0, 645, 646, 7, 6, 0, 0, 646, 647, 7, 17, 0, 0, 647, 648, 7, 10, 0, 0, 648, 106, 1, 0, 0, 0, 649, 650, 7, 5, 0, 0, 650, 651, 7, 16, 0, 0, 651, 652, 7, 3, 0, 0, 652, 653, 7, 3, 0, 0, 653, 654, 7, 10, 0, 0, 654, 655, 7, 7, 0, 0, 655, 656, 7, 4, 0, 0, 656, 657, 5, 95, 0, 0, 657, 658, 7, 4, 0, 0, 658, 659, 7, 6, 0, 0, 659, 660, 7, 17, 0, 0, 660, 661, 7, 10, 0, 0, 661, 662, 7, 14, 0, 0, 662, 663, 7, 4, 0, 0, 663, 664, 7, 0, 0, 0, 664, 665, 7, 17, 0, 0, 665, 666, 7, 21, 0, 0, 666, 108, 1, 0, 0, 0, 667, 668, 7, 8, 0, 0, 668, 669, 7, 0, 0, 0, 669, 670, 7, 4, 0, 0, 670, 671, 7, 0, 0, 0, 671, 672, 7, 1, 0, 0, 672, 673, 7, 0, 0, 0, 673, 674, 7, 14, 0, 0, 674, 675, 7, 10, 0, 0, 675, 110, 1, 0, 0, 0, 676, 677, 7, 8, 0, 0, 677, 678, 7, 10, 0, 0, 678, 679, 7, 9, 0, 0, 679, 680, 7, 0, 0, 0, 680, 681, 7, 16, 0, 0, 681, 682, 7, 11, 0, 0, 682, 683, 7, 4, 0, 0, 683, 112, 1, 0, 0, 0, 684, 685, 7, 8, 0, 0, 685, 686, 7, 10, 0, 0, 686, 687, 7, 9, 0, 0, 687, 688, 7, 10, 0, 0, 688, 689, 7, 3, 0, 0, 689, 690, 7, 3, 0, 0, 690, 691, 7, 0, 0, 0, 691, 692, 7, 1, 0, 0, 692, 693, 7, 11, 0, 0, 693, 694, 7, 10, 0, 0, 694, 114, 1, 0, 0, 0, 695, 696, 7, 8, 0, 0, 696, 697, 7, 10, 0, 0, 697, 698, 7, 9, 0, 0, 698, 699, 7, 10, 0, 0, 699, 700, 7, 3, 0, 0, 700, 701, 7, 3, 0, 0, 701, 702, 7, 10, 0, 0, 702, 703, 7, 8, 0, 0, 703, 116, 1, 0, 0, 0, 704, 705, 7, 8, 0, 0, 705, 706, 7, 10, 0, 0, 706, 707, 7, 11, 0, 0, 707, 708, 7, 10, 0, 0, 708, 709, 7, 4, 0, 0, 709, 710, 7, 10, 0, 0, 710, 118, 1, 0, 0, 0, 711, 712, 7, 8, 0, 0, 712, 713, 7, 10, 0, 0, 713, 714, 7, 14, 0, 0, 714, 715, 7, 5, 0, 0, 715, 120, 1, 0, 0, 0, 716, 717, 7, 8, 0, 0, 717, 718, 7, 10, 0, 0, 718, 719, 7, 4, 0, 0, 719, 720, 7, 0, 0, 0, 720, 721, 7, 5, 0, 0, 721, 722, 7, 15, 0, 0, 722, 122, 1, 0, 0, 0, 723, 724, 7, 8, 0, 0, 724, 725, 7, 6, 0, 0, 725, 726, 7, 14, 0, 0, 726, 727, 7, 4, 0, 0, 727, 728, 7, 6, 0, 0, 728, 729, 7, 7, 0, 0, 729, 730, 7, 5, 0, 0, 730, 731, 7, 4, 0, 0, 731, 124, 1, 0, 0, 0, 732, 733, 7, 8, 0, 0, 733, 734, 7, 3, 0, 0, 734, 735, 7, 2, 0, 0, 735, 736, 7, 21, 0, 0, 736, 126, 1, 0, 0, 0, 737, 738, 7, 10, 0, 0, 738, 739, 7, 0, 0, 0, 739, 740, 7, 5, 0, 0, 740, 741, 7, 15, 0, 0, 741, 128, 1, 0, 0, 0, 742, 743, 7, 10, 0, 0, 743, 744, 7, 11, 0, 0, 744, 745, 7, 14, 0, 0, 745, 746, 7, 10, 0, 0, 746, 130, 1, 0, 0, 0, 747, 748, 7, 10, 0, 0, 748, 749, 7, 7, 0, 0, 749, 750, 7, 8, 0, 0, 750, 132, 1, 0, 0, 0, 751, 752, 7, 10, 0, 0, 752, 753, 7, 14, 0, 0, 753, 754, 7, 5, 0, 0, 754, 755, 7, 0, 0, 0, 755, 756, 7, 21, 0, 0, 756, 757, 7, 10, 0, 0, 757, 134, 1, 0, 0, 0, 758, 759, 7, 10, 0, 0, 759, 760, 7, 22, 0, 0, 760, 761, 7, 5, 0, 0, 761, 762, 7, 10, 0, 0, 762, 763, 7, 21, 0, 0, 763, 764, 7, 4, 0, 0, 764, 136, 1, 0, 0, 0, 765, 766, 7, 10, 0, 0, 766, 767, 7, 22, 0, 0, 767, 768, 7, 5, 0, 0, 768, 769, 7, 11, 0, 0, 769, 770, 7, 16, 0, 0, 770, 771, 7, 14, 0, 0, 771, 772, 7, 6, 0, 0, 772, 773, 7, 23, 0, 0, 773, 774, 7, 10, 0, 0, 774, 138, 1, 0, 0, 0, 775, 776, 7, 10, 0, 0, 776, 777, 7, 22, 0, 0, 777, 778, 7, 6, 0, 0, 778, 779, 7, 14, 0, 0, 779, 780, 7, 4, 0, 0, 780, 781, 7, 14, 0, 0, 781, 140, 1, 0, 0, 0, 782, 783, 7, 10, 0, 0, 783, 784, 7, 22, 0, 0, 784, 785, 7, 21, 0, 0, 785, 786, 7, 11, 0, 0, 786, 787, 7, 0, 0, 0, 787, 788, 7, 6, 0, 0, 788, 789, 7, 7, 0, 0, 789, 142, 1, 0, 0, 0, 790, 791, 7, 9, 0, 0, 791, 792, 7, 0, 0, 0, 792, 793, 7, 6, 0, 0, 793, 794, 7, 11, 0, 0, 794, 144, 1, 0, 0, 0, 795, 796, 7, 9, 0, 0, 796, 797, 7, 2, 0, 0, 797, 798, 7, 3, 0, 0, 798, 146, 1, 0, 0, 0, 799, 800, 7, 9, 0, 0, 800, 801, 7, 2, 0, 0, 801, 802, 7, 3, 0, 0, 802, 803, 7, 10, 0, 0, 803, 804, 7, 6, 0, 0, 804, 805, 7, 18, 0, 0, 805, 806, 7, 7, 0, 0, 806, 148, 1, 0, 0, 0, 807, 808, 7, 9, 0, 0, 808, 809, 7, 3, 0, 0, 809, 810, 7, 2, 0, 0, 810, 811, 7, 17, 0, 0, 811, 150, 1, 0, 0, 0, 812, 813, 7, 9, 0, 0, 813, 814, 7, 16, 0, 0, 814, 815, 7, 11, 0, 0, 815, 816, 7, 11, 0, 0, 816, 152, 1, 0, 0, 0, 817, 818, 7, 18, 0, 0, 818, 819, 7, 11, 0, 0, 819, 820, 7, 2, 0, 0, 820, 821, 7, 1, 0, 0, 821, 154, 1, 0, 0, 0, 822, 823, 7, 18, 0, 0, 823, 824, 7, 3, 0, 0, 824, 825, 7, 2, 0, 0, 825, 826, 7, 16, 0, 0, 826, 827, 7, 21, 0, 0, 827, 156, 1, 0, 0, 0, 828, 829, 7, 15, 0, 0, 829, 830, 7, 0, 0, 0, 830, 831, 7, 23, 0, 0, 831, 832, 7, 6, 0, 0, 832, 833, 7, 7, 0, 0, 833, 834, 7, 18, 0, 0, 834, 158, 1, 0, 0, 0, 835, 836, 7, 6, 0, 0, 836, 837, 7, 9, 0, 0, 837, 160, 1, 0, 0, 0, 838, 839, 7, 6, 0, 0, 839, 840, 7, 18, 0, 0, 840, 841, 7, 7, 0, 0, 841, 842, 7, 2, 0, 0, 842, 843, 7, 3, 0, 0, 843, 844, 7, 10, 0, 0, 844, 162, 1, 0, 0, 0, 845, 846, 7, 6, 0, 0, 846, 847, 7, 17, 0, 0, 847, 848, 7, 17, 0, 0, 848, 849, 7, 10, 0, 0, 849, 850, 7, 8, 0, 0, 850, 851, 7, 6, 0, 0, 851, 852, 7, 0, 0, 0, 852, 853, 7, 4, 0, 0, 853, 854, 7, 10, 0, 0, 854, 164, 1, 0, 0, 0, 855, 856, 7, 6, 0, 0, 856, 857, 7, 7, 0, 0, 857, 166, 1, 0, 0, 0, 858, 859, 7, 6, 0, 0, 859, 860, 7, 7, 0, 0, 860, 861, 7, 8, 0, 0, 861, 862, 7, 10, 0, 0, 862, 863, 7, 22, 0, 0, 863, 168, 1, 0, 0, 0, 864, 865, 7, 6, 0, 0, 865, 866, 7, 7, 0, 0, 866, 867, 7, 8, 0, 0, 867, 868, 7, 10, 0, 0, 868, 869, 7, 22, 0, 0, 869, 870, 7, 10, 0, 0, 870, 871, 7, 8, 0, 0, 871, 170, 1, 0, 0, 0, 872, 873, 7, 6, 0, 0, 873, 874, 7, 7, 0, 0, 874, 875, 7, 6, 0, 0, 875, 876, 7, 4, 0, 0, 876, 877, 7, 6, 0, 0, 877, 878, 7, 0, 0, 0, 878, 879, 7, 11, 0, 0, 879, 880, 7, 11, 0, 0, 880, 881, 7, 12, 0, 0, 881, 172, 1, 0, 0, 0, 882, 883, 7, 6, 0, 0, 883, 884, 7, 7, 0, 0, 884, 885, 7, 7, 0, 0, 885, 886, 7, 10, 0, 0, 886, 887, 7, 3, 0, 0, 887, 174, 1, 0, 0, 0, 888, 889, 7, 6, 0, 0, 889, 890, 7, 7, 0, 0, 890, 891, 7, 14, 0, 0, 891, 892, 7, 10, 0, 0, 892, 893, 7, 3, 0, 0, 893, 894, 7, 4, 0, 0, 894, 176, 1, 0, 0, 0, 895, 896, 7, 6, 0, 0, 896, 897, 7, 7, 0, 0, 897, 898, 7, 14, 0, 0, 898, 899, 7, 4, 0, 0, 899, 900, 7, 10, 0, 0, 900, 901, 7, 0, 0, 0, 901, 902, 7, 8, 0, 0, 902, 178, 1, 0, 0, 0, 903, 904, 7, 6, 0, 0, 904, 905, 7, 7, 0, 0, 905, 906, 7, 4, 0, 0, 906, 907, 7, 10, 0, 0, 907, 908, 7, 3, 0, 0, 908, 909, 7, 14, 0, 0, 909, 910, 7, 10, 0, 0, 910, 911, 7, 5, 0, 0, 911, 912, 7, 4, 0, 0, 912, 180, 1, 0, 0, 0, 913, 914, 7, 6, 0, 0, 914, 915, 7, 7, 0, 0, 915, 916, 7, 4, 0, 0, 916, 917, 7, 2, 0, 0, 917, 182, 1, 0, 0, 0, 918, 919, 7, 6, 0, 0, 919, 920, 7, 14, 0, 0, 920, 184, 1, 0, 0, 0, 921, 922, 7, 6, 0, 0, 922, 923, 7, 14, 0, 0, 923, 924, 7, 7, 0, 0, 924, 925, 7, 16, 0, 0, 925, 926, 7, 11, 0, 0, 926, 927, 7, 11, 0, 0, 927, 186, 1, 0, 0, 0, 928, 929, 7, 24, 0, 0, 929, 930, 7, 2, 0, 0, 930, 931, 7, 6, 0, 0, 931, 932, 7, 7, 0, 0, 932, 188, 1, 0, 0, 0, 933, 934, 7, 20, 0, 0, 934, 935, 7, 10, 0, 0, 935, 936, 7, 12, 0, 0, 936, 190, 1, 0, 0, 0, 937, 938, 7, 11, 0, 0, 938, 939, 7, 10, 0, 0, 939, 940, 7, 9, 0, 0, 940, 941, 7, 4, 0, 0, 941, 192, 1, 0, 0, 0, 942, 943, 7, 11, 0, 0, 943, 944, 7, 6, 0, 0, 944, 945, 7, 20, 0, 0, 945, 946, 7, 10, 0, 0, 946, 194, 1, 0, 0, 0, 947, 948, 7, 11, 0, 0, 948, 949, 7, 6, 0, 0, 949, 950, 7, 17, 0, 0, 950, 951, 7, 6, 0, 0, 951, 952, 7, 4, 0, 0, 952, 196, 1, 0, 0, 0, 953, 954, 7, 17, 0, 0, 954, 955, 7, 0, 0, 0, 955, 956, 7, 4, 0, 0, 956, 957, 7, 5, 0, 0, 957, 958, 7, 15, 0, 0, 958, 198, 1, 0, 0, 0, 959, 960, 7, 7, 0, 0, 960, 961, 7, 0, 0, 0, 961, 962, 7, 4, 0, 0, 962, 963, 7, 16, 0, 0, 963, 964, 7, 3, 0, 0, 964, 965, 7, 0, 0, 0, 965, 966, 7, 11, 0, 0, 966, 200, 1, 0, 0, 0, 967, 968, 7, 7, 0, 0, 968, 969, 7, 2, 0, 0, 969, 202, 1, 0, 0, 0, 970, 971, 7, 7, 0, 0, 971, 972, 7, 2, 0, 0, 972, 973, 7, 4, 0, 0, 973, 204, 1, 0, 0, 0, 974, 975, 7, 7, 0, 0, 975, 976, 7, 2, 0, 0, 976, 977, 7, 4, 0, 0, 977, 978, 7, 7, 0, 0, 978, 979, 7, 16, 0, 0, 979, 980, 7, 11, 0, 0, 980, 981, 7, 11, 0, 0, 981, 206, 1, 0, 0, 0, 982, 983, 7, 7, 0, 0, 983, 984, 7, 16, 0, 0, 984, 985, 7, 11, 0, 0, 985, 986, 7, 11, 0, 0, 986, 208, 1, 0, 0, 0, 987, 988, 7, 2, 0, 0, 988, 989, 7, 9, 0, 0, 989, 210, 1, 0, 0, 0, 990, 991, 7, 2, 0, 0, 991, 992, 7, 9, 0, 0, 992, 993, 7, 9, 0, 0, 993, 994, 7, 14, 0, 0, 994, 995, 7, 10, 0, 0, 995, 996, 7, 4, 0, 0, 996, 212, 1, 0, 0, 0, 997, 998, 7, 2, 0, 0, 998, 999, 7, 7, 0, 0, 999, 214, 1, 0, 0, 0, 1000, 1001, 7, 2, 0, 0, 1001, 1002, 7, 3, 0, 0, 1002, 216, 1, 0, 0, 0, 1003, 1004, 7, 2, 0, 0, 1004, 1005, 7, 3, 0, 0, 1005, 1006, 7, 8, 0, 0, 1006, 1007, 7, 10, 0, 0, 1007, 1008, 7, 3, 0, 0, 1008, 218, 1, 0, 0, 0, 1009, 1010, 7, 2, 0, 0, 1010, 1011, 7, 16, 0, 0, 1011, 1012, 7, 4, 0, 0, 1012, 1013, 7, 10, 0, 0, 1013, 1014, 7, 3, 0, 0, 1014, 220, 1, 0, 0, 0, 1015, 1016, 7, 21, 0, 0, 1016, 1017, 7, 11, 0, 0, 1017, 1018, 7, 0, 0, 0, 1018, 1019, 7, 7, 0, 0, 1019, 222, 1, 0, 0, 0, 1020, 1021, 7, 21, 0, 0, 1021, 1022, 7, 3, 0, 0, 1022, 1023, 7, 0, 0, 0, 1023, 1024, 7, 18, 0, 0, 1024, 1025, 7, 17, 0, 0, 1025, 1026, 7, 0, 0, 0, 1026, 224, 1, 0, 0, 0, 1027, 1028, 7, 21, 0, 0, 1028, 1029, 7, 3, 0, 0, 1029, 1030, 7, 6, 0, 0, 1030, 1031, 7, 17, 0, 0, 1031, 1032, 7, 0, 0, 0, 1032, 1033, 7, 3, 0, 0, 1033, 1034, 7, 12, 0, 0, 1034, 226, 1, 0, 0, 0, 1035, 1036, 7, 25, 0, 0, 1036, 1037, 7, 16, 0, 0, 1037, 1038, 7, 10, 0, 0, 1038, 1039, 7, 3, 0, 0, 1039, 1040, 7, 12, 0, 0, 1040, 228, 1, 0, 0, 0, 1041, 1042, 7, 3, 0, 0, 1042, 1043, 7, 0, 0, 0, 1043, 1044, 7, 6, 0, 0, 1044, 1045, 7, 14, 0, 0, 1045, 1046, 7, 10, 0, 0, 1046, 230, 1, 0, 0, 0, 1047, 1048, 7, 3, 0, 0, 1048, 1049, 7, 10, 0, 0, 1049, 1050, 7, 5, 0, 0, 1050, 1051, 7, 16, 0, 0, 1051, 1052, 7, 3, 0, 0, 1052, 1053, 7, 14, 0, 0, 1053, 1054, 7, 6, 0, 0, 1054, 1055, 7, 23, 0, 0, 1055, 1056, 7, 10, 0, 0, 1056, 232, 1, 0, 0, 0, 1057, 1058, 7, 3, 0, 0, 1058, 1059, 7, 10, 0, 0, 1059, 1060, 7, 9, 0, 0, 1060, 1061, 7, 10, 0, 0, 1061, 1062, 7, 3, 0, 0, 1062, 1063, 7, 10, 0, 0, 1063, 1064, 7, 7, 0, 0, 1064, 1065, 7, 5, 0, 0, 1065, 1066, 7, 10, 0, 0, 1066, 1067, 7, 14, 0, 0, 1067, 234, 1, 0, 0, 0, 1068, 1069, 7, 3, 0, 0, 1069, 1070, 7, 10, 0, 0, 1070, 1071, 7, 18, 0, 0, 1071, 1072, 7, 10, 0, 0, 1072, 1073, 7, 22, 0, 0, 1073, 1074, 7, 21, 0, 0, 1074, 236, 1, 0, 0, 0, 1075, 1076, 7, 3, 0, 0, 1076, 1077, 7, 10, 0, 0, 1077, 1078, 7, 6, 0, 0, 1078, 1079, 7, 7, 0, 0, 1079, 1080, 7, 8, 0, 0, 1080, 1081, 7, 10, 0, 0, 1081, 1082, 7, 22, 0, 0, 1082, 238, 1, 0, 0, 0, 1083, 1084, 7, 3, 0, 0, 1084, 1085, 7, 10, 0, 0, 1085, 1086, 7, 11, 0, 0, 1086, 1087, 7, 10, 0, 0, 1087, 1088, 7, 0, 0, 0, 1088, 1089, 7, 14, 0, 0, 1089, 1090, 7, 10, 0, 0, 1090, 240, 1, 0, 0, 0, 1091, 1092, 7, 3, 0, 0, 1092, 1093, 7, 10, 0, 0, 1093, 1094, 7, 7, 0, 0, 1094, 1095, 7, 0, 0, 0, 1095, 1096, 7, 17, 0, 0, 1096, 1097, 7, 10, 0, 0, 1097, 242, 1, 0, 0, 0, 1098, 1099, 7, 3, 0, 0, 1099, 1100, 7, 10, 0, 0, 1100, 1101, 7, 21, 0, 0, 1101, 1102, 7, 11, 0, 0, 1102, 1103, 7, 0, 0, 0, 1103, 1104, 7, 5, 0, 0, 1104, 1105, 7, 10, 0, 0, 1105, 244, 1, 0, 0, 0, 1106, 1107, 7, 3, 0, 0, 1107, 1108, 7, 10, 0, 0, 1108, 1109, 7, 14, 0, 0, 1109, 1110, 7, 4, 0, 0, 1110, 1111, 7, 3, 0, 0, 1111, 1112, 7, 6, 0, 0, 1112, 1113, 7, 5, 0, 0, 1113, 1114, 7, 4, 0, 0, 1114, 246, 1, 0, 0, 0, 1115, 1116, 7, 3, 0, 0, 1116, 1117, 7, 10, 0, 0, 1117, 1118, 7, 4, 0, 0, 1118, 1119, 7, 16, 0, 0, 1119, 1120, 7, 3, 0, 0, 1120, 1121, 7, 7, 0, 0, 1121, 1122, 7, 6, 0, 0, 1122, 1123, 7, 7, 0, 0, 1123, 1124, 7, 18, 0, 0, 1124, 248, 1, 0, 0, 0, 1125, 1126, 7, 3, 0, 0, 1126, 1127, 7, 6, 0, 0, 1127, 1128, 7, 18, 0, 0, 1128, 1129, 7, 15, 0, 0, 1129, 1130, 7, 4, 0, 0, 1130, 250, 1, 0, 0, 0, 1131, 1132, 7, 3, 0, 0, 1132, 1133, 7, 2, 0, 0, 1133, 1134, 7, 11, 0, 0, 1134, 1135, 7, 11, 0, 0, 1135, 1136, 7, 1, 0, 0, 1136, 1137, 7, 0, 0, 0, 1137, 1138, 7, 5, 0, 0, 1138, 1139, 7, 20, 0, 0, 1139, 252, 1, 0, 0, 0, 1140, 1141, 7, 3, 0, 0, 1141, 1142, 7, 2, 0, 0, 1142, 1143, 7, 19, 0, 0, 1143, 254, 1, 0, 0, 0, 1144, 1145, 7, 3, 0, 0, 1145, 1146, 7, 2, 0, 0, 1146, 1147, 7, 19, 0, 0, 1147, 1148, 7, 14, 0, 0, 1148, 256, 1, 0, 0, 0, 1149, 1150, 7, 14, 0, 0, 1150, 1151, 7, 0, 0, 0, 1151, 1152, 7, 23, 0, 0, 1152, 1153, 7, 10, 0, 0, 1153, 1154, 7, 21, 0, 0, 1154, 1155, 7, 2, 0, 0, 1155, 1156, 7, 6, 0, 0, 1156, 1157, 7, 7, 0, 0, 1157, 1158, 7, 4, 0, 0, 1158, 258, 1, 0, 0, 0, 1159, 1160, 7, 14, 0, 0, 1160, 1161, 7, 10, 0, 0, 1161, 1162, 7, 11, 0, 0, 1162, 1163, 7, 10, 0, 0, 1163, 1164, 7, 5, 0, 0, 1164, 1165, 7, 4, 0, 0, 1165, 260, 1, 0, 0, 0, 1166, 1167, 7, 14, 0, 0, 1167, 1168, 7, 10, 0, 0, 1168, 1169, 7, 4, 0, 0, 1169, 262, 1, 0, 0, 0, 1170, 1171, 7, 4, 0, 0, 1171, 1172, 7, 0, 0, 0, 1172, 1173, 7, 1, 0, 0, 1173, 1174, 7, 11, 0, 0, 1174, 1175, 7, 10, 0, 0, 1175, 264, 1, 0, 0, 0, 1176, 1177, 7, 4, 0, 0, 1177, 1178, 7, 10, 0, 0, 1178, 1179, 7, 17, 0, 0, 1179, 1180, 7, 21, 0, 0, 1180, 266, 1, 0, 0, 0, 1181, 1182, 7, 4, 0, 0, 1182, 1183, 7, 10, 0, 0, 1183, 1184, 7, 17, 0, 0, 1184, 1185, 7, 21, 0, 0, 1185, 1186, 7, 2, 0, 0, 1186, 1187, 7, 3, 0, 0, 1187, 1188, 7, 0, 0, 0, 1188, 1189, 7, 3, 0, 0, 1189, 1190, 7, 12, 0, 0, 1190, 268, 1, 0, 0, 0, 1191, 1192, 7, 4, 0, 0, 1192, 1193, 7, 15, 0, 0, 1193, 1194, 7, 10, 0, 0, 1194, 1195, 7, 7, 0, 0, 1195, 270, 1, 0, 0, 0, 1196, 1197, 7, 4, 0, 0, 1197, 1198, 7, 2, 0, 0, 1198, 272, 1, 0, 0, 0, 1199, 1200, 7, 4, 0, 0, 1200, 1201, 7, 3, 0, 0, 1201, 1202, 7, 0, 0, 0, 1202, 1203, 7, 7, 0, 0, 1203, 1204, 7, 14, 0, 0, 1204, 1205, 7, 0, 0, 0, 1205, 1206, 7, 5, 0, 0, 1206, 1207, 7, 4, 0, 0, 1207, 1208, 7, 6, 0, 0, 1208, 1209, 7, 2, 0, 0, 1209, 1210, 7, 7, 0, 0, 1210, 274, 1, 0, 0, 0, 1211, 1212, 7, 4, 0, 0, 1212, 1213, 7, 3, 0, 0, 1213, 1214, 7, 6, 0, 0, 1214, 1215, 7, 18, 0, 0, 1215, 1216, 7, 18, 0, 0, 1216, 1217, 7, 10, 0, 0, 1217, 1218, 7, 3, 0, 0, 1218, 276, 1, 0, 0, 0, 1219, 1220, 7, 16, 0, 0, 1220, 1221, 7, 7, 0, 0, 1221, 1222, 7, 6, 0, 0, 1222, 1223, 7, 2, 0, 0, 1223, 1224, 7, 7, 0, 0, 1224, 278, 1, 0, 0, 0, 1225, 1226, 7, 16, 0, 0, 1226, 1227, 7, 7, 0, 0, 1227, 1228, 7, 6, 0, 0, 1228, 1229, 7, 25, 0, 0, 1229, 1230, 7, 16, 0, 0, 1230, 1231, 7, 10, 0, 0, 1231, 280, 1, 0, 0, 0, 1232, 1233, 7, 16, 0, 0, 1233, 1234, 7, 21, 0, 0, 1234, 1235, 7, 8, 0, 0, 1235, 1236, 7, 0, 0, 0, 1236, 1237, 7, 4, 0, 0, 1237, 1238, 7, 10, 0, 0, 1238, 282, 1, 0, 0, 0, 1239, 1240, 7, 16, 0, 0, 1240, 1241, 7, 14, 0, 0, 1241, 1242, 7, 6, 0, 0, 1242, 1243, 7, 7, 0, 0, 1243, 1244, 7, 18, 0, 0, 1244, 284, 1, 0, 0, 0, 1245, 1246, 7, 23, 0, 0, 1246, 1247, 7, 0, 0, 0, 1247, 1248, 7, 5, 0, 0, 1248, 1249, 7, 16, 0, 0, 1249, 1250, 7, 16, 0, 0, 1250, 1251, 7, 17, 0, 0, 1251, 286, 1, 0, 0, 0, 1252, 1253, 7, 23, 0, 0, 1253, 1254, 7, 0, 0, 0, 1254, 1255, 7, 11, 0, 0, 1255, 1256, 7, 16, 0, 0, 1256, 1257, 7, 10, 0, 0, 1257, 1258, 7, 14, 0, 0, 1258, 288, 1, 0, 0, 0, 1259, 1260, 7, 23, 0, 0, 1260, 1261, 7, 6, 0, 0, 1261, 1262, 7, 10, 0, 0, 1262, 1263, 7, 19, 0, 0, 1263, 290, 1, 0, 0, 0, 1264, 1265, 7, 23, 0, 0, 1265, 1266, 7, 6, 0, 0, 1266, 1267, 7, 3, 0, 0, 1267, 1268, 7, 4, 0, 0, 1268, 1269, 7, 16, 0, 0, 1269, 1270, 7, 0, 0, 0, 1270, 1271, 7, 11, 0, 0, 1271, 292, 1, 0, 0, 0, 1272, 1273, 7, 19, 0, 0, 1273, 1274, 7, 15, 0, 0, 1274, 1275, 7, 10, 0, 0, 1275, 1276, 7, 7, 0, 0, 1276, 294, 1, 0, 0, 0, 1277, 1278, 7, 19, 0, 0, 1278, 1279, 7, 15, 0, 0, 1279, 1280, 7, 10, 0, 0, 1280, 1281, 7, 3, 0, 0, 1281, 1282, 7, 10, 0, 0, 1282, 296, 1, 0, 0, 0, 1283, 1284, 7, 19, 0, 0, 1284, 1285, 7, 6, 0, 0, 1285, 1286, 7, 4, 0, 0, 1286, 1287, 7, 15, 0, 0, 1287, 298, 1, 0, 0, 0, 1288, 1289, 7, 19, 0, 0, 1289, 1290, 7, 6, 0, 0, 1290, 1291, 7, 4, 0, 0, 1291, 1292, 7, 15, 0, 0, 1292, 1293, 7, 2, 0, 0, 1293, 1294, 7, 16, 0, 0, 1294, 1295, 7, 4, 0, 0, 1295, 300, 1, 0, 0, 0, 1296, 1297, 7, 9, 0, 0, 1297, 1298, 7, 6, 0, 0, 1298, 1299, 7, 3, 0, 0, 1299, 1300, 7, 14, 0, 0, 1300, 1301, 7, 4, 0, 0, 1301, 1302, 5, 95, 0, 0, 1302, 1303, 7, 23, 0, 0, 1303, 1304, 7, 0, 0, 0, 1304, 1305, 7, 11, 0, 0, 1305, 1306, 7, 16, 0, 0, 1306, 1307, 7, 10, 0, 0, 1307, 302, 1, 0, 0, 0, 1308, 1309, 7, 2, 0, 0, 1309, 1310, 7, 23, 0, 0, 1310, 1311, 7, 10, 0, 0, 1311, 1312, 7, 3, 0, 0, 1312, 304, 1, 0, 0, 0, 1313, 1314, 7, 21, 0, 0, 1314, 1315, 7, 0, 0, 0, 1315, 1316, 7, 3, 0, 0, 1316, 1317, 7, 4, 0, 0, 1317, 1318, 7, 6, 0, 0, 1318, 1319, 7, 4, 0, 0, 1319, 1320, 7, 6, 0, 0, 1320, 1321, 7, 2, 0, 0, 1321, 1322, 7, 7, 0, 0, 1322, 306, 1, 0, 0, 0, 1323, 1324, 7, 3, 0, 0, 1324, 1325, 7, 0, 0, 0, 1325, 1326, 7, 7, 0, 0, 1326, 1327, 7, 18, 0, 0, 1327, 1328, 7, 10, 0, 0, 1328, 308, 1, 0, 0, 0, 1329, 1330, 7, 21, 0, 0, 1330, 1331, 7, 3, 0, 0, 1331, 1332, 7, 10, 0, 0, 1332, 1333, 7, 5, 0, 0, 1333, 1334, 7, 10, 0, 0, 1334, 1335, 7, 8, 0, 0, 1335, 1336, 7, 6, 0, 0, 1336, 1337, 7, 7, 0, 0, 1337, 1338, 7, 18, 0, 0, 1338, 310, 1, 0, 0, 0, 1339, 1340, 7, 16, 0, 0, 1340, 1341, 7, 7, 0, 0, 1341, 1342, 7, 1, 0, 0, 1342, 1343, 7, 2, 0, 0, 1343, 1344, 7, 16, 0, 0, 1344, 1345, 7, 7, 0, 0, 1345, 1346, 7, 8, 0, 0, 1346, 1347, 7, 10, 0, 0, 1347, 1348, 7, 8, 0, 0, 1348, 312, 1, 0, 0, 0, 1349, 1350, 7, 5, 0, 0, 1350, 1351, 7, 16, 0, 0, 1351, 1352, 7, 3, 0, 0, 1352, 1353, 7, 3, 0, 0, 1353, 1354, 7, 10, 0, 0, 1354, 1355, 7, 7, 0, 0, 1355, 1356, 7, 4, 0, 0, 1356, 314, 1, 0, 0, 0, 1357, 1358, 7, 9, 0, 0, 1358, 1359, 7, 2, 0, 0, 1359, 1360, 7, 11, 0, 0, 1360, 1361, 7, 11, 0, 0, 1361, 1362, 7, 2, 0, 0, 1362, 1363, 7, 19, 0, 0, 1363, 1364, 7, 6, 0, 0, 1364, 1365, 7, 7, 0, 0, 1365, 1366, 7, 18, 0, 0, 1366, 316, 1, 0, 0, 0, 1367, 1368, 7, 5, 0, 0, 1368, 1369, 7, 16, 0, 0, 1369, 1370, 7, 17, 0, 0, 1370, 1371, 7, 10, 0, 0, 1371, 1372, 5, 95, 0, 0, 1372, 1373, 7, 8, 0, 0, 1373, 1374, 7, 6, 0, 0, 1374, 1375, 7, 14, 0, 0, 1375, 1376, 7, 4, 0, 0, 1376, 318, 1, 0, 0, 0, 1377, 1378, 7, 8, 0, 0, 1378, 1379, 7, 10, 0, 0, 1379, 1380, 7, 7, 0, 0, 1380, 1381, 7, 14, 0, 0, 1381, 1382, 7, 10, 0, 0, 1382, 1383, 5, 95, 0, 0, 1383, 1384, 7, 3, 0, 0, 1384, 1385, 7, 0, 0, 0, 1385, 1386, 7, 7, 0, 0, 1386, 1387, 7, 20, 0, 0, 1387, 320, 1, 0, 0, 0, 1388, 1389, 7, 11, 0, 0, 1389, 1390, 7, 0, 0, 0, 1390, 1391, 7, 18, 0, 0, 1391, 322, 1, 0, 0, 0, 1392, 1393, 7, 11, 0, 0, 1393, 1394, 7, 0, 0, 0, 1394, 1395, 7, 14, 0, 0, 1395, 1396, 7, 4, 0, 0, 1396, 1397, 5, 95, 0, 0, 1397, 1398, 7, 23, 0, 0, 1398, 1399, 7, 0, 0, 0, 1399, 1400, 7, 11, 0, 0, 1400, 1401, 7, 16, 0, 0, 1401, 1402, 7, 10, 0, 0, 1402, 324, 1, 0, 0, 0, 1403, 1404, 7, 11, 0, 0, 1404, 1405, 7, 10, 0, 0, 1405, 1406, 7, 0, 0, 0, 1406, 1407, 7, 8, 0, 0, 1407, 326, 1, 0, 0, 0, 1408, 1409, 7, 7, 0, 0, 1409, 1410, 7, 4, 0, 0, 1410, 1411, 7, 15, 0, 0, 1411, 1412, 5, 95, 0, 0, 1412, 1413, 7, 23, 0, 0, 1413, 1414, 7, 0, 0, 0, 1414, 1415, 7, 11, 0, 0, 1415, 1416, 7, 16, 0, 0, 1416, 1417, 7, 10, 0, 0, 1417, 328, 1, 0, 0, 0, 1418, 1419, 7, 7, 0, 0, 1419, 1420, 7, 4, 0, 0, 1420, 1421, 7, 6, 0, 0, 1421, 1422, 7, 11, 0, 0, 1422, 1423, 7, 10, 0, 0, 1423, 330, 1, 0, 0, 0, 1424, 1425, 7, 21, 0, 0, 1425, 1426, 7, 10, 0, 0, 1426, 1427, 7, 3, 0, 0, 1427, 1428, 7, 5, 0, 0, 1428, 1429, 7, 10, 0, 0, 1429, 1430, 7, 7, 0, 0, 1430, 1431, 7, 4, 0, 0, 1431, 1432, 5, 95, 0, 0, 1432, 1433, 7, 3, 0, 0, 1433, 1434, 7, 0, 0, 0, 1434, 1435, 7, 7, 0, 0, 1435, 1436, 7, 20, 0, 0, 1436, 332, 1, 0, 0, 0, 1437, 1438, 7, 3, 0, 0, 1438, 1439, 7, 0, 0, 0, 1439, 1440, 7, 7, 0, 0, 1440, 1441, 7, 20, 0, 0, 1441, 334, 1, 0, 0, 0, 1442, 1443, 7, 3, 0, 0, 1443, 1444, 7, 2, 0, 0, 1444, 1445, 7, 19, 0, 0, 1445, 1446, 5, 95, 0, 0, 1446, 1447, 7, 7, 0, 0, 1447, 1448, 7, 16, 0, 0, 1448, 1449, 7, 17, 0, 0, 1449, 1450, 7, 1, 0, 0, 1450, 1451, 7, 10, 0, 0, 1451, 1452, 7, 3, 0, 0, 1452, 336, 1, 0, 0, 0, 1453, 1454, 7, 18, 0, 0, 1454, 1455, 7, 10, 0, 0, 1455, 1456, 7, 7, 0, 0, 1456, 1457, 7, 10, 0, 0, 1457, 1458, 7, 3, 0, 0, 1458, 1459, 7, 0, 0, 0, 1459, 1460, 7, 4, 0, 0, 1460, 1461, 7, 10, 0, 0, 1461, 1462, 7, 8, 0, 0, 1462, 338, 1, 0, 0, 0, 1463, 1464, 7, 0, 0, 0, 1464, 1465, 7, 11, 0, 0, 1465, 1466, 7, 19, 0, 0, 1466, 1467, 7, 0, 0, 0, 1467, 1468, 7, 12, 0, 0, 1468, 1469, 7, 14, 0, 0, 1469, 340, 1, 0, 0, 0, 1470, 1471, 7, 14, 0, 0, 1471, 1472, 7, 4, 0, 0, 1472, 1473, 7, 2, 0, 0, 1473, 1474, 7, 3, 0, 0, 1474, 1475, 7, 10, 0, 0, 1475, 1476, 7, 8, 0, 0, 1476, 342, 1, 0, 0, 0, 1477, 1478, 7, 4, 0, 0, 1478, 1479, 7, 3, 0, 0, 1479, 1480, 7, 16, 0, 0, 1480, 1481, 7, 10, 0, 0, 1481, 344, 1, 0, 0, 0, 1482, 1483, 7, 9, 0, 0, 1483, 1484, 7, 0, 0, 0, 1484, 1485, 7, 11, 0, 0, 1485, 1486, 7, 14, 0, 0, 1486, 1487, 7, 10, 0, 0, 1487, 346, 1, 0, 0, 0, 1488, 1489, 7, 19, 0, 0, 1489, 1490, 7, 6, 0, 0, 1490, 1491, 7, 7, 0, 0, 1491, 1492, 7, 8, 0, 0, 1492, 1493, 7, 2, 0, 0, 1493, 1494, 7, 19, 0, 0, 1494, 348, 1, 0, 0, 0, 1495, 1496, 7, 7, 0, 0, 1496, 1497, 7, 16, 0, 0, 1497, 1498, 7, 11, 0, 0, 1498, 1499, 7, 11, 0, 0, 1499, 1500, 7, 14, 0, 0, 1500, 350, 1, 0, 0, 0, 1501, 1502, 7, 9, 0, 0, 1502, 1503, 7, 6, 0, 0, 1503, 1504, 7, 3, 0, 0, 1504, 1505, 7, 14, 0, 0, 1505, 1506, 7, 4, 0, 0, 1506, 352, 1, 0, 0, 0, 1507, 1508, 7, 11, 0, 0, 1508, 1509, 7, 0, 0, 0, 1509, 1510, 7, 14, 0, 0, 1510, 1511, 7, 4, 0, 0, 1511, 354, 1, 0, 0, 0, 1512, 1513, 7, 9, 0, 0, 1513, 1514, 7, 6, 0, 0, 1514, 1515, 7, 11, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 1517, 7, 10, 0, 0, 1517, 1518, 7, 3, 0, 0, 1518, 356, 1, 0, 0, 0, 1519, 1520, 7, 18, 0, 0, 1520, 1521, 7, 3, 0, 0, 1521, 1522, 7, 2, 0, 0, 1522, 1523, 7, 16, 0, 0, 1523, 1524, 7, 21, 0, 0, 1524, 1525, 7, 14, 0, 0, 1525, 358, 1, 0, 0, 0, 1526, 1527, 7, 10, 0, 0, 1527, 1528, 7, 22, 0, 0, 1528, 1529, 7, 5, 0, 0, 1529, 1530, 7, 11, 0, 0, 1530, 1531, 7, 16, 0, 0, 1531, 1532, 7, 8, 0, 0, 1532, 1533, 7, 10, 0, 0, 1533, 360, 1, 0, 0, 0, 1534, 1535, 7, 4, 0, 0, 1535, 1536, 7, 6, 0, 0, 1536, 1537, 7, 10, 0, 0, 1537, 1538, 7, 14, 0, 0, 1538, 362, 1, 0, 0, 0, 1539, 1540, 7, 2, 0, 0, 1540, 1541, 7, 4, 0, 0, 1541, 1542, 7, 15, 0, 0, 1542, 1543, 7, 10, 0, 0, 1543, 1544, 7, 3, 0, 0, 1544, 1545, 7, 14, 0, 0, 1545, 364, 1, 0, 0, 0, 1546, 1547, 7, 8, 0, 0, 1547, 1548, 7, 2, 0, 0, 1548, 366, 1, 0, 0, 0, 1549, 1550, 7, 7, 0, 0, 1550, 1551, 7, 2, 0, 0, 1551, 1552, 7, 4, 0, 0, 1552, 1553, 7, 15, 0, 0, 1553, 1554, 7, 6, 0, 0, 1554, 1555, 7, 7, 0, 0, 1555, 1556, 7, 18, 0, 0, 1556, 368, 1, 0, 0, 0, 1557, 1563, 5, 34, 0, 0, 1558, 1562, 8, 26, 0, 0, 1559, 1560, 5, 34, 0, 0, 1560, 1562, 5, 34, 0, 0, 1561, 1558, 1, 0, 0, 0, 1561, 1559, 1, 0, 0, 0, 1562, 1565, 1, 0, 0, 0, 1563, 1561, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1566, 1, 0, 0, 0, 1565, 1563, 1, 0, 0, 0, 1566, 1593, 5, 34, 0, 0, 1567, 1573, 5, 96, 0, 0, 1568, 1572, 8, 27, 0, 0, 1569, 1570, 5, 96, 0, 0, 1570, 1572, 5, 96, 0, 0, 1571, 1568, 1, 0, 0, 0, 1571, 1569, 1, 0, 0, 0, 1572, 1575, 1, 0, 0, 0, 1573, 1571, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1576, 1, 0, 0, 0, 1575, 1573, 1, 0, 0, 0, 1576, 1593, 5, 96, 0, 0, 1577, 1581, 5, 91, 0, 0, 1578, 1580, 8, 28, 0, 0, 1579, 1578, 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, 1593, 5, 93, 0, 0, 1585, 1589, 7, 29, 0, 0, 1586, 1588, 7, 30, 0, 0, 1587, 1586, 1, 0, 0, 0, 1588, 1591, 1, 0, 0, 0, 1589, 1587, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 1593, 1, 0, 0, 0, 1591, 1589, 1, 0, 0, 0, 1592, 1557, 1, 0, 0, 0, 1592, 1567, 1, 0, 0, 0, 1592, 1577, 1, 0, 0, 0, 1592, 1585, 1, 0, 0, 0, 1593, 370, 1, 0, 0, 0, 1594, 1596, 3, 389, 194, 0, 1595, 1594, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 1595, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1606, 1, 0, 0, 0, 1599, 1603, 5, 46, 0, 0, 1600, 1602, 3, 389, 194, 0, 1601, 1600, 1, 0, 0, 0, 1602, 1605, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1607, 1, 0, 0, 0, 1605, 1603, 1, 0, 0, 0, 1606, 1599, 1, 0, 0, 0, 1606, 1607, 1, 0, 0, 0, 1607, 1615, 1, 0, 0, 0, 1608, 1610, 5, 46, 0, 0, 1609, 1611, 3, 389, 194, 0, 1610, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1610, 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1615, 1, 0, 0, 0, 1614, 1595, 1, 0, 0, 0, 1614, 1608, 1, 0, 0, 0, 1615, 1625, 1, 0, 0, 0, 1616, 1618, 7, 10, 0, 0, 1617, 1619, 7, 31, 0, 0, 1618, 1617, 1, 0, 0, 0, 1618, 1619, 1, 0, 0, 0, 1619, 1621, 1, 0, 0, 0, 1620, 1622, 3, 389, 194, 0, 1621, 1620, 1, 0, 0, 0, 1622, 1623, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1626, 1, 0, 0, 0, 1625, 1616, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1636, 1, 0, 0, 0, 1627, 1628, 5, 48, 0, 0, 1628, 1629, 7, 22, 0, 0, 1629, 1631, 1, 0, 0, 0, 1630, 1632, 3, 387, 193, 0, 1631, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1631, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1614, 1, 0, 0, 0, 1635, 1627, 1, 0, 0, 0, 1636, 372, 1, 0, 0, 0, 1637, 1641, 5, 63, 0, 0, 1638, 1640, 3, 389, 194, 0, 1639, 1638, 1, 0, 0, 0, 1640, 1643, 1, 0, 0, 0, 1641, 1639, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1647, 1, 0, 0, 0, 1643, 1641, 1, 0, 0, 0, 1644, 1645, 7, 32, 0, 0, 1645, 1647, 3, 369, 184, 0, 1646, 1637, 1, 0, 0, 0, 1646, 1644, 1, 0, 0, 0, 1647, 374, 1, 0, 0, 0, 1648, 1654, 5, 39, 0, 0, 1649, 1653, 8, 33, 0, 0, 1650, 1651, 5, 39, 0, 0, 1651, 1653, 5, 39, 0, 0, 1652, 1649, 1, 0, 0, 0, 1652, 1650, 1, 0, 0, 0, 1653, 1656, 1, 0, 0, 0, 1654, 1652, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1657, 1, 0, 0, 0, 1656, 1654, 1, 0, 0, 0, 1657, 1658, 5, 39, 0, 0, 1658, 376, 1, 0, 0, 0, 1659, 1660, 7, 22, 0, 0, 1660, 1661, 3, 375, 187, 0, 1661, 378, 1, 0, 0, 0, 1662, 1663, 5, 45, 0, 0, 1663, 1664, 5, 45, 0, 0, 1664, 1668, 1, 0, 0, 0, 1665, 1667, 8, 34, 0, 0, 1666, 1665, 1, 0, 0, 0, 1667, 1670, 1, 0, 0, 0, 1668, 1666, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1668, 1, 0, 0, 0, 1671, 1673, 5, 13, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1677, 5, 10, 0, 0, 1675, 1677, 5, 0, 0, 1, 1676, 1672, 1, 0, 0, 0, 1676, 1675, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1679, 6, 189, 0, 0, 1679, 380, 1, 0, 0, 0, 1680, 1681, 5, 47, 0, 0, 1681, 1682, 5, 42, 0, 0, 1682, 1686, 1, 0, 0, 0, 1683, 1685, 9, 0, 0, 0, 1684, 1683, 1, 0, 0, 0, 1685, 1688, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1686, 1684, 1, 0, 0, 0, 1687, 1689, 1, 0, 0, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1690, 5, 42, 0, 0, 1690, 1691, 5, 47, 0, 0, 1691, 1692, 1, 0, 0, 0, 1692, 1693, 6, 190, 0, 0, 1693, 382, 1, 0, 0, 0, 1694, 1695, 7, 35, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1697, 6, 191, 0, 0, 1697, 384, 1, 0, 0, 0, 1698, 1699, 9, 0, 0, 0, 1699, 386, 1, 0, 0, 0, 1700, 1701, 7, 36, 0, 0, 1701, 388, 1, 0, 0, 0, 1702, 1703, 7, 37, 0, 0, 1703, 390, 1, 0, 0, 0, 26, 0, 1561, 1563, 1571, 1573, 1581, 1589, 1592, 1597, 1603, 1606, 1612, 1614, 1618, 1623, 1625, 1633, 1635, 1641, 1646, 1652, 1654, 1668, 1672, 1676, 1686, 1, 0, 1, 0]
\ No newline at end of file
diff --git a/sqliteparser/SQLiteLexer.tokens b/sqliteparser/SQLiteLexer.tokens
new file mode 100644
index 0000000..26a9184
--- /dev/null
+++ b/sqliteparser/SQLiteLexer.tokens
@@ -0,0 +1,377 @@
+SCOL=1
+DOT=2
+OPEN_PAR=3
+CLOSE_PAR=4
+COMMA=5
+ASSIGN=6
+STAR=7
+PLUS=8
+MINUS=9
+TILDE=10
+PIPE2=11
+DIV=12
+MOD=13
+LT2=14
+GT2=15
+AMP=16
+PIPE=17
+LT=18
+LT_EQ=19
+GT=20
+GT_EQ=21
+EQ=22
+NOT_EQ1=23
+NOT_EQ2=24
+ABORT_=25
+ACTION_=26
+ADD_=27
+AFTER_=28
+ALL_=29
+ALTER_=30
+ANALYZE_=31
+AND_=32
+AS_=33
+ASC_=34
+ATTACH_=35
+AUTOINCREMENT_=36
+BEFORE_=37
+BEGIN_=38
+BETWEEN_=39
+BY_=40
+CASCADE_=41
+CASE_=42
+CAST_=43
+CHECK_=44
+COLLATE_=45
+COLUMN_=46
+COMMIT_=47
+CONFLICT_=48
+CONSTRAINT_=49
+CREATE_=50
+CROSS_=51
+CURRENT_DATE_=52
+CURRENT_TIME_=53
+CURRENT_TIMESTAMP_=54
+DATABASE_=55
+DEFAULT_=56
+DEFERRABLE_=57
+DEFERRED_=58
+DELETE_=59
+DESC_=60
+DETACH_=61
+DISTINCT_=62
+DROP_=63
+EACH_=64
+ELSE_=65
+END_=66
+ESCAPE_=67
+EXCEPT_=68
+EXCLUSIVE_=69
+EXISTS_=70
+EXPLAIN_=71
+FAIL_=72
+FOR_=73
+FOREIGN_=74
+FROM_=75
+FULL_=76
+GLOB_=77
+GROUP_=78
+HAVING_=79
+IF_=80
+IGNORE_=81
+IMMEDIATE_=82
+IN_=83
+INDEX_=84
+INDEXED_=85
+INITIALLY_=86
+INNER_=87
+INSERT_=88
+INSTEAD_=89
+INTERSECT_=90
+INTO_=91
+IS_=92
+ISNULL_=93
+JOIN_=94
+KEY_=95
+LEFT_=96
+LIKE_=97
+LIMIT_=98
+MATCH_=99
+NATURAL_=100
+NO_=101
+NOT_=102
+NOTNULL_=103
+NULL_=104
+OF_=105
+OFFSET_=106
+ON_=107
+OR_=108
+ORDER_=109
+OUTER_=110
+PLAN_=111
+PRAGMA_=112
+PRIMARY_=113
+QUERY_=114
+RAISE_=115
+RECURSIVE_=116
+REFERENCES_=117
+REGEXP_=118
+REINDEX_=119
+RELEASE_=120
+RENAME_=121
+REPLACE_=122
+RESTRICT_=123
+RETURNING_=124
+RIGHT_=125
+ROLLBACK_=126
+ROW_=127
+ROWS_=128
+SAVEPOINT_=129
+SELECT_=130
+SET_=131
+TABLE_=132
+TEMP_=133
+TEMPORARY_=134
+THEN_=135
+TO_=136
+TRANSACTION_=137
+TRIGGER_=138
+UNION_=139
+UNIQUE_=140
+UPDATE_=141
+USING_=142
+VACUUM_=143
+VALUES_=144
+VIEW_=145
+VIRTUAL_=146
+WHEN_=147
+WHERE_=148
+WITH_=149
+WITHOUT_=150
+FIRST_VALUE_=151
+OVER_=152
+PARTITION_=153
+RANGE_=154
+PRECEDING_=155
+UNBOUNDED_=156
+CURRENT_=157
+FOLLOWING_=158
+CUME_DIST_=159
+DENSE_RANK_=160
+LAG_=161
+LAST_VALUE_=162
+LEAD_=163
+NTH_VALUE_=164
+NTILE_=165
+PERCENT_RANK_=166
+RANK_=167
+ROW_NUMBER_=168
+GENERATED_=169
+ALWAYS_=170
+STORED_=171
+TRUE_=172
+FALSE_=173
+WINDOW_=174
+NULLS_=175
+FIRST_=176
+LAST_=177
+FILTER_=178
+GROUPS_=179
+EXCLUDE_=180
+TIES_=181
+OTHERS_=182
+DO_=183
+NOTHING_=184
+IDENTIFIER=185
+NUMERIC_LITERAL=186
+BIND_PARAMETER=187
+STRING_LITERAL=188
+BLOB_LITERAL=189
+SINGLE_LINE_COMMENT=190
+MULTILINE_COMMENT=191
+SPACES=192
+UNEXPECTED_CHAR=193
+';'=1
+'.'=2
+'('=3
+')'=4
+','=5
+'='=6
+'*'=7
+'+'=8
+'-'=9
+'~'=10
+'||'=11
+'/'=12
+'%'=13
+'<<'=14
+'>>'=15
+'&'=16
+'|'=17
+'<'=18
+'<='=19
+'>'=20
+'>='=21
+'=='=22
+'!='=23
+'<>'=24
+'ABORT'=25
+'ACTION'=26
+'ADD'=27
+'AFTER'=28
+'ALL'=29
+'ALTER'=30
+'ANALYZE'=31
+'AND'=32
+'AS'=33
+'ASC'=34
+'ATTACH'=35
+'AUTOINCREMENT'=36
+'BEFORE'=37
+'BEGIN'=38
+'BETWEEN'=39
+'BY'=40
+'CASCADE'=41
+'CASE'=42
+'CAST'=43
+'CHECK'=44
+'COLLATE'=45
+'COLUMN'=46
+'COMMIT'=47
+'CONFLICT'=48
+'CONSTRAINT'=49
+'CREATE'=50
+'CROSS'=51
+'CURRENT_DATE'=52
+'CURRENT_TIME'=53
+'CURRENT_TIMESTAMP'=54
+'DATABASE'=55
+'DEFAULT'=56
+'DEFERRABLE'=57
+'DEFERRED'=58
+'DELETE'=59
+'DESC'=60
+'DETACH'=61
+'DISTINCT'=62
+'DROP'=63
+'EACH'=64
+'ELSE'=65
+'END'=66
+'ESCAPE'=67
+'EXCEPT'=68
+'EXCLUSIVE'=69
+'EXISTS'=70
+'EXPLAIN'=71
+'FAIL'=72
+'FOR'=73
+'FOREIGN'=74
+'FROM'=75
+'FULL'=76
+'GLOB'=77
+'GROUP'=78
+'HAVING'=79
+'IF'=80
+'IGNORE'=81
+'IMMEDIATE'=82
+'IN'=83
+'INDEX'=84
+'INDEXED'=85
+'INITIALLY'=86
+'INNER'=87
+'INSERT'=88
+'INSTEAD'=89
+'INTERSECT'=90
+'INTO'=91
+'IS'=92
+'ISNULL'=93
+'JOIN'=94
+'KEY'=95
+'LEFT'=96
+'LIKE'=97
+'LIMIT'=98
+'MATCH'=99
+'NATURAL'=100
+'NO'=101
+'NOT'=102
+'NOTNULL'=103
+'NULL'=104
+'OF'=105
+'OFFSET'=106
+'ON'=107
+'OR'=108
+'ORDER'=109
+'OUTER'=110
+'PLAN'=111
+'PRAGMA'=112
+'PRIMARY'=113
+'QUERY'=114
+'RAISE'=115
+'RECURSIVE'=116
+'REFERENCES'=117
+'REGEXP'=118
+'REINDEX'=119
+'RELEASE'=120
+'RENAME'=121
+'REPLACE'=122
+'RESTRICT'=123
+'RETURNING'=124
+'RIGHT'=125
+'ROLLBACK'=126
+'ROW'=127
+'ROWS'=128
+'SAVEPOINT'=129
+'SELECT'=130
+'SET'=131
+'TABLE'=132
+'TEMP'=133
+'TEMPORARY'=134
+'THEN'=135
+'TO'=136
+'TRANSACTION'=137
+'TRIGGER'=138
+'UNION'=139
+'UNIQUE'=140
+'UPDATE'=141
+'USING'=142
+'VACUUM'=143
+'VALUES'=144
+'VIEW'=145
+'VIRTUAL'=146
+'WHEN'=147
+'WHERE'=148
+'WITH'=149
+'WITHOUT'=150
+'FIRST_VALUE'=151
+'OVER'=152
+'PARTITION'=153
+'RANGE'=154
+'PRECEDING'=155
+'UNBOUNDED'=156
+'CURRENT'=157
+'FOLLOWING'=158
+'CUME_DIST'=159
+'DENSE_RANK'=160
+'LAG'=161
+'LAST_VALUE'=162
+'LEAD'=163
+'NTH_VALUE'=164
+'NTILE'=165
+'PERCENT_RANK'=166
+'RANK'=167
+'ROW_NUMBER'=168
+'GENERATED'=169
+'ALWAYS'=170
+'STORED'=171
+'TRUE'=172
+'FALSE'=173
+'WINDOW'=174
+'NULLS'=175
+'FIRST'=176
+'LAST'=177
+'FILTER'=178
+'GROUPS'=179
+'EXCLUDE'=180
+'TIES'=181
+'OTHERS'=182
+'DO'=183
+'NOTHING'=184
diff --git a/sqliteparser/SQLiteParser.interp b/sqliteparser/SQLiteParser.interp
new file mode 100644
index 0000000..6bcddfa
--- /dev/null
+++ b/sqliteparser/SQLiteParser.interp
@@ -0,0 +1,510 @@
+token literal names:
+null
+';'
+'.'
+'('
+')'
+','
+'='
+'*'
+'+'
+'-'
+'~'
+'||'
+'/'
+'%'
+'<<'
+'>>'
+'&'
+'|'
+'<'
+'<='
+'>'
+'>='
+'=='
+'!='
+'<>'
+'ABORT'
+'ACTION'
+'ADD'
+'AFTER'
+'ALL'
+'ALTER'
+'ANALYZE'
+'AND'
+'AS'
+'ASC'
+'ATTACH'
+'AUTOINCREMENT'
+'BEFORE'
+'BEGIN'
+'BETWEEN'
+'BY'
+'CASCADE'
+'CASE'
+'CAST'
+'CHECK'
+'COLLATE'
+'COLUMN'
+'COMMIT'
+'CONFLICT'
+'CONSTRAINT'
+'CREATE'
+'CROSS'
+'CURRENT_DATE'
+'CURRENT_TIME'
+'CURRENT_TIMESTAMP'
+'DATABASE'
+'DEFAULT'
+'DEFERRABLE'
+'DEFERRED'
+'DELETE'
+'DESC'
+'DETACH'
+'DISTINCT'
+'DROP'
+'EACH'
+'ELSE'
+'END'
+'ESCAPE'
+'EXCEPT'
+'EXCLUSIVE'
+'EXISTS'
+'EXPLAIN'
+'FAIL'
+'FOR'
+'FOREIGN'
+'FROM'
+'FULL'
+'GLOB'
+'GROUP'
+'HAVING'
+'IF'
+'IGNORE'
+'IMMEDIATE'
+'IN'
+'INDEX'
+'INDEXED'
+'INITIALLY'
+'INNER'
+'INSERT'
+'INSTEAD'
+'INTERSECT'
+'INTO'
+'IS'
+'ISNULL'
+'JOIN'
+'KEY'
+'LEFT'
+'LIKE'
+'LIMIT'
+'MATCH'
+'NATURAL'
+'NO'
+'NOT'
+'NOTNULL'
+'NULL'
+'OF'
+'OFFSET'
+'ON'
+'OR'
+'ORDER'
+'OUTER'
+'PLAN'
+'PRAGMA'
+'PRIMARY'
+'QUERY'
+'RAISE'
+'RECURSIVE'
+'REFERENCES'
+'REGEXP'
+'REINDEX'
+'RELEASE'
+'RENAME'
+'REPLACE'
+'RESTRICT'
+'RETURNING'
+'RIGHT'
+'ROLLBACK'
+'ROW'
+'ROWS'
+'SAVEPOINT'
+'SELECT'
+'SET'
+'TABLE'
+'TEMP'
+'TEMPORARY'
+'THEN'
+'TO'
+'TRANSACTION'
+'TRIGGER'
+'UNION'
+'UNIQUE'
+'UPDATE'
+'USING'
+'VACUUM'
+'VALUES'
+'VIEW'
+'VIRTUAL'
+'WHEN'
+'WHERE'
+'WITH'
+'WITHOUT'
+'FIRST_VALUE'
+'OVER'
+'PARTITION'
+'RANGE'
+'PRECEDING'
+'UNBOUNDED'
+'CURRENT'
+'FOLLOWING'
+'CUME_DIST'
+'DENSE_RANK'
+'LAG'
+'LAST_VALUE'
+'LEAD'
+'NTH_VALUE'
+'NTILE'
+'PERCENT_RANK'
+'RANK'
+'ROW_NUMBER'
+'GENERATED'
+'ALWAYS'
+'STORED'
+'TRUE'
+'FALSE'
+'WINDOW'
+'NULLS'
+'FIRST'
+'LAST'
+'FILTER'
+'GROUPS'
+'EXCLUDE'
+'TIES'
+'OTHERS'
+'DO'
+'NOTHING'
+null
+null
+null
+null
+null
+null
+null
+null
+null
+
+token symbolic names:
+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
+ABORT_
+ACTION_
+ADD_
+AFTER_
+ALL_
+ALTER_
+ANALYZE_
+AND_
+AS_
+ASC_
+ATTACH_
+AUTOINCREMENT_
+BEFORE_
+BEGIN_
+BETWEEN_
+BY_
+CASCADE_
+CASE_
+CAST_
+CHECK_
+COLLATE_
+COLUMN_
+COMMIT_
+CONFLICT_
+CONSTRAINT_
+CREATE_
+CROSS_
+CURRENT_DATE_
+CURRENT_TIME_
+CURRENT_TIMESTAMP_
+DATABASE_
+DEFAULT_
+DEFERRABLE_
+DEFERRED_
+DELETE_
+DESC_
+DETACH_
+DISTINCT_
+DROP_
+EACH_
+ELSE_
+END_
+ESCAPE_
+EXCEPT_
+EXCLUSIVE_
+EXISTS_
+EXPLAIN_
+FAIL_
+FOR_
+FOREIGN_
+FROM_
+FULL_
+GLOB_
+GROUP_
+HAVING_
+IF_
+IGNORE_
+IMMEDIATE_
+IN_
+INDEX_
+INDEXED_
+INITIALLY_
+INNER_
+INSERT_
+INSTEAD_
+INTERSECT_
+INTO_
+IS_
+ISNULL_
+JOIN_
+KEY_
+LEFT_
+LIKE_
+LIMIT_
+MATCH_
+NATURAL_
+NO_
+NOT_
+NOTNULL_
+NULL_
+OF_
+OFFSET_
+ON_
+OR_
+ORDER_
+OUTER_
+PLAN_
+PRAGMA_
+PRIMARY_
+QUERY_
+RAISE_
+RECURSIVE_
+REFERENCES_
+REGEXP_
+REINDEX_
+RELEASE_
+RENAME_
+REPLACE_
+RESTRICT_
+RETURNING_
+RIGHT_
+ROLLBACK_
+ROW_
+ROWS_
+SAVEPOINT_
+SELECT_
+SET_
+TABLE_
+TEMP_
+TEMPORARY_
+THEN_
+TO_
+TRANSACTION_
+TRIGGER_
+UNION_
+UNIQUE_
+UPDATE_
+USING_
+VACUUM_
+VALUES_
+VIEW_
+VIRTUAL_
+WHEN_
+WHERE_
+WITH_
+WITHOUT_
+FIRST_VALUE_
+OVER_
+PARTITION_
+RANGE_
+PRECEDING_
+UNBOUNDED_
+CURRENT_
+FOLLOWING_
+CUME_DIST_
+DENSE_RANK_
+LAG_
+LAST_VALUE_
+LEAD_
+NTH_VALUE_
+NTILE_
+PERCENT_RANK_
+RANK_
+ROW_NUMBER_
+GENERATED_
+ALWAYS_
+STORED_
+TRUE_
+FALSE_
+WINDOW_
+NULLS_
+FIRST_
+LAST_
+FILTER_
+GROUPS_
+EXCLUDE_
+TIES_
+OTHERS_
+DO_
+NOTHING_
+IDENTIFIER
+NUMERIC_LITERAL
+BIND_PARAMETER
+STRING_LITERAL
+BLOB_LITERAL
+SINGLE_LINE_COMMENT
+MULTILINE_COMMENT
+SPACES
+UNEXPECTED_CHAR
+
+rule names:
+parse
+sql_stmt_list
+sql_stmt
+alter_table_stmt
+analyze_stmt
+attach_stmt
+begin_stmt
+commit_stmt
+rollback_stmt
+savepoint_stmt
+release_stmt
+create_index_stmt
+indexed_column
+create_table_stmt
+column_def
+type_name
+column_constraint
+signed_number
+table_constraint
+foreign_key_clause
+conflict_clause
+create_trigger_stmt
+create_view_stmt
+create_virtual_table_stmt
+with_clause
+cte_table_name
+recursive_cte
+common_table_expression
+delete_stmt
+delete_stmt_limited
+detach_stmt
+drop_stmt
+expr
+raise_function
+literal_value
+value_row
+values_clause
+insert_stmt
+returning_clause
+upsert_clause
+pragma_stmt
+pragma_value
+reindex_stmt
+select_stmt
+join_clause
+select_core
+factored_select_stmt
+simple_select_stmt
+compound_select_stmt
+table_or_subquery
+result_column
+join_operator
+join_constraint
+compound_operator
+update_stmt
+column_name_list
+update_stmt_limited
+qualified_table_name
+vacuum_stmt
+filter_clause
+window_defn
+over_clause
+frame_spec
+frame_clause
+simple_function_invocation
+aggregate_function_invocation
+window_function_invocation
+common_table_stmt
+order_by_stmt
+limit_stmt
+ordering_term
+asc_desc
+frame_left
+frame_right
+frame_single
+window_function
+offset
+default_value
+partition_by
+order_by_expr
+order_by_expr_asc_desc
+expr_asc_desc
+initial_select
+recursive_select
+unary_operator
+error_message
+module_argument
+column_alias
+keyword
+name
+function_name
+schema_name
+table_name
+table_or_index_name
+column_name
+collation_name
+foreign_table
+index_name
+trigger_name
+view_name
+module_name
+pragma_name
+savepoint_name
+table_alias
+transaction_name
+window_name
+alias
+filename
+base_window_name
+simple_func
+aggregate_func
+table_function_name
+any_name
+
+
+atn:
+[4, 1, 193, 2056, 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, 1, 0, 5, 0, 228, 8, 0, 10, 0, 12, 0, 231, 9, 0, 1, 0, 1, 0, 1, 1, 5, 1, 236, 8, 1, 10, 1, 12, 1, 239, 9, 1, 1, 1, 1, 1, 4, 1, 243, 8, 1, 11, 1, 12, 1, 244, 1, 1, 5, 1, 248, 8, 1, 10, 1, 12, 1, 251, 9, 1, 1, 1, 5, 1, 254, 8, 1, 10, 1, 12, 1, 257, 9, 1, 1, 2, 1, 2, 1, 2, 3, 2, 262, 8, 2, 3, 2, 264, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 290, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 297, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 304, 8, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 310, 8, 3, 1, 3, 1, 3, 3, 3, 314, 8, 3, 1, 3, 1, 3, 1, 3, 3, 3, 319, 8, 3, 1, 3, 3, 3, 322, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 329, 8, 4, 1, 4, 3, 4, 332, 8, 4, 1, 5, 1, 5, 3, 5, 336, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 344, 8, 6, 1, 6, 1, 6, 3, 6, 348, 8, 6, 3, 6, 350, 8, 6, 1, 7, 1, 7, 3, 7, 354, 8, 7, 1, 8, 1, 8, 3, 8, 358, 8, 8, 1, 8, 1, 8, 3, 8, 362, 8, 8, 1, 8, 3, 8, 365, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 3, 10, 372, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 378, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 384, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 389, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 398, 8, 11, 10, 11, 12, 11, 401, 9, 11, 1, 11, 1, 11, 1, 11, 3, 11, 406, 8, 11, 1, 12, 1, 12, 3, 12, 410, 8, 12, 1, 12, 1, 12, 3, 12, 414, 8, 12, 1, 12, 3, 12, 417, 8, 12, 1, 13, 1, 13, 3, 13, 421, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 427, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 432, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 439, 8, 13, 10, 13, 12, 13, 442, 9, 13, 1, 13, 1, 13, 5, 13, 446, 8, 13, 10, 13, 12, 13, 449, 9, 13, 1, 13, 1, 13, 1, 13, 3, 13, 454, 8, 13, 1, 13, 1, 13, 3, 13, 458, 8, 13, 1, 14, 1, 14, 3, 14, 462, 8, 14, 1, 14, 5, 14, 465, 8, 14, 10, 14, 12, 14, 468, 9, 14, 1, 15, 4, 15, 471, 8, 15, 11, 15, 12, 15, 472, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 485, 8, 15, 1, 16, 1, 16, 3, 16, 489, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 494, 8, 16, 1, 16, 3, 16, 497, 8, 16, 1, 16, 3, 16, 500, 8, 16, 1, 16, 3, 16, 503, 8, 16, 1, 16, 1, 16, 3, 16, 507, 8, 16, 1, 16, 3, 16, 510, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 524, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 531, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 538, 8, 16, 3, 16, 540, 8, 16, 1, 17, 3, 17, 543, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 549, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 554, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 560, 8, 18, 10, 18, 12, 18, 563, 9, 18, 1, 18, 1, 18, 3, 18, 567, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 580, 8, 18, 10, 18, 12, 18, 583, 9, 18, 1, 18, 1, 18, 1, 18, 3, 18, 588, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5, 19, 596, 8, 19, 10, 19, 12, 19, 599, 9, 19, 1, 19, 1, 19, 3, 19, 603, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 613, 8, 19, 1, 19, 1, 19, 5, 19, 617, 8, 19, 10, 19, 12, 19, 620, 9, 19, 1, 19, 3, 19, 623, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 628, 8, 19, 3, 19, 630, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 638, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 644, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21, 649, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 656, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 665, 8, 21, 10, 21, 12, 21, 668, 9, 21, 3, 21, 670, 8, 21, 3, 21, 672, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 679, 8, 21, 1, 21, 1, 21, 3, 21, 683, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 690, 8, 21, 1, 21, 1, 21, 4, 21, 694, 8, 21, 11, 21, 12, 21, 695, 1, 21, 1, 21, 1, 22, 1, 22, 3, 22, 702, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 708, 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 713, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 720, 8, 22, 10, 22, 12, 22, 723, 9, 22, 1, 22, 1, 22, 3, 22, 727, 8, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 738, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 743, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 5, 23, 752, 8, 23, 10, 23, 12, 23, 755, 9, 23, 1, 23, 1, 23, 3, 23, 759, 8, 23, 1, 24, 1, 24, 3, 24, 763, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 777, 8, 24, 10, 24, 12, 24, 780, 9, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 787, 8, 25, 10, 25, 12, 25, 790, 9, 25, 1, 25, 1, 25, 3, 25, 794, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 802, 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 812, 8, 27, 10, 27, 12, 27, 815, 9, 27, 1, 27, 1, 27, 3, 27, 819, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 3, 28, 827, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 834, 8, 28, 1, 28, 3, 28, 837, 8, 28, 1, 29, 3, 29, 840, 8, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 847, 8, 29, 1, 29, 3, 29, 850, 8, 29, 1, 29, 3, 29, 853, 8, 29, 1, 29, 3, 29, 856, 8, 29, 1, 30, 1, 30, 3, 30, 860, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 868, 8, 31, 1, 31, 1, 31, 1, 31, 3, 31, 873, 8, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 883, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 888, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 897, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 902, 8, 32, 10, 32, 12, 32, 905, 9, 32, 1, 32, 3, 32, 908, 8, 32, 1, 32, 1, 32, 3, 32, 912, 8, 32, 1, 32, 3, 32, 915, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 921, 8, 32, 10, 32, 12, 32, 924, 9, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 936, 8, 32, 1, 32, 3, 32, 939, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 947, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 4, 32, 954, 8, 32, 11, 32, 12, 32, 955, 1, 32, 1, 32, 3, 32, 960, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 965, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 995, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1007, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1012, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1024, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1030, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1037, 8, 32, 1, 32, 1, 32, 3, 32, 1041, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1049, 8, 32, 10, 32, 12, 32, 1052, 9, 32, 3, 32, 1054, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1060, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1066, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1073, 8, 32, 10, 32, 12, 32, 1076, 9, 32, 3, 32, 1078, 8, 32, 1, 32, 1, 32, 3, 32, 1082, 8, 32, 5, 32, 1084, 8, 32, 10, 32, 12, 32, 1087, 9, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1095, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 1105, 8, 35, 10, 35, 12, 35, 1108, 9, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 1116, 8, 36, 10, 36, 12, 36, 1119, 9, 36, 1, 37, 3, 37, 1122, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1129, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1135, 8, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1140, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 1146, 8, 37, 10, 37, 12, 37, 1149, 9, 37, 1, 37, 1, 37, 3, 37, 1153, 8, 37, 1, 37, 1, 37, 3, 37, 1157, 8, 37, 1, 37, 3, 37, 1160, 8, 37, 1, 37, 1, 37, 3, 37, 1164, 8, 37, 1, 37, 3, 37, 1167, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 1173, 8, 38, 10, 38, 12, 38, 1176, 9, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1184, 8, 39, 10, 39, 12, 39, 1187, 9, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1192, 8, 39, 3, 39, 1194, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1202, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1209, 8, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1214, 8, 39, 10, 39, 12, 39, 1217, 9, 39, 1, 39, 1, 39, 3, 39, 1221, 8, 39, 3, 39, 1223, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1229, 8, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1238, 8, 40, 1, 41, 1, 41, 1, 41, 3, 41, 1243, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1250, 8, 42, 1, 42, 1, 42, 3, 42, 1254, 8, 42, 3, 42, 1256, 8, 42, 1, 43, 3, 43, 1259, 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 1265, 8, 43, 10, 43, 12, 43, 1268, 9, 43, 1, 43, 3, 43, 1271, 8, 43, 1, 43, 3, 43, 1274, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1280, 8, 44, 5, 44, 1282, 8, 44, 10, 44, 12, 44, 1285, 9, 44, 1, 45, 1, 45, 3, 45, 1289, 8, 45, 1, 45, 1, 45, 1, 45, 5, 45, 1294, 8, 45, 10, 45, 12, 45, 1297, 9, 45, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 1303, 8, 45, 10, 45, 12, 45, 1306, 9, 45, 1, 45, 3, 45, 1309, 8, 45, 3, 45, 1311, 8, 45, 1, 45, 1, 45, 3, 45, 1315, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 1322, 8, 45, 10, 45, 12, 45, 1325, 9, 45, 1, 45, 1, 45, 3, 45, 1329, 8, 45, 3, 45, 1331, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 1342, 8, 45, 10, 45, 12, 45, 1345, 9, 45, 3, 45, 1347, 8, 45, 1, 45, 3, 45, 1350, 8, 45, 1, 46, 1, 46, 1, 47, 3, 47, 1355, 8, 47, 1, 47, 1, 47, 3, 47, 1359, 8, 47, 1, 47, 3, 47, 1362, 8, 47, 1, 48, 3, 48, 1365, 8, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1370, 8, 48, 1, 48, 1, 48, 3, 48, 1374, 8, 48, 1, 48, 4, 48, 1377, 8, 48, 11, 48, 12, 48, 1378, 1, 48, 3, 48, 1382, 8, 48, 1, 48, 3, 48, 1385, 8, 48, 1, 49, 1, 49, 1, 49, 3, 49, 1390, 8, 49, 1, 49, 1, 49, 3, 49, 1394, 8, 49, 1, 49, 3, 49, 1397, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1404, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1409, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 1416, 8, 49, 10, 49, 12, 49, 1419, 9, 49, 1, 49, 1, 49, 3, 49, 1423, 8, 49, 1, 49, 3, 49, 1426, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 1432, 8, 49, 10, 49, 12, 49, 1435, 9, 49, 1, 49, 3, 49, 1438, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1446, 8, 49, 1, 49, 3, 49, 1449, 8, 49, 3, 49, 1451, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1460, 8, 50, 1, 50, 3, 50, 1463, 8, 50, 3, 50, 1465, 8, 50, 1, 51, 1, 51, 3, 51, 1469, 8, 51, 1, 51, 1, 51, 3, 51, 1473, 8, 51, 1, 51, 1, 51, 3, 51, 1477, 8, 51, 1, 51, 3, 51, 1480, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1489, 8, 52, 10, 52, 12, 52, 1492, 9, 52, 1, 52, 1, 52, 3, 52, 1496, 8, 52, 1, 53, 1, 53, 3, 53, 1500, 8, 53, 1, 53, 1, 53, 3, 53, 1504, 8, 53, 1, 54, 3, 54, 1507, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1512, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1518, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1525, 8, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1530, 8, 54, 10, 54, 12, 54, 1533, 9, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1539, 8, 54, 10, 54, 12, 54, 1542, 9, 54, 1, 54, 3, 54, 1545, 8, 54, 3, 54, 1547, 8, 54, 1, 54, 1, 54, 3, 54, 1551, 8, 54, 1, 54, 3, 54, 1554, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1560, 8, 55, 10, 55, 12, 55, 1563, 9, 55, 1, 55, 1, 55, 1, 56, 3, 56, 1568, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1573, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1579, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1586, 8, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1591, 8, 56, 10, 56, 12, 56, 1594, 9, 56, 1, 56, 1, 56, 3, 56, 1598, 8, 56, 1, 56, 3, 56, 1601, 8, 56, 1, 56, 3, 56, 1604, 8, 56, 1, 56, 3, 56, 1607, 8, 56, 1, 57, 1, 57, 1, 57, 3, 57, 1612, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1617, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1624, 8, 57, 1, 58, 1, 58, 3, 58, 1628, 8, 58, 1, 58, 1, 58, 3, 58, 1632, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 1642, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 1649, 8, 60, 10, 60, 12, 60, 1652, 9, 60, 3, 60, 1654, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 1661, 8, 60, 10, 60, 12, 60, 1664, 9, 60, 1, 60, 3, 60, 1667, 8, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1675, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 1682, 8, 61, 10, 61, 12, 61, 1685, 9, 61, 3, 61, 1687, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 1694, 8, 61, 10, 61, 12, 61, 1697, 9, 61, 3, 61, 1699, 8, 61, 1, 61, 3, 61, 1702, 8, 61, 1, 61, 3, 61, 1705, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 1715, 8, 62, 3, 62, 1717, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1726, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 1733, 8, 64, 10, 64, 12, 64, 1736, 9, 64, 1, 64, 3, 64, 1739, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 3, 65, 1746, 8, 65, 1, 65, 1, 65, 1, 65, 5, 65, 1751, 8, 65, 10, 65, 12, 65, 1754, 9, 65, 1, 65, 3, 65, 1757, 8, 65, 1, 65, 1, 65, 3, 65, 1761, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 1768, 8, 66, 10, 66, 12, 66, 1771, 9, 66, 1, 66, 3, 66, 1774, 8, 66, 1, 66, 1, 66, 3, 66, 1778, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1783, 8, 66, 1, 67, 1, 67, 3, 67, 1787, 8, 67, 1, 67, 1, 67, 1, 67, 5, 67, 1792, 8, 67, 10, 67, 12, 67, 1795, 9, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 1802, 8, 68, 10, 68, 12, 68, 1805, 9, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1811, 8, 69, 1, 70, 1, 70, 1, 70, 3, 70, 1816, 8, 70, 1, 70, 3, 70, 1819, 8, 70, 1, 70, 1, 70, 3, 70, 1823, 8, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 1837, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1849, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1858, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1867, 8, 75, 1, 75, 1, 75, 3, 75, 1871, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1881, 8, 75, 1, 75, 3, 75, 1884, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1893, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1902, 8, 75, 1, 75, 3, 75, 1905, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1911, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1925, 8, 75, 1, 75, 1, 75, 3, 75, 1929, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1940, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1945, 8, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 4, 78, 1956, 8, 78, 11, 78, 12, 78, 1957, 1, 79, 1, 79, 1, 79, 4, 79, 1963, 8, 79, 11, 79, 12, 79, 1964, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 3, 81, 1973, 8, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1978, 8, 81, 5, 81, 1980, 8, 81, 10, 81, 12, 81, 1983, 9, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84, 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 3, 86, 1995, 8, 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, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 2054, 8, 112, 1, 112, 2, 440, 472, 1, 64, 113, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 0, 28, 3, 0, 58, 58, 69, 69, 82, 82, 2, 0, 47, 47, 66, 66, 1, 0, 133, 134, 2, 0, 146, 146, 171, 171, 1, 0, 8, 9, 2, 0, 59, 59, 141, 141, 2, 0, 56, 56, 104, 104, 2, 0, 58, 58, 82, 82, 5, 0, 25, 25, 72, 72, 81, 81, 122, 122, 126, 126, 4, 0, 84, 84, 132, 132, 138, 138, 145, 145, 2, 0, 7, 7, 12, 13, 1, 0, 14, 17, 1, 0, 18, 21, 4, 0, 77, 77, 97, 97, 99, 99, 118, 118, 3, 0, 25, 25, 72, 72, 126, 126, 5, 0, 52, 54, 104, 104, 172, 173, 186, 186, 188, 189, 2, 0, 29, 29, 62, 62, 3, 0, 128, 128, 154, 154, 179, 179, 2, 0, 5, 5, 106, 106, 1, 0, 176, 177, 2, 0, 34, 34, 60, 60, 2, 0, 151, 151, 162, 162, 2, 0, 159, 159, 166, 166, 2, 0, 160, 160, 167, 168, 2, 0, 161, 161, 163, 163, 2, 0, 8, 10, 102, 102, 2, 0, 185, 185, 188, 188, 2, 0, 25, 123, 125, 180, 2338, 0, 229, 1, 0, 0, 0, 2, 237, 1, 0, 0, 0, 4, 263, 1, 0, 0, 0, 6, 291, 1, 0, 0, 0, 8, 323, 1, 0, 0, 0, 10, 333, 1, 0, 0, 0, 12, 341, 1, 0, 0, 0, 14, 351, 1, 0, 0, 0, 16, 355, 1, 0, 0, 0, 18, 366, 1, 0, 0, 0, 20, 369, 1, 0, 0, 0, 22, 375, 1, 0, 0, 0, 24, 409, 1, 0, 0, 0, 26, 418, 1, 0, 0, 0, 28, 459, 1, 0, 0, 0, 30, 470, 1, 0, 0, 0, 32, 488, 1, 0, 0, 0, 34, 542, 1, 0, 0, 0, 36, 548, 1, 0, 0, 0, 38, 589, 1, 0, 0, 0, 40, 631, 1, 0, 0, 0, 42, 635, 1, 0, 0, 0, 44, 699, 1, 0, 0, 0, 46, 731, 1, 0, 0, 0, 48, 760, 1, 0, 0, 0, 50, 781, 1, 0, 0, 0, 52, 795, 1, 0, 0, 0, 54, 806, 1, 0, 0, 0, 56, 826, 1, 0, 0, 0, 58, 839, 1, 0, 0, 0, 60, 857, 1, 0, 0, 0, 62, 863, 1, 0, 0, 0, 64, 964, 1, 0, 0, 0, 66, 1088, 1, 0, 0, 0, 68, 1098, 1, 0, 0, 0, 70, 1100, 1, 0, 0, 0, 72, 1111, 1, 0, 0, 0, 74, 1121, 1, 0, 0, 0, 76, 1168, 1, 0, 0, 0, 78, 1177, 1, 0, 0, 0, 80, 1224, 1, 0, 0, 0, 82, 1242, 1, 0, 0, 0, 84, 1244, 1, 0, 0, 0, 86, 1258, 1, 0, 0, 0, 88, 1275, 1, 0, 0, 0, 90, 1349, 1, 0, 0, 0, 92, 1351, 1, 0, 0, 0, 94, 1354, 1, 0, 0, 0, 96, 1364, 1, 0, 0, 0, 98, 1450, 1, 0, 0, 0, 100, 1464, 1, 0, 0, 0, 102, 1479, 1, 0, 0, 0, 104, 1495, 1, 0, 0, 0, 106, 1503, 1, 0, 0, 0, 108, 1506, 1, 0, 0, 0, 110, 1555, 1, 0, 0, 0, 112, 1567, 1, 0, 0, 0, 114, 1611, 1, 0, 0, 0, 116, 1625, 1, 0, 0, 0, 118, 1633, 1, 0, 0, 0, 120, 1639, 1, 0, 0, 0, 122, 1670, 1, 0, 0, 0, 124, 1706, 1, 0, 0, 0, 126, 1718, 1, 0, 0, 0, 128, 1727, 1, 0, 0, 0, 130, 1742, 1, 0, 0, 0, 132, 1762, 1, 0, 0, 0, 134, 1784, 1, 0, 0, 0, 136, 1796, 1, 0, 0, 0, 138, 1806, 1, 0, 0, 0, 140, 1812, 1, 0, 0, 0, 142, 1824, 1, 0, 0, 0, 144, 1836, 1, 0, 0, 0, 146, 1848, 1, 0, 0, 0, 148, 1857, 1, 0, 0, 0, 150, 1944, 1, 0, 0, 0, 152, 1946, 1, 0, 0, 0, 154, 1949, 1, 0, 0, 0, 156, 1952, 1, 0, 0, 0, 158, 1959, 1, 0, 0, 0, 160, 1966, 1, 0, 0, 0, 162, 1970, 1, 0, 0, 0, 164, 1984, 1, 0, 0, 0, 166, 1986, 1, 0, 0, 0, 168, 1988, 1, 0, 0, 0, 170, 1990, 1, 0, 0, 0, 172, 1994, 1, 0, 0, 0, 174, 1996, 1, 0, 0, 0, 176, 1998, 1, 0, 0, 0, 178, 2000, 1, 0, 0, 0, 180, 2002, 1, 0, 0, 0, 182, 2004, 1, 0, 0, 0, 184, 2006, 1, 0, 0, 0, 186, 2008, 1, 0, 0, 0, 188, 2010, 1, 0, 0, 0, 190, 2012, 1, 0, 0, 0, 192, 2014, 1, 0, 0, 0, 194, 2016, 1, 0, 0, 0, 196, 2018, 1, 0, 0, 0, 198, 2020, 1, 0, 0, 0, 200, 2022, 1, 0, 0, 0, 202, 2024, 1, 0, 0, 0, 204, 2026, 1, 0, 0, 0, 206, 2028, 1, 0, 0, 0, 208, 2030, 1, 0, 0, 0, 210, 2032, 1, 0, 0, 0, 212, 2034, 1, 0, 0, 0, 214, 2036, 1, 0, 0, 0, 216, 2038, 1, 0, 0, 0, 218, 2040, 1, 0, 0, 0, 220, 2042, 1, 0, 0, 0, 222, 2044, 1, 0, 0, 0, 224, 2053, 1, 0, 0, 0, 226, 228, 3, 2, 1, 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, 232, 1, 0, 0, 0, 231, 229, 1, 0, 0, 0, 232, 233, 5, 0, 0, 1, 233, 1, 1, 0, 0, 0, 234, 236, 5, 1, 0, 0, 235, 234, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 240, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240, 249, 3, 4, 2, 0, 241, 243, 5, 1, 0, 0, 242, 241, 1, 0, 0, 0, 243, 244, 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 246, 1, 0, 0, 0, 246, 248, 3, 4, 2, 0, 247, 242, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 255, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 254, 5, 1, 0, 0, 253, 252, 1, 0, 0, 0, 254, 257, 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 3, 1, 0, 0, 0, 257, 255, 1, 0, 0, 0, 258, 261, 5, 71, 0, 0, 259, 260, 5, 114, 0, 0, 260, 262, 5, 111, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262, 264, 1, 0, 0, 0, 263, 258, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 289, 1, 0, 0, 0, 265, 290, 3, 6, 3, 0, 266, 290, 3, 8, 4, 0, 267, 290, 3, 10, 5, 0, 268, 290, 3, 12, 6, 0, 269, 290, 3, 14, 7, 0, 270, 290, 3, 22, 11, 0, 271, 290, 3, 26, 13, 0, 272, 290, 3, 42, 21, 0, 273, 290, 3, 44, 22, 0, 274, 290, 3, 46, 23, 0, 275, 290, 3, 56, 28, 0, 276, 290, 3, 58, 29, 0, 277, 290, 3, 60, 30, 0, 278, 290, 3, 62, 31, 0, 279, 290, 3, 74, 37, 0, 280, 290, 3, 80, 40, 0, 281, 290, 3, 84, 42, 0, 282, 290, 3, 20, 10, 0, 283, 290, 3, 16, 8, 0, 284, 290, 3, 18, 9, 0, 285, 290, 3, 86, 43, 0, 286, 290, 3, 108, 54, 0, 287, 290, 3, 112, 56, 0, 288, 290, 3, 116, 58, 0, 289, 265, 1, 0, 0, 0, 289, 266, 1, 0, 0, 0, 289, 267, 1, 0, 0, 0, 289, 268, 1, 0, 0, 0, 289, 269, 1, 0, 0, 0, 289, 270, 1, 0, 0, 0, 289, 271, 1, 0, 0, 0, 289, 272, 1, 0, 0, 0, 289, 273, 1, 0, 0, 0, 289, 274, 1, 0, 0, 0, 289, 275, 1, 0, 0, 0, 289, 276, 1, 0, 0, 0, 289, 277, 1, 0, 0, 0, 289, 278, 1, 0, 0, 0, 289, 279, 1, 0, 0, 0, 289, 280, 1, 0, 0, 0, 289, 281, 1, 0, 0, 0, 289, 282, 1, 0, 0, 0, 289, 283, 1, 0, 0, 0, 289, 284, 1, 0, 0, 0, 289, 285, 1, 0, 0, 0, 289, 286, 1, 0, 0, 0, 289, 287, 1, 0, 0, 0, 289, 288, 1, 0, 0, 0, 290, 5, 1, 0, 0, 0, 291, 292, 5, 30, 0, 0, 292, 296, 5, 132, 0, 0, 293, 294, 3, 182, 91, 0, 294, 295, 5, 2, 0, 0, 295, 297, 1, 0, 0, 0, 296, 293, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297, 298, 1, 0, 0, 0, 298, 321, 3, 184, 92, 0, 299, 309, 5, 121, 0, 0, 300, 301, 5, 136, 0, 0, 301, 310, 3, 184, 92, 0, 302, 304, 5, 46, 0, 0, 303, 302, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 306, 3, 188, 94, 0, 306, 307, 5, 136, 0, 0, 307, 308, 3, 188, 94, 0, 308, 310, 1, 0, 0, 0, 309, 300, 1, 0, 0, 0, 309, 303, 1, 0, 0, 0, 310, 322, 1, 0, 0, 0, 311, 313, 5, 27, 0, 0, 312, 314, 5, 46, 0, 0, 313, 312, 1, 0, 0, 0, 313, 314, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 322, 3, 28, 14, 0, 316, 318, 5, 63, 0, 0, 317, 319, 5, 46, 0, 0, 318, 317, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 3, 188, 94, 0, 321, 299, 1, 0, 0, 0, 321, 311, 1, 0, 0, 0, 321, 316, 1, 0, 0, 0, 322, 7, 1, 0, 0, 0, 323, 331, 5, 31, 0, 0, 324, 332, 3, 182, 91, 0, 325, 326, 3, 182, 91, 0, 326, 327, 5, 2, 0, 0, 327, 329, 1, 0, 0, 0, 328, 325, 1, 0, 0, 0, 328, 329, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 3, 186, 93, 0, 331, 324, 1, 0, 0, 0, 331, 328, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 9, 1, 0, 0, 0, 333, 335, 5, 35, 0, 0, 334, 336, 5, 55, 0, 0, 335, 334, 1, 0, 0, 0, 335, 336, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 3, 64, 32, 0, 338, 339, 5, 33, 0, 0, 339, 340, 3, 182, 91, 0, 340, 11, 1, 0, 0, 0, 341, 343, 5, 38, 0, 0, 342, 344, 7, 0, 0, 0, 343, 342, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 349, 1, 0, 0, 0, 345, 347, 5, 137, 0, 0, 346, 348, 3, 208, 104, 0, 347, 346, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 350, 1, 0, 0, 0, 349, 345, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 13, 1, 0, 0, 0, 351, 353, 7, 1, 0, 0, 352, 354, 5, 137, 0, 0, 353, 352, 1, 0, 0, 0, 353, 354, 1, 0, 0, 0, 354, 15, 1, 0, 0, 0, 355, 357, 5, 126, 0, 0, 356, 358, 5, 137, 0, 0, 357, 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 364, 1, 0, 0, 0, 359, 361, 5, 136, 0, 0, 360, 362, 5, 129, 0, 0, 361, 360, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 3, 204, 102, 0, 364, 359, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 17, 1, 0, 0, 0, 366, 367, 5, 129, 0, 0, 367, 368, 3, 204, 102, 0, 368, 19, 1, 0, 0, 0, 369, 371, 5, 120, 0, 0, 370, 372, 5, 129, 0, 0, 371, 370, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0, 372, 373, 1, 0, 0, 0, 373, 374, 3, 204, 102, 0, 374, 21, 1, 0, 0, 0, 375, 377, 5, 50, 0, 0, 376, 378, 5, 140, 0, 0, 377, 376, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 383, 5, 84, 0, 0, 380, 381, 5, 80, 0, 0, 381, 382, 5, 102, 0, 0, 382, 384, 5, 70, 0, 0, 383, 380, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 388, 1, 0, 0, 0, 385, 386, 3, 182, 91, 0, 386, 387, 5, 2, 0, 0, 387, 389, 1, 0, 0, 0, 388, 385, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 391, 3, 194, 97, 0, 391, 392, 5, 107, 0, 0, 392, 393, 3, 184, 92, 0, 393, 394, 5, 3, 0, 0, 394, 399, 3, 24, 12, 0, 395, 396, 5, 5, 0, 0, 396, 398, 3, 24, 12, 0, 397, 395, 1, 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0, 0, 400, 402, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 402, 405, 5, 4, 0, 0, 403, 404, 5, 148, 0, 0, 404, 406, 3, 64, 32, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 23, 1, 0, 0, 0, 407, 410, 3, 188, 94, 0, 408, 410, 3, 64, 32, 0, 409, 407, 1, 0, 0, 0, 409, 408, 1, 0, 0, 0, 410, 413, 1, 0, 0, 0, 411, 412, 5, 45, 0, 0, 412, 414, 3, 190, 95, 0, 413, 411, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 416, 1, 0, 0, 0, 415, 417, 3, 142, 71, 0, 416, 415, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 25, 1, 0, 0, 0, 418, 420, 5, 50, 0, 0, 419, 421, 7, 2, 0, 0, 420, 419, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 426, 5, 132, 0, 0, 423, 424, 5, 80, 0, 0, 424, 425, 5, 102, 0, 0, 425, 427, 5, 70, 0, 0, 426, 423, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 431, 1, 0, 0, 0, 428, 429, 3, 182, 91, 0, 429, 430, 5, 2, 0, 0, 430, 432, 1, 0, 0, 0, 431, 428, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 457, 3, 184, 92, 0, 434, 435, 5, 3, 0, 0, 435, 440, 3, 28, 14, 0, 436, 437, 5, 5, 0, 0, 437, 439, 3, 28, 14, 0, 438, 436, 1, 0, 0, 0, 439, 442, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 440, 438, 1, 0, 0, 0, 441, 447, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 443, 444, 5, 5, 0, 0, 444, 446, 3, 36, 18, 0, 445, 443, 1, 0, 0, 0, 446, 449, 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 450, 1, 0, 0, 0, 449, 447, 1, 0, 0, 0, 450, 453, 5, 4, 0, 0, 451, 452, 5, 150, 0, 0, 452, 454, 5, 185, 0, 0, 453, 451, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0, 454, 458, 1, 0, 0, 0, 455, 456, 5, 33, 0, 0, 456, 458, 3, 86, 43, 0, 457, 434, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 458, 27, 1, 0, 0, 0, 459, 461, 3, 188, 94, 0, 460, 462, 3, 30, 15, 0, 461, 460, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 466, 1, 0, 0, 0, 463, 465, 3, 32, 16, 0, 464, 463, 1, 0, 0, 0, 465, 468, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 29, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 469, 471, 3, 178, 89, 0, 470, 469, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 472, 470, 1, 0, 0, 0, 473, 484, 1, 0, 0, 0, 474, 475, 5, 3, 0, 0, 475, 476, 3, 34, 17, 0, 476, 477, 5, 4, 0, 0, 477, 485, 1, 0, 0, 0, 478, 479, 5, 3, 0, 0, 479, 480, 3, 34, 17, 0, 480, 481, 5, 5, 0, 0, 481, 482, 3, 34, 17, 0, 482, 483, 5, 4, 0, 0, 483, 485, 1, 0, 0, 0, 484, 474, 1, 0, 0, 0, 484, 478, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 31, 1, 0, 0, 0, 486, 487, 5, 49, 0, 0, 487, 489, 3, 178, 89, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 539, 1, 0, 0, 0, 490, 491, 5, 113, 0, 0, 491, 493, 5, 95, 0, 0, 492, 494, 3, 142, 71, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494, 496, 1, 0, 0, 0, 495, 497, 3, 40, 20, 0, 496, 495, 1, 0, 0, 0, 496, 497, 1, 0, 0, 0, 497, 499, 1, 0, 0, 0, 498, 500, 5, 36, 0, 0, 499, 498, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 540, 1, 0, 0, 0, 501, 503, 5, 102, 0, 0, 502, 501, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504, 507, 5, 104, 0, 0, 505, 507, 5, 140, 0, 0, 506, 502, 1, 0, 0, 0, 506, 505, 1, 0, 0, 0, 507, 509, 1, 0, 0, 0, 508, 510, 3, 40, 20, 0, 509, 508, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 540, 1, 0, 0, 0, 511, 512, 5, 44, 0, 0, 512, 513, 5, 3, 0, 0, 513, 514, 3, 64, 32, 0, 514, 515, 5, 4, 0, 0, 515, 540, 1, 0, 0, 0, 516, 523, 5, 56, 0, 0, 517, 524, 3, 34, 17, 0, 518, 524, 3, 68, 34, 0, 519, 520, 5, 3, 0, 0, 520, 521, 3, 64, 32, 0, 521, 522, 5, 4, 0, 0, 522, 524, 1, 0, 0, 0, 523, 517, 1, 0, 0, 0, 523, 518, 1, 0, 0, 0, 523, 519, 1, 0, 0, 0, 524, 540, 1, 0, 0, 0, 525, 526, 5, 45, 0, 0, 526, 540, 3, 190, 95, 0, 527, 540, 3, 38, 19, 0, 528, 529, 5, 169, 0, 0, 529, 531, 5, 170, 0, 0, 530, 528, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 533, 5, 33, 0, 0, 533, 534, 5, 3, 0, 0, 534, 535, 3, 64, 32, 0, 535, 537, 5, 4, 0, 0, 536, 538, 7, 3, 0, 0, 537, 536, 1, 0, 0, 0, 537, 538, 1, 0, 0, 0, 538, 540, 1, 0, 0, 0, 539, 490, 1, 0, 0, 0, 539, 506, 1, 0, 0, 0, 539, 511, 1, 0, 0, 0, 539, 516, 1, 0, 0, 0, 539, 525, 1, 0, 0, 0, 539, 527, 1, 0, 0, 0, 539, 530, 1, 0, 0, 0, 540, 33, 1, 0, 0, 0, 541, 543, 7, 4, 0, 0, 542, 541, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 544, 1, 0, 0, 0, 544, 545, 5, 186, 0, 0, 545, 35, 1, 0, 0, 0, 546, 547, 5, 49, 0, 0, 547, 549, 3, 178, 89, 0, 548, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 587, 1, 0, 0, 0, 550, 551, 5, 113, 0, 0, 551, 554, 5, 95, 0, 0, 552, 554, 5, 140, 0, 0, 553, 550, 1, 0, 0, 0, 553, 552, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 5, 3, 0, 0, 556, 561, 3, 24, 12, 0, 557, 558, 5, 5, 0, 0, 558, 560, 3, 24, 12, 0, 559, 557, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 564, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 564, 566, 5, 4, 0, 0, 565, 567, 3, 40, 20, 0, 566, 565, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 588, 1, 0, 0, 0, 568, 569, 5, 44, 0, 0, 569, 570, 5, 3, 0, 0, 570, 571, 3, 64, 32, 0, 571, 572, 5, 4, 0, 0, 572, 588, 1, 0, 0, 0, 573, 574, 5, 74, 0, 0, 574, 575, 5, 95, 0, 0, 575, 576, 5, 3, 0, 0, 576, 581, 3, 188, 94, 0, 577, 578, 5, 5, 0, 0, 578, 580, 3, 188, 94, 0, 579, 577, 1, 0, 0, 0, 580, 583, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 584, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 584, 585, 5, 4, 0, 0, 585, 586, 3, 38, 19, 0, 586, 588, 1, 0, 0, 0, 587, 553, 1, 0, 0, 0, 587, 568, 1, 0, 0, 0, 587, 573, 1, 0, 0, 0, 588, 37, 1, 0, 0, 0, 589, 590, 5, 117, 0, 0, 590, 602, 3, 192, 96, 0, 591, 592, 5, 3, 0, 0, 592, 597, 3, 188, 94, 0, 593, 594, 5, 5, 0, 0, 594, 596, 3, 188, 94, 0, 595, 593, 1, 0, 0, 0, 596, 599, 1, 0, 0, 0, 597, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 600, 1, 0, 0, 0, 599, 597, 1, 0, 0, 0, 600, 601, 5, 4, 0, 0, 601, 603, 1, 0, 0, 0, 602, 591, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 618, 1, 0, 0, 0, 604, 605, 5, 107, 0, 0, 605, 612, 7, 5, 0, 0, 606, 607, 5, 131, 0, 0, 607, 613, 7, 6, 0, 0, 608, 613, 5, 41, 0, 0, 609, 613, 5, 123, 0, 0, 610, 611, 5, 101, 0, 0, 611, 613, 5, 26, 0, 0, 612, 606, 1, 0, 0, 0, 612, 608, 1, 0, 0, 0, 612, 609, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 613, 617, 1, 0, 0, 0, 614, 615, 5, 99, 0, 0, 615, 617, 3, 178, 89, 0, 616, 604, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 629, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 623, 5, 102, 0, 0, 622, 621, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0, 624, 627, 5, 57, 0, 0, 625, 626, 5, 86, 0, 0, 626, 628, 7, 7, 0, 0, 627, 625, 1, 0, 0, 0, 627, 628, 1, 0, 0, 0, 628, 630, 1, 0, 0, 0, 629, 622, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 39, 1, 0, 0, 0, 631, 632, 5, 107, 0, 0, 632, 633, 5, 48, 0, 0, 633, 634, 7, 8, 0, 0, 634, 41, 1, 0, 0, 0, 635, 637, 5, 50, 0, 0, 636, 638, 7, 2, 0, 0, 637, 636, 1, 0, 0, 0, 637, 638, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 643, 5, 138, 0, 0, 640, 641, 5, 80, 0, 0, 641, 642, 5, 102, 0, 0, 642, 644, 5, 70, 0, 0, 643, 640, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 648, 1, 0, 0, 0, 645, 646, 3, 182, 91, 0, 646, 647, 5, 2, 0, 0, 647, 649, 1, 0, 0, 0, 648, 645, 1, 0, 0, 0, 648, 649, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 655, 3, 196, 98, 0, 651, 656, 5, 37, 0, 0, 652, 656, 5, 28, 0, 0, 653, 654, 5, 89, 0, 0, 654, 656, 5, 105, 0, 0, 655, 651, 1, 0, 0, 0, 655, 652, 1, 0, 0, 0, 655, 653, 1, 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 671, 1, 0, 0, 0, 657, 672, 5, 59, 0, 0, 658, 672, 5, 88, 0, 0, 659, 669, 5, 141, 0, 0, 660, 661, 5, 105, 0, 0, 661, 666, 3, 188, 94, 0, 662, 663, 5, 5, 0, 0, 663, 665, 3, 188, 94, 0, 664, 662, 1, 0, 0, 0, 665, 668, 1, 0, 0, 0, 666, 664, 1, 0, 0, 0, 666, 667, 1, 0, 0, 0, 667, 670, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 669, 660, 1, 0, 0, 0, 669, 670, 1, 0, 0, 0, 670, 672, 1, 0, 0, 0, 671, 657, 1, 0, 0, 0, 671, 658, 1, 0, 0, 0, 671, 659, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 5, 107, 0, 0, 674, 678, 3, 184, 92, 0, 675, 676, 5, 73, 0, 0, 676, 677, 5, 64, 0, 0, 677, 679, 5, 127, 0, 0, 678, 675, 1, 0, 0, 0, 678, 679, 1, 0, 0, 0, 679, 682, 1, 0, 0, 0, 680, 681, 5, 147, 0, 0, 681, 683, 3, 64, 32, 0, 682, 680, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1, 0, 0, 0, 684, 693, 5, 38, 0, 0, 685, 690, 3, 108, 54, 0, 686, 690, 3, 74, 37, 0, 687, 690, 3, 56, 28, 0, 688, 690, 3, 86, 43, 0, 689, 685, 1, 0, 0, 0, 689, 686, 1, 0, 0, 0, 689, 687, 1, 0, 0, 0, 689, 688, 1, 0, 0, 0, 690, 691, 1, 0, 0, 0, 691, 692, 5, 1, 0, 0, 692, 694, 1, 0, 0, 0, 693, 689, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 693, 1, 0, 0, 0, 695, 696, 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 5, 66, 0, 0, 698, 43, 1, 0, 0, 0, 699, 701, 5, 50, 0, 0, 700, 702, 7, 2, 0, 0, 701, 700, 1, 0, 0, 0, 701, 702, 1, 0, 0, 0, 702, 703, 1, 0, 0, 0, 703, 707, 5, 145, 0, 0, 704, 705, 5, 80, 0, 0, 705, 706, 5, 102, 0, 0, 706, 708, 5, 70, 0, 0, 707, 704, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 712, 1, 0, 0, 0, 709, 710, 3, 182, 91, 0, 710, 711, 5, 2, 0, 0, 711, 713, 1, 0, 0, 0, 712, 709, 1, 0, 0, 0, 712, 713, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 726, 3, 198, 99, 0, 715, 716, 5, 3, 0, 0, 716, 721, 3, 188, 94, 0, 717, 718, 5, 5, 0, 0, 718, 720, 3, 188, 94, 0, 719, 717, 1, 0, 0, 0, 720, 723, 1, 0, 0, 0, 721, 719, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 724, 1, 0, 0, 0, 723, 721, 1, 0, 0, 0, 724, 725, 5, 4, 0, 0, 725, 727, 1, 0, 0, 0, 726, 715, 1, 0, 0, 0, 726, 727, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 5, 33, 0, 0, 729, 730, 3, 86, 43, 0, 730, 45, 1, 0, 0, 0, 731, 732, 5, 50, 0, 0, 732, 733, 5, 146, 0, 0, 733, 737, 5, 132, 0, 0, 734, 735, 5, 80, 0, 0, 735, 736, 5, 102, 0, 0, 736, 738, 5, 70, 0, 0, 737, 734, 1, 0, 0, 0, 737, 738, 1, 0, 0, 0, 738, 742, 1, 0, 0, 0, 739, 740, 3, 182, 91, 0, 740, 741, 5, 2, 0, 0, 741, 743, 1, 0, 0, 0, 742, 739, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 1, 0, 0, 0, 744, 745, 3, 184, 92, 0, 745, 746, 5, 142, 0, 0, 746, 758, 3, 200, 100, 0, 747, 748, 5, 3, 0, 0, 748, 753, 3, 172, 86, 0, 749, 750, 5, 5, 0, 0, 750, 752, 3, 172, 86, 0, 751, 749, 1, 0, 0, 0, 752, 755, 1, 0, 0, 0, 753, 751, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 756, 1, 0, 0, 0, 755, 753, 1, 0, 0, 0, 756, 757, 5, 4, 0, 0, 757, 759, 1, 0, 0, 0, 758, 747, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 47, 1, 0, 0, 0, 760, 762, 5, 149, 0, 0, 761, 763, 5, 116, 0, 0, 762, 761, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 765, 3, 50, 25, 0, 765, 766, 5, 33, 0, 0, 766, 767, 5, 3, 0, 0, 767, 768, 3, 86, 43, 0, 768, 778, 5, 4, 0, 0, 769, 770, 5, 5, 0, 0, 770, 771, 3, 50, 25, 0, 771, 772, 5, 33, 0, 0, 772, 773, 5, 3, 0, 0, 773, 774, 3, 86, 43, 0, 774, 775, 5, 4, 0, 0, 775, 777, 1, 0, 0, 0, 776, 769, 1, 0, 0, 0, 777, 780, 1, 0, 0, 0, 778, 776, 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 49, 1, 0, 0, 0, 780, 778, 1, 0, 0, 0, 781, 793, 3, 184, 92, 0, 782, 783, 5, 3, 0, 0, 783, 788, 3, 188, 94, 0, 784, 785, 5, 5, 0, 0, 785, 787, 3, 188, 94, 0, 786, 784, 1, 0, 0, 0, 787, 790, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, 792, 5, 4, 0, 0, 792, 794, 1, 0, 0, 0, 793, 782, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 51, 1, 0, 0, 0, 795, 796, 3, 50, 25, 0, 796, 797, 5, 33, 0, 0, 797, 798, 5, 3, 0, 0, 798, 799, 3, 164, 82, 0, 799, 801, 5, 139, 0, 0, 800, 802, 5, 29, 0, 0, 801, 800, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803, 804, 3, 166, 83, 0, 804, 805, 5, 4, 0, 0, 805, 53, 1, 0, 0, 0, 806, 818, 3, 184, 92, 0, 807, 808, 5, 3, 0, 0, 808, 813, 3, 188, 94, 0, 809, 810, 5, 5, 0, 0, 810, 812, 3, 188, 94, 0, 811, 809, 1, 0, 0, 0, 812, 815, 1, 0, 0, 0, 813, 811, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 816, 1, 0, 0, 0, 815, 813, 1, 0, 0, 0, 816, 817, 5, 4, 0, 0, 817, 819, 1, 0, 0, 0, 818, 807, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 821, 5, 33, 0, 0, 821, 822, 5, 3, 0, 0, 822, 823, 3, 86, 43, 0, 823, 824, 5, 4, 0, 0, 824, 55, 1, 0, 0, 0, 825, 827, 3, 48, 24, 0, 826, 825, 1, 0, 0, 0, 826, 827, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 5, 59, 0, 0, 829, 830, 5, 75, 0, 0, 830, 833, 3, 114, 57, 0, 831, 832, 5, 148, 0, 0, 832, 834, 3, 64, 32, 0, 833, 831, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 836, 1, 0, 0, 0, 835, 837, 3, 76, 38, 0, 836, 835, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 57, 1, 0, 0, 0, 838, 840, 3, 48, 24, 0, 839, 838, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 842, 5, 59, 0, 0, 842, 843, 5, 75, 0, 0, 843, 846, 3, 114, 57, 0, 844, 845, 5, 148, 0, 0, 845, 847, 3, 64, 32, 0, 846, 844, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 849, 1, 0, 0, 0, 848, 850, 3, 76, 38, 0, 849, 848, 1, 0, 0, 0, 849, 850, 1, 0, 0, 0, 850, 855, 1, 0, 0, 0, 851, 853, 3, 136, 68, 0, 852, 851, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 856, 3, 138, 69, 0, 855, 852, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 59, 1, 0, 0, 0, 857, 859, 5, 61, 0, 0, 858, 860, 5, 55, 0, 0, 859, 858, 1, 0, 0, 0, 859, 860, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 862, 3, 182, 91, 0, 862, 61, 1, 0, 0, 0, 863, 864, 5, 63, 0, 0, 864, 867, 7, 9, 0, 0, 865, 866, 5, 80, 0, 0, 866, 868, 5, 70, 0, 0, 867, 865, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0, 868, 872, 1, 0, 0, 0, 869, 870, 3, 182, 91, 0, 870, 871, 5, 2, 0, 0, 871, 873, 1, 0, 0, 0, 872, 869, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 3, 224, 112, 0, 875, 63, 1, 0, 0, 0, 876, 877, 6, 32, -1, 0, 877, 965, 3, 68, 34, 0, 878, 965, 5, 187, 0, 0, 879, 880, 3, 182, 91, 0, 880, 881, 5, 2, 0, 0, 881, 883, 1, 0, 0, 0, 882, 879, 1, 0, 0, 0, 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 885, 3, 184, 92, 0, 885, 886, 5, 2, 0, 0, 886, 888, 1, 0, 0, 0, 887, 882, 1, 0, 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 965, 3, 188, 94, 0, 890, 891, 3, 168, 84, 0, 891, 892, 3, 64, 32, 21, 892, 965, 1, 0, 0, 0, 893, 894, 3, 180, 90, 0, 894, 907, 5, 3, 0, 0, 895, 897, 5, 62, 0, 0, 896, 895, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 903, 3, 64, 32, 0, 899, 900, 5, 5, 0, 0, 900, 902, 3, 64, 32, 0, 901, 899, 1, 0, 0, 0, 902, 905, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904, 908, 1, 0, 0, 0, 905, 903, 1, 0, 0, 0, 906, 908, 5, 7, 0, 0, 907, 896, 1, 0, 0, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 911, 5, 4, 0, 0, 910, 912, 3, 118, 59, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 914, 1, 0, 0, 0, 913, 915, 3, 122, 61, 0, 914, 913, 1, 0, 0, 0, 914, 915, 1, 0, 0, 0, 915, 965, 1, 0, 0, 0, 916, 917, 5, 3, 0, 0, 917, 922, 3, 64, 32, 0, 918, 919, 5, 5, 0, 0, 919, 921, 3, 64, 32, 0, 920, 918, 1, 0, 0, 0, 921, 924, 1, 0, 0, 0, 922, 920, 1, 0, 0, 0, 922, 923, 1, 0, 0, 0, 923, 925, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 925, 926, 5, 4, 0, 0, 926, 965, 1, 0, 0, 0, 927, 928, 5, 43, 0, 0, 928, 929, 5, 3, 0, 0, 929, 930, 3, 64, 32, 0, 930, 931, 5, 33, 0, 0, 931, 932, 3, 30, 15, 0, 932, 933, 5, 4, 0, 0, 933, 965, 1, 0, 0, 0, 934, 936, 5, 102, 0, 0, 935, 934, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 939, 5, 70, 0, 0, 938, 935, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0, 939, 940, 1, 0, 0, 0, 940, 941, 5, 3, 0, 0, 941, 942, 3, 86, 43, 0, 942, 943, 5, 4, 0, 0, 943, 965, 1, 0, 0, 0, 944, 946, 5, 42, 0, 0, 945, 947, 3, 64, 32, 0, 946, 945, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 953, 1, 0, 0, 0, 948, 949, 5, 147, 0, 0, 949, 950, 3, 64, 32, 0, 950, 951, 5, 135, 0, 0, 951, 952, 3, 64, 32, 0, 952, 954, 1, 0, 0, 0, 953, 948, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 953, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, 959, 1, 0, 0, 0, 957, 958, 5, 65, 0, 0, 958, 960, 3, 64, 32, 0, 959, 957, 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 962, 5, 66, 0, 0, 962, 965, 1, 0, 0, 0, 963, 965, 3, 66, 33, 0, 964, 876, 1, 0, 0, 0, 964, 878, 1, 0, 0, 0, 964, 887, 1, 0, 0, 0, 964, 890, 1, 0, 0, 0, 964, 893, 1, 0, 0, 0, 964, 916, 1, 0, 0, 0, 964, 927, 1, 0, 0, 0, 964, 938, 1, 0, 0, 0, 964, 944, 1, 0, 0, 0, 964, 963, 1, 0, 0, 0, 965, 1085, 1, 0, 0, 0, 966, 967, 10, 20, 0, 0, 967, 968, 5, 11, 0, 0, 968, 1084, 3, 64, 32, 21, 969, 970, 10, 19, 0, 0, 970, 971, 7, 10, 0, 0, 971, 1084, 3, 64, 32, 20, 972, 973, 10, 18, 0, 0, 973, 974, 7, 4, 0, 0, 974, 1084, 3, 64, 32, 19, 975, 976, 10, 17, 0, 0, 976, 977, 7, 11, 0, 0, 977, 1084, 3, 64, 32, 18, 978, 979, 10, 16, 0, 0, 979, 980, 7, 12, 0, 0, 980, 1084, 3, 64, 32, 17, 981, 994, 10, 15, 0, 0, 982, 995, 5, 6, 0, 0, 983, 995, 5, 22, 0, 0, 984, 995, 5, 23, 0, 0, 985, 995, 5, 24, 0, 0, 986, 995, 5, 92, 0, 0, 987, 988, 5, 92, 0, 0, 988, 995, 5, 102, 0, 0, 989, 995, 5, 83, 0, 0, 990, 995, 5, 97, 0, 0, 991, 995, 5, 77, 0, 0, 992, 995, 5, 99, 0, 0, 993, 995, 5, 118, 0, 0, 994, 982, 1, 0, 0, 0, 994, 983, 1, 0, 0, 0, 994, 984, 1, 0, 0, 0, 994, 985, 1, 0, 0, 0, 994, 986, 1, 0, 0, 0, 994, 987, 1, 0, 0, 0, 994, 989, 1, 0, 0, 0, 994, 990, 1, 0, 0, 0, 994, 991, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 994, 993, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 1084, 3, 64, 32, 16, 997, 998, 10, 14, 0, 0, 998, 999, 5, 32, 0, 0, 999, 1084, 3, 64, 32, 15, 1000, 1001, 10, 13, 0, 0, 1001, 1002, 5, 108, 0, 0, 1002, 1084, 3, 64, 32, 14, 1003, 1004, 10, 6, 0, 0, 1004, 1006, 5, 92, 0, 0, 1005, 1007, 5, 102, 0, 0, 1006, 1005, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1084, 3, 64, 32, 7, 1009, 1011, 10, 5, 0, 0, 1010, 1012, 5, 102, 0, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 5, 39, 0, 0, 1014, 1015, 3, 64, 32, 0, 1015, 1016, 5, 32, 0, 0, 1016, 1017, 3, 64, 32, 6, 1017, 1084, 1, 0, 0, 0, 1018, 1019, 10, 9, 0, 0, 1019, 1020, 5, 45, 0, 0, 1020, 1084, 3, 190, 95, 0, 1021, 1023, 10, 8, 0, 0, 1022, 1024, 5, 102, 0, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1026, 7, 13, 0, 0, 1026, 1029, 3, 64, 32, 0, 1027, 1028, 5, 67, 0, 0, 1028, 1030, 3, 64, 32, 0, 1029, 1027, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1084, 1, 0, 0, 0, 1031, 1036, 10, 7, 0, 0, 1032, 1037, 5, 93, 0, 0, 1033, 1037, 5, 103, 0, 0, 1034, 1035, 5, 102, 0, 0, 1035, 1037, 5, 104, 0, 0, 1036, 1032, 1, 0, 0, 0, 1036, 1033, 1, 0, 0, 0, 1036, 1034, 1, 0, 0, 0, 1037, 1084, 1, 0, 0, 0, 1038, 1040, 10, 4, 0, 0, 1039, 1041, 5, 102, 0, 0, 1040, 1039, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1081, 5, 83, 0, 0, 1043, 1053, 5, 3, 0, 0, 1044, 1054, 3, 86, 43, 0, 1045, 1050, 3, 64, 32, 0, 1046, 1047, 5, 5, 0, 0, 1047, 1049, 3, 64, 32, 0, 1048, 1046, 1, 0, 0, 0, 1049, 1052, 1, 0, 0, 0, 1050, 1048, 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1054, 1, 0, 0, 0, 1052, 1050, 1, 0, 0, 0, 1053, 1044, 1, 0, 0, 0, 1053, 1045, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1082, 5, 4, 0, 0, 1056, 1057, 3, 182, 91, 0, 1057, 1058, 5, 2, 0, 0, 1058, 1060, 1, 0, 0, 0, 1059, 1056, 1, 0, 0, 0, 1059, 1060, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1082, 3, 184, 92, 0, 1062, 1063, 3, 182, 91, 0, 1063, 1064, 5, 2, 0, 0, 1064, 1066, 1, 0, 0, 0, 1065, 1062, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 3, 222, 111, 0, 1068, 1077, 5, 3, 0, 0, 1069, 1074, 3, 64, 32, 0, 1070, 1071, 5, 5, 0, 0, 1071, 1073, 3, 64, 32, 0, 1072, 1070, 1, 0, 0, 0, 1073, 1076, 1, 0, 0, 0, 1074, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1077, 1069, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 1080, 5, 4, 0, 0, 1080, 1082, 1, 0, 0, 0, 1081, 1043, 1, 0, 0, 0, 1081, 1059, 1, 0, 0, 0, 1081, 1065, 1, 0, 0, 0, 1082, 1084, 1, 0, 0, 0, 1083, 966, 1, 0, 0, 0, 1083, 969, 1, 0, 0, 0, 1083, 972, 1, 0, 0, 0, 1083, 975, 1, 0, 0, 0, 1083, 978, 1, 0, 0, 0, 1083, 981, 1, 0, 0, 0, 1083, 997, 1, 0, 0, 0, 1083, 1000, 1, 0, 0, 0, 1083, 1003, 1, 0, 0, 0, 1083, 1009, 1, 0, 0, 0, 1083, 1018, 1, 0, 0, 0, 1083, 1021, 1, 0, 0, 0, 1083, 1031, 1, 0, 0, 0, 1083, 1038, 1, 0, 0, 0, 1084, 1087, 1, 0, 0, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 65, 1, 0, 0, 0, 1087, 1085, 1, 0, 0, 0, 1088, 1089, 5, 115, 0, 0, 1089, 1094, 5, 3, 0, 0, 1090, 1095, 5, 81, 0, 0, 1091, 1092, 7, 14, 0, 0, 1092, 1093, 5, 5, 0, 0, 1093, 1095, 3, 170, 85, 0, 1094, 1090, 1, 0, 0, 0, 1094, 1091, 1, 0, 0, 0, 1095, 1096, 1, 0, 0, 0, 1096, 1097, 5, 4, 0, 0, 1097, 67, 1, 0, 0, 0, 1098, 1099, 7, 15, 0, 0, 1099, 69, 1, 0, 0, 0, 1100, 1101, 5, 3, 0, 0, 1101, 1106, 3, 64, 32, 0, 1102, 1103, 5, 5, 0, 0, 1103, 1105, 3, 64, 32, 0, 1104, 1102, 1, 0, 0, 0, 1105, 1108, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1109, 1, 0, 0, 0, 1108, 1106, 1, 0, 0, 0, 1109, 1110, 5, 4, 0, 0, 1110, 71, 1, 0, 0, 0, 1111, 1112, 5, 144, 0, 0, 1112, 1117, 3, 70, 35, 0, 1113, 1114, 5, 5, 0, 0, 1114, 1116, 3, 70, 35, 0, 1115, 1113, 1, 0, 0, 0, 1116, 1119, 1, 0, 0, 0, 1117, 1115, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 73, 1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1120, 1122, 3, 48, 24, 0, 1121, 1120, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1128, 1, 0, 0, 0, 1123, 1129, 5, 88, 0, 0, 1124, 1129, 5, 122, 0, 0, 1125, 1126, 5, 88, 0, 0, 1126, 1127, 5, 108, 0, 0, 1127, 1129, 7, 8, 0, 0, 1128, 1123, 1, 0, 0, 0, 1128, 1124, 1, 0, 0, 0, 1128, 1125, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1134, 5, 91, 0, 0, 1131, 1132, 3, 182, 91, 0, 1132, 1133, 5, 2, 0, 0, 1133, 1135, 1, 0, 0, 0, 1134, 1131, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1139, 3, 184, 92, 0, 1137, 1138, 5, 33, 0, 0, 1138, 1140, 3, 206, 103, 0, 1139, 1137, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1152, 1, 0, 0, 0, 1141, 1142, 5, 3, 0, 0, 1142, 1147, 3, 188, 94, 0, 1143, 1144, 5, 5, 0, 0, 1144, 1146, 3, 188, 94, 0, 1145, 1143, 1, 0, 0, 0, 1146, 1149, 1, 0, 0, 0, 1147, 1145, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1150, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0, 1150, 1151, 5, 4, 0, 0, 1151, 1153, 1, 0, 0, 0, 1152, 1141, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1163, 1, 0, 0, 0, 1154, 1157, 3, 72, 36, 0, 1155, 1157, 3, 86, 43, 0, 1156, 1154, 1, 0, 0, 0, 1156, 1155, 1, 0, 0, 0, 1157, 1159, 1, 0, 0, 0, 1158, 1160, 3, 78, 39, 0, 1159, 1158, 1, 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1164, 1, 0, 0, 0, 1161, 1162, 5, 56, 0, 0, 1162, 1164, 5, 144, 0, 0, 1163, 1156, 1, 0, 0, 0, 1163, 1161, 1, 0, 0, 0, 1164, 1166, 1, 0, 0, 0, 1165, 1167, 3, 76, 38, 0, 1166, 1165, 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 75, 1, 0, 0, 0, 1168, 1169, 5, 124, 0, 0, 1169, 1174, 3, 100, 50, 0, 1170, 1171, 5, 5, 0, 0, 1171, 1173, 3, 100, 50, 0, 1172, 1170, 1, 0, 0, 0, 1173, 1176, 1, 0, 0, 0, 1174, 1172, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 77, 1, 0, 0, 0, 1176, 1174, 1, 0, 0, 0, 1177, 1178, 5, 107, 0, 0, 1178, 1193, 5, 48, 0, 0, 1179, 1180, 5, 3, 0, 0, 1180, 1185, 3, 24, 12, 0, 1181, 1182, 5, 5, 0, 0, 1182, 1184, 3, 24, 12, 0, 1183, 1181, 1, 0, 0, 0, 1184, 1187, 1, 0, 0, 0, 1185, 1183, 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1188, 1, 0, 0, 0, 1187, 1185, 1, 0, 0, 0, 1188, 1191, 5, 4, 0, 0, 1189, 1190, 5, 148, 0, 0, 1190, 1192, 3, 64, 32, 0, 1191, 1189, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1194, 1, 0, 0, 0, 1193, 1179, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1222, 5, 183, 0, 0, 1196, 1223, 5, 184, 0, 0, 1197, 1198, 5, 141, 0, 0, 1198, 1201, 5, 131, 0, 0, 1199, 1202, 3, 188, 94, 0, 1200, 1202, 3, 110, 55, 0, 1201, 1199, 1, 0, 0, 0, 1201, 1200, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 1204, 5, 6, 0, 0, 1204, 1215, 3, 64, 32, 0, 1205, 1208, 5, 5, 0, 0, 1206, 1209, 3, 188, 94, 0, 1207, 1209, 3, 110, 55, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1207, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1211, 5, 6, 0, 0, 1211, 1212, 3, 64, 32, 0, 1212, 1214, 1, 0, 0, 0, 1213, 1205, 1, 0, 0, 0, 1214, 1217, 1, 0, 0, 0, 1215, 1213, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1220, 1, 0, 0, 0, 1217, 1215, 1, 0, 0, 0, 1218, 1219, 5, 148, 0, 0, 1219, 1221, 3, 64, 32, 0, 1220, 1218, 1, 0, 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 1223, 1, 0, 0, 0, 1222, 1196, 1, 0, 0, 0, 1222, 1197, 1, 0, 0, 0, 1223, 79, 1, 0, 0, 0, 1224, 1228, 5, 112, 0, 0, 1225, 1226, 3, 182, 91, 0, 1226, 1227, 5, 2, 0, 0, 1227, 1229, 1, 0, 0, 0, 1228, 1225, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1230, 1, 0, 0, 0, 1230, 1237, 3, 202, 101, 0, 1231, 1232, 5, 6, 0, 0, 1232, 1238, 3, 82, 41, 0, 1233, 1234, 5, 3, 0, 0, 1234, 1235, 3, 82, 41, 0, 1235, 1236, 5, 4, 0, 0, 1236, 1238, 1, 0, 0, 0, 1237, 1231, 1, 0, 0, 0, 1237, 1233, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 81, 1, 0, 0, 0, 1239, 1243, 3, 34, 17, 0, 1240, 1243, 3, 178, 89, 0, 1241, 1243, 5, 188, 0, 0, 1242, 1239, 1, 0, 0, 0, 1242, 1240, 1, 0, 0, 0, 1242, 1241, 1, 0, 0, 0, 1243, 83, 1, 0, 0, 0, 1244, 1255, 5, 119, 0, 0, 1245, 1256, 3, 190, 95, 0, 1246, 1247, 3, 182, 91, 0, 1247, 1248, 5, 2, 0, 0, 1248, 1250, 1, 0, 0, 0, 1249, 1246, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1253, 1, 0, 0, 0, 1251, 1254, 3, 184, 92, 0, 1252, 1254, 3, 194, 97, 0, 1253, 1251, 1, 0, 0, 0, 1253, 1252, 1, 0, 0, 0, 1254, 1256, 1, 0, 0, 0, 1255, 1245, 1, 0, 0, 0, 1255, 1249, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 85, 1, 0, 0, 0, 1257, 1259, 3, 134, 67, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1266, 3, 90, 45, 0, 1261, 1262, 3, 106, 53, 0, 1262, 1263, 3, 90, 45, 0, 1263, 1265, 1, 0, 0, 0, 1264, 1261, 1, 0, 0, 0, 1265, 1268, 1, 0, 0, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1270, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1269, 1271, 3, 136, 68, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 1, 0, 0, 0, 1272, 1274, 3, 138, 69, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 87, 1, 0, 0, 0, 1275, 1283, 3, 98, 49, 0, 1276, 1277, 3, 102, 51, 0, 1277, 1279, 3, 98, 49, 0, 1278, 1280, 3, 104, 52, 0, 1279, 1278, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1282, 1, 0, 0, 0, 1281, 1276, 1, 0, 0, 0, 1282, 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 89, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1288, 5, 130, 0, 0, 1287, 1289, 7, 16, 0, 0, 1288, 1287, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1295, 3, 100, 50, 0, 1291, 1292, 5, 5, 0, 0, 1292, 1294, 3, 100, 50, 0, 1293, 1291, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1310, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1308, 5, 75, 0, 0, 1299, 1304, 3, 98, 49, 0, 1300, 1301, 5, 5, 0, 0, 1301, 1303, 3, 98, 49, 0, 1302, 1300, 1, 0, 0, 0, 1303, 1306, 1, 0, 0, 0, 1304, 1302, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1309, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1307, 1309, 3, 88, 44, 0, 1308, 1299, 1, 0, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 1311, 1, 0, 0, 0, 1310, 1298, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1314, 1, 0, 0, 0, 1312, 1313, 5, 148, 0, 0, 1313, 1315, 3, 64, 32, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1330, 1, 0, 0, 0, 1316, 1317, 5, 78, 0, 0, 1317, 1318, 5, 40, 0, 0, 1318, 1323, 3, 64, 32, 0, 1319, 1320, 5, 5, 0, 0, 1320, 1322, 3, 64, 32, 0, 1321, 1319, 1, 0, 0, 0, 1322, 1325, 1, 0, 0, 0, 1323, 1321, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1328, 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, 1326, 1327, 5, 79, 0, 0, 1327, 1329, 3, 64, 32, 0, 1328, 1326, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1331, 1, 0, 0, 0, 1330, 1316, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1346, 1, 0, 0, 0, 1332, 1333, 5, 174, 0, 0, 1333, 1334, 3, 210, 105, 0, 1334, 1335, 5, 33, 0, 0, 1335, 1343, 3, 120, 60, 0, 1336, 1337, 5, 5, 0, 0, 1337, 1338, 3, 210, 105, 0, 1338, 1339, 5, 33, 0, 0, 1339, 1340, 3, 120, 60, 0, 1340, 1342, 1, 0, 0, 0, 1341, 1336, 1, 0, 0, 0, 1342, 1345, 1, 0, 0, 0, 1343, 1341, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1347, 1, 0, 0, 0, 1345, 1343, 1, 0, 0, 0, 1346, 1332, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1350, 1, 0, 0, 0, 1348, 1350, 3, 72, 36, 0, 1349, 1286, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, 1350, 91, 1, 0, 0, 0, 1351, 1352, 3, 86, 43, 0, 1352, 93, 1, 0, 0, 0, 1353, 1355, 3, 134, 67, 0, 1354, 1353, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1358, 3, 90, 45, 0, 1357, 1359, 3, 136, 68, 0, 1358, 1357, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1361, 1, 0, 0, 0, 1360, 1362, 3, 138, 69, 0, 1361, 1360, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 95, 1, 0, 0, 0, 1363, 1365, 3, 134, 67, 0, 1364, 1363, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1366, 1, 0, 0, 0, 1366, 1376, 3, 90, 45, 0, 1367, 1369, 5, 139, 0, 0, 1368, 1370, 5, 29, 0, 0, 1369, 1368, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1374, 1, 0, 0, 0, 1371, 1374, 5, 90, 0, 0, 1372, 1374, 5, 68, 0, 0, 1373, 1367, 1, 0, 0, 0, 1373, 1371, 1, 0, 0, 0, 1373, 1372, 1, 0, 0, 0, 1374, 1375, 1, 0, 0, 0, 1375, 1377, 3, 90, 45, 0, 1376, 1373, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1379, 1, 0, 0, 0, 1379, 1381, 1, 0, 0, 0, 1380, 1382, 3, 136, 68, 0, 1381, 1380, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1384, 1, 0, 0, 0, 1383, 1385, 3, 138, 69, 0, 1384, 1383, 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 97, 1, 0, 0, 0, 1386, 1387, 3, 182, 91, 0, 1387, 1388, 5, 2, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1386, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1396, 3, 184, 92, 0, 1392, 1394, 5, 33, 0, 0, 1393, 1392, 1, 0, 0, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1395, 1, 0, 0, 0, 1395, 1397, 3, 206, 103, 0, 1396, 1393, 1, 0, 0, 0, 1396, 1397, 1, 0, 0, 0, 1397, 1403, 1, 0, 0, 0, 1398, 1399, 5, 85, 0, 0, 1399, 1400, 5, 40, 0, 0, 1400, 1404, 3, 194, 97, 0, 1401, 1402, 5, 102, 0, 0, 1402, 1404, 5, 85, 0, 0, 1403, 1398, 1, 0, 0, 0, 1403, 1401, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1451, 1, 0, 0, 0, 1405, 1406, 3, 182, 91, 0, 1406, 1407, 5, 2, 0, 0, 1407, 1409, 1, 0, 0, 0, 1408, 1405, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1411, 3, 222, 111, 0, 1411, 1412, 5, 3, 0, 0, 1412, 1417, 3, 64, 32, 0, 1413, 1414, 5, 5, 0, 0, 1414, 1416, 3, 64, 32, 0, 1415, 1413, 1, 0, 0, 0, 1416, 1419, 1, 0, 0, 0, 1417, 1415, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1420, 1, 0, 0, 0, 1419, 1417, 1, 0, 0, 0, 1420, 1425, 5, 4, 0, 0, 1421, 1423, 5, 33, 0, 0, 1422, 1421, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 1424, 1, 0, 0, 0, 1424, 1426, 3, 206, 103, 0, 1425, 1422, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1451, 1, 0, 0, 0, 1427, 1437, 5, 3, 0, 0, 1428, 1433, 3, 98, 49, 0, 1429, 1430, 5, 5, 0, 0, 1430, 1432, 3, 98, 49, 0, 1431, 1429, 1, 0, 0, 0, 1432, 1435, 1, 0, 0, 0, 1433, 1431, 1, 0, 0, 0, 1433, 1434, 1, 0, 0, 0, 1434, 1438, 1, 0, 0, 0, 1435, 1433, 1, 0, 0, 0, 1436, 1438, 3, 88, 44, 0, 1437, 1428, 1, 0, 0, 0, 1437, 1436, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1440, 5, 4, 0, 0, 1440, 1451, 1, 0, 0, 0, 1441, 1442, 5, 3, 0, 0, 1442, 1443, 3, 86, 43, 0, 1443, 1448, 5, 4, 0, 0, 1444, 1446, 5, 33, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1449, 3, 206, 103, 0, 1448, 1445, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1451, 1, 0, 0, 0, 1450, 1389, 1, 0, 0, 0, 1450, 1408, 1, 0, 0, 0, 1450, 1427, 1, 0, 0, 0, 1450, 1441, 1, 0, 0, 0, 1451, 99, 1, 0, 0, 0, 1452, 1465, 5, 7, 0, 0, 1453, 1454, 3, 184, 92, 0, 1454, 1455, 5, 2, 0, 0, 1455, 1456, 5, 7, 0, 0, 1456, 1465, 1, 0, 0, 0, 1457, 1462, 3, 64, 32, 0, 1458, 1460, 5, 33, 0, 0, 1459, 1458, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1463, 3, 174, 87, 0, 1462, 1459, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1465, 1, 0, 0, 0, 1464, 1452, 1, 0, 0, 0, 1464, 1453, 1, 0, 0, 0, 1464, 1457, 1, 0, 0, 0, 1465, 101, 1, 0, 0, 0, 1466, 1480, 5, 5, 0, 0, 1467, 1469, 5, 100, 0, 0, 1468, 1467, 1, 0, 0, 0, 1468, 1469, 1, 0, 0, 0, 1469, 1476, 1, 0, 0, 0, 1470, 1472, 5, 96, 0, 0, 1471, 1473, 5, 110, 0, 0, 1472, 1471, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 1477, 1, 0, 0, 0, 1474, 1477, 5, 87, 0, 0, 1475, 1477, 5, 51, 0, 0, 1476, 1470, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1476, 1475, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1480, 5, 94, 0, 0, 1479, 1466, 1, 0, 0, 0, 1479, 1468, 1, 0, 0, 0, 1480, 103, 1, 0, 0, 0, 1481, 1482, 5, 107, 0, 0, 1482, 1496, 3, 64, 32, 0, 1483, 1484, 5, 142, 0, 0, 1484, 1485, 5, 3, 0, 0, 1485, 1490, 3, 188, 94, 0, 1486, 1487, 5, 5, 0, 0, 1487, 1489, 3, 188, 94, 0, 1488, 1486, 1, 0, 0, 0, 1489, 1492, 1, 0, 0, 0, 1490, 1488, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1493, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1493, 1494, 5, 4, 0, 0, 1494, 1496, 1, 0, 0, 0, 1495, 1481, 1, 0, 0, 0, 1495, 1483, 1, 0, 0, 0, 1496, 105, 1, 0, 0, 0, 1497, 1499, 5, 139, 0, 0, 1498, 1500, 5, 29, 0, 0, 1499, 1498, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1504, 1, 0, 0, 0, 1501, 1504, 5, 90, 0, 0, 1502, 1504, 5, 68, 0, 0, 1503, 1497, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1502, 1, 0, 0, 0, 1504, 107, 1, 0, 0, 0, 1505, 1507, 3, 48, 24, 0, 1506, 1505, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1511, 5, 141, 0, 0, 1509, 1510, 5, 108, 0, 0, 1510, 1512, 7, 8, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511, 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 3, 114, 57, 0, 1514, 1517, 5, 131, 0, 0, 1515, 1518, 3, 188, 94, 0, 1516, 1518, 3, 110, 55, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1516, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 5, 6, 0, 0, 1520, 1531, 3, 64, 32, 0, 1521, 1524, 5, 5, 0, 0, 1522, 1525, 3, 188, 94, 0, 1523, 1525, 3, 110, 55, 0, 1524, 1522, 1, 0, 0, 0, 1524, 1523, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1527, 5, 6, 0, 0, 1527, 1528, 3, 64, 32, 0, 1528, 1530, 1, 0, 0, 0, 1529, 1521, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531, 1529, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1546, 1, 0, 0, 0, 1533, 1531, 1, 0, 0, 0, 1534, 1544, 5, 75, 0, 0, 1535, 1540, 3, 98, 49, 0, 1536, 1537, 5, 5, 0, 0, 1537, 1539, 3, 98, 49, 0, 1538, 1536, 1, 0, 0, 0, 1539, 1542, 1, 0, 0, 0, 1540, 1538, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1545, 1, 0, 0, 0, 1542, 1540, 1, 0, 0, 0, 1543, 1545, 3, 88, 44, 0, 1544, 1535, 1, 0, 0, 0, 1544, 1543, 1, 0, 0, 0, 1545, 1547, 1, 0, 0, 0, 1546, 1534, 1, 0, 0, 0, 1546, 1547, 1, 0, 0, 0, 1547, 1550, 1, 0, 0, 0, 1548, 1549, 5, 148, 0, 0, 1549, 1551, 3, 64, 32, 0, 1550, 1548, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1553, 1, 0, 0, 0, 1552, 1554, 3, 76, 38, 0, 1553, 1552, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 109, 1, 0, 0, 0, 1555, 1556, 5, 3, 0, 0, 1556, 1561, 3, 188, 94, 0, 1557, 1558, 5, 5, 0, 0, 1558, 1560, 3, 188, 94, 0, 1559, 1557, 1, 0, 0, 0, 1560, 1563, 1, 0, 0, 0, 1561, 1559, 1, 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1564, 1, 0, 0, 0, 1563, 1561, 1, 0, 0, 0, 1564, 1565, 5, 4, 0, 0, 1565, 111, 1, 0, 0, 0, 1566, 1568, 3, 48, 24, 0, 1567, 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 1572, 5, 141, 0, 0, 1570, 1571, 5, 108, 0, 0, 1571, 1573, 7, 8, 0, 0, 1572, 1570, 1, 0, 0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1575, 3, 114, 57, 0, 1575, 1578, 5, 131, 0, 0, 1576, 1579, 3, 188, 94, 0, 1577, 1579, 3, 110, 55, 0, 1578, 1576, 1, 0, 0, 0, 1578, 1577, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 5, 6, 0, 0, 1581, 1592, 3, 64, 32, 0, 1582, 1585, 5, 5, 0, 0, 1583, 1586, 3, 188, 94, 0, 1584, 1586, 3, 110, 55, 0, 1585, 1583, 1, 0, 0, 0, 1585, 1584, 1, 0, 0, 0, 1586, 1587, 1, 0, 0, 0, 1587, 1588, 5, 6, 0, 0, 1588, 1589, 3, 64, 32, 0, 1589, 1591, 1, 0, 0, 0, 1590, 1582, 1, 0, 0, 0, 1591, 1594, 1, 0, 0, 0, 1592, 1590, 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 1597, 1, 0, 0, 0, 1594, 1592, 1, 0, 0, 0, 1595, 1596, 5, 148, 0, 0, 1596, 1598, 3, 64, 32, 0, 1597, 1595, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1600, 1, 0, 0, 0, 1599, 1601, 3, 76, 38, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1606, 1, 0, 0, 0, 1602, 1604, 3, 136, 68, 0, 1603, 1602, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604, 1605, 1, 0, 0, 0, 1605, 1607, 3, 138, 69, 0, 1606, 1603, 1, 0, 0, 0, 1606, 1607, 1, 0, 0, 0, 1607, 113, 1, 0, 0, 0, 1608, 1609, 3, 182, 91, 0, 1609, 1610, 5, 2, 0, 0, 1610, 1612, 1, 0, 0, 0, 1611, 1608, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1616, 3, 184, 92, 0, 1614, 1615, 5, 33, 0, 0, 1615, 1617, 3, 212, 106, 0, 1616, 1614, 1, 0, 0, 0, 1616, 1617, 1, 0, 0, 0, 1617, 1623, 1, 0, 0, 0, 1618, 1619, 5, 85, 0, 0, 1619, 1620, 5, 40, 0, 0, 1620, 1624, 3, 194, 97, 0, 1621, 1622, 5, 102, 0, 0, 1622, 1624, 5, 85, 0, 0, 1623, 1618, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 115, 1, 0, 0, 0, 1625, 1627, 5, 143, 0, 0, 1626, 1628, 3, 182, 91, 0, 1627, 1626, 1, 0, 0, 0, 1627, 1628, 1, 0, 0, 0, 1628, 1631, 1, 0, 0, 0, 1629, 1630, 5, 91, 0, 0, 1630, 1632, 3, 214, 107, 0, 1631, 1629, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 117, 1, 0, 0, 0, 1633, 1634, 5, 178, 0, 0, 1634, 1635, 5, 3, 0, 0, 1635, 1636, 5, 148, 0, 0, 1636, 1637, 3, 64, 32, 0, 1637, 1638, 5, 4, 0, 0, 1638, 119, 1, 0, 0, 0, 1639, 1641, 5, 3, 0, 0, 1640, 1642, 3, 216, 108, 0, 1641, 1640, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1653, 1, 0, 0, 0, 1643, 1644, 5, 153, 0, 0, 1644, 1645, 5, 40, 0, 0, 1645, 1650, 3, 64, 32, 0, 1646, 1647, 5, 5, 0, 0, 1647, 1649, 3, 64, 32, 0, 1648, 1646, 1, 0, 0, 0, 1649, 1652, 1, 0, 0, 0, 1650, 1648, 1, 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 1654, 1, 0, 0, 0, 1652, 1650, 1, 0, 0, 0, 1653, 1643, 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1656, 5, 109, 0, 0, 1656, 1657, 5, 40, 0, 0, 1657, 1662, 3, 140, 70, 0, 1658, 1659, 5, 5, 0, 0, 1659, 1661, 3, 140, 70, 0, 1660, 1658, 1, 0, 0, 0, 1661, 1664, 1, 0, 0, 0, 1662, 1660, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663, 1666, 1, 0, 0, 0, 1664, 1662, 1, 0, 0, 0, 1665, 1667, 3, 124, 62, 0, 1666, 1665, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 1669, 5, 4, 0, 0, 1669, 121, 1, 0, 0, 0, 1670, 1704, 5, 152, 0, 0, 1671, 1705, 3, 210, 105, 0, 1672, 1674, 5, 3, 0, 0, 1673, 1675, 3, 216, 108, 0, 1674, 1673, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1686, 1, 0, 0, 0, 1676, 1677, 5, 153, 0, 0, 1677, 1678, 5, 40, 0, 0, 1678, 1683, 3, 64, 32, 0, 1679, 1680, 5, 5, 0, 0, 1680, 1682, 3, 64, 32, 0, 1681, 1679, 1, 0, 0, 0, 1682, 1685, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1687, 1, 0, 0, 0, 1685, 1683, 1, 0, 0, 0, 1686, 1676, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 1698, 1, 0, 0, 0, 1688, 1689, 5, 109, 0, 0, 1689, 1690, 5, 40, 0, 0, 1690, 1695, 3, 140, 70, 0, 1691, 1692, 5, 5, 0, 0, 1692, 1694, 3, 140, 70, 0, 1693, 1691, 1, 0, 0, 0, 1694, 1697, 1, 0, 0, 0, 1695, 1693, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1699, 1, 0, 0, 0, 1697, 1695, 1, 0, 0, 0, 1698, 1688, 1, 0, 0, 0, 1698, 1699, 1, 0, 0, 0, 1699, 1701, 1, 0, 0, 0, 1700, 1702, 3, 124, 62, 0, 1701, 1700, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1705, 5, 4, 0, 0, 1704, 1671, 1, 0, 0, 0, 1704, 1672, 1, 0, 0, 0, 1705, 123, 1, 0, 0, 0, 1706, 1716, 3, 126, 63, 0, 1707, 1714, 5, 180, 0, 0, 1708, 1709, 5, 101, 0, 0, 1709, 1715, 5, 182, 0, 0, 1710, 1711, 5, 157, 0, 0, 1711, 1715, 5, 127, 0, 0, 1712, 1715, 5, 78, 0, 0, 1713, 1715, 5, 181, 0, 0, 1714, 1708, 1, 0, 0, 0, 1714, 1710, 1, 0, 0, 0, 1714, 1712, 1, 0, 0, 0, 1714, 1713, 1, 0, 0, 0, 1715, 1717, 1, 0, 0, 0, 1716, 1707, 1, 0, 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 125, 1, 0, 0, 0, 1718, 1725, 7, 17, 0, 0, 1719, 1726, 3, 148, 74, 0, 1720, 1721, 5, 39, 0, 0, 1721, 1722, 3, 144, 72, 0, 1722, 1723, 5, 32, 0, 0, 1723, 1724, 3, 146, 73, 0, 1724, 1726, 1, 0, 0, 0, 1725, 1719, 1, 0, 0, 0, 1725, 1720, 1, 0, 0, 0, 1726, 127, 1, 0, 0, 0, 1727, 1728, 3, 218, 109, 0, 1728, 1738, 5, 3, 0, 0, 1729, 1734, 3, 64, 32, 0, 1730, 1731, 5, 5, 0, 0, 1731, 1733, 3, 64, 32, 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, 1739, 5, 7, 0, 0, 1738, 1729, 1, 0, 0, 0, 1738, 1737, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1741, 5, 4, 0, 0, 1741, 129, 1, 0, 0, 0, 1742, 1743, 3, 220, 110, 0, 1743, 1756, 5, 3, 0, 0, 1744, 1746, 5, 62, 0, 0, 1745, 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1752, 3, 64, 32, 0, 1748, 1749, 5, 5, 0, 0, 1749, 1751, 3, 64, 32, 0, 1750, 1748, 1, 0, 0, 0, 1751, 1754, 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1752, 1753, 1, 0, 0, 0, 1753, 1757, 1, 0, 0, 0, 1754, 1752, 1, 0, 0, 0, 1755, 1757, 5, 7, 0, 0, 1756, 1745, 1, 0, 0, 0, 1756, 1755, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1760, 5, 4, 0, 0, 1759, 1761, 3, 118, 59, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 131, 1, 0, 0, 0, 1762, 1763, 3, 150, 75, 0, 1763, 1773, 5, 3, 0, 0, 1764, 1769, 3, 64, 32, 0, 1765, 1766, 5, 5, 0, 0, 1766, 1768, 3, 64, 32, 0, 1767, 1765, 1, 0, 0, 0, 1768, 1771, 1, 0, 0, 0, 1769, 1767, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1774, 1, 0, 0, 0, 1771, 1769, 1, 0, 0, 0, 1772, 1774, 5, 7, 0, 0, 1773, 1764, 1, 0, 0, 0, 1773, 1772, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1777, 5, 4, 0, 0, 1776, 1778, 3, 118, 59, 0, 1777, 1776, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1782, 5, 152, 0, 0, 1780, 1783, 3, 120, 60, 0, 1781, 1783, 3, 210, 105, 0, 1782, 1780, 1, 0, 0, 0, 1782, 1781, 1, 0, 0, 0, 1783, 133, 1, 0, 0, 0, 1784, 1786, 5, 149, 0, 0, 1785, 1787, 5, 116, 0, 0, 1786, 1785, 1, 0, 0, 0, 1786, 1787, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1793, 3, 54, 27, 0, 1789, 1790, 5, 5, 0, 0, 1790, 1792, 3, 54, 27, 0, 1791, 1789, 1, 0, 0, 0, 1792, 1795, 1, 0, 0, 0, 1793, 1791, 1, 0, 0, 0, 1793, 1794, 1, 0, 0, 0, 1794, 135, 1, 0, 0, 0, 1795, 1793, 1, 0, 0, 0, 1796, 1797, 5, 109, 0, 0, 1797, 1798, 5, 40, 0, 0, 1798, 1803, 3, 140, 70, 0, 1799, 1800, 5, 5, 0, 0, 1800, 1802, 3, 140, 70, 0, 1801, 1799, 1, 0, 0, 0, 1802, 1805, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 137, 1, 0, 0, 0, 1805, 1803, 1, 0, 0, 0, 1806, 1807, 5, 98, 0, 0, 1807, 1810, 3, 64, 32, 0, 1808, 1809, 7, 18, 0, 0, 1809, 1811, 3, 64, 32, 0, 1810, 1808, 1, 0, 0, 0, 1810, 1811, 1, 0, 0, 0, 1811, 139, 1, 0, 0, 0, 1812, 1815, 3, 64, 32, 0, 1813, 1814, 5, 45, 0, 0, 1814, 1816, 3, 190, 95, 0, 1815, 1813, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1818, 1, 0, 0, 0, 1817, 1819, 3, 142, 71, 0, 1818, 1817, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1822, 1, 0, 0, 0, 1820, 1821, 5, 175, 0, 0, 1821, 1823, 7, 19, 0, 0, 1822, 1820, 1, 0, 0, 0, 1822, 1823, 1, 0, 0, 0, 1823, 141, 1, 0, 0, 0, 1824, 1825, 7, 20, 0, 0, 1825, 143, 1, 0, 0, 0, 1826, 1827, 3, 64, 32, 0, 1827, 1828, 5, 155, 0, 0, 1828, 1837, 1, 0, 0, 0, 1829, 1830, 3, 64, 32, 0, 1830, 1831, 5, 158, 0, 0, 1831, 1837, 1, 0, 0, 0, 1832, 1833, 5, 157, 0, 0, 1833, 1837, 5, 127, 0, 0, 1834, 1835, 5, 156, 0, 0, 1835, 1837, 5, 155, 0, 0, 1836, 1826, 1, 0, 0, 0, 1836, 1829, 1, 0, 0, 0, 1836, 1832, 1, 0, 0, 0, 1836, 1834, 1, 0, 0, 0, 1837, 145, 1, 0, 0, 0, 1838, 1839, 3, 64, 32, 0, 1839, 1840, 5, 155, 0, 0, 1840, 1849, 1, 0, 0, 0, 1841, 1842, 3, 64, 32, 0, 1842, 1843, 5, 158, 0, 0, 1843, 1849, 1, 0, 0, 0, 1844, 1845, 5, 157, 0, 0, 1845, 1849, 5, 127, 0, 0, 1846, 1847, 5, 156, 0, 0, 1847, 1849, 5, 158, 0, 0, 1848, 1838, 1, 0, 0, 0, 1848, 1841, 1, 0, 0, 0, 1848, 1844, 1, 0, 0, 0, 1848, 1846, 1, 0, 0, 0, 1849, 147, 1, 0, 0, 0, 1850, 1851, 3, 64, 32, 0, 1851, 1852, 5, 155, 0, 0, 1852, 1858, 1, 0, 0, 0, 1853, 1854, 5, 156, 0, 0, 1854, 1858, 5, 155, 0, 0, 1855, 1856, 5, 157, 0, 0, 1856, 1858, 5, 127, 0, 0, 1857, 1850, 1, 0, 0, 0, 1857, 1853, 1, 0, 0, 0, 1857, 1855, 1, 0, 0, 0, 1858, 149, 1, 0, 0, 0, 1859, 1860, 7, 21, 0, 0, 1860, 1861, 5, 3, 0, 0, 1861, 1862, 3, 64, 32, 0, 1862, 1863, 5, 4, 0, 0, 1863, 1864, 5, 152, 0, 0, 1864, 1866, 5, 3, 0, 0, 1865, 1867, 3, 156, 78, 0, 1866, 1865, 1, 0, 0, 0, 1866, 1867, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1870, 3, 160, 80, 0, 1869, 1871, 3, 126, 63, 0, 1870, 1869, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1873, 5, 4, 0, 0, 1873, 1945, 1, 0, 0, 0, 1874, 1875, 7, 22, 0, 0, 1875, 1876, 5, 3, 0, 0, 1876, 1877, 5, 4, 0, 0, 1877, 1878, 5, 152, 0, 0, 1878, 1880, 5, 3, 0, 0, 1879, 1881, 3, 156, 78, 0, 1880, 1879, 1, 0, 0, 0, 1880, 1881, 1, 0, 0, 0, 1881, 1883, 1, 0, 0, 0, 1882, 1884, 3, 158, 79, 0, 1883, 1882, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885, 1945, 5, 4, 0, 0, 1886, 1887, 7, 23, 0, 0, 1887, 1888, 5, 3, 0, 0, 1888, 1889, 5, 4, 0, 0, 1889, 1890, 5, 152, 0, 0, 1890, 1892, 5, 3, 0, 0, 1891, 1893, 3, 156, 78, 0, 1892, 1891, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 3, 160, 80, 0, 1895, 1896, 5, 4, 0, 0, 1896, 1945, 1, 0, 0, 0, 1897, 1898, 7, 24, 0, 0, 1898, 1899, 5, 3, 0, 0, 1899, 1901, 3, 64, 32, 0, 1900, 1902, 3, 152, 76, 0, 1901, 1900, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1904, 1, 0, 0, 0, 1903, 1905, 3, 154, 77, 0, 1904, 1903, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 1907, 5, 4, 0, 0, 1907, 1908, 5, 152, 0, 0, 1908, 1910, 5, 3, 0, 0, 1909, 1911, 3, 156, 78, 0, 1910, 1909, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1913, 3, 160, 80, 0, 1913, 1914, 5, 4, 0, 0, 1914, 1945, 1, 0, 0, 0, 1915, 1916, 5, 164, 0, 0, 1916, 1917, 5, 3, 0, 0, 1917, 1918, 3, 64, 32, 0, 1918, 1919, 5, 5, 0, 0, 1919, 1920, 3, 34, 17, 0, 1920, 1921, 5, 4, 0, 0, 1921, 1922, 5, 152, 0, 0, 1922, 1924, 5, 3, 0, 0, 1923, 1925, 3, 156, 78, 0, 1924, 1923, 1, 0, 0, 0, 1924, 1925, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1928, 3, 160, 80, 0, 1927, 1929, 3, 126, 63, 0, 1928, 1927, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 1930, 1, 0, 0, 0, 1930, 1931, 5, 4, 0, 0, 1931, 1945, 1, 0, 0, 0, 1932, 1933, 5, 165, 0, 0, 1933, 1934, 5, 3, 0, 0, 1934, 1935, 3, 64, 32, 0, 1935, 1936, 5, 4, 0, 0, 1936, 1937, 5, 152, 0, 0, 1937, 1939, 5, 3, 0, 0, 1938, 1940, 3, 156, 78, 0, 1939, 1938, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1941, 1, 0, 0, 0, 1941, 1942, 3, 160, 80, 0, 1942, 1943, 5, 4, 0, 0, 1943, 1945, 1, 0, 0, 0, 1944, 1859, 1, 0, 0, 0, 1944, 1874, 1, 0, 0, 0, 1944, 1886, 1, 0, 0, 0, 1944, 1897, 1, 0, 0, 0, 1944, 1915, 1, 0, 0, 0, 1944, 1932, 1, 0, 0, 0, 1945, 151, 1, 0, 0, 0, 1946, 1947, 5, 5, 0, 0, 1947, 1948, 3, 34, 17, 0, 1948, 153, 1, 0, 0, 0, 1949, 1950, 5, 5, 0, 0, 1950, 1951, 3, 34, 17, 0, 1951, 155, 1, 0, 0, 0, 1952, 1953, 5, 153, 0, 0, 1953, 1955, 5, 40, 0, 0, 1954, 1956, 3, 64, 32, 0, 1955, 1954, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1955, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 157, 1, 0, 0, 0, 1959, 1960, 5, 109, 0, 0, 1960, 1962, 5, 40, 0, 0, 1961, 1963, 3, 64, 32, 0, 1962, 1961, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 1962, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 159, 1, 0, 0, 0, 1966, 1967, 5, 109, 0, 0, 1967, 1968, 5, 40, 0, 0, 1968, 1969, 3, 162, 81, 0, 1969, 161, 1, 0, 0, 0, 1970, 1972, 3, 64, 32, 0, 1971, 1973, 3, 142, 71, 0, 1972, 1971, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1981, 1, 0, 0, 0, 1974, 1975, 5, 5, 0, 0, 1975, 1977, 3, 64, 32, 0, 1976, 1978, 3, 142, 71, 0, 1977, 1976, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1980, 1, 0, 0, 0, 1979, 1974, 1, 0, 0, 0, 1980, 1983, 1, 0, 0, 0, 1981, 1979, 1, 0, 0, 0, 1981, 1982, 1, 0, 0, 0, 1982, 163, 1, 0, 0, 0, 1983, 1981, 1, 0, 0, 0, 1984, 1985, 3, 86, 43, 0, 1985, 165, 1, 0, 0, 0, 1986, 1987, 3, 86, 43, 0, 1987, 167, 1, 0, 0, 0, 1988, 1989, 7, 25, 0, 0, 1989, 169, 1, 0, 0, 0, 1990, 1991, 5, 188, 0, 0, 1991, 171, 1, 0, 0, 0, 1992, 1995, 3, 64, 32, 0, 1993, 1995, 3, 28, 14, 0, 1994, 1992, 1, 0, 0, 0, 1994, 1993, 1, 0, 0, 0, 1995, 173, 1, 0, 0, 0, 1996, 1997, 7, 26, 0, 0, 1997, 175, 1, 0, 0, 0, 1998, 1999, 7, 27, 0, 0, 1999, 177, 1, 0, 0, 0, 2000, 2001, 3, 224, 112, 0, 2001, 179, 1, 0, 0, 0, 2002, 2003, 3, 224, 112, 0, 2003, 181, 1, 0, 0, 0, 2004, 2005, 3, 224, 112, 0, 2005, 183, 1, 0, 0, 0, 2006, 2007, 3, 224, 112, 0, 2007, 185, 1, 0, 0, 0, 2008, 2009, 3, 224, 112, 0, 2009, 187, 1, 0, 0, 0, 2010, 2011, 3, 224, 112, 0, 2011, 189, 1, 0, 0, 0, 2012, 2013, 3, 224, 112, 0, 2013, 191, 1, 0, 0, 0, 2014, 2015, 3, 224, 112, 0, 2015, 193, 1, 0, 0, 0, 2016, 2017, 3, 224, 112, 0, 2017, 195, 1, 0, 0, 0, 2018, 2019, 3, 224, 112, 0, 2019, 197, 1, 0, 0, 0, 2020, 2021, 3, 224, 112, 0, 2021, 199, 1, 0, 0, 0, 2022, 2023, 3, 224, 112, 0, 2023, 201, 1, 0, 0, 0, 2024, 2025, 3, 224, 112, 0, 2025, 203, 1, 0, 0, 0, 2026, 2027, 3, 224, 112, 0, 2027, 205, 1, 0, 0, 0, 2028, 2029, 3, 224, 112, 0, 2029, 207, 1, 0, 0, 0, 2030, 2031, 3, 224, 112, 0, 2031, 209, 1, 0, 0, 0, 2032, 2033, 3, 224, 112, 0, 2033, 211, 1, 0, 0, 0, 2034, 2035, 3, 224, 112, 0, 2035, 213, 1, 0, 0, 0, 2036, 2037, 3, 224, 112, 0, 2037, 215, 1, 0, 0, 0, 2038, 2039, 3, 224, 112, 0, 2039, 217, 1, 0, 0, 0, 2040, 2041, 3, 224, 112, 0, 2041, 219, 1, 0, 0, 0, 2042, 2043, 3, 224, 112, 0, 2043, 221, 1, 0, 0, 0, 2044, 2045, 3, 224, 112, 0, 2045, 223, 1, 0, 0, 0, 2046, 2054, 5, 185, 0, 0, 2047, 2054, 3, 176, 88, 0, 2048, 2054, 5, 188, 0, 0, 2049, 2050, 5, 3, 0, 0, 2050, 2051, 3, 224, 112, 0, 2051, 2052, 5, 4, 0, 0, 2052, 2054, 1, 0, 0, 0, 2053, 2046, 1, 0, 0, 0, 2053, 2047, 1, 0, 0, 0, 2053, 2048, 1, 0, 0, 0, 2053, 2049, 1, 0, 0, 0, 2054, 225, 1, 0, 0, 0, 296, 229, 237, 244, 249, 255, 261, 263, 289, 296, 303, 309, 313, 318, 321, 328, 331, 335, 343, 347, 349, 353, 357, 361, 364, 371, 377, 383, 388, 399, 405, 409, 413, 416, 420, 426, 431, 440, 447, 453, 457, 461, 466, 472, 484, 488, 493, 496, 499, 502, 506, 509, 523, 530, 537, 539, 542, 548, 553, 561, 566, 581, 587, 597, 602, 612, 616, 618, 622, 627, 629, 637, 643, 648, 655, 666, 669, 671, 678, 682, 689, 695, 701, 707, 712, 721, 726, 737, 742, 753, 758, 762, 778, 788, 793, 801, 813, 818, 826, 833, 836, 839, 846, 849, 852, 855, 859, 867, 872, 882, 887, 896, 903, 907, 911, 914, 922, 935, 938, 946, 955, 959, 964, 994, 1006, 1011, 1023, 1029, 1036, 1040, 1050, 1053, 1059, 1065, 1074, 1077, 1081, 1083, 1085, 1094, 1106, 1117, 1121, 1128, 1134, 1139, 1147, 1152, 1156, 1159, 1163, 1166, 1174, 1185, 1191, 1193, 1201, 1208, 1215, 1220, 1222, 1228, 1237, 1242, 1249, 1253, 1255, 1258, 1266, 1270, 1273, 1279, 1283, 1288, 1295, 1304, 1308, 1310, 1314, 1323, 1328, 1330, 1343, 1346, 1349, 1354, 1358, 1361, 1364, 1369, 1373, 1378, 1381, 1384, 1389, 1393, 1396, 1403, 1408, 1417, 1422, 1425, 1433, 1437, 1445, 1448, 1450, 1459, 1462, 1464, 1468, 1472, 1476, 1479, 1490, 1495, 1499, 1503, 1506, 1511, 1517, 1524, 1531, 1540, 1544, 1546, 1550, 1553, 1561, 1567, 1572, 1578, 1585, 1592, 1597, 1600, 1603, 1606, 1611, 1616, 1623, 1627, 1631, 1641, 1650, 1653, 1662, 1666, 1674, 1683, 1686, 1695, 1698, 1701, 1704, 1714, 1716, 1725, 1734, 1738, 1745, 1752, 1756, 1760, 1769, 1773, 1777, 1782, 1786, 1793, 1803, 1810, 1815, 1818, 1822, 1836, 1848, 1857, 1866, 1870, 1880, 1883, 1892, 1901, 1904, 1910, 1924, 1928, 1939, 1944, 1957, 1964, 1972, 1977, 1981, 1994, 2053]
\ No newline at end of file
diff --git a/sqliteparser/SQLiteParser.tokens b/sqliteparser/SQLiteParser.tokens
new file mode 100644
index 0000000..26a9184
--- /dev/null
+++ b/sqliteparser/SQLiteParser.tokens
@@ -0,0 +1,377 @@
+SCOL=1
+DOT=2
+OPEN_PAR=3
+CLOSE_PAR=4
+COMMA=5
+ASSIGN=6
+STAR=7
+PLUS=8
+MINUS=9
+TILDE=10
+PIPE2=11
+DIV=12
+MOD=13
+LT2=14
+GT2=15
+AMP=16
+PIPE=17
+LT=18
+LT_EQ=19
+GT=20
+GT_EQ=21
+EQ=22
+NOT_EQ1=23
+NOT_EQ2=24
+ABORT_=25
+ACTION_=26
+ADD_=27
+AFTER_=28
+ALL_=29
+ALTER_=30
+ANALYZE_=31
+AND_=32
+AS_=33
+ASC_=34
+ATTACH_=35
+AUTOINCREMENT_=36
+BEFORE_=37
+BEGIN_=38
+BETWEEN_=39
+BY_=40
+CASCADE_=41
+CASE_=42
+CAST_=43
+CHECK_=44
+COLLATE_=45
+COLUMN_=46
+COMMIT_=47
+CONFLICT_=48
+CONSTRAINT_=49
+CREATE_=50
+CROSS_=51
+CURRENT_DATE_=52
+CURRENT_TIME_=53
+CURRENT_TIMESTAMP_=54
+DATABASE_=55
+DEFAULT_=56
+DEFERRABLE_=57
+DEFERRED_=58
+DELETE_=59
+DESC_=60
+DETACH_=61
+DISTINCT_=62
+DROP_=63
+EACH_=64
+ELSE_=65
+END_=66
+ESCAPE_=67
+EXCEPT_=68
+EXCLUSIVE_=69
+EXISTS_=70
+EXPLAIN_=71
+FAIL_=72
+FOR_=73
+FOREIGN_=74
+FROM_=75
+FULL_=76
+GLOB_=77
+GROUP_=78
+HAVING_=79
+IF_=80
+IGNORE_=81
+IMMEDIATE_=82
+IN_=83
+INDEX_=84
+INDEXED_=85
+INITIALLY_=86
+INNER_=87
+INSERT_=88
+INSTEAD_=89
+INTERSECT_=90
+INTO_=91
+IS_=92
+ISNULL_=93
+JOIN_=94
+KEY_=95
+LEFT_=96
+LIKE_=97
+LIMIT_=98
+MATCH_=99
+NATURAL_=100
+NO_=101
+NOT_=102
+NOTNULL_=103
+NULL_=104
+OF_=105
+OFFSET_=106
+ON_=107
+OR_=108
+ORDER_=109
+OUTER_=110
+PLAN_=111
+PRAGMA_=112
+PRIMARY_=113
+QUERY_=114
+RAISE_=115
+RECURSIVE_=116
+REFERENCES_=117
+REGEXP_=118
+REINDEX_=119
+RELEASE_=120
+RENAME_=121
+REPLACE_=122
+RESTRICT_=123
+RETURNING_=124
+RIGHT_=125
+ROLLBACK_=126
+ROW_=127
+ROWS_=128
+SAVEPOINT_=129
+SELECT_=130
+SET_=131
+TABLE_=132
+TEMP_=133
+TEMPORARY_=134
+THEN_=135
+TO_=136
+TRANSACTION_=137
+TRIGGER_=138
+UNION_=139
+UNIQUE_=140
+UPDATE_=141
+USING_=142
+VACUUM_=143
+VALUES_=144
+VIEW_=145
+VIRTUAL_=146
+WHEN_=147
+WHERE_=148
+WITH_=149
+WITHOUT_=150
+FIRST_VALUE_=151
+OVER_=152
+PARTITION_=153
+RANGE_=154
+PRECEDING_=155
+UNBOUNDED_=156
+CURRENT_=157
+FOLLOWING_=158
+CUME_DIST_=159
+DENSE_RANK_=160
+LAG_=161
+LAST_VALUE_=162
+LEAD_=163
+NTH_VALUE_=164
+NTILE_=165
+PERCENT_RANK_=166
+RANK_=167
+ROW_NUMBER_=168
+GENERATED_=169
+ALWAYS_=170
+STORED_=171
+TRUE_=172
+FALSE_=173
+WINDOW_=174
+NULLS_=175
+FIRST_=176
+LAST_=177
+FILTER_=178
+GROUPS_=179
+EXCLUDE_=180
+TIES_=181
+OTHERS_=182
+DO_=183
+NOTHING_=184
+IDENTIFIER=185
+NUMERIC_LITERAL=186
+BIND_PARAMETER=187
+STRING_LITERAL=188
+BLOB_LITERAL=189
+SINGLE_LINE_COMMENT=190
+MULTILINE_COMMENT=191
+SPACES=192
+UNEXPECTED_CHAR=193
+';'=1
+'.'=2
+'('=3
+')'=4
+','=5
+'='=6
+'*'=7
+'+'=8
+'-'=9
+'~'=10
+'||'=11
+'/'=12
+'%'=13
+'<<'=14
+'>>'=15
+'&'=16
+'|'=17
+'<'=18
+'<='=19
+'>'=20
+'>='=21
+'=='=22
+'!='=23
+'<>'=24
+'ABORT'=25
+'ACTION'=26
+'ADD'=27
+'AFTER'=28
+'ALL'=29
+'ALTER'=30
+'ANALYZE'=31
+'AND'=32
+'AS'=33
+'ASC'=34
+'ATTACH'=35
+'AUTOINCREMENT'=36
+'BEFORE'=37
+'BEGIN'=38
+'BETWEEN'=39
+'BY'=40
+'CASCADE'=41
+'CASE'=42
+'CAST'=43
+'CHECK'=44
+'COLLATE'=45
+'COLUMN'=46
+'COMMIT'=47
+'CONFLICT'=48
+'CONSTRAINT'=49
+'CREATE'=50
+'CROSS'=51
+'CURRENT_DATE'=52
+'CURRENT_TIME'=53
+'CURRENT_TIMESTAMP'=54
+'DATABASE'=55
+'DEFAULT'=56
+'DEFERRABLE'=57
+'DEFERRED'=58
+'DELETE'=59
+'DESC'=60
+'DETACH'=61
+'DISTINCT'=62
+'DROP'=63
+'EACH'=64
+'ELSE'=65
+'END'=66
+'ESCAPE'=67
+'EXCEPT'=68
+'EXCLUSIVE'=69
+'EXISTS'=70
+'EXPLAIN'=71
+'FAIL'=72
+'FOR'=73
+'FOREIGN'=74
+'FROM'=75
+'FULL'=76
+'GLOB'=77
+'GROUP'=78
+'HAVING'=79
+'IF'=80
+'IGNORE'=81
+'IMMEDIATE'=82
+'IN'=83
+'INDEX'=84
+'INDEXED'=85
+'INITIALLY'=86
+'INNER'=87
+'INSERT'=88
+'INSTEAD'=89
+'INTERSECT'=90
+'INTO'=91
+'IS'=92
+'ISNULL'=93
+'JOIN'=94
+'KEY'=95
+'LEFT'=96
+'LIKE'=97
+'LIMIT'=98
+'MATCH'=99
+'NATURAL'=100
+'NO'=101
+'NOT'=102
+'NOTNULL'=103
+'NULL'=104
+'OF'=105
+'OFFSET'=106
+'ON'=107
+'OR'=108
+'ORDER'=109
+'OUTER'=110
+'PLAN'=111
+'PRAGMA'=112
+'PRIMARY'=113
+'QUERY'=114
+'RAISE'=115
+'RECURSIVE'=116
+'REFERENCES'=117
+'REGEXP'=118
+'REINDEX'=119
+'RELEASE'=120
+'RENAME'=121
+'REPLACE'=122
+'RESTRICT'=123
+'RETURNING'=124
+'RIGHT'=125
+'ROLLBACK'=126
+'ROW'=127
+'ROWS'=128
+'SAVEPOINT'=129
+'SELECT'=130
+'SET'=131
+'TABLE'=132
+'TEMP'=133
+'TEMPORARY'=134
+'THEN'=135
+'TO'=136
+'TRANSACTION'=137
+'TRIGGER'=138
+'UNION'=139
+'UNIQUE'=140
+'UPDATE'=141
+'USING'=142
+'VACUUM'=143
+'VALUES'=144
+'VIEW'=145
+'VIRTUAL'=146
+'WHEN'=147
+'WHERE'=148
+'WITH'=149
+'WITHOUT'=150
+'FIRST_VALUE'=151
+'OVER'=152
+'PARTITION'=153
+'RANGE'=154
+'PRECEDING'=155
+'UNBOUNDED'=156
+'CURRENT'=157
+'FOLLOWING'=158
+'CUME_DIST'=159
+'DENSE_RANK'=160
+'LAG'=161
+'LAST_VALUE'=162
+'LEAD'=163
+'NTH_VALUE'=164
+'NTILE'=165
+'PERCENT_RANK'=166
+'RANK'=167
+'ROW_NUMBER'=168
+'GENERATED'=169
+'ALWAYS'=170
+'STORED'=171
+'TRUE'=172
+'FALSE'=173
+'WINDOW'=174
+'NULLS'=175
+'FIRST'=176
+'LAST'=177
+'FILTER'=178
+'GROUPS'=179
+'EXCLUDE'=180
+'TIES'=181
+'OTHERS'=182
+'DO'=183
+'NOTHING'=184
diff --git a/sqliteparser/generate-parser.sh b/sqliteparser/generate-parser.sh
new file mode 100755
index 0000000..4165650
--- /dev/null
+++ b/sqliteparser/generate-parser.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# Requirements:
+# - Have Java 11+ installed
+# - Be at root directory
+
+rm -rf *.go *.interp *.tokens
+cd grammar/
+java -Xmx500M -cp "$(printf %s: /usr/local/lib/antlr-*-complete.jar):$CLASSPATH" org.antlr.v4.Tool -Dlanguage=Go -package sqliteparser -o .. SQLiteLexer.g4 SQLiteParser.g4
+cd ../
diff --git a/sqliteparser/grammar/SQLiteLexer.g4 b/sqliteparser/grammar/SQLiteLexer.g4
new file mode 100644
index 0000000..f247c32
--- /dev/null
+++ b/sqliteparser/grammar/SQLiteLexer.g4
@@ -0,0 +1,243 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020 by Martin Mirchev
+ *
+ * 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
+ */
+
+// $antlr-format alignTrailingComments on, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments off, useTab off
+// $antlr-format allowShortRulesOnASingleLine on, alignSemicolons ownLine
+
+lexer grammar SQLiteLexer;
+
+options { caseInsensitive = true; }
+
+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
+ABORT_: 'ABORT';
+ACTION_: 'ACTION';
+ADD_: 'ADD';
+AFTER_: 'AFTER';
+ALL_: 'ALL';
+ALTER_: 'ALTER';
+ANALYZE_: 'ANALYZE';
+AND_: 'AND';
+AS_: 'AS';
+ASC_: 'ASC';
+ATTACH_: 'ATTACH';
+AUTOINCREMENT_: 'AUTOINCREMENT';
+BEFORE_: 'BEFORE';
+BEGIN_: 'BEGIN';
+BETWEEN_: 'BETWEEN';
+BY_: 'BY';
+CASCADE_: 'CASCADE';
+CASE_: 'CASE';
+CAST_: 'CAST';
+CHECK_: 'CHECK';
+COLLATE_: 'COLLATE';
+COLUMN_: 'COLUMN';
+COMMIT_: 'COMMIT';
+CONFLICT_: 'CONFLICT';
+CONSTRAINT_: 'CONSTRAINT';
+CREATE_: 'CREATE';
+CROSS_: 'CROSS';
+CURRENT_DATE_: 'CURRENT_DATE';
+CURRENT_TIME_: 'CURRENT_TIME';
+CURRENT_TIMESTAMP_: 'CURRENT_TIMESTAMP';
+DATABASE_: 'DATABASE';
+DEFAULT_: 'DEFAULT';
+DEFERRABLE_: 'DEFERRABLE';
+DEFERRED_: 'DEFERRED';
+DELETE_: 'DELETE';
+DESC_: 'DESC';
+DETACH_: 'DETACH';
+DISTINCT_: 'DISTINCT';
+DROP_: 'DROP';
+EACH_: 'EACH';
+ELSE_: 'ELSE';
+END_: 'END';
+ESCAPE_: 'ESCAPE';
+EXCEPT_: 'EXCEPT';
+EXCLUSIVE_: 'EXCLUSIVE';
+EXISTS_: 'EXISTS';
+EXPLAIN_: 'EXPLAIN';
+FAIL_: 'FAIL';
+FOR_: 'FOR';
+FOREIGN_: 'FOREIGN';
+FROM_: 'FROM';
+FULL_: 'FULL';
+GLOB_: 'GLOB';
+GROUP_: 'GROUP';
+HAVING_: 'HAVING';
+IF_: 'IF';
+IGNORE_: 'IGNORE';
+IMMEDIATE_: 'IMMEDIATE';
+IN_: 'IN';
+INDEX_: 'INDEX';
+INDEXED_: 'INDEXED';
+INITIALLY_: 'INITIALLY';
+INNER_: 'INNER';
+INSERT_: 'INSERT';
+INSTEAD_: 'INSTEAD';
+INTERSECT_: 'INTERSECT';
+INTO_: 'INTO';
+IS_: 'IS';
+ISNULL_: 'ISNULL';
+JOIN_: 'JOIN';
+KEY_: 'KEY';
+LEFT_: 'LEFT';
+LIKE_: 'LIKE';
+LIMIT_: 'LIMIT';
+MATCH_: 'MATCH';
+NATURAL_: 'NATURAL';
+NO_: 'NO';
+NOT_: 'NOT';
+NOTNULL_: 'NOTNULL';
+NULL_: 'NULL';
+OF_: 'OF';
+OFFSET_: 'OFFSET';
+ON_: 'ON';
+OR_: 'OR';
+ORDER_: 'ORDER';
+OUTER_: 'OUTER';
+PLAN_: 'PLAN';
+PRAGMA_: 'PRAGMA';
+PRIMARY_: 'PRIMARY';
+QUERY_: 'QUERY';
+RAISE_: 'RAISE';
+RECURSIVE_: 'RECURSIVE';
+REFERENCES_: 'REFERENCES';
+REGEXP_: 'REGEXP';
+REINDEX_: 'REINDEX';
+RELEASE_: 'RELEASE';
+RENAME_: 'RENAME';
+REPLACE_: 'REPLACE';
+RESTRICT_: 'RESTRICT';
+RETURNING_: 'RETURNING';
+RIGHT_: 'RIGHT';
+ROLLBACK_: 'ROLLBACK';
+ROW_: 'ROW';
+ROWS_: 'ROWS';
+SAVEPOINT_: 'SAVEPOINT';
+SELECT_: 'SELECT';
+SET_: 'SET';
+TABLE_: 'TABLE';
+TEMP_: 'TEMP';
+TEMPORARY_: 'TEMPORARY';
+THEN_: 'THEN';
+TO_: 'TO';
+TRANSACTION_: 'TRANSACTION';
+TRIGGER_: 'TRIGGER';
+UNION_: 'UNION';
+UNIQUE_: 'UNIQUE';
+UPDATE_: 'UPDATE';
+USING_: 'USING';
+VACUUM_: 'VACUUM';
+VALUES_: 'VALUES';
+VIEW_: 'VIEW';
+VIRTUAL_: 'VIRTUAL';
+WHEN_: 'WHEN';
+WHERE_: 'WHERE';
+WITH_: 'WITH';
+WITHOUT_: 'WITHOUT';
+FIRST_VALUE_: 'FIRST_VALUE';
+OVER_: 'OVER';
+PARTITION_: 'PARTITION';
+RANGE_: 'RANGE';
+PRECEDING_: 'PRECEDING';
+UNBOUNDED_: 'UNBOUNDED';
+CURRENT_: 'CURRENT';
+FOLLOWING_: 'FOLLOWING';
+CUME_DIST_: 'CUME_DIST';
+DENSE_RANK_: 'DENSE_RANK';
+LAG_: 'LAG';
+LAST_VALUE_: 'LAST_VALUE';
+LEAD_: 'LEAD';
+NTH_VALUE_: 'NTH_VALUE';
+NTILE_: 'NTILE';
+PERCENT_RANK_: 'PERCENT_RANK';
+RANK_: 'RANK';
+ROW_NUMBER_: 'ROW_NUMBER';
+GENERATED_: 'GENERATED';
+ALWAYS_: 'ALWAYS';
+STORED_: 'STORED';
+TRUE_: 'TRUE';
+FALSE_: 'FALSE';
+WINDOW_: 'WINDOW';
+NULLS_: 'NULLS';
+FIRST_: 'FIRST';
+LAST_: 'LAST';
+FILTER_: 'FILTER';
+GROUPS_: 'GROUPS';
+EXCLUDE_: 'EXCLUDE';
+TIES_: 'TIES';
+OTHERS_: 'OTHERS';
+DO_: 'DO';
+NOTHING_: 'NOTHING';
+
+IDENTIFIER:
+ '"' (~'"' | '""')* '"'
+ | '`' (~'`' | '``')* '`'
+ | '[' ~']'* ']'
+ | [A-Z_] [A-Z_0-9]*
+; // TODO check: needs more chars in set
+
+NUMERIC_LITERAL: ((DIGIT+ ('.' DIGIT*)?) | ('.' DIGIT+)) ('E' [-+]? DIGIT+)? | '0x' HEX_DIGIT+;
+
+BIND_PARAMETER: '?' DIGIT* | [:@$] IDENTIFIER;
+
+STRING_LITERAL: '\'' ( ~'\'' | '\'\'')* '\'';
+
+BLOB_LITERAL: 'X' STRING_LITERAL;
+
+SINGLE_LINE_COMMENT: '--' ~[\r\n]* (('\r'? '\n') | EOF) -> channel(HIDDEN);
+
+MULTILINE_COMMENT: '/*' .*? '*/' -> channel(HIDDEN);
+
+SPACES: [ \u000B\t\r\n] -> channel(HIDDEN);
+
+UNEXPECTED_CHAR: .;
+
+fragment HEX_DIGIT: [0-9A-F];
+fragment DIGIT: [0-9];
diff --git a/sqliteparser/grammar/SQLiteLexer.tokens b/sqliteparser/grammar/SQLiteLexer.tokens
new file mode 100644
index 0000000..26a9184
--- /dev/null
+++ b/sqliteparser/grammar/SQLiteLexer.tokens
@@ -0,0 +1,377 @@
+SCOL=1
+DOT=2
+OPEN_PAR=3
+CLOSE_PAR=4
+COMMA=5
+ASSIGN=6
+STAR=7
+PLUS=8
+MINUS=9
+TILDE=10
+PIPE2=11
+DIV=12
+MOD=13
+LT2=14
+GT2=15
+AMP=16
+PIPE=17
+LT=18
+LT_EQ=19
+GT=20
+GT_EQ=21
+EQ=22
+NOT_EQ1=23
+NOT_EQ2=24
+ABORT_=25
+ACTION_=26
+ADD_=27
+AFTER_=28
+ALL_=29
+ALTER_=30
+ANALYZE_=31
+AND_=32
+AS_=33
+ASC_=34
+ATTACH_=35
+AUTOINCREMENT_=36
+BEFORE_=37
+BEGIN_=38
+BETWEEN_=39
+BY_=40
+CASCADE_=41
+CASE_=42
+CAST_=43
+CHECK_=44
+COLLATE_=45
+COLUMN_=46
+COMMIT_=47
+CONFLICT_=48
+CONSTRAINT_=49
+CREATE_=50
+CROSS_=51
+CURRENT_DATE_=52
+CURRENT_TIME_=53
+CURRENT_TIMESTAMP_=54
+DATABASE_=55
+DEFAULT_=56
+DEFERRABLE_=57
+DEFERRED_=58
+DELETE_=59
+DESC_=60
+DETACH_=61
+DISTINCT_=62
+DROP_=63
+EACH_=64
+ELSE_=65
+END_=66
+ESCAPE_=67
+EXCEPT_=68
+EXCLUSIVE_=69
+EXISTS_=70
+EXPLAIN_=71
+FAIL_=72
+FOR_=73
+FOREIGN_=74
+FROM_=75
+FULL_=76
+GLOB_=77
+GROUP_=78
+HAVING_=79
+IF_=80
+IGNORE_=81
+IMMEDIATE_=82
+IN_=83
+INDEX_=84
+INDEXED_=85
+INITIALLY_=86
+INNER_=87
+INSERT_=88
+INSTEAD_=89
+INTERSECT_=90
+INTO_=91
+IS_=92
+ISNULL_=93
+JOIN_=94
+KEY_=95
+LEFT_=96
+LIKE_=97
+LIMIT_=98
+MATCH_=99
+NATURAL_=100
+NO_=101
+NOT_=102
+NOTNULL_=103
+NULL_=104
+OF_=105
+OFFSET_=106
+ON_=107
+OR_=108
+ORDER_=109
+OUTER_=110
+PLAN_=111
+PRAGMA_=112
+PRIMARY_=113
+QUERY_=114
+RAISE_=115
+RECURSIVE_=116
+REFERENCES_=117
+REGEXP_=118
+REINDEX_=119
+RELEASE_=120
+RENAME_=121
+REPLACE_=122
+RESTRICT_=123
+RETURNING_=124
+RIGHT_=125
+ROLLBACK_=126
+ROW_=127
+ROWS_=128
+SAVEPOINT_=129
+SELECT_=130
+SET_=131
+TABLE_=132
+TEMP_=133
+TEMPORARY_=134
+THEN_=135
+TO_=136
+TRANSACTION_=137
+TRIGGER_=138
+UNION_=139
+UNIQUE_=140
+UPDATE_=141
+USING_=142
+VACUUM_=143
+VALUES_=144
+VIEW_=145
+VIRTUAL_=146
+WHEN_=147
+WHERE_=148
+WITH_=149
+WITHOUT_=150
+FIRST_VALUE_=151
+OVER_=152
+PARTITION_=153
+RANGE_=154
+PRECEDING_=155
+UNBOUNDED_=156
+CURRENT_=157
+FOLLOWING_=158
+CUME_DIST_=159
+DENSE_RANK_=160
+LAG_=161
+LAST_VALUE_=162
+LEAD_=163
+NTH_VALUE_=164
+NTILE_=165
+PERCENT_RANK_=166
+RANK_=167
+ROW_NUMBER_=168
+GENERATED_=169
+ALWAYS_=170
+STORED_=171
+TRUE_=172
+FALSE_=173
+WINDOW_=174
+NULLS_=175
+FIRST_=176
+LAST_=177
+FILTER_=178
+GROUPS_=179
+EXCLUDE_=180
+TIES_=181
+OTHERS_=182
+DO_=183
+NOTHING_=184
+IDENTIFIER=185
+NUMERIC_LITERAL=186
+BIND_PARAMETER=187
+STRING_LITERAL=188
+BLOB_LITERAL=189
+SINGLE_LINE_COMMENT=190
+MULTILINE_COMMENT=191
+SPACES=192
+UNEXPECTED_CHAR=193
+';'=1
+'.'=2
+'('=3
+')'=4
+','=5
+'='=6
+'*'=7
+'+'=8
+'-'=9
+'~'=10
+'||'=11
+'/'=12
+'%'=13
+'<<'=14
+'>>'=15
+'&'=16
+'|'=17
+'<'=18
+'<='=19
+'>'=20
+'>='=21
+'=='=22
+'!='=23
+'<>'=24
+'ABORT'=25
+'ACTION'=26
+'ADD'=27
+'AFTER'=28
+'ALL'=29
+'ALTER'=30
+'ANALYZE'=31
+'AND'=32
+'AS'=33
+'ASC'=34
+'ATTACH'=35
+'AUTOINCREMENT'=36
+'BEFORE'=37
+'BEGIN'=38
+'BETWEEN'=39
+'BY'=40
+'CASCADE'=41
+'CASE'=42
+'CAST'=43
+'CHECK'=44
+'COLLATE'=45
+'COLUMN'=46
+'COMMIT'=47
+'CONFLICT'=48
+'CONSTRAINT'=49
+'CREATE'=50
+'CROSS'=51
+'CURRENT_DATE'=52
+'CURRENT_TIME'=53
+'CURRENT_TIMESTAMP'=54
+'DATABASE'=55
+'DEFAULT'=56
+'DEFERRABLE'=57
+'DEFERRED'=58
+'DELETE'=59
+'DESC'=60
+'DETACH'=61
+'DISTINCT'=62
+'DROP'=63
+'EACH'=64
+'ELSE'=65
+'END'=66
+'ESCAPE'=67
+'EXCEPT'=68
+'EXCLUSIVE'=69
+'EXISTS'=70
+'EXPLAIN'=71
+'FAIL'=72
+'FOR'=73
+'FOREIGN'=74
+'FROM'=75
+'FULL'=76
+'GLOB'=77
+'GROUP'=78
+'HAVING'=79
+'IF'=80
+'IGNORE'=81
+'IMMEDIATE'=82
+'IN'=83
+'INDEX'=84
+'INDEXED'=85
+'INITIALLY'=86
+'INNER'=87
+'INSERT'=88
+'INSTEAD'=89
+'INTERSECT'=90
+'INTO'=91
+'IS'=92
+'ISNULL'=93
+'JOIN'=94
+'KEY'=95
+'LEFT'=96
+'LIKE'=97
+'LIMIT'=98
+'MATCH'=99
+'NATURAL'=100
+'NO'=101
+'NOT'=102
+'NOTNULL'=103
+'NULL'=104
+'OF'=105
+'OFFSET'=106
+'ON'=107
+'OR'=108
+'ORDER'=109
+'OUTER'=110
+'PLAN'=111
+'PRAGMA'=112
+'PRIMARY'=113
+'QUERY'=114
+'RAISE'=115
+'RECURSIVE'=116
+'REFERENCES'=117
+'REGEXP'=118
+'REINDEX'=119
+'RELEASE'=120
+'RENAME'=121
+'REPLACE'=122
+'RESTRICT'=123
+'RETURNING'=124
+'RIGHT'=125
+'ROLLBACK'=126
+'ROW'=127
+'ROWS'=128
+'SAVEPOINT'=129
+'SELECT'=130
+'SET'=131
+'TABLE'=132
+'TEMP'=133
+'TEMPORARY'=134
+'THEN'=135
+'TO'=136
+'TRANSACTION'=137
+'TRIGGER'=138
+'UNION'=139
+'UNIQUE'=140
+'UPDATE'=141
+'USING'=142
+'VACUUM'=143
+'VALUES'=144
+'VIEW'=145
+'VIRTUAL'=146
+'WHEN'=147
+'WHERE'=148
+'WITH'=149
+'WITHOUT'=150
+'FIRST_VALUE'=151
+'OVER'=152
+'PARTITION'=153
+'RANGE'=154
+'PRECEDING'=155
+'UNBOUNDED'=156
+'CURRENT'=157
+'FOLLOWING'=158
+'CUME_DIST'=159
+'DENSE_RANK'=160
+'LAG'=161
+'LAST_VALUE'=162
+'LEAD'=163
+'NTH_VALUE'=164
+'NTILE'=165
+'PERCENT_RANK'=166
+'RANK'=167
+'ROW_NUMBER'=168
+'GENERATED'=169
+'ALWAYS'=170
+'STORED'=171
+'TRUE'=172
+'FALSE'=173
+'WINDOW'=174
+'NULLS'=175
+'FIRST'=176
+'LAST'=177
+'FILTER'=178
+'GROUPS'=179
+'EXCLUDE'=180
+'TIES'=181
+'OTHERS'=182
+'DO'=183
+'NOTHING'=184
diff --git a/sqliteparser/grammar/SQLiteParser.g4 b/sqliteparser/grammar/SQLiteParser.g4
new file mode 100644
index 0000000..dd762b5
--- /dev/null
+++ b/sqliteparser/grammar/SQLiteParser.g4
@@ -0,0 +1,915 @@
+/*
+ * 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
+ * Martin Mirchev, marti_2203@abv.bg
+ * Mike Lische, mike@lischke-online.de
+ */
+
+// $antlr-format alignTrailingComments on, columnLimit 130, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments off
+// $antlr-format useTab off, allowShortRulesOnASingleLine off, allowShortBlocksOnASingleLine on, alignSemicolons ownLine
+
+parser grammar SQLiteParser;
+
+options {
+ tokenVocab = SQLiteLexer;
+}
+
+parse: (sql_stmt_list)* EOF
+;
+
+sql_stmt_list:
+ SCOL* sql_stmt (SCOL+ sql_stmt)* SCOL*
+;
+
+sql_stmt: (EXPLAIN_ (QUERY_ PLAN_)?)? (
+ alter_table_stmt
+ | analyze_stmt
+ | attach_stmt
+ | begin_stmt
+ | commit_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_stmt
+ | insert_stmt
+ | pragma_stmt
+ | reindex_stmt
+ | release_stmt
+ | rollback_stmt
+ | savepoint_stmt
+ | select_stmt
+ | update_stmt
+ | update_stmt_limited
+ | vacuum_stmt
+ )
+;
+
+alter_table_stmt:
+ ALTER_ TABLE_ (schema_name DOT)? table_name (
+ RENAME_ (
+ TO_ new_table_name = table_name
+ | COLUMN_? old_column_name = column_name TO_ new_column_name = column_name
+ )
+ | ADD_ COLUMN_? column_def
+ | DROP_ COLUMN_? column_name
+ )
+;
+
+analyze_stmt:
+ ANALYZE_ (schema_name | (schema_name DOT)? table_or_index_name)?
+;
+
+attach_stmt:
+ ATTACH_ DATABASE_? expr AS_ schema_name
+;
+
+begin_stmt:
+ BEGIN_ (DEFERRED_ | IMMEDIATE_ | EXCLUSIVE_)? (
+ TRANSACTION_ transaction_name?
+ )?
+;
+
+commit_stmt: (COMMIT_ | END_) TRANSACTION_?
+;
+
+rollback_stmt:
+ ROLLBACK_ TRANSACTION_? (TO_ SAVEPOINT_? savepoint_name)?
+;
+
+savepoint_stmt:
+ SAVEPOINT_ savepoint_name
+;
+
+release_stmt:
+ RELEASE_ SAVEPOINT_? savepoint_name
+;
+
+create_index_stmt:
+ CREATE_ UNIQUE_? INDEX_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? index_name ON_ table_name OPEN_PAR
+ indexed_column (COMMA indexed_column)* CLOSE_PAR (WHERE_ expr)?
+;
+
+indexed_column: (column_name | expr) (COLLATE_ collation_name)? asc_desc?
+;
+
+create_table_stmt:
+ CREATE_ (TEMP_ | TEMPORARY_)? TABLE_ (IF_ NOT_ EXISTS_)? (
+ schema_name DOT
+ )? table_name (
+ OPEN_PAR column_def (COMMA column_def)*? (COMMA table_constraint)* CLOSE_PAR (
+ WITHOUT_ row_ROW_ID = IDENTIFIER
+ )?
+ | AS_ select_stmt
+ )
+;
+
+column_def:
+ column_name type_name? column_constraint*
+;
+
+type_name:
+ name+? (
+ OPEN_PAR signed_number CLOSE_PAR
+ | OPEN_PAR signed_number COMMA signed_number CLOSE_PAR
+ )?
+;
+
+column_constraint: (CONSTRAINT_ name)? (
+ (PRIMARY_ KEY_ asc_desc? conflict_clause? AUTOINCREMENT_?)
+ | (NOT_? NULL_ | UNIQUE_) conflict_clause?
+ | CHECK_ OPEN_PAR expr CLOSE_PAR
+ | DEFAULT_ (signed_number | literal_value | OPEN_PAR expr CLOSE_PAR)
+ | COLLATE_ collation_name
+ | foreign_key_clause
+ | (GENERATED_ ALWAYS_)? AS_ OPEN_PAR expr CLOSE_PAR (
+ STORED_
+ | VIRTUAL_
+ )?
+ )
+;
+
+signed_number: (PLUS | MINUS)? NUMERIC_LITERAL
+;
+
+table_constraint: (CONSTRAINT_ name)? (
+ (PRIMARY_ KEY_ | UNIQUE_) OPEN_PAR indexed_column (
+ COMMA indexed_column
+ )* CLOSE_PAR conflict_clause?
+ | CHECK_ OPEN_PAR expr CLOSE_PAR
+ | FOREIGN_ KEY_ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR foreign_key_clause
+ )
+;
+
+foreign_key_clause:
+ REFERENCES_ foreign_table (
+ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
+ )? (
+ ON_ (DELETE_ | UPDATE_) (
+ SET_ (NULL_ | DEFAULT_)
+ | CASCADE_
+ | RESTRICT_
+ | NO_ ACTION_
+ )
+ | MATCH_ name
+ )* (NOT_? DEFERRABLE_ (INITIALLY_ (DEFERRED_ | IMMEDIATE_))?)?
+;
+
+conflict_clause:
+ ON_ CONFLICT_ (
+ ROLLBACK_
+ | ABORT_
+ | FAIL_
+ | IGNORE_
+ | REPLACE_
+ )
+;
+
+create_trigger_stmt:
+ CREATE_ (TEMP_ | TEMPORARY_)? TRIGGER_ (IF_ NOT_ EXISTS_)? (
+ schema_name DOT
+ )? trigger_name (BEFORE_ | AFTER_ | INSTEAD_ OF_)? (
+ DELETE_
+ | INSERT_
+ | UPDATE_ (OF_ column_name ( COMMA column_name)*)?
+ ) ON_ table_name (FOR_ EACH_ ROW_)? (WHEN_ expr)? BEGIN_ (
+ (update_stmt | insert_stmt | delete_stmt | select_stmt) SCOL
+ )+ END_
+;
+
+create_view_stmt:
+ CREATE_ (TEMP_ | TEMPORARY_)? VIEW_ (IF_ NOT_ EXISTS_)? (
+ schema_name DOT
+ )? view_name (OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR)? AS_ select_stmt
+;
+
+create_virtual_table_stmt:
+ CREATE_ VIRTUAL_ TABLE_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? table_name USING_ module_name (
+ OPEN_PAR module_argument (COMMA module_argument)* CLOSE_PAR
+ )?
+;
+
+with_clause:
+ WITH_ RECURSIVE_? cte_table_name AS_ OPEN_PAR select_stmt CLOSE_PAR (
+ COMMA cte_table_name AS_ OPEN_PAR select_stmt CLOSE_PAR
+ )*
+;
+
+cte_table_name:
+ table_name (OPEN_PAR column_name ( COMMA column_name)* CLOSE_PAR)?
+;
+
+recursive_cte:
+ cte_table_name AS_ OPEN_PAR initial_select UNION_ ALL_? recursive_select CLOSE_PAR
+;
+
+common_table_expression:
+ table_name (OPEN_PAR column_name ( COMMA column_name)* CLOSE_PAR)? AS_ OPEN_PAR select_stmt CLOSE_PAR
+;
+
+delete_stmt:
+ with_clause? DELETE_ FROM_ qualified_table_name (WHERE_ expr)? returning_clause?
+;
+
+delete_stmt_limited:
+ with_clause? DELETE_ FROM_ qualified_table_name (WHERE_ expr)? returning_clause? (
+ order_by_stmt? limit_stmt
+ )?
+;
+
+detach_stmt:
+ DETACH_ DATABASE_? schema_name
+;
+
+drop_stmt:
+ DROP_ object = (INDEX_ | TABLE_ | TRIGGER_ | VIEW_) (
+ IF_ EXISTS_
+ )? (schema_name DOT)? any_name
+;
+
+/*
+ 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
+ | ((schema_name DOT)? table_name DOT)? column_name
+ | unary_operator expr
+ | expr PIPE2 expr
+ | expr ( STAR | DIV | MOD) expr
+ | expr ( PLUS | MINUS) expr
+ | expr ( LT2 | GT2 | AMP | PIPE) expr
+ | expr ( LT | LT_EQ | GT | GT_EQ) expr
+ | expr (
+ ASSIGN
+ | EQ
+ | NOT_EQ1
+ | NOT_EQ2
+ | IS_
+ | IS_ NOT_
+ | IN_
+ | LIKE_
+ | GLOB_
+ | MATCH_
+ | REGEXP_
+ ) expr
+ | expr AND_ expr
+ | expr OR_ expr
+ | function_name OPEN_PAR ((DISTINCT_? expr ( COMMA expr)*) | STAR)? CLOSE_PAR filter_clause? over_clause?
+ | OPEN_PAR expr (COMMA expr)* CLOSE_PAR
+ | CAST_ OPEN_PAR expr AS_ type_name CLOSE_PAR
+ | expr COLLATE_ collation_name
+ | expr NOT_? (LIKE_ | GLOB_ | REGEXP_ | MATCH_) expr (
+ ESCAPE_ expr
+ )?
+ | expr ( ISNULL_ | NOTNULL_ | NOT_ NULL_)
+ | expr IS_ NOT_? expr
+ | expr NOT_? BETWEEN_ expr AND_ expr
+ | expr NOT_? IN_ (
+ OPEN_PAR (select_stmt | expr ( COMMA expr)*)? CLOSE_PAR
+ | ( schema_name DOT)? table_name
+ | (schema_name DOT)? table_function_name OPEN_PAR (expr (COMMA expr)*)? CLOSE_PAR
+ )
+ | ((NOT_)? EXISTS_)? OPEN_PAR select_stmt CLOSE_PAR
+ | CASE_ expr? (WHEN_ expr THEN_ expr)+ (ELSE_ expr)? END_
+ | raise_function
+;
+
+raise_function:
+ RAISE_ OPEN_PAR (
+ IGNORE_
+ | (ROLLBACK_ | ABORT_ | FAIL_) COMMA error_message
+ ) CLOSE_PAR
+;
+
+literal_value:
+ NUMERIC_LITERAL
+ | STRING_LITERAL
+ | BLOB_LITERAL
+ | NULL_
+ | TRUE_
+ | FALSE_
+ | CURRENT_TIME_
+ | CURRENT_DATE_
+ | CURRENT_TIMESTAMP_
+;
+
+value_row:
+ OPEN_PAR expr (COMMA expr)* CLOSE_PAR
+;
+
+values_clause:
+ VALUES_ value_row (COMMA value_row)*
+;
+
+insert_stmt:
+ with_clause? (
+ INSERT_
+ | REPLACE_
+ | INSERT_ OR_ (
+ REPLACE_
+ | ROLLBACK_
+ | ABORT_
+ | FAIL_
+ | IGNORE_
+ )
+ ) INTO_ (schema_name DOT)? table_name (AS_ table_alias)? (
+ OPEN_PAR column_name ( COMMA column_name)* CLOSE_PAR
+ )? (
+ (
+ ( values_clause | select_stmt ) upsert_clause?
+ )
+ | DEFAULT_ VALUES_
+ ) returning_clause?
+;
+
+returning_clause:
+ RETURNING_ result_column (COMMA result_column)*
+;
+
+upsert_clause:
+ ON_ CONFLICT_ (
+ OPEN_PAR indexed_column (COMMA indexed_column)* CLOSE_PAR (WHERE_ expr)?
+ )? DO_ (
+ NOTHING_
+ | UPDATE_ SET_ (
+ (column_name | column_name_list) ASSIGN expr (
+ COMMA (column_name | column_name_list) ASSIGN expr
+ )* (WHERE_ expr)?
+ )
+ )
+;
+
+pragma_stmt:
+ PRAGMA_ (schema_name DOT)? pragma_name (
+ ASSIGN pragma_value
+ | OPEN_PAR pragma_value CLOSE_PAR
+ )?
+;
+
+pragma_value:
+ signed_number
+ | name
+ | STRING_LITERAL
+;
+
+reindex_stmt:
+ REINDEX_ (collation_name | (schema_name DOT)? (table_name | index_name))?
+;
+
+select_stmt:
+ common_table_stmt? select_core (compound_operator select_core)* order_by_stmt? limit_stmt?
+;
+
+join_clause:
+ table_or_subquery (join_operator table_or_subquery join_constraint?)*
+;
+
+select_core:
+ (
+ SELECT_ (DISTINCT_ | ALL_)? result_column (COMMA result_column)* (
+ FROM_ (table_or_subquery (COMMA table_or_subquery)* | join_clause)
+ )? (WHERE_ whereExpr=expr)? (
+ GROUP_ BY_ groupByExpr+=expr (COMMA groupByExpr+=expr)* (
+ HAVING_ havingExpr=expr
+ )?)? (
+ WINDOW_ window_name AS_ window_defn (
+ COMMA window_name AS_ window_defn
+ )*
+ )?
+ )
+ | values_clause
+;
+
+factored_select_stmt:
+ select_stmt
+;
+
+simple_select_stmt:
+ common_table_stmt? select_core order_by_stmt? limit_stmt?
+;
+
+compound_select_stmt:
+ common_table_stmt? select_core (
+ (UNION_ ALL_? | INTERSECT_ | EXCEPT_) select_core
+ )+ order_by_stmt? limit_stmt?
+;
+
+table_or_subquery: (
+ (schema_name DOT)? table_name (AS_? table_alias)? (
+ INDEXED_ BY_ index_name
+ | NOT_ INDEXED_
+ )?
+ )
+ | (schema_name DOT)? table_function_name OPEN_PAR expr (COMMA expr)* CLOSE_PAR (
+ AS_? table_alias
+ )?
+ | OPEN_PAR (table_or_subquery (COMMA table_or_subquery)* | join_clause) CLOSE_PAR
+ | OPEN_PAR select_stmt CLOSE_PAR (AS_? table_alias)?
+;
+
+result_column:
+ STAR
+ | table_name DOT STAR
+ | expr ( AS_? column_alias)?
+;
+
+join_operator:
+ COMMA
+ | NATURAL_? (LEFT_ OUTER_? | INNER_ | CROSS_)? JOIN_
+;
+
+join_constraint:
+ ON_ expr
+ | USING_ OPEN_PAR column_name ( COMMA column_name)* CLOSE_PAR
+;
+
+compound_operator:
+ UNION_ ALL_?
+ | INTERSECT_
+ | EXCEPT_
+;
+
+update_stmt:
+ with_clause? UPDATE_ (
+ OR_ (ROLLBACK_ | ABORT_ | REPLACE_ | FAIL_ | IGNORE_)
+ )? qualified_table_name SET_ (column_name | column_name_list) ASSIGN expr (
+ COMMA (column_name | column_name_list) ASSIGN expr
+ )* (
+ FROM_ (table_or_subquery (COMMA table_or_subquery)* | join_clause)
+ )? (WHERE_ expr)? returning_clause?
+;
+
+column_name_list:
+ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
+;
+
+update_stmt_limited:
+ with_clause? UPDATE_ (
+ OR_ (ROLLBACK_ | ABORT_ | REPLACE_ | FAIL_ | IGNORE_)
+ )? qualified_table_name SET_ (column_name | column_name_list) ASSIGN expr (
+ COMMA (column_name | column_name_list) ASSIGN expr
+ )* (WHERE_ expr)? returning_clause? (order_by_stmt? limit_stmt)?
+;
+
+qualified_table_name: (schema_name DOT)? table_name (AS_ alias)? (
+ INDEXED_ BY_ index_name
+ | NOT_ INDEXED_
+ )?
+;
+
+vacuum_stmt:
+ VACUUM_ schema_name? (INTO_ filename)?
+;
+
+filter_clause:
+ FILTER_ OPEN_PAR WHERE_ expr CLOSE_PAR
+;
+
+window_defn:
+ OPEN_PAR base_window_name? (PARTITION_ BY_ expr (COMMA expr)*)? (
+ ORDER_ BY_ ordering_term (COMMA ordering_term)*
+ ) frame_spec? CLOSE_PAR
+;
+
+over_clause:
+ OVER_ (
+ window_name
+ | OPEN_PAR base_window_name? (PARTITION_ BY_ expr (COMMA expr)*)? (
+ ORDER_ BY_ ordering_term (COMMA ordering_term)*
+ )? frame_spec? CLOSE_PAR
+ )
+;
+
+frame_spec:
+ frame_clause (
+ EXCLUDE_ (
+ NO_ OTHERS_
+ | CURRENT_ ROW_
+ | GROUP_
+ | TIES_
+ )
+ )?
+;
+
+frame_clause: (RANGE_ | ROWS_ | GROUPS_) (
+ frame_single
+ | BETWEEN_ frame_left AND_ frame_right
+ )
+;
+
+simple_function_invocation:
+ simple_func OPEN_PAR (expr (COMMA expr)* | STAR) CLOSE_PAR
+;
+
+aggregate_function_invocation:
+ aggregate_func OPEN_PAR (DISTINCT_? expr (COMMA expr)* | STAR)? CLOSE_PAR filter_clause?
+;
+
+window_function_invocation:
+ window_function OPEN_PAR (expr (COMMA expr)* | STAR)? CLOSE_PAR filter_clause? OVER_ (
+ window_defn
+ | window_name
+ )
+;
+
+common_table_stmt: //additional structures
+ WITH_ RECURSIVE_? common_table_expression (COMMA common_table_expression)*
+;
+
+order_by_stmt:
+ ORDER_ BY_ ordering_term (COMMA ordering_term)*
+;
+
+limit_stmt:
+ LIMIT_ expr ((OFFSET_ | COMMA) expr)?
+;
+
+ordering_term:
+ expr (COLLATE_ collation_name)? asc_desc? (NULLS_ (FIRST_ | LAST_))?
+;
+
+asc_desc:
+ ASC_
+ | DESC_
+;
+
+frame_left:
+ expr PRECEDING_
+ | expr FOLLOWING_
+ | CURRENT_ ROW_
+ | UNBOUNDED_ PRECEDING_
+;
+
+frame_right:
+ expr PRECEDING_
+ | expr FOLLOWING_
+ | CURRENT_ ROW_
+ | UNBOUNDED_ FOLLOWING_
+;
+
+frame_single:
+ expr PRECEDING_
+ | UNBOUNDED_ PRECEDING_
+ | CURRENT_ ROW_
+;
+
+// unknown
+
+window_function:
+ (FIRST_VALUE_ | LAST_VALUE_) OPEN_PAR expr CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc frame_clause
+ ? CLOSE_PAR
+ | (CUME_DIST_ | PERCENT_RANK_) OPEN_PAR CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr? CLOSE_PAR
+ | (DENSE_RANK_ | RANK_ | ROW_NUMBER_) OPEN_PAR CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc
+ CLOSE_PAR
+ | (LAG_ | LEAD_) OPEN_PAR expr offset? default_value? CLOSE_PAR OVER_ OPEN_PAR partition_by?
+ order_by_expr_asc_desc CLOSE_PAR
+ | NTH_VALUE_ OPEN_PAR expr COMMA signed_number CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc
+ frame_clause? CLOSE_PAR
+ | NTILE_ OPEN_PAR expr CLOSE_PAR OVER_ OPEN_PAR partition_by? order_by_expr_asc_desc CLOSE_PAR
+;
+
+offset:
+ COMMA signed_number
+;
+
+default_value:
+ COMMA signed_number
+;
+
+partition_by:
+ PARTITION_ BY_ expr+
+;
+
+order_by_expr:
+ ORDER_ BY_ expr+
+;
+
+order_by_expr_asc_desc:
+ ORDER_ BY_ expr_asc_desc
+;
+
+expr_asc_desc:
+ expr asc_desc? (COMMA expr asc_desc?)*
+;
+
+//TODO BOTH OF THESE HAVE TO BE REWORKED TO FOLLOW THE SPEC
+initial_select:
+ select_stmt
+;
+
+recursive_select:
+ select_stmt
+;
+
+unary_operator:
+ MINUS
+ | PLUS
+ | TILDE
+ | NOT_
+;
+
+error_message:
+ STRING_LITERAL
+;
+
+module_argument: // TODO check what exactly is permitted here
+ expr
+ | column_def
+;
+
+column_alias:
+ IDENTIFIER
+ | STRING_LITERAL
+;
+
+keyword:
+ ABORT_
+ | ACTION_
+ | ADD_
+ | AFTER_
+ | ALL_
+ | ALTER_
+ | ANALYZE_
+ | AND_
+ | AS_
+ | ASC_
+ | ATTACH_
+ | AUTOINCREMENT_
+ | BEFORE_
+ | BEGIN_
+ | BETWEEN_
+ | BY_
+ | CASCADE_
+ | CASE_
+ | CAST_
+ | CHECK_
+ | COLLATE_
+ | COLUMN_
+ | COMMIT_
+ | CONFLICT_
+ | CONSTRAINT_
+ | CREATE_
+ | CROSS_
+ | CURRENT_DATE_
+ | CURRENT_TIME_
+ | CURRENT_TIMESTAMP_
+ | DATABASE_
+ | DEFAULT_
+ | DEFERRABLE_
+ | DEFERRED_
+ | DELETE_
+ | DESC_
+ | DETACH_
+ | DISTINCT_
+ | DROP_
+ | EACH_
+ | ELSE_
+ | END_
+ | ESCAPE_
+ | EXCEPT_
+ | EXCLUSIVE_
+ | EXISTS_
+ | EXPLAIN_
+ | FAIL_
+ | FOR_
+ | FOREIGN_
+ | FROM_
+ | FULL_
+ | GLOB_
+ | GROUP_
+ | HAVING_
+ | IF_
+ | IGNORE_
+ | IMMEDIATE_
+ | IN_
+ | INDEX_
+ | INDEXED_
+ | INITIALLY_
+ | INNER_
+ | INSERT_
+ | INSTEAD_
+ | INTERSECT_
+ | INTO_
+ | IS_
+ | ISNULL_
+ | JOIN_
+ | KEY_
+ | LEFT_
+ | LIKE_
+ | LIMIT_
+ | MATCH_
+ | NATURAL_
+ | NO_
+ | NOT_
+ | NOTNULL_
+ | NULL_
+ | OF_
+ | OFFSET_
+ | ON_
+ | OR_
+ | ORDER_
+ | OUTER_
+ | PLAN_
+ | PRAGMA_
+ | PRIMARY_
+ | QUERY_
+ | RAISE_
+ | RECURSIVE_
+ | REFERENCES_
+ | REGEXP_
+ | REINDEX_
+ | RELEASE_
+ | RENAME_
+ | REPLACE_
+ | RESTRICT_
+ | RIGHT_
+ | ROLLBACK_
+ | ROW_
+ | ROWS_
+ | SAVEPOINT_
+ | SELECT_
+ | SET_
+ | TABLE_
+ | TEMP_
+ | TEMPORARY_
+ | THEN_
+ | TO_
+ | TRANSACTION_
+ | TRIGGER_
+ | UNION_
+ | UNIQUE_
+ | UPDATE_
+ | USING_
+ | VACUUM_
+ | VALUES_
+ | VIEW_
+ | VIRTUAL_
+ | WHEN_
+ | WHERE_
+ | WITH_
+ | WITHOUT_
+ | FIRST_VALUE_
+ | OVER_
+ | PARTITION_
+ | RANGE_
+ | PRECEDING_
+ | UNBOUNDED_
+ | CURRENT_
+ | FOLLOWING_
+ | CUME_DIST_
+ | DENSE_RANK_
+ | LAG_
+ | LAST_VALUE_
+ | LEAD_
+ | NTH_VALUE_
+ | NTILE_
+ | PERCENT_RANK_
+ | RANK_
+ | ROW_NUMBER_
+ | GENERATED_
+ | ALWAYS_
+ | STORED_
+ | TRUE_
+ | FALSE_
+ | WINDOW_
+ | NULLS_
+ | FIRST_
+ | LAST_
+ | FILTER_
+ | GROUPS_
+ | EXCLUDE_
+;
+
+// TODO: check all names below
+
+name:
+ any_name
+;
+
+function_name:
+ any_name
+;
+
+schema_name:
+ any_name
+;
+
+table_name:
+ any_name
+;
+
+table_or_index_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
+;
+
+window_name:
+ any_name
+;
+
+alias:
+ any_name
+;
+
+filename:
+ any_name
+;
+
+base_window_name:
+ any_name
+;
+
+simple_func:
+ any_name
+;
+
+aggregate_func:
+ any_name
+;
+
+table_function_name:
+ any_name
+;
+
+any_name:
+ IDENTIFIER
+ | keyword
+ | STRING_LITERAL
+ | OPEN_PAR any_name CLOSE_PAR
+;
diff --git a/sqliteparser/grammar/SQLiteParser.tokens b/sqliteparser/grammar/SQLiteParser.tokens
new file mode 100644
index 0000000..26a9184
--- /dev/null
+++ b/sqliteparser/grammar/SQLiteParser.tokens
@@ -0,0 +1,377 @@
+SCOL=1
+DOT=2
+OPEN_PAR=3
+CLOSE_PAR=4
+COMMA=5
+ASSIGN=6
+STAR=7
+PLUS=8
+MINUS=9
+TILDE=10
+PIPE2=11
+DIV=12
+MOD=13
+LT2=14
+GT2=15
+AMP=16
+PIPE=17
+LT=18
+LT_EQ=19
+GT=20
+GT_EQ=21
+EQ=22
+NOT_EQ1=23
+NOT_EQ2=24
+ABORT_=25
+ACTION_=26
+ADD_=27
+AFTER_=28
+ALL_=29
+ALTER_=30
+ANALYZE_=31
+AND_=32
+AS_=33
+ASC_=34
+ATTACH_=35
+AUTOINCREMENT_=36
+BEFORE_=37
+BEGIN_=38
+BETWEEN_=39
+BY_=40
+CASCADE_=41
+CASE_=42
+CAST_=43
+CHECK_=44
+COLLATE_=45
+COLUMN_=46
+COMMIT_=47
+CONFLICT_=48
+CONSTRAINT_=49
+CREATE_=50
+CROSS_=51
+CURRENT_DATE_=52
+CURRENT_TIME_=53
+CURRENT_TIMESTAMP_=54
+DATABASE_=55
+DEFAULT_=56
+DEFERRABLE_=57
+DEFERRED_=58
+DELETE_=59
+DESC_=60
+DETACH_=61
+DISTINCT_=62
+DROP_=63
+EACH_=64
+ELSE_=65
+END_=66
+ESCAPE_=67
+EXCEPT_=68
+EXCLUSIVE_=69
+EXISTS_=70
+EXPLAIN_=71
+FAIL_=72
+FOR_=73
+FOREIGN_=74
+FROM_=75
+FULL_=76
+GLOB_=77
+GROUP_=78
+HAVING_=79
+IF_=80
+IGNORE_=81
+IMMEDIATE_=82
+IN_=83
+INDEX_=84
+INDEXED_=85
+INITIALLY_=86
+INNER_=87
+INSERT_=88
+INSTEAD_=89
+INTERSECT_=90
+INTO_=91
+IS_=92
+ISNULL_=93
+JOIN_=94
+KEY_=95
+LEFT_=96
+LIKE_=97
+LIMIT_=98
+MATCH_=99
+NATURAL_=100
+NO_=101
+NOT_=102
+NOTNULL_=103
+NULL_=104
+OF_=105
+OFFSET_=106
+ON_=107
+OR_=108
+ORDER_=109
+OUTER_=110
+PLAN_=111
+PRAGMA_=112
+PRIMARY_=113
+QUERY_=114
+RAISE_=115
+RECURSIVE_=116
+REFERENCES_=117
+REGEXP_=118
+REINDEX_=119
+RELEASE_=120
+RENAME_=121
+REPLACE_=122
+RESTRICT_=123
+RETURNING_=124
+RIGHT_=125
+ROLLBACK_=126
+ROW_=127
+ROWS_=128
+SAVEPOINT_=129
+SELECT_=130
+SET_=131
+TABLE_=132
+TEMP_=133
+TEMPORARY_=134
+THEN_=135
+TO_=136
+TRANSACTION_=137
+TRIGGER_=138
+UNION_=139
+UNIQUE_=140
+UPDATE_=141
+USING_=142
+VACUUM_=143
+VALUES_=144
+VIEW_=145
+VIRTUAL_=146
+WHEN_=147
+WHERE_=148
+WITH_=149
+WITHOUT_=150
+FIRST_VALUE_=151
+OVER_=152
+PARTITION_=153
+RANGE_=154
+PRECEDING_=155
+UNBOUNDED_=156
+CURRENT_=157
+FOLLOWING_=158
+CUME_DIST_=159
+DENSE_RANK_=160
+LAG_=161
+LAST_VALUE_=162
+LEAD_=163
+NTH_VALUE_=164
+NTILE_=165
+PERCENT_RANK_=166
+RANK_=167
+ROW_NUMBER_=168
+GENERATED_=169
+ALWAYS_=170
+STORED_=171
+TRUE_=172
+FALSE_=173
+WINDOW_=174
+NULLS_=175
+FIRST_=176
+LAST_=177
+FILTER_=178
+GROUPS_=179
+EXCLUDE_=180
+TIES_=181
+OTHERS_=182
+DO_=183
+NOTHING_=184
+IDENTIFIER=185
+NUMERIC_LITERAL=186
+BIND_PARAMETER=187
+STRING_LITERAL=188
+BLOB_LITERAL=189
+SINGLE_LINE_COMMENT=190
+MULTILINE_COMMENT=191
+SPACES=192
+UNEXPECTED_CHAR=193
+';'=1
+'.'=2
+'('=3
+')'=4
+','=5
+'='=6
+'*'=7
+'+'=8
+'-'=9
+'~'=10
+'||'=11
+'/'=12
+'%'=13
+'<<'=14
+'>>'=15
+'&'=16
+'|'=17
+'<'=18
+'<='=19
+'>'=20
+'>='=21
+'=='=22
+'!='=23
+'<>'=24
+'ABORT'=25
+'ACTION'=26
+'ADD'=27
+'AFTER'=28
+'ALL'=29
+'ALTER'=30
+'ANALYZE'=31
+'AND'=32
+'AS'=33
+'ASC'=34
+'ATTACH'=35
+'AUTOINCREMENT'=36
+'BEFORE'=37
+'BEGIN'=38
+'BETWEEN'=39
+'BY'=40
+'CASCADE'=41
+'CASE'=42
+'CAST'=43
+'CHECK'=44
+'COLLATE'=45
+'COLUMN'=46
+'COMMIT'=47
+'CONFLICT'=48
+'CONSTRAINT'=49
+'CREATE'=50
+'CROSS'=51
+'CURRENT_DATE'=52
+'CURRENT_TIME'=53
+'CURRENT_TIMESTAMP'=54
+'DATABASE'=55
+'DEFAULT'=56
+'DEFERRABLE'=57
+'DEFERRED'=58
+'DELETE'=59
+'DESC'=60
+'DETACH'=61
+'DISTINCT'=62
+'DROP'=63
+'EACH'=64
+'ELSE'=65
+'END'=66
+'ESCAPE'=67
+'EXCEPT'=68
+'EXCLUSIVE'=69
+'EXISTS'=70
+'EXPLAIN'=71
+'FAIL'=72
+'FOR'=73
+'FOREIGN'=74
+'FROM'=75
+'FULL'=76
+'GLOB'=77
+'GROUP'=78
+'HAVING'=79
+'IF'=80
+'IGNORE'=81
+'IMMEDIATE'=82
+'IN'=83
+'INDEX'=84
+'INDEXED'=85
+'INITIALLY'=86
+'INNER'=87
+'INSERT'=88
+'INSTEAD'=89
+'INTERSECT'=90
+'INTO'=91
+'IS'=92
+'ISNULL'=93
+'JOIN'=94
+'KEY'=95
+'LEFT'=96
+'LIKE'=97
+'LIMIT'=98
+'MATCH'=99
+'NATURAL'=100
+'NO'=101
+'NOT'=102
+'NOTNULL'=103
+'NULL'=104
+'OF'=105
+'OFFSET'=106
+'ON'=107
+'OR'=108
+'ORDER'=109
+'OUTER'=110
+'PLAN'=111
+'PRAGMA'=112
+'PRIMARY'=113
+'QUERY'=114
+'RAISE'=115
+'RECURSIVE'=116
+'REFERENCES'=117
+'REGEXP'=118
+'REINDEX'=119
+'RELEASE'=120
+'RENAME'=121
+'REPLACE'=122
+'RESTRICT'=123
+'RETURNING'=124
+'RIGHT'=125
+'ROLLBACK'=126
+'ROW'=127
+'ROWS'=128
+'SAVEPOINT'=129
+'SELECT'=130
+'SET'=131
+'TABLE'=132
+'TEMP'=133
+'TEMPORARY'=134
+'THEN'=135
+'TO'=136
+'TRANSACTION'=137
+'TRIGGER'=138
+'UNION'=139
+'UNIQUE'=140
+'UPDATE'=141
+'USING'=142
+'VACUUM'=143
+'VALUES'=144
+'VIEW'=145
+'VIRTUAL'=146
+'WHEN'=147
+'WHERE'=148
+'WITH'=149
+'WITHOUT'=150
+'FIRST_VALUE'=151
+'OVER'=152
+'PARTITION'=153
+'RANGE'=154
+'PRECEDING'=155
+'UNBOUNDED'=156
+'CURRENT'=157
+'FOLLOWING'=158
+'CUME_DIST'=159
+'DENSE_RANK'=160
+'LAG'=161
+'LAST_VALUE'=162
+'LEAD'=163
+'NTH_VALUE'=164
+'NTILE'=165
+'PERCENT_RANK'=166
+'RANK'=167
+'ROW_NUMBER'=168
+'GENERATED'=169
+'ALWAYS'=170
+'STORED'=171
+'TRUE'=172
+'FALSE'=173
+'WINDOW'=174
+'NULLS'=175
+'FIRST'=176
+'LAST'=177
+'FILTER'=178
+'GROUPS'=179
+'EXCLUDE'=180
+'TIES'=181
+'OTHERS'=182
+'DO'=183
+'NOTHING'=184
diff --git a/sqliteparser/grammar/desc.xml b/sqliteparser/grammar/desc.xml
new file mode 100644
index 0000000..5a784ea
--- /dev/null
+++ b/sqliteparser/grammar/desc.xml
@@ -0,0 +1,4 @@
+
+
+ CSharp;Cpp;Dart;Go;Java;JavaScript;PHP;Python3
+
diff --git a/sqliteparser/grammar/pom.xml b/sqliteparser/grammar/pom.xml
new file mode 100644
index 0000000..cd6a353
--- /dev/null
+++ b/sqliteparser/grammar/pom.xml
@@ -0,0 +1,56 @@
+
+ 4.0.0
+ sqlite
+ jar
+ SQLite grammar
+
+ org.antlr.grammars
+ sqlparent
+ 1.0-SNAPSHOT
+
+
+
+
+ org.antlr
+ antlr4-maven-plugin
+ ${antlr.version}
+
+ ${basedir}
+
+ SQLiteLexer.g4
+ SQLiteParser.g4
+
+ true
+ true
+
+
+
+
+ antlr4
+
+
+
+
+
+ com.khubla.antlr
+ antlr4test-maven-plugin
+ ${antlr4test-maven-plugin.version}
+
+ false
+ false
+ parse
+ SQLite
+
+ examples/
+
+
+
+
+ test
+
+
+
+
+
+
+
diff --git a/sqliteparser/sqlite_lexer.go b/sqliteparser/sqlite_lexer.go
new file mode 100644
index 0000000..f54ff24
--- /dev/null
+++ b/sqliteparser/sqlite_lexer.go
@@ -0,0 +1,1137 @@
+// Code generated from SQLiteLexer.g4 by ANTLR 4.13.1. DO NOT EDIT.
+
+package sqliteparser
+
+import (
+ "fmt"
+ "github.com/antlr4-go/antlr/v4"
+ "sync"
+ "unicode"
+)
+
+// Suppress unused import error
+var _ = fmt.Printf
+var _ = sync.Once{}
+var _ = unicode.IsLetter
+
+type SQLiteLexer struct {
+ *antlr.BaseLexer
+ channelNames []string
+ modeNames []string
+ // TODO: EOF string
+}
+
+var SQLiteLexerLexerStaticData 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 sqlitelexerLexerInit() {
+ staticData := &SQLiteLexerLexerStaticData
+ staticData.ChannelNames = []string{
+ "DEFAULT_TOKEN_CHANNEL", "HIDDEN",
+ }
+ staticData.ModeNames = []string{
+ "DEFAULT_MODE",
+ }
+ staticData.LiteralNames = []string{
+ "", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", "'-'", "'~'",
+ "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", "'<='", "'>'",
+ "'>='", "'=='", "'!='", "'<>'", "'ABORT'", "'ACTION'", "'ADD'", "'AFTER'",
+ "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", "'AS'", "'ASC'", "'ATTACH'",
+ "'AUTOINCREMENT'", "'BEFORE'", "'BEGIN'", "'BETWEEN'", "'BY'", "'CASCADE'",
+ "'CASE'", "'CAST'", "'CHECK'", "'COLLATE'", "'COLUMN'", "'COMMIT'",
+ "'CONFLICT'", "'CONSTRAINT'", "'CREATE'", "'CROSS'", "'CURRENT_DATE'",
+ "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'DATABASE'", "'DEFAULT'",
+ "'DEFERRABLE'", "'DEFERRED'", "'DELETE'", "'DESC'", "'DETACH'", "'DISTINCT'",
+ "'DROP'", "'EACH'", "'ELSE'", "'END'", "'ESCAPE'", "'EXCEPT'", "'EXCLUSIVE'",
+ "'EXISTS'", "'EXPLAIN'", "'FAIL'", "'FOR'", "'FOREIGN'", "'FROM'", "'FULL'",
+ "'GLOB'", "'GROUP'", "'HAVING'", "'IF'", "'IGNORE'", "'IMMEDIATE'",
+ "'IN'", "'INDEX'", "'INDEXED'", "'INITIALLY'", "'INNER'", "'INSERT'",
+ "'INSTEAD'", "'INTERSECT'", "'INTO'", "'IS'", "'ISNULL'", "'JOIN'",
+ "'KEY'", "'LEFT'", "'LIKE'", "'LIMIT'", "'MATCH'", "'NATURAL'", "'NO'",
+ "'NOT'", "'NOTNULL'", "'NULL'", "'OF'", "'OFFSET'", "'ON'", "'OR'",
+ "'ORDER'", "'OUTER'", "'PLAN'", "'PRAGMA'", "'PRIMARY'", "'QUERY'",
+ "'RAISE'", "'RECURSIVE'", "'REFERENCES'", "'REGEXP'", "'REINDEX'", "'RELEASE'",
+ "'RENAME'", "'REPLACE'", "'RESTRICT'", "'RETURNING'", "'RIGHT'", "'ROLLBACK'",
+ "'ROW'", "'ROWS'", "'SAVEPOINT'", "'SELECT'", "'SET'", "'TABLE'", "'TEMP'",
+ "'TEMPORARY'", "'THEN'", "'TO'", "'TRANSACTION'", "'TRIGGER'", "'UNION'",
+ "'UNIQUE'", "'UPDATE'", "'USING'", "'VACUUM'", "'VALUES'", "'VIEW'",
+ "'VIRTUAL'", "'WHEN'", "'WHERE'", "'WITH'", "'WITHOUT'", "'FIRST_VALUE'",
+ "'OVER'", "'PARTITION'", "'RANGE'", "'PRECEDING'", "'UNBOUNDED'", "'CURRENT'",
+ "'FOLLOWING'", "'CUME_DIST'", "'DENSE_RANK'", "'LAG'", "'LAST_VALUE'",
+ "'LEAD'", "'NTH_VALUE'", "'NTILE'", "'PERCENT_RANK'", "'RANK'", "'ROW_NUMBER'",
+ "'GENERATED'", "'ALWAYS'", "'STORED'", "'TRUE'", "'FALSE'", "'WINDOW'",
+ "'NULLS'", "'FIRST'", "'LAST'", "'FILTER'", "'GROUPS'", "'EXCLUDE'",
+ "'TIES'", "'OTHERS'", "'DO'", "'NOTHING'",
+ }
+ 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", "ABORT_",
+ "ACTION_", "ADD_", "AFTER_", "ALL_", "ALTER_", "ANALYZE_", "AND_", "AS_",
+ "ASC_", "ATTACH_", "AUTOINCREMENT_", "BEFORE_", "BEGIN_", "BETWEEN_",
+ "BY_", "CASCADE_", "CASE_", "CAST_", "CHECK_", "COLLATE_", "COLUMN_",
+ "COMMIT_", "CONFLICT_", "CONSTRAINT_", "CREATE_", "CROSS_", "CURRENT_DATE_",
+ "CURRENT_TIME_", "CURRENT_TIMESTAMP_", "DATABASE_", "DEFAULT_", "DEFERRABLE_",
+ "DEFERRED_", "DELETE_", "DESC_", "DETACH_", "DISTINCT_", "DROP_", "EACH_",
+ "ELSE_", "END_", "ESCAPE_", "EXCEPT_", "EXCLUSIVE_", "EXISTS_", "EXPLAIN_",
+ "FAIL_", "FOR_", "FOREIGN_", "FROM_", "FULL_", "GLOB_", "GROUP_", "HAVING_",
+ "IF_", "IGNORE_", "IMMEDIATE_", "IN_", "INDEX_", "INDEXED_", "INITIALLY_",
+ "INNER_", "INSERT_", "INSTEAD_", "INTERSECT_", "INTO_", "IS_", "ISNULL_",
+ "JOIN_", "KEY_", "LEFT_", "LIKE_", "LIMIT_", "MATCH_", "NATURAL_", "NO_",
+ "NOT_", "NOTNULL_", "NULL_", "OF_", "OFFSET_", "ON_", "OR_", "ORDER_",
+ "OUTER_", "PLAN_", "PRAGMA_", "PRIMARY_", "QUERY_", "RAISE_", "RECURSIVE_",
+ "REFERENCES_", "REGEXP_", "REINDEX_", "RELEASE_", "RENAME_", "REPLACE_",
+ "RESTRICT_", "RETURNING_", "RIGHT_", "ROLLBACK_", "ROW_", "ROWS_", "SAVEPOINT_",
+ "SELECT_", "SET_", "TABLE_", "TEMP_", "TEMPORARY_", "THEN_", "TO_",
+ "TRANSACTION_", "TRIGGER_", "UNION_", "UNIQUE_", "UPDATE_", "USING_",
+ "VACUUM_", "VALUES_", "VIEW_", "VIRTUAL_", "WHEN_", "WHERE_", "WITH_",
+ "WITHOUT_", "FIRST_VALUE_", "OVER_", "PARTITION_", "RANGE_", "PRECEDING_",
+ "UNBOUNDED_", "CURRENT_", "FOLLOWING_", "CUME_DIST_", "DENSE_RANK_",
+ "LAG_", "LAST_VALUE_", "LEAD_", "NTH_VALUE_", "NTILE_", "PERCENT_RANK_",
+ "RANK_", "ROW_NUMBER_", "GENERATED_", "ALWAYS_", "STORED_", "TRUE_",
+ "FALSE_", "WINDOW_", "NULLS_", "FIRST_", "LAST_", "FILTER_", "GROUPS_",
+ "EXCLUDE_", "TIES_", "OTHERS_", "DO_", "NOTHING_", "IDENTIFIER", "NUMERIC_LITERAL",
+ "BIND_PARAMETER", "STRING_LITERAL", "BLOB_LITERAL", "SINGLE_LINE_COMMENT",
+ "MULTILINE_COMMENT", "SPACES", "UNEXPECTED_CHAR",
+ }
+ staticData.RuleNames = []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", "ABORT_",
+ "ACTION_", "ADD_", "AFTER_", "ALL_", "ALTER_", "ANALYZE_", "AND_", "AS_",
+ "ASC_", "ATTACH_", "AUTOINCREMENT_", "BEFORE_", "BEGIN_", "BETWEEN_",
+ "BY_", "CASCADE_", "CASE_", "CAST_", "CHECK_", "COLLATE_", "COLUMN_",
+ "COMMIT_", "CONFLICT_", "CONSTRAINT_", "CREATE_", "CROSS_", "CURRENT_DATE_",
+ "CURRENT_TIME_", "CURRENT_TIMESTAMP_", "DATABASE_", "DEFAULT_", "DEFERRABLE_",
+ "DEFERRED_", "DELETE_", "DESC_", "DETACH_", "DISTINCT_", "DROP_", "EACH_",
+ "ELSE_", "END_", "ESCAPE_", "EXCEPT_", "EXCLUSIVE_", "EXISTS_", "EXPLAIN_",
+ "FAIL_", "FOR_", "FOREIGN_", "FROM_", "FULL_", "GLOB_", "GROUP_", "HAVING_",
+ "IF_", "IGNORE_", "IMMEDIATE_", "IN_", "INDEX_", "INDEXED_", "INITIALLY_",
+ "INNER_", "INSERT_", "INSTEAD_", "INTERSECT_", "INTO_", "IS_", "ISNULL_",
+ "JOIN_", "KEY_", "LEFT_", "LIKE_", "LIMIT_", "MATCH_", "NATURAL_", "NO_",
+ "NOT_", "NOTNULL_", "NULL_", "OF_", "OFFSET_", "ON_", "OR_", "ORDER_",
+ "OUTER_", "PLAN_", "PRAGMA_", "PRIMARY_", "QUERY_", "RAISE_", "RECURSIVE_",
+ "REFERENCES_", "REGEXP_", "REINDEX_", "RELEASE_", "RENAME_", "REPLACE_",
+ "RESTRICT_", "RETURNING_", "RIGHT_", "ROLLBACK_", "ROW_", "ROWS_", "SAVEPOINT_",
+ "SELECT_", "SET_", "TABLE_", "TEMP_", "TEMPORARY_", "THEN_", "TO_",
+ "TRANSACTION_", "TRIGGER_", "UNION_", "UNIQUE_", "UPDATE_", "USING_",
+ "VACUUM_", "VALUES_", "VIEW_", "VIRTUAL_", "WHEN_", "WHERE_", "WITH_",
+ "WITHOUT_", "FIRST_VALUE_", "OVER_", "PARTITION_", "RANGE_", "PRECEDING_",
+ "UNBOUNDED_", "CURRENT_", "FOLLOWING_", "CUME_DIST_", "DENSE_RANK_",
+ "LAG_", "LAST_VALUE_", "LEAD_", "NTH_VALUE_", "NTILE_", "PERCENT_RANK_",
+ "RANK_", "ROW_NUMBER_", "GENERATED_", "ALWAYS_", "STORED_", "TRUE_",
+ "FALSE_", "WINDOW_", "NULLS_", "FIRST_", "LAST_", "FILTER_", "GROUPS_",
+ "EXCLUDE_", "TIES_", "OTHERS_", "DO_", "NOTHING_", "IDENTIFIER", "NUMERIC_LITERAL",
+ "BIND_PARAMETER", "STRING_LITERAL", "BLOB_LITERAL", "SINGLE_LINE_COMMENT",
+ "MULTILINE_COMMENT", "SPACES", "UNEXPECTED_CHAR", "HEX_DIGIT", "DIGIT",
+ }
+ staticData.PredictionContextCache = antlr.NewPredictionContextCache()
+ staticData.serializedATN = []int32{
+ 4, 0, 193, 1704, 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, 2, 188, 7, 188, 2, 189,
+ 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193,
+ 2, 194, 7, 194, 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, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14,
+ 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1,
+ 19, 1, 19, 1, 20, 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, 24, 1, 24, 1, 24, 1, 25, 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, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1,
+ 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30,
+ 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 33, 1,
+ 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35,
+ 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1,
+ 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 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, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40,
+ 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1,
+ 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44,
+ 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 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, 47, 1, 47, 1, 48, 1, 48, 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, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1,
+ 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 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, 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, 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, 56, 1, 56, 1, 56, 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, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60,
+ 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1,
+ 61, 1, 61, 1, 61, 1, 61, 1, 61, 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, 66, 1, 66, 1, 66, 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, 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,
+ 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73,
+ 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1,
+ 74, 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, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1,
+ 78, 1, 78, 1, 78, 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, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1,
+ 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83,
+ 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1,
+ 85, 1, 85, 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, 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, 88, 1, 88, 1, 89, 1, 89, 1, 89,
+ 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, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92,
+ 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 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, 96, 1, 97,
+ 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1,
+ 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1,
+ 100, 1, 100, 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, 103, 1,
+ 103, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1,
+ 105, 1, 105, 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, 109, 1, 109, 1, 109, 1, 109, 1,
+ 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1,
+ 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 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, 114, 1, 115, 1, 115, 1,
+ 115, 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, 116, 1, 116, 1,
+ 116, 1, 117, 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, 118, 1, 118, 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, 121, 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, 122, 1, 123, 1, 123, 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, 125, 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, 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, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1,
+ 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1,
+ 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1,
+ 133, 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, 136, 1, 136, 1, 136, 1,
+ 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1,
+ 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 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, 140, 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, 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, 143, 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, 145, 1, 146, 1, 146, 1,
+ 146, 1, 146, 1, 146, 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, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1,
+ 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1,
+ 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1,
+ 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1,
+ 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1,
+ 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1,
+ 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1,
+ 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1,
+ 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1,
+ 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1,
+ 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1,
+ 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1,
+ 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1,
+ 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1,
+ 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1,
+ 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1,
+ 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1,
+ 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1,
+ 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1,
+ 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1,
+ 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1,
+ 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1,
+ 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1,
+ 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1,
+ 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1,
+ 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1,
+ 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1,
+ 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1,
+ 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1,
+ 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 5, 184, 1562,
+ 8, 184, 10, 184, 12, 184, 1565, 9, 184, 1, 184, 1, 184, 1, 184, 1, 184,
+ 1, 184, 5, 184, 1572, 8, 184, 10, 184, 12, 184, 1575, 9, 184, 1, 184, 1,
+ 184, 1, 184, 5, 184, 1580, 8, 184, 10, 184, 12, 184, 1583, 9, 184, 1, 184,
+ 1, 184, 1, 184, 5, 184, 1588, 8, 184, 10, 184, 12, 184, 1591, 9, 184, 3,
+ 184, 1593, 8, 184, 1, 185, 4, 185, 1596, 8, 185, 11, 185, 12, 185, 1597,
+ 1, 185, 1, 185, 5, 185, 1602, 8, 185, 10, 185, 12, 185, 1605, 9, 185, 3,
+ 185, 1607, 8, 185, 1, 185, 1, 185, 4, 185, 1611, 8, 185, 11, 185, 12, 185,
+ 1612, 3, 185, 1615, 8, 185, 1, 185, 1, 185, 3, 185, 1619, 8, 185, 1, 185,
+ 4, 185, 1622, 8, 185, 11, 185, 12, 185, 1623, 3, 185, 1626, 8, 185, 1,
+ 185, 1, 185, 1, 185, 1, 185, 4, 185, 1632, 8, 185, 11, 185, 12, 185, 1633,
+ 3, 185, 1636, 8, 185, 1, 186, 1, 186, 5, 186, 1640, 8, 186, 10, 186, 12,
+ 186, 1643, 9, 186, 1, 186, 1, 186, 3, 186, 1647, 8, 186, 1, 187, 1, 187,
+ 1, 187, 1, 187, 5, 187, 1653, 8, 187, 10, 187, 12, 187, 1656, 9, 187, 1,
+ 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 5,
+ 189, 1667, 8, 189, 10, 189, 12, 189, 1670, 9, 189, 1, 189, 3, 189, 1673,
+ 8, 189, 1, 189, 1, 189, 3, 189, 1677, 8, 189, 1, 189, 1, 189, 1, 190, 1,
+ 190, 1, 190, 1, 190, 5, 190, 1685, 8, 190, 10, 190, 12, 190, 1688, 9, 190,
+ 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191,
+ 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 1686, 0, 195, 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, 162, 325, 163, 327,
+ 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171,
+ 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357,
+ 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186,
+ 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387,
+ 0, 389, 0, 1, 0, 38, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0,
+ 79, 79, 111, 111, 2, 0, 82, 82, 114, 114, 2, 0, 84, 84, 116, 116, 2, 0,
+ 67, 67, 99, 99, 2, 0, 73, 73, 105, 105, 2, 0, 78, 78, 110, 110, 2, 0, 68,
+ 68, 100, 100, 2, 0, 70, 70, 102, 102, 2, 0, 69, 69, 101, 101, 2, 0, 76,
+ 76, 108, 108, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 83,
+ 83, 115, 115, 2, 0, 72, 72, 104, 104, 2, 0, 85, 85, 117, 117, 2, 0, 77,
+ 77, 109, 109, 2, 0, 71, 71, 103, 103, 2, 0, 87, 87, 119, 119, 2, 0, 75,
+ 75, 107, 107, 2, 0, 80, 80, 112, 112, 2, 0, 88, 88, 120, 120, 2, 0, 86,
+ 86, 118, 118, 2, 0, 74, 74, 106, 106, 2, 0, 81, 81, 113, 113, 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,
+ 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, 57, 1728, 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, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0,
+ 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333,
+ 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0,
+ 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1,
+ 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0,
+ 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0,
+ 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369,
+ 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0,
+ 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1,
+ 0, 0, 0, 0, 385, 1, 0, 0, 0, 1, 391, 1, 0, 0, 0, 3, 393, 1, 0, 0, 0, 5,
+ 395, 1, 0, 0, 0, 7, 397, 1, 0, 0, 0, 9, 399, 1, 0, 0, 0, 11, 401, 1, 0,
+ 0, 0, 13, 403, 1, 0, 0, 0, 15, 405, 1, 0, 0, 0, 17, 407, 1, 0, 0, 0, 19,
+ 409, 1, 0, 0, 0, 21, 411, 1, 0, 0, 0, 23, 414, 1, 0, 0, 0, 25, 416, 1,
+ 0, 0, 0, 27, 418, 1, 0, 0, 0, 29, 421, 1, 0, 0, 0, 31, 424, 1, 0, 0, 0,
+ 33, 426, 1, 0, 0, 0, 35, 428, 1, 0, 0, 0, 37, 430, 1, 0, 0, 0, 39, 433,
+ 1, 0, 0, 0, 41, 435, 1, 0, 0, 0, 43, 438, 1, 0, 0, 0, 45, 441, 1, 0, 0,
+ 0, 47, 444, 1, 0, 0, 0, 49, 447, 1, 0, 0, 0, 51, 453, 1, 0, 0, 0, 53, 460,
+ 1, 0, 0, 0, 55, 464, 1, 0, 0, 0, 57, 470, 1, 0, 0, 0, 59, 474, 1, 0, 0,
+ 0, 61, 480, 1, 0, 0, 0, 63, 488, 1, 0, 0, 0, 65, 492, 1, 0, 0, 0, 67, 495,
+ 1, 0, 0, 0, 69, 499, 1, 0, 0, 0, 71, 506, 1, 0, 0, 0, 73, 520, 1, 0, 0,
+ 0, 75, 527, 1, 0, 0, 0, 77, 533, 1, 0, 0, 0, 79, 541, 1, 0, 0, 0, 81, 544,
+ 1, 0, 0, 0, 83, 552, 1, 0, 0, 0, 85, 557, 1, 0, 0, 0, 87, 562, 1, 0, 0,
+ 0, 89, 568, 1, 0, 0, 0, 91, 576, 1, 0, 0, 0, 93, 583, 1, 0, 0, 0, 95, 590,
+ 1, 0, 0, 0, 97, 599, 1, 0, 0, 0, 99, 610, 1, 0, 0, 0, 101, 617, 1, 0, 0,
+ 0, 103, 623, 1, 0, 0, 0, 105, 636, 1, 0, 0, 0, 107, 649, 1, 0, 0, 0, 109,
+ 667, 1, 0, 0, 0, 111, 676, 1, 0, 0, 0, 113, 684, 1, 0, 0, 0, 115, 695,
+ 1, 0, 0, 0, 117, 704, 1, 0, 0, 0, 119, 711, 1, 0, 0, 0, 121, 716, 1, 0,
+ 0, 0, 123, 723, 1, 0, 0, 0, 125, 732, 1, 0, 0, 0, 127, 737, 1, 0, 0, 0,
+ 129, 742, 1, 0, 0, 0, 131, 747, 1, 0, 0, 0, 133, 751, 1, 0, 0, 0, 135,
+ 758, 1, 0, 0, 0, 137, 765, 1, 0, 0, 0, 139, 775, 1, 0, 0, 0, 141, 782,
+ 1, 0, 0, 0, 143, 790, 1, 0, 0, 0, 145, 795, 1, 0, 0, 0, 147, 799, 1, 0,
+ 0, 0, 149, 807, 1, 0, 0, 0, 151, 812, 1, 0, 0, 0, 153, 817, 1, 0, 0, 0,
+ 155, 822, 1, 0, 0, 0, 157, 828, 1, 0, 0, 0, 159, 835, 1, 0, 0, 0, 161,
+ 838, 1, 0, 0, 0, 163, 845, 1, 0, 0, 0, 165, 855, 1, 0, 0, 0, 167, 858,
+ 1, 0, 0, 0, 169, 864, 1, 0, 0, 0, 171, 872, 1, 0, 0, 0, 173, 882, 1, 0,
+ 0, 0, 175, 888, 1, 0, 0, 0, 177, 895, 1, 0, 0, 0, 179, 903, 1, 0, 0, 0,
+ 181, 913, 1, 0, 0, 0, 183, 918, 1, 0, 0, 0, 185, 921, 1, 0, 0, 0, 187,
+ 928, 1, 0, 0, 0, 189, 933, 1, 0, 0, 0, 191, 937, 1, 0, 0, 0, 193, 942,
+ 1, 0, 0, 0, 195, 947, 1, 0, 0, 0, 197, 953, 1, 0, 0, 0, 199, 959, 1, 0,
+ 0, 0, 201, 967, 1, 0, 0, 0, 203, 970, 1, 0, 0, 0, 205, 974, 1, 0, 0, 0,
+ 207, 982, 1, 0, 0, 0, 209, 987, 1, 0, 0, 0, 211, 990, 1, 0, 0, 0, 213,
+ 997, 1, 0, 0, 0, 215, 1000, 1, 0, 0, 0, 217, 1003, 1, 0, 0, 0, 219, 1009,
+ 1, 0, 0, 0, 221, 1015, 1, 0, 0, 0, 223, 1020, 1, 0, 0, 0, 225, 1027, 1,
+ 0, 0, 0, 227, 1035, 1, 0, 0, 0, 229, 1041, 1, 0, 0, 0, 231, 1047, 1, 0,
+ 0, 0, 233, 1057, 1, 0, 0, 0, 235, 1068, 1, 0, 0, 0, 237, 1075, 1, 0, 0,
+ 0, 239, 1083, 1, 0, 0, 0, 241, 1091, 1, 0, 0, 0, 243, 1098, 1, 0, 0, 0,
+ 245, 1106, 1, 0, 0, 0, 247, 1115, 1, 0, 0, 0, 249, 1125, 1, 0, 0, 0, 251,
+ 1131, 1, 0, 0, 0, 253, 1140, 1, 0, 0, 0, 255, 1144, 1, 0, 0, 0, 257, 1149,
+ 1, 0, 0, 0, 259, 1159, 1, 0, 0, 0, 261, 1166, 1, 0, 0, 0, 263, 1170, 1,
+ 0, 0, 0, 265, 1176, 1, 0, 0, 0, 267, 1181, 1, 0, 0, 0, 269, 1191, 1, 0,
+ 0, 0, 271, 1196, 1, 0, 0, 0, 273, 1199, 1, 0, 0, 0, 275, 1211, 1, 0, 0,
+ 0, 277, 1219, 1, 0, 0, 0, 279, 1225, 1, 0, 0, 0, 281, 1232, 1, 0, 0, 0,
+ 283, 1239, 1, 0, 0, 0, 285, 1245, 1, 0, 0, 0, 287, 1252, 1, 0, 0, 0, 289,
+ 1259, 1, 0, 0, 0, 291, 1264, 1, 0, 0, 0, 293, 1272, 1, 0, 0, 0, 295, 1277,
+ 1, 0, 0, 0, 297, 1283, 1, 0, 0, 0, 299, 1288, 1, 0, 0, 0, 301, 1296, 1,
+ 0, 0, 0, 303, 1308, 1, 0, 0, 0, 305, 1313, 1, 0, 0, 0, 307, 1323, 1, 0,
+ 0, 0, 309, 1329, 1, 0, 0, 0, 311, 1339, 1, 0, 0, 0, 313, 1349, 1, 0, 0,
+ 0, 315, 1357, 1, 0, 0, 0, 317, 1367, 1, 0, 0, 0, 319, 1377, 1, 0, 0, 0,
+ 321, 1388, 1, 0, 0, 0, 323, 1392, 1, 0, 0, 0, 325, 1403, 1, 0, 0, 0, 327,
+ 1408, 1, 0, 0, 0, 329, 1418, 1, 0, 0, 0, 331, 1424, 1, 0, 0, 0, 333, 1437,
+ 1, 0, 0, 0, 335, 1442, 1, 0, 0, 0, 337, 1453, 1, 0, 0, 0, 339, 1463, 1,
+ 0, 0, 0, 341, 1470, 1, 0, 0, 0, 343, 1477, 1, 0, 0, 0, 345, 1482, 1, 0,
+ 0, 0, 347, 1488, 1, 0, 0, 0, 349, 1495, 1, 0, 0, 0, 351, 1501, 1, 0, 0,
+ 0, 353, 1507, 1, 0, 0, 0, 355, 1512, 1, 0, 0, 0, 357, 1519, 1, 0, 0, 0,
+ 359, 1526, 1, 0, 0, 0, 361, 1534, 1, 0, 0, 0, 363, 1539, 1, 0, 0, 0, 365,
+ 1546, 1, 0, 0, 0, 367, 1549, 1, 0, 0, 0, 369, 1592, 1, 0, 0, 0, 371, 1635,
+ 1, 0, 0, 0, 373, 1646, 1, 0, 0, 0, 375, 1648, 1, 0, 0, 0, 377, 1659, 1,
+ 0, 0, 0, 379, 1662, 1, 0, 0, 0, 381, 1680, 1, 0, 0, 0, 383, 1694, 1, 0,
+ 0, 0, 385, 1698, 1, 0, 0, 0, 387, 1700, 1, 0, 0, 0, 389, 1702, 1, 0, 0,
+ 0, 391, 392, 5, 59, 0, 0, 392, 2, 1, 0, 0, 0, 393, 394, 5, 46, 0, 0, 394,
+ 4, 1, 0, 0, 0, 395, 396, 5, 40, 0, 0, 396, 6, 1, 0, 0, 0, 397, 398, 5,
+ 41, 0, 0, 398, 8, 1, 0, 0, 0, 399, 400, 5, 44, 0, 0, 400, 10, 1, 0, 0,
+ 0, 401, 402, 5, 61, 0, 0, 402, 12, 1, 0, 0, 0, 403, 404, 5, 42, 0, 0, 404,
+ 14, 1, 0, 0, 0, 405, 406, 5, 43, 0, 0, 406, 16, 1, 0, 0, 0, 407, 408, 5,
+ 45, 0, 0, 408, 18, 1, 0, 0, 0, 409, 410, 5, 126, 0, 0, 410, 20, 1, 0, 0,
+ 0, 411, 412, 5, 124, 0, 0, 412, 413, 5, 124, 0, 0, 413, 22, 1, 0, 0, 0,
+ 414, 415, 5, 47, 0, 0, 415, 24, 1, 0, 0, 0, 416, 417, 5, 37, 0, 0, 417,
+ 26, 1, 0, 0, 0, 418, 419, 5, 60, 0, 0, 419, 420, 5, 60, 0, 0, 420, 28,
+ 1, 0, 0, 0, 421, 422, 5, 62, 0, 0, 422, 423, 5, 62, 0, 0, 423, 30, 1, 0,
+ 0, 0, 424, 425, 5, 38, 0, 0, 425, 32, 1, 0, 0, 0, 426, 427, 5, 124, 0,
+ 0, 427, 34, 1, 0, 0, 0, 428, 429, 5, 60, 0, 0, 429, 36, 1, 0, 0, 0, 430,
+ 431, 5, 60, 0, 0, 431, 432, 5, 61, 0, 0, 432, 38, 1, 0, 0, 0, 433, 434,
+ 5, 62, 0, 0, 434, 40, 1, 0, 0, 0, 435, 436, 5, 62, 0, 0, 436, 437, 5, 61,
+ 0, 0, 437, 42, 1, 0, 0, 0, 438, 439, 5, 61, 0, 0, 439, 440, 5, 61, 0, 0,
+ 440, 44, 1, 0, 0, 0, 441, 442, 5, 33, 0, 0, 442, 443, 5, 61, 0, 0, 443,
+ 46, 1, 0, 0, 0, 444, 445, 5, 60, 0, 0, 445, 446, 5, 62, 0, 0, 446, 48,
+ 1, 0, 0, 0, 447, 448, 7, 0, 0, 0, 448, 449, 7, 1, 0, 0, 449, 450, 7, 2,
+ 0, 0, 450, 451, 7, 3, 0, 0, 451, 452, 7, 4, 0, 0, 452, 50, 1, 0, 0, 0,
+ 453, 454, 7, 0, 0, 0, 454, 455, 7, 5, 0, 0, 455, 456, 7, 4, 0, 0, 456,
+ 457, 7, 6, 0, 0, 457, 458, 7, 2, 0, 0, 458, 459, 7, 7, 0, 0, 459, 52, 1,
+ 0, 0, 0, 460, 461, 7, 0, 0, 0, 461, 462, 7, 8, 0, 0, 462, 463, 7, 8, 0,
+ 0, 463, 54, 1, 0, 0, 0, 464, 465, 7, 0, 0, 0, 465, 466, 7, 9, 0, 0, 466,
+ 467, 7, 4, 0, 0, 467, 468, 7, 10, 0, 0, 468, 469, 7, 3, 0, 0, 469, 56,
+ 1, 0, 0, 0, 470, 471, 7, 0, 0, 0, 471, 472, 7, 11, 0, 0, 472, 473, 7, 11,
+ 0, 0, 473, 58, 1, 0, 0, 0, 474, 475, 7, 0, 0, 0, 475, 476, 7, 11, 0, 0,
+ 476, 477, 7, 4, 0, 0, 477, 478, 7, 10, 0, 0, 478, 479, 7, 3, 0, 0, 479,
+ 60, 1, 0, 0, 0, 480, 481, 7, 0, 0, 0, 481, 482, 7, 7, 0, 0, 482, 483, 7,
+ 0, 0, 0, 483, 484, 7, 11, 0, 0, 484, 485, 7, 12, 0, 0, 485, 486, 7, 13,
+ 0, 0, 486, 487, 7, 10, 0, 0, 487, 62, 1, 0, 0, 0, 488, 489, 7, 0, 0, 0,
+ 489, 490, 7, 7, 0, 0, 490, 491, 7, 8, 0, 0, 491, 64, 1, 0, 0, 0, 492, 493,
+ 7, 0, 0, 0, 493, 494, 7, 14, 0, 0, 494, 66, 1, 0, 0, 0, 495, 496, 7, 0,
+ 0, 0, 496, 497, 7, 14, 0, 0, 497, 498, 7, 5, 0, 0, 498, 68, 1, 0, 0, 0,
+ 499, 500, 7, 0, 0, 0, 500, 501, 7, 4, 0, 0, 501, 502, 7, 4, 0, 0, 502,
+ 503, 7, 0, 0, 0, 503, 504, 7, 5, 0, 0, 504, 505, 7, 15, 0, 0, 505, 70,
+ 1, 0, 0, 0, 506, 507, 7, 0, 0, 0, 507, 508, 7, 16, 0, 0, 508, 509, 7, 4,
+ 0, 0, 509, 510, 7, 2, 0, 0, 510, 511, 7, 6, 0, 0, 511, 512, 7, 7, 0, 0,
+ 512, 513, 7, 5, 0, 0, 513, 514, 7, 3, 0, 0, 514, 515, 7, 10, 0, 0, 515,
+ 516, 7, 17, 0, 0, 516, 517, 7, 10, 0, 0, 517, 518, 7, 7, 0, 0, 518, 519,
+ 7, 4, 0, 0, 519, 72, 1, 0, 0, 0, 520, 521, 7, 1, 0, 0, 521, 522, 7, 10,
+ 0, 0, 522, 523, 7, 9, 0, 0, 523, 524, 7, 2, 0, 0, 524, 525, 7, 3, 0, 0,
+ 525, 526, 7, 10, 0, 0, 526, 74, 1, 0, 0, 0, 527, 528, 7, 1, 0, 0, 528,
+ 529, 7, 10, 0, 0, 529, 530, 7, 18, 0, 0, 530, 531, 7, 6, 0, 0, 531, 532,
+ 7, 7, 0, 0, 532, 76, 1, 0, 0, 0, 533, 534, 7, 1, 0, 0, 534, 535, 7, 10,
+ 0, 0, 535, 536, 7, 4, 0, 0, 536, 537, 7, 19, 0, 0, 537, 538, 7, 10, 0,
+ 0, 538, 539, 7, 10, 0, 0, 539, 540, 7, 7, 0, 0, 540, 78, 1, 0, 0, 0, 541,
+ 542, 7, 1, 0, 0, 542, 543, 7, 12, 0, 0, 543, 80, 1, 0, 0, 0, 544, 545,
+ 7, 5, 0, 0, 545, 546, 7, 0, 0, 0, 546, 547, 7, 14, 0, 0, 547, 548, 7, 5,
+ 0, 0, 548, 549, 7, 0, 0, 0, 549, 550, 7, 8, 0, 0, 550, 551, 7, 10, 0, 0,
+ 551, 82, 1, 0, 0, 0, 552, 553, 7, 5, 0, 0, 553, 554, 7, 0, 0, 0, 554, 555,
+ 7, 14, 0, 0, 555, 556, 7, 10, 0, 0, 556, 84, 1, 0, 0, 0, 557, 558, 7, 5,
+ 0, 0, 558, 559, 7, 0, 0, 0, 559, 560, 7, 14, 0, 0, 560, 561, 7, 4, 0, 0,
+ 561, 86, 1, 0, 0, 0, 562, 563, 7, 5, 0, 0, 563, 564, 7, 15, 0, 0, 564,
+ 565, 7, 10, 0, 0, 565, 566, 7, 5, 0, 0, 566, 567, 7, 20, 0, 0, 567, 88,
+ 1, 0, 0, 0, 568, 569, 7, 5, 0, 0, 569, 570, 7, 2, 0, 0, 570, 571, 7, 11,
+ 0, 0, 571, 572, 7, 11, 0, 0, 572, 573, 7, 0, 0, 0, 573, 574, 7, 4, 0, 0,
+ 574, 575, 7, 10, 0, 0, 575, 90, 1, 0, 0, 0, 576, 577, 7, 5, 0, 0, 577,
+ 578, 7, 2, 0, 0, 578, 579, 7, 11, 0, 0, 579, 580, 7, 16, 0, 0, 580, 581,
+ 7, 17, 0, 0, 581, 582, 7, 7, 0, 0, 582, 92, 1, 0, 0, 0, 583, 584, 7, 5,
+ 0, 0, 584, 585, 7, 2, 0, 0, 585, 586, 7, 17, 0, 0, 586, 587, 7, 17, 0,
+ 0, 587, 588, 7, 6, 0, 0, 588, 589, 7, 4, 0, 0, 589, 94, 1, 0, 0, 0, 590,
+ 591, 7, 5, 0, 0, 591, 592, 7, 2, 0, 0, 592, 593, 7, 7, 0, 0, 593, 594,
+ 7, 9, 0, 0, 594, 595, 7, 11, 0, 0, 595, 596, 7, 6, 0, 0, 596, 597, 7, 5,
+ 0, 0, 597, 598, 7, 4, 0, 0, 598, 96, 1, 0, 0, 0, 599, 600, 7, 5, 0, 0,
+ 600, 601, 7, 2, 0, 0, 601, 602, 7, 7, 0, 0, 602, 603, 7, 14, 0, 0, 603,
+ 604, 7, 4, 0, 0, 604, 605, 7, 3, 0, 0, 605, 606, 7, 0, 0, 0, 606, 607,
+ 7, 6, 0, 0, 607, 608, 7, 7, 0, 0, 608, 609, 7, 4, 0, 0, 609, 98, 1, 0,
+ 0, 0, 610, 611, 7, 5, 0, 0, 611, 612, 7, 3, 0, 0, 612, 613, 7, 10, 0, 0,
+ 613, 614, 7, 0, 0, 0, 614, 615, 7, 4, 0, 0, 615, 616, 7, 10, 0, 0, 616,
+ 100, 1, 0, 0, 0, 617, 618, 7, 5, 0, 0, 618, 619, 7, 3, 0, 0, 619, 620,
+ 7, 2, 0, 0, 620, 621, 7, 14, 0, 0, 621, 622, 7, 14, 0, 0, 622, 102, 1,
+ 0, 0, 0, 623, 624, 7, 5, 0, 0, 624, 625, 7, 16, 0, 0, 625, 626, 7, 3, 0,
+ 0, 626, 627, 7, 3, 0, 0, 627, 628, 7, 10, 0, 0, 628, 629, 7, 7, 0, 0, 629,
+ 630, 7, 4, 0, 0, 630, 631, 5, 95, 0, 0, 631, 632, 7, 8, 0, 0, 632, 633,
+ 7, 0, 0, 0, 633, 634, 7, 4, 0, 0, 634, 635, 7, 10, 0, 0, 635, 104, 1, 0,
+ 0, 0, 636, 637, 7, 5, 0, 0, 637, 638, 7, 16, 0, 0, 638, 639, 7, 3, 0, 0,
+ 639, 640, 7, 3, 0, 0, 640, 641, 7, 10, 0, 0, 641, 642, 7, 7, 0, 0, 642,
+ 643, 7, 4, 0, 0, 643, 644, 5, 95, 0, 0, 644, 645, 7, 4, 0, 0, 645, 646,
+ 7, 6, 0, 0, 646, 647, 7, 17, 0, 0, 647, 648, 7, 10, 0, 0, 648, 106, 1,
+ 0, 0, 0, 649, 650, 7, 5, 0, 0, 650, 651, 7, 16, 0, 0, 651, 652, 7, 3, 0,
+ 0, 652, 653, 7, 3, 0, 0, 653, 654, 7, 10, 0, 0, 654, 655, 7, 7, 0, 0, 655,
+ 656, 7, 4, 0, 0, 656, 657, 5, 95, 0, 0, 657, 658, 7, 4, 0, 0, 658, 659,
+ 7, 6, 0, 0, 659, 660, 7, 17, 0, 0, 660, 661, 7, 10, 0, 0, 661, 662, 7,
+ 14, 0, 0, 662, 663, 7, 4, 0, 0, 663, 664, 7, 0, 0, 0, 664, 665, 7, 17,
+ 0, 0, 665, 666, 7, 21, 0, 0, 666, 108, 1, 0, 0, 0, 667, 668, 7, 8, 0, 0,
+ 668, 669, 7, 0, 0, 0, 669, 670, 7, 4, 0, 0, 670, 671, 7, 0, 0, 0, 671,
+ 672, 7, 1, 0, 0, 672, 673, 7, 0, 0, 0, 673, 674, 7, 14, 0, 0, 674, 675,
+ 7, 10, 0, 0, 675, 110, 1, 0, 0, 0, 676, 677, 7, 8, 0, 0, 677, 678, 7, 10,
+ 0, 0, 678, 679, 7, 9, 0, 0, 679, 680, 7, 0, 0, 0, 680, 681, 7, 16, 0, 0,
+ 681, 682, 7, 11, 0, 0, 682, 683, 7, 4, 0, 0, 683, 112, 1, 0, 0, 0, 684,
+ 685, 7, 8, 0, 0, 685, 686, 7, 10, 0, 0, 686, 687, 7, 9, 0, 0, 687, 688,
+ 7, 10, 0, 0, 688, 689, 7, 3, 0, 0, 689, 690, 7, 3, 0, 0, 690, 691, 7, 0,
+ 0, 0, 691, 692, 7, 1, 0, 0, 692, 693, 7, 11, 0, 0, 693, 694, 7, 10, 0,
+ 0, 694, 114, 1, 0, 0, 0, 695, 696, 7, 8, 0, 0, 696, 697, 7, 10, 0, 0, 697,
+ 698, 7, 9, 0, 0, 698, 699, 7, 10, 0, 0, 699, 700, 7, 3, 0, 0, 700, 701,
+ 7, 3, 0, 0, 701, 702, 7, 10, 0, 0, 702, 703, 7, 8, 0, 0, 703, 116, 1, 0,
+ 0, 0, 704, 705, 7, 8, 0, 0, 705, 706, 7, 10, 0, 0, 706, 707, 7, 11, 0,
+ 0, 707, 708, 7, 10, 0, 0, 708, 709, 7, 4, 0, 0, 709, 710, 7, 10, 0, 0,
+ 710, 118, 1, 0, 0, 0, 711, 712, 7, 8, 0, 0, 712, 713, 7, 10, 0, 0, 713,
+ 714, 7, 14, 0, 0, 714, 715, 7, 5, 0, 0, 715, 120, 1, 0, 0, 0, 716, 717,
+ 7, 8, 0, 0, 717, 718, 7, 10, 0, 0, 718, 719, 7, 4, 0, 0, 719, 720, 7, 0,
+ 0, 0, 720, 721, 7, 5, 0, 0, 721, 722, 7, 15, 0, 0, 722, 122, 1, 0, 0, 0,
+ 723, 724, 7, 8, 0, 0, 724, 725, 7, 6, 0, 0, 725, 726, 7, 14, 0, 0, 726,
+ 727, 7, 4, 0, 0, 727, 728, 7, 6, 0, 0, 728, 729, 7, 7, 0, 0, 729, 730,
+ 7, 5, 0, 0, 730, 731, 7, 4, 0, 0, 731, 124, 1, 0, 0, 0, 732, 733, 7, 8,
+ 0, 0, 733, 734, 7, 3, 0, 0, 734, 735, 7, 2, 0, 0, 735, 736, 7, 21, 0, 0,
+ 736, 126, 1, 0, 0, 0, 737, 738, 7, 10, 0, 0, 738, 739, 7, 0, 0, 0, 739,
+ 740, 7, 5, 0, 0, 740, 741, 7, 15, 0, 0, 741, 128, 1, 0, 0, 0, 742, 743,
+ 7, 10, 0, 0, 743, 744, 7, 11, 0, 0, 744, 745, 7, 14, 0, 0, 745, 746, 7,
+ 10, 0, 0, 746, 130, 1, 0, 0, 0, 747, 748, 7, 10, 0, 0, 748, 749, 7, 7,
+ 0, 0, 749, 750, 7, 8, 0, 0, 750, 132, 1, 0, 0, 0, 751, 752, 7, 10, 0, 0,
+ 752, 753, 7, 14, 0, 0, 753, 754, 7, 5, 0, 0, 754, 755, 7, 0, 0, 0, 755,
+ 756, 7, 21, 0, 0, 756, 757, 7, 10, 0, 0, 757, 134, 1, 0, 0, 0, 758, 759,
+ 7, 10, 0, 0, 759, 760, 7, 22, 0, 0, 760, 761, 7, 5, 0, 0, 761, 762, 7,
+ 10, 0, 0, 762, 763, 7, 21, 0, 0, 763, 764, 7, 4, 0, 0, 764, 136, 1, 0,
+ 0, 0, 765, 766, 7, 10, 0, 0, 766, 767, 7, 22, 0, 0, 767, 768, 7, 5, 0,
+ 0, 768, 769, 7, 11, 0, 0, 769, 770, 7, 16, 0, 0, 770, 771, 7, 14, 0, 0,
+ 771, 772, 7, 6, 0, 0, 772, 773, 7, 23, 0, 0, 773, 774, 7, 10, 0, 0, 774,
+ 138, 1, 0, 0, 0, 775, 776, 7, 10, 0, 0, 776, 777, 7, 22, 0, 0, 777, 778,
+ 7, 6, 0, 0, 778, 779, 7, 14, 0, 0, 779, 780, 7, 4, 0, 0, 780, 781, 7, 14,
+ 0, 0, 781, 140, 1, 0, 0, 0, 782, 783, 7, 10, 0, 0, 783, 784, 7, 22, 0,
+ 0, 784, 785, 7, 21, 0, 0, 785, 786, 7, 11, 0, 0, 786, 787, 7, 0, 0, 0,
+ 787, 788, 7, 6, 0, 0, 788, 789, 7, 7, 0, 0, 789, 142, 1, 0, 0, 0, 790,
+ 791, 7, 9, 0, 0, 791, 792, 7, 0, 0, 0, 792, 793, 7, 6, 0, 0, 793, 794,
+ 7, 11, 0, 0, 794, 144, 1, 0, 0, 0, 795, 796, 7, 9, 0, 0, 796, 797, 7, 2,
+ 0, 0, 797, 798, 7, 3, 0, 0, 798, 146, 1, 0, 0, 0, 799, 800, 7, 9, 0, 0,
+ 800, 801, 7, 2, 0, 0, 801, 802, 7, 3, 0, 0, 802, 803, 7, 10, 0, 0, 803,
+ 804, 7, 6, 0, 0, 804, 805, 7, 18, 0, 0, 805, 806, 7, 7, 0, 0, 806, 148,
+ 1, 0, 0, 0, 807, 808, 7, 9, 0, 0, 808, 809, 7, 3, 0, 0, 809, 810, 7, 2,
+ 0, 0, 810, 811, 7, 17, 0, 0, 811, 150, 1, 0, 0, 0, 812, 813, 7, 9, 0, 0,
+ 813, 814, 7, 16, 0, 0, 814, 815, 7, 11, 0, 0, 815, 816, 7, 11, 0, 0, 816,
+ 152, 1, 0, 0, 0, 817, 818, 7, 18, 0, 0, 818, 819, 7, 11, 0, 0, 819, 820,
+ 7, 2, 0, 0, 820, 821, 7, 1, 0, 0, 821, 154, 1, 0, 0, 0, 822, 823, 7, 18,
+ 0, 0, 823, 824, 7, 3, 0, 0, 824, 825, 7, 2, 0, 0, 825, 826, 7, 16, 0, 0,
+ 826, 827, 7, 21, 0, 0, 827, 156, 1, 0, 0, 0, 828, 829, 7, 15, 0, 0, 829,
+ 830, 7, 0, 0, 0, 830, 831, 7, 23, 0, 0, 831, 832, 7, 6, 0, 0, 832, 833,
+ 7, 7, 0, 0, 833, 834, 7, 18, 0, 0, 834, 158, 1, 0, 0, 0, 835, 836, 7, 6,
+ 0, 0, 836, 837, 7, 9, 0, 0, 837, 160, 1, 0, 0, 0, 838, 839, 7, 6, 0, 0,
+ 839, 840, 7, 18, 0, 0, 840, 841, 7, 7, 0, 0, 841, 842, 7, 2, 0, 0, 842,
+ 843, 7, 3, 0, 0, 843, 844, 7, 10, 0, 0, 844, 162, 1, 0, 0, 0, 845, 846,
+ 7, 6, 0, 0, 846, 847, 7, 17, 0, 0, 847, 848, 7, 17, 0, 0, 848, 849, 7,
+ 10, 0, 0, 849, 850, 7, 8, 0, 0, 850, 851, 7, 6, 0, 0, 851, 852, 7, 0, 0,
+ 0, 852, 853, 7, 4, 0, 0, 853, 854, 7, 10, 0, 0, 854, 164, 1, 0, 0, 0, 855,
+ 856, 7, 6, 0, 0, 856, 857, 7, 7, 0, 0, 857, 166, 1, 0, 0, 0, 858, 859,
+ 7, 6, 0, 0, 859, 860, 7, 7, 0, 0, 860, 861, 7, 8, 0, 0, 861, 862, 7, 10,
+ 0, 0, 862, 863, 7, 22, 0, 0, 863, 168, 1, 0, 0, 0, 864, 865, 7, 6, 0, 0,
+ 865, 866, 7, 7, 0, 0, 866, 867, 7, 8, 0, 0, 867, 868, 7, 10, 0, 0, 868,
+ 869, 7, 22, 0, 0, 869, 870, 7, 10, 0, 0, 870, 871, 7, 8, 0, 0, 871, 170,
+ 1, 0, 0, 0, 872, 873, 7, 6, 0, 0, 873, 874, 7, 7, 0, 0, 874, 875, 7, 6,
+ 0, 0, 875, 876, 7, 4, 0, 0, 876, 877, 7, 6, 0, 0, 877, 878, 7, 0, 0, 0,
+ 878, 879, 7, 11, 0, 0, 879, 880, 7, 11, 0, 0, 880, 881, 7, 12, 0, 0, 881,
+ 172, 1, 0, 0, 0, 882, 883, 7, 6, 0, 0, 883, 884, 7, 7, 0, 0, 884, 885,
+ 7, 7, 0, 0, 885, 886, 7, 10, 0, 0, 886, 887, 7, 3, 0, 0, 887, 174, 1, 0,
+ 0, 0, 888, 889, 7, 6, 0, 0, 889, 890, 7, 7, 0, 0, 890, 891, 7, 14, 0, 0,
+ 891, 892, 7, 10, 0, 0, 892, 893, 7, 3, 0, 0, 893, 894, 7, 4, 0, 0, 894,
+ 176, 1, 0, 0, 0, 895, 896, 7, 6, 0, 0, 896, 897, 7, 7, 0, 0, 897, 898,
+ 7, 14, 0, 0, 898, 899, 7, 4, 0, 0, 899, 900, 7, 10, 0, 0, 900, 901, 7,
+ 0, 0, 0, 901, 902, 7, 8, 0, 0, 902, 178, 1, 0, 0, 0, 903, 904, 7, 6, 0,
+ 0, 904, 905, 7, 7, 0, 0, 905, 906, 7, 4, 0, 0, 906, 907, 7, 10, 0, 0, 907,
+ 908, 7, 3, 0, 0, 908, 909, 7, 14, 0, 0, 909, 910, 7, 10, 0, 0, 910, 911,
+ 7, 5, 0, 0, 911, 912, 7, 4, 0, 0, 912, 180, 1, 0, 0, 0, 913, 914, 7, 6,
+ 0, 0, 914, 915, 7, 7, 0, 0, 915, 916, 7, 4, 0, 0, 916, 917, 7, 2, 0, 0,
+ 917, 182, 1, 0, 0, 0, 918, 919, 7, 6, 0, 0, 919, 920, 7, 14, 0, 0, 920,
+ 184, 1, 0, 0, 0, 921, 922, 7, 6, 0, 0, 922, 923, 7, 14, 0, 0, 923, 924,
+ 7, 7, 0, 0, 924, 925, 7, 16, 0, 0, 925, 926, 7, 11, 0, 0, 926, 927, 7,
+ 11, 0, 0, 927, 186, 1, 0, 0, 0, 928, 929, 7, 24, 0, 0, 929, 930, 7, 2,
+ 0, 0, 930, 931, 7, 6, 0, 0, 931, 932, 7, 7, 0, 0, 932, 188, 1, 0, 0, 0,
+ 933, 934, 7, 20, 0, 0, 934, 935, 7, 10, 0, 0, 935, 936, 7, 12, 0, 0, 936,
+ 190, 1, 0, 0, 0, 937, 938, 7, 11, 0, 0, 938, 939, 7, 10, 0, 0, 939, 940,
+ 7, 9, 0, 0, 940, 941, 7, 4, 0, 0, 941, 192, 1, 0, 0, 0, 942, 943, 7, 11,
+ 0, 0, 943, 944, 7, 6, 0, 0, 944, 945, 7, 20, 0, 0, 945, 946, 7, 10, 0,
+ 0, 946, 194, 1, 0, 0, 0, 947, 948, 7, 11, 0, 0, 948, 949, 7, 6, 0, 0, 949,
+ 950, 7, 17, 0, 0, 950, 951, 7, 6, 0, 0, 951, 952, 7, 4, 0, 0, 952, 196,
+ 1, 0, 0, 0, 953, 954, 7, 17, 0, 0, 954, 955, 7, 0, 0, 0, 955, 956, 7, 4,
+ 0, 0, 956, 957, 7, 5, 0, 0, 957, 958, 7, 15, 0, 0, 958, 198, 1, 0, 0, 0,
+ 959, 960, 7, 7, 0, 0, 960, 961, 7, 0, 0, 0, 961, 962, 7, 4, 0, 0, 962,
+ 963, 7, 16, 0, 0, 963, 964, 7, 3, 0, 0, 964, 965, 7, 0, 0, 0, 965, 966,
+ 7, 11, 0, 0, 966, 200, 1, 0, 0, 0, 967, 968, 7, 7, 0, 0, 968, 969, 7, 2,
+ 0, 0, 969, 202, 1, 0, 0, 0, 970, 971, 7, 7, 0, 0, 971, 972, 7, 2, 0, 0,
+ 972, 973, 7, 4, 0, 0, 973, 204, 1, 0, 0, 0, 974, 975, 7, 7, 0, 0, 975,
+ 976, 7, 2, 0, 0, 976, 977, 7, 4, 0, 0, 977, 978, 7, 7, 0, 0, 978, 979,
+ 7, 16, 0, 0, 979, 980, 7, 11, 0, 0, 980, 981, 7, 11, 0, 0, 981, 206, 1,
+ 0, 0, 0, 982, 983, 7, 7, 0, 0, 983, 984, 7, 16, 0, 0, 984, 985, 7, 11,
+ 0, 0, 985, 986, 7, 11, 0, 0, 986, 208, 1, 0, 0, 0, 987, 988, 7, 2, 0, 0,
+ 988, 989, 7, 9, 0, 0, 989, 210, 1, 0, 0, 0, 990, 991, 7, 2, 0, 0, 991,
+ 992, 7, 9, 0, 0, 992, 993, 7, 9, 0, 0, 993, 994, 7, 14, 0, 0, 994, 995,
+ 7, 10, 0, 0, 995, 996, 7, 4, 0, 0, 996, 212, 1, 0, 0, 0, 997, 998, 7, 2,
+ 0, 0, 998, 999, 7, 7, 0, 0, 999, 214, 1, 0, 0, 0, 1000, 1001, 7, 2, 0,
+ 0, 1001, 1002, 7, 3, 0, 0, 1002, 216, 1, 0, 0, 0, 1003, 1004, 7, 2, 0,
+ 0, 1004, 1005, 7, 3, 0, 0, 1005, 1006, 7, 8, 0, 0, 1006, 1007, 7, 10, 0,
+ 0, 1007, 1008, 7, 3, 0, 0, 1008, 218, 1, 0, 0, 0, 1009, 1010, 7, 2, 0,
+ 0, 1010, 1011, 7, 16, 0, 0, 1011, 1012, 7, 4, 0, 0, 1012, 1013, 7, 10,
+ 0, 0, 1013, 1014, 7, 3, 0, 0, 1014, 220, 1, 0, 0, 0, 1015, 1016, 7, 21,
+ 0, 0, 1016, 1017, 7, 11, 0, 0, 1017, 1018, 7, 0, 0, 0, 1018, 1019, 7, 7,
+ 0, 0, 1019, 222, 1, 0, 0, 0, 1020, 1021, 7, 21, 0, 0, 1021, 1022, 7, 3,
+ 0, 0, 1022, 1023, 7, 0, 0, 0, 1023, 1024, 7, 18, 0, 0, 1024, 1025, 7, 17,
+ 0, 0, 1025, 1026, 7, 0, 0, 0, 1026, 224, 1, 0, 0, 0, 1027, 1028, 7, 21,
+ 0, 0, 1028, 1029, 7, 3, 0, 0, 1029, 1030, 7, 6, 0, 0, 1030, 1031, 7, 17,
+ 0, 0, 1031, 1032, 7, 0, 0, 0, 1032, 1033, 7, 3, 0, 0, 1033, 1034, 7, 12,
+ 0, 0, 1034, 226, 1, 0, 0, 0, 1035, 1036, 7, 25, 0, 0, 1036, 1037, 7, 16,
+ 0, 0, 1037, 1038, 7, 10, 0, 0, 1038, 1039, 7, 3, 0, 0, 1039, 1040, 7, 12,
+ 0, 0, 1040, 228, 1, 0, 0, 0, 1041, 1042, 7, 3, 0, 0, 1042, 1043, 7, 0,
+ 0, 0, 1043, 1044, 7, 6, 0, 0, 1044, 1045, 7, 14, 0, 0, 1045, 1046, 7, 10,
+ 0, 0, 1046, 230, 1, 0, 0, 0, 1047, 1048, 7, 3, 0, 0, 1048, 1049, 7, 10,
+ 0, 0, 1049, 1050, 7, 5, 0, 0, 1050, 1051, 7, 16, 0, 0, 1051, 1052, 7, 3,
+ 0, 0, 1052, 1053, 7, 14, 0, 0, 1053, 1054, 7, 6, 0, 0, 1054, 1055, 7, 23,
+ 0, 0, 1055, 1056, 7, 10, 0, 0, 1056, 232, 1, 0, 0, 0, 1057, 1058, 7, 3,
+ 0, 0, 1058, 1059, 7, 10, 0, 0, 1059, 1060, 7, 9, 0, 0, 1060, 1061, 7, 10,
+ 0, 0, 1061, 1062, 7, 3, 0, 0, 1062, 1063, 7, 10, 0, 0, 1063, 1064, 7, 7,
+ 0, 0, 1064, 1065, 7, 5, 0, 0, 1065, 1066, 7, 10, 0, 0, 1066, 1067, 7, 14,
+ 0, 0, 1067, 234, 1, 0, 0, 0, 1068, 1069, 7, 3, 0, 0, 1069, 1070, 7, 10,
+ 0, 0, 1070, 1071, 7, 18, 0, 0, 1071, 1072, 7, 10, 0, 0, 1072, 1073, 7,
+ 22, 0, 0, 1073, 1074, 7, 21, 0, 0, 1074, 236, 1, 0, 0, 0, 1075, 1076, 7,
+ 3, 0, 0, 1076, 1077, 7, 10, 0, 0, 1077, 1078, 7, 6, 0, 0, 1078, 1079, 7,
+ 7, 0, 0, 1079, 1080, 7, 8, 0, 0, 1080, 1081, 7, 10, 0, 0, 1081, 1082, 7,
+ 22, 0, 0, 1082, 238, 1, 0, 0, 0, 1083, 1084, 7, 3, 0, 0, 1084, 1085, 7,
+ 10, 0, 0, 1085, 1086, 7, 11, 0, 0, 1086, 1087, 7, 10, 0, 0, 1087, 1088,
+ 7, 0, 0, 0, 1088, 1089, 7, 14, 0, 0, 1089, 1090, 7, 10, 0, 0, 1090, 240,
+ 1, 0, 0, 0, 1091, 1092, 7, 3, 0, 0, 1092, 1093, 7, 10, 0, 0, 1093, 1094,
+ 7, 7, 0, 0, 1094, 1095, 7, 0, 0, 0, 1095, 1096, 7, 17, 0, 0, 1096, 1097,
+ 7, 10, 0, 0, 1097, 242, 1, 0, 0, 0, 1098, 1099, 7, 3, 0, 0, 1099, 1100,
+ 7, 10, 0, 0, 1100, 1101, 7, 21, 0, 0, 1101, 1102, 7, 11, 0, 0, 1102, 1103,
+ 7, 0, 0, 0, 1103, 1104, 7, 5, 0, 0, 1104, 1105, 7, 10, 0, 0, 1105, 244,
+ 1, 0, 0, 0, 1106, 1107, 7, 3, 0, 0, 1107, 1108, 7, 10, 0, 0, 1108, 1109,
+ 7, 14, 0, 0, 1109, 1110, 7, 4, 0, 0, 1110, 1111, 7, 3, 0, 0, 1111, 1112,
+ 7, 6, 0, 0, 1112, 1113, 7, 5, 0, 0, 1113, 1114, 7, 4, 0, 0, 1114, 246,
+ 1, 0, 0, 0, 1115, 1116, 7, 3, 0, 0, 1116, 1117, 7, 10, 0, 0, 1117, 1118,
+ 7, 4, 0, 0, 1118, 1119, 7, 16, 0, 0, 1119, 1120, 7, 3, 0, 0, 1120, 1121,
+ 7, 7, 0, 0, 1121, 1122, 7, 6, 0, 0, 1122, 1123, 7, 7, 0, 0, 1123, 1124,
+ 7, 18, 0, 0, 1124, 248, 1, 0, 0, 0, 1125, 1126, 7, 3, 0, 0, 1126, 1127,
+ 7, 6, 0, 0, 1127, 1128, 7, 18, 0, 0, 1128, 1129, 7, 15, 0, 0, 1129, 1130,
+ 7, 4, 0, 0, 1130, 250, 1, 0, 0, 0, 1131, 1132, 7, 3, 0, 0, 1132, 1133,
+ 7, 2, 0, 0, 1133, 1134, 7, 11, 0, 0, 1134, 1135, 7, 11, 0, 0, 1135, 1136,
+ 7, 1, 0, 0, 1136, 1137, 7, 0, 0, 0, 1137, 1138, 7, 5, 0, 0, 1138, 1139,
+ 7, 20, 0, 0, 1139, 252, 1, 0, 0, 0, 1140, 1141, 7, 3, 0, 0, 1141, 1142,
+ 7, 2, 0, 0, 1142, 1143, 7, 19, 0, 0, 1143, 254, 1, 0, 0, 0, 1144, 1145,
+ 7, 3, 0, 0, 1145, 1146, 7, 2, 0, 0, 1146, 1147, 7, 19, 0, 0, 1147, 1148,
+ 7, 14, 0, 0, 1148, 256, 1, 0, 0, 0, 1149, 1150, 7, 14, 0, 0, 1150, 1151,
+ 7, 0, 0, 0, 1151, 1152, 7, 23, 0, 0, 1152, 1153, 7, 10, 0, 0, 1153, 1154,
+ 7, 21, 0, 0, 1154, 1155, 7, 2, 0, 0, 1155, 1156, 7, 6, 0, 0, 1156, 1157,
+ 7, 7, 0, 0, 1157, 1158, 7, 4, 0, 0, 1158, 258, 1, 0, 0, 0, 1159, 1160,
+ 7, 14, 0, 0, 1160, 1161, 7, 10, 0, 0, 1161, 1162, 7, 11, 0, 0, 1162, 1163,
+ 7, 10, 0, 0, 1163, 1164, 7, 5, 0, 0, 1164, 1165, 7, 4, 0, 0, 1165, 260,
+ 1, 0, 0, 0, 1166, 1167, 7, 14, 0, 0, 1167, 1168, 7, 10, 0, 0, 1168, 1169,
+ 7, 4, 0, 0, 1169, 262, 1, 0, 0, 0, 1170, 1171, 7, 4, 0, 0, 1171, 1172,
+ 7, 0, 0, 0, 1172, 1173, 7, 1, 0, 0, 1173, 1174, 7, 11, 0, 0, 1174, 1175,
+ 7, 10, 0, 0, 1175, 264, 1, 0, 0, 0, 1176, 1177, 7, 4, 0, 0, 1177, 1178,
+ 7, 10, 0, 0, 1178, 1179, 7, 17, 0, 0, 1179, 1180, 7, 21, 0, 0, 1180, 266,
+ 1, 0, 0, 0, 1181, 1182, 7, 4, 0, 0, 1182, 1183, 7, 10, 0, 0, 1183, 1184,
+ 7, 17, 0, 0, 1184, 1185, 7, 21, 0, 0, 1185, 1186, 7, 2, 0, 0, 1186, 1187,
+ 7, 3, 0, 0, 1187, 1188, 7, 0, 0, 0, 1188, 1189, 7, 3, 0, 0, 1189, 1190,
+ 7, 12, 0, 0, 1190, 268, 1, 0, 0, 0, 1191, 1192, 7, 4, 0, 0, 1192, 1193,
+ 7, 15, 0, 0, 1193, 1194, 7, 10, 0, 0, 1194, 1195, 7, 7, 0, 0, 1195, 270,
+ 1, 0, 0, 0, 1196, 1197, 7, 4, 0, 0, 1197, 1198, 7, 2, 0, 0, 1198, 272,
+ 1, 0, 0, 0, 1199, 1200, 7, 4, 0, 0, 1200, 1201, 7, 3, 0, 0, 1201, 1202,
+ 7, 0, 0, 0, 1202, 1203, 7, 7, 0, 0, 1203, 1204, 7, 14, 0, 0, 1204, 1205,
+ 7, 0, 0, 0, 1205, 1206, 7, 5, 0, 0, 1206, 1207, 7, 4, 0, 0, 1207, 1208,
+ 7, 6, 0, 0, 1208, 1209, 7, 2, 0, 0, 1209, 1210, 7, 7, 0, 0, 1210, 274,
+ 1, 0, 0, 0, 1211, 1212, 7, 4, 0, 0, 1212, 1213, 7, 3, 0, 0, 1213, 1214,
+ 7, 6, 0, 0, 1214, 1215, 7, 18, 0, 0, 1215, 1216, 7, 18, 0, 0, 1216, 1217,
+ 7, 10, 0, 0, 1217, 1218, 7, 3, 0, 0, 1218, 276, 1, 0, 0, 0, 1219, 1220,
+ 7, 16, 0, 0, 1220, 1221, 7, 7, 0, 0, 1221, 1222, 7, 6, 0, 0, 1222, 1223,
+ 7, 2, 0, 0, 1223, 1224, 7, 7, 0, 0, 1224, 278, 1, 0, 0, 0, 1225, 1226,
+ 7, 16, 0, 0, 1226, 1227, 7, 7, 0, 0, 1227, 1228, 7, 6, 0, 0, 1228, 1229,
+ 7, 25, 0, 0, 1229, 1230, 7, 16, 0, 0, 1230, 1231, 7, 10, 0, 0, 1231, 280,
+ 1, 0, 0, 0, 1232, 1233, 7, 16, 0, 0, 1233, 1234, 7, 21, 0, 0, 1234, 1235,
+ 7, 8, 0, 0, 1235, 1236, 7, 0, 0, 0, 1236, 1237, 7, 4, 0, 0, 1237, 1238,
+ 7, 10, 0, 0, 1238, 282, 1, 0, 0, 0, 1239, 1240, 7, 16, 0, 0, 1240, 1241,
+ 7, 14, 0, 0, 1241, 1242, 7, 6, 0, 0, 1242, 1243, 7, 7, 0, 0, 1243, 1244,
+ 7, 18, 0, 0, 1244, 284, 1, 0, 0, 0, 1245, 1246, 7, 23, 0, 0, 1246, 1247,
+ 7, 0, 0, 0, 1247, 1248, 7, 5, 0, 0, 1248, 1249, 7, 16, 0, 0, 1249, 1250,
+ 7, 16, 0, 0, 1250, 1251, 7, 17, 0, 0, 1251, 286, 1, 0, 0, 0, 1252, 1253,
+ 7, 23, 0, 0, 1253, 1254, 7, 0, 0, 0, 1254, 1255, 7, 11, 0, 0, 1255, 1256,
+ 7, 16, 0, 0, 1256, 1257, 7, 10, 0, 0, 1257, 1258, 7, 14, 0, 0, 1258, 288,
+ 1, 0, 0, 0, 1259, 1260, 7, 23, 0, 0, 1260, 1261, 7, 6, 0, 0, 1261, 1262,
+ 7, 10, 0, 0, 1262, 1263, 7, 19, 0, 0, 1263, 290, 1, 0, 0, 0, 1264, 1265,
+ 7, 23, 0, 0, 1265, 1266, 7, 6, 0, 0, 1266, 1267, 7, 3, 0, 0, 1267, 1268,
+ 7, 4, 0, 0, 1268, 1269, 7, 16, 0, 0, 1269, 1270, 7, 0, 0, 0, 1270, 1271,
+ 7, 11, 0, 0, 1271, 292, 1, 0, 0, 0, 1272, 1273, 7, 19, 0, 0, 1273, 1274,
+ 7, 15, 0, 0, 1274, 1275, 7, 10, 0, 0, 1275, 1276, 7, 7, 0, 0, 1276, 294,
+ 1, 0, 0, 0, 1277, 1278, 7, 19, 0, 0, 1278, 1279, 7, 15, 0, 0, 1279, 1280,
+ 7, 10, 0, 0, 1280, 1281, 7, 3, 0, 0, 1281, 1282, 7, 10, 0, 0, 1282, 296,
+ 1, 0, 0, 0, 1283, 1284, 7, 19, 0, 0, 1284, 1285, 7, 6, 0, 0, 1285, 1286,
+ 7, 4, 0, 0, 1286, 1287, 7, 15, 0, 0, 1287, 298, 1, 0, 0, 0, 1288, 1289,
+ 7, 19, 0, 0, 1289, 1290, 7, 6, 0, 0, 1290, 1291, 7, 4, 0, 0, 1291, 1292,
+ 7, 15, 0, 0, 1292, 1293, 7, 2, 0, 0, 1293, 1294, 7, 16, 0, 0, 1294, 1295,
+ 7, 4, 0, 0, 1295, 300, 1, 0, 0, 0, 1296, 1297, 7, 9, 0, 0, 1297, 1298,
+ 7, 6, 0, 0, 1298, 1299, 7, 3, 0, 0, 1299, 1300, 7, 14, 0, 0, 1300, 1301,
+ 7, 4, 0, 0, 1301, 1302, 5, 95, 0, 0, 1302, 1303, 7, 23, 0, 0, 1303, 1304,
+ 7, 0, 0, 0, 1304, 1305, 7, 11, 0, 0, 1305, 1306, 7, 16, 0, 0, 1306, 1307,
+ 7, 10, 0, 0, 1307, 302, 1, 0, 0, 0, 1308, 1309, 7, 2, 0, 0, 1309, 1310,
+ 7, 23, 0, 0, 1310, 1311, 7, 10, 0, 0, 1311, 1312, 7, 3, 0, 0, 1312, 304,
+ 1, 0, 0, 0, 1313, 1314, 7, 21, 0, 0, 1314, 1315, 7, 0, 0, 0, 1315, 1316,
+ 7, 3, 0, 0, 1316, 1317, 7, 4, 0, 0, 1317, 1318, 7, 6, 0, 0, 1318, 1319,
+ 7, 4, 0, 0, 1319, 1320, 7, 6, 0, 0, 1320, 1321, 7, 2, 0, 0, 1321, 1322,
+ 7, 7, 0, 0, 1322, 306, 1, 0, 0, 0, 1323, 1324, 7, 3, 0, 0, 1324, 1325,
+ 7, 0, 0, 0, 1325, 1326, 7, 7, 0, 0, 1326, 1327, 7, 18, 0, 0, 1327, 1328,
+ 7, 10, 0, 0, 1328, 308, 1, 0, 0, 0, 1329, 1330, 7, 21, 0, 0, 1330, 1331,
+ 7, 3, 0, 0, 1331, 1332, 7, 10, 0, 0, 1332, 1333, 7, 5, 0, 0, 1333, 1334,
+ 7, 10, 0, 0, 1334, 1335, 7, 8, 0, 0, 1335, 1336, 7, 6, 0, 0, 1336, 1337,
+ 7, 7, 0, 0, 1337, 1338, 7, 18, 0, 0, 1338, 310, 1, 0, 0, 0, 1339, 1340,
+ 7, 16, 0, 0, 1340, 1341, 7, 7, 0, 0, 1341, 1342, 7, 1, 0, 0, 1342, 1343,
+ 7, 2, 0, 0, 1343, 1344, 7, 16, 0, 0, 1344, 1345, 7, 7, 0, 0, 1345, 1346,
+ 7, 8, 0, 0, 1346, 1347, 7, 10, 0, 0, 1347, 1348, 7, 8, 0, 0, 1348, 312,
+ 1, 0, 0, 0, 1349, 1350, 7, 5, 0, 0, 1350, 1351, 7, 16, 0, 0, 1351, 1352,
+ 7, 3, 0, 0, 1352, 1353, 7, 3, 0, 0, 1353, 1354, 7, 10, 0, 0, 1354, 1355,
+ 7, 7, 0, 0, 1355, 1356, 7, 4, 0, 0, 1356, 314, 1, 0, 0, 0, 1357, 1358,
+ 7, 9, 0, 0, 1358, 1359, 7, 2, 0, 0, 1359, 1360, 7, 11, 0, 0, 1360, 1361,
+ 7, 11, 0, 0, 1361, 1362, 7, 2, 0, 0, 1362, 1363, 7, 19, 0, 0, 1363, 1364,
+ 7, 6, 0, 0, 1364, 1365, 7, 7, 0, 0, 1365, 1366, 7, 18, 0, 0, 1366, 316,
+ 1, 0, 0, 0, 1367, 1368, 7, 5, 0, 0, 1368, 1369, 7, 16, 0, 0, 1369, 1370,
+ 7, 17, 0, 0, 1370, 1371, 7, 10, 0, 0, 1371, 1372, 5, 95, 0, 0, 1372, 1373,
+ 7, 8, 0, 0, 1373, 1374, 7, 6, 0, 0, 1374, 1375, 7, 14, 0, 0, 1375, 1376,
+ 7, 4, 0, 0, 1376, 318, 1, 0, 0, 0, 1377, 1378, 7, 8, 0, 0, 1378, 1379,
+ 7, 10, 0, 0, 1379, 1380, 7, 7, 0, 0, 1380, 1381, 7, 14, 0, 0, 1381, 1382,
+ 7, 10, 0, 0, 1382, 1383, 5, 95, 0, 0, 1383, 1384, 7, 3, 0, 0, 1384, 1385,
+ 7, 0, 0, 0, 1385, 1386, 7, 7, 0, 0, 1386, 1387, 7, 20, 0, 0, 1387, 320,
+ 1, 0, 0, 0, 1388, 1389, 7, 11, 0, 0, 1389, 1390, 7, 0, 0, 0, 1390, 1391,
+ 7, 18, 0, 0, 1391, 322, 1, 0, 0, 0, 1392, 1393, 7, 11, 0, 0, 1393, 1394,
+ 7, 0, 0, 0, 1394, 1395, 7, 14, 0, 0, 1395, 1396, 7, 4, 0, 0, 1396, 1397,
+ 5, 95, 0, 0, 1397, 1398, 7, 23, 0, 0, 1398, 1399, 7, 0, 0, 0, 1399, 1400,
+ 7, 11, 0, 0, 1400, 1401, 7, 16, 0, 0, 1401, 1402, 7, 10, 0, 0, 1402, 324,
+ 1, 0, 0, 0, 1403, 1404, 7, 11, 0, 0, 1404, 1405, 7, 10, 0, 0, 1405, 1406,
+ 7, 0, 0, 0, 1406, 1407, 7, 8, 0, 0, 1407, 326, 1, 0, 0, 0, 1408, 1409,
+ 7, 7, 0, 0, 1409, 1410, 7, 4, 0, 0, 1410, 1411, 7, 15, 0, 0, 1411, 1412,
+ 5, 95, 0, 0, 1412, 1413, 7, 23, 0, 0, 1413, 1414, 7, 0, 0, 0, 1414, 1415,
+ 7, 11, 0, 0, 1415, 1416, 7, 16, 0, 0, 1416, 1417, 7, 10, 0, 0, 1417, 328,
+ 1, 0, 0, 0, 1418, 1419, 7, 7, 0, 0, 1419, 1420, 7, 4, 0, 0, 1420, 1421,
+ 7, 6, 0, 0, 1421, 1422, 7, 11, 0, 0, 1422, 1423, 7, 10, 0, 0, 1423, 330,
+ 1, 0, 0, 0, 1424, 1425, 7, 21, 0, 0, 1425, 1426, 7, 10, 0, 0, 1426, 1427,
+ 7, 3, 0, 0, 1427, 1428, 7, 5, 0, 0, 1428, 1429, 7, 10, 0, 0, 1429, 1430,
+ 7, 7, 0, 0, 1430, 1431, 7, 4, 0, 0, 1431, 1432, 5, 95, 0, 0, 1432, 1433,
+ 7, 3, 0, 0, 1433, 1434, 7, 0, 0, 0, 1434, 1435, 7, 7, 0, 0, 1435, 1436,
+ 7, 20, 0, 0, 1436, 332, 1, 0, 0, 0, 1437, 1438, 7, 3, 0, 0, 1438, 1439,
+ 7, 0, 0, 0, 1439, 1440, 7, 7, 0, 0, 1440, 1441, 7, 20, 0, 0, 1441, 334,
+ 1, 0, 0, 0, 1442, 1443, 7, 3, 0, 0, 1443, 1444, 7, 2, 0, 0, 1444, 1445,
+ 7, 19, 0, 0, 1445, 1446, 5, 95, 0, 0, 1446, 1447, 7, 7, 0, 0, 1447, 1448,
+ 7, 16, 0, 0, 1448, 1449, 7, 17, 0, 0, 1449, 1450, 7, 1, 0, 0, 1450, 1451,
+ 7, 10, 0, 0, 1451, 1452, 7, 3, 0, 0, 1452, 336, 1, 0, 0, 0, 1453, 1454,
+ 7, 18, 0, 0, 1454, 1455, 7, 10, 0, 0, 1455, 1456, 7, 7, 0, 0, 1456, 1457,
+ 7, 10, 0, 0, 1457, 1458, 7, 3, 0, 0, 1458, 1459, 7, 0, 0, 0, 1459, 1460,
+ 7, 4, 0, 0, 1460, 1461, 7, 10, 0, 0, 1461, 1462, 7, 8, 0, 0, 1462, 338,
+ 1, 0, 0, 0, 1463, 1464, 7, 0, 0, 0, 1464, 1465, 7, 11, 0, 0, 1465, 1466,
+ 7, 19, 0, 0, 1466, 1467, 7, 0, 0, 0, 1467, 1468, 7, 12, 0, 0, 1468, 1469,
+ 7, 14, 0, 0, 1469, 340, 1, 0, 0, 0, 1470, 1471, 7, 14, 0, 0, 1471, 1472,
+ 7, 4, 0, 0, 1472, 1473, 7, 2, 0, 0, 1473, 1474, 7, 3, 0, 0, 1474, 1475,
+ 7, 10, 0, 0, 1475, 1476, 7, 8, 0, 0, 1476, 342, 1, 0, 0, 0, 1477, 1478,
+ 7, 4, 0, 0, 1478, 1479, 7, 3, 0, 0, 1479, 1480, 7, 16, 0, 0, 1480, 1481,
+ 7, 10, 0, 0, 1481, 344, 1, 0, 0, 0, 1482, 1483, 7, 9, 0, 0, 1483, 1484,
+ 7, 0, 0, 0, 1484, 1485, 7, 11, 0, 0, 1485, 1486, 7, 14, 0, 0, 1486, 1487,
+ 7, 10, 0, 0, 1487, 346, 1, 0, 0, 0, 1488, 1489, 7, 19, 0, 0, 1489, 1490,
+ 7, 6, 0, 0, 1490, 1491, 7, 7, 0, 0, 1491, 1492, 7, 8, 0, 0, 1492, 1493,
+ 7, 2, 0, 0, 1493, 1494, 7, 19, 0, 0, 1494, 348, 1, 0, 0, 0, 1495, 1496,
+ 7, 7, 0, 0, 1496, 1497, 7, 16, 0, 0, 1497, 1498, 7, 11, 0, 0, 1498, 1499,
+ 7, 11, 0, 0, 1499, 1500, 7, 14, 0, 0, 1500, 350, 1, 0, 0, 0, 1501, 1502,
+ 7, 9, 0, 0, 1502, 1503, 7, 6, 0, 0, 1503, 1504, 7, 3, 0, 0, 1504, 1505,
+ 7, 14, 0, 0, 1505, 1506, 7, 4, 0, 0, 1506, 352, 1, 0, 0, 0, 1507, 1508,
+ 7, 11, 0, 0, 1508, 1509, 7, 0, 0, 0, 1509, 1510, 7, 14, 0, 0, 1510, 1511,
+ 7, 4, 0, 0, 1511, 354, 1, 0, 0, 0, 1512, 1513, 7, 9, 0, 0, 1513, 1514,
+ 7, 6, 0, 0, 1514, 1515, 7, 11, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 1517,
+ 7, 10, 0, 0, 1517, 1518, 7, 3, 0, 0, 1518, 356, 1, 0, 0, 0, 1519, 1520,
+ 7, 18, 0, 0, 1520, 1521, 7, 3, 0, 0, 1521, 1522, 7, 2, 0, 0, 1522, 1523,
+ 7, 16, 0, 0, 1523, 1524, 7, 21, 0, 0, 1524, 1525, 7, 14, 0, 0, 1525, 358,
+ 1, 0, 0, 0, 1526, 1527, 7, 10, 0, 0, 1527, 1528, 7, 22, 0, 0, 1528, 1529,
+ 7, 5, 0, 0, 1529, 1530, 7, 11, 0, 0, 1530, 1531, 7, 16, 0, 0, 1531, 1532,
+ 7, 8, 0, 0, 1532, 1533, 7, 10, 0, 0, 1533, 360, 1, 0, 0, 0, 1534, 1535,
+ 7, 4, 0, 0, 1535, 1536, 7, 6, 0, 0, 1536, 1537, 7, 10, 0, 0, 1537, 1538,
+ 7, 14, 0, 0, 1538, 362, 1, 0, 0, 0, 1539, 1540, 7, 2, 0, 0, 1540, 1541,
+ 7, 4, 0, 0, 1541, 1542, 7, 15, 0, 0, 1542, 1543, 7, 10, 0, 0, 1543, 1544,
+ 7, 3, 0, 0, 1544, 1545, 7, 14, 0, 0, 1545, 364, 1, 0, 0, 0, 1546, 1547,
+ 7, 8, 0, 0, 1547, 1548, 7, 2, 0, 0, 1548, 366, 1, 0, 0, 0, 1549, 1550,
+ 7, 7, 0, 0, 1550, 1551, 7, 2, 0, 0, 1551, 1552, 7, 4, 0, 0, 1552, 1553,
+ 7, 15, 0, 0, 1553, 1554, 7, 6, 0, 0, 1554, 1555, 7, 7, 0, 0, 1555, 1556,
+ 7, 18, 0, 0, 1556, 368, 1, 0, 0, 0, 1557, 1563, 5, 34, 0, 0, 1558, 1562,
+ 8, 26, 0, 0, 1559, 1560, 5, 34, 0, 0, 1560, 1562, 5, 34, 0, 0, 1561, 1558,
+ 1, 0, 0, 0, 1561, 1559, 1, 0, 0, 0, 1562, 1565, 1, 0, 0, 0, 1563, 1561,
+ 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1566, 1, 0, 0, 0, 1565, 1563,
+ 1, 0, 0, 0, 1566, 1593, 5, 34, 0, 0, 1567, 1573, 5, 96, 0, 0, 1568, 1572,
+ 8, 27, 0, 0, 1569, 1570, 5, 96, 0, 0, 1570, 1572, 5, 96, 0, 0, 1571, 1568,
+ 1, 0, 0, 0, 1571, 1569, 1, 0, 0, 0, 1572, 1575, 1, 0, 0, 0, 1573, 1571,
+ 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1576, 1, 0, 0, 0, 1575, 1573,
+ 1, 0, 0, 0, 1576, 1593, 5, 96, 0, 0, 1577, 1581, 5, 91, 0, 0, 1578, 1580,
+ 8, 28, 0, 0, 1579, 1578, 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, 1593, 5, 93, 0, 0, 1585, 1589, 7, 29, 0, 0, 1586, 1588,
+ 7, 30, 0, 0, 1587, 1586, 1, 0, 0, 0, 1588, 1591, 1, 0, 0, 0, 1589, 1587,
+ 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 1593, 1, 0, 0, 0, 1591, 1589,
+ 1, 0, 0, 0, 1592, 1557, 1, 0, 0, 0, 1592, 1567, 1, 0, 0, 0, 1592, 1577,
+ 1, 0, 0, 0, 1592, 1585, 1, 0, 0, 0, 1593, 370, 1, 0, 0, 0, 1594, 1596,
+ 3, 389, 194, 0, 1595, 1594, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 1595,
+ 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1606, 1, 0, 0, 0, 1599, 1603,
+ 5, 46, 0, 0, 1600, 1602, 3, 389, 194, 0, 1601, 1600, 1, 0, 0, 0, 1602,
+ 1605, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1603, 1604, 1, 0, 0, 0, 1604,
+ 1607, 1, 0, 0, 0, 1605, 1603, 1, 0, 0, 0, 1606, 1599, 1, 0, 0, 0, 1606,
+ 1607, 1, 0, 0, 0, 1607, 1615, 1, 0, 0, 0, 1608, 1610, 5, 46, 0, 0, 1609,
+ 1611, 3, 389, 194, 0, 1610, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612,
+ 1610, 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1615, 1, 0, 0, 0, 1614,
+ 1595, 1, 0, 0, 0, 1614, 1608, 1, 0, 0, 0, 1615, 1625, 1, 0, 0, 0, 1616,
+ 1618, 7, 10, 0, 0, 1617, 1619, 7, 31, 0, 0, 1618, 1617, 1, 0, 0, 0, 1618,
+ 1619, 1, 0, 0, 0, 1619, 1621, 1, 0, 0, 0, 1620, 1622, 3, 389, 194, 0, 1621,
+ 1620, 1, 0, 0, 0, 1622, 1623, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1623,
+ 1624, 1, 0, 0, 0, 1624, 1626, 1, 0, 0, 0, 1625, 1616, 1, 0, 0, 0, 1625,
+ 1626, 1, 0, 0, 0, 1626, 1636, 1, 0, 0, 0, 1627, 1628, 5, 48, 0, 0, 1628,
+ 1629, 7, 22, 0, 0, 1629, 1631, 1, 0, 0, 0, 1630, 1632, 3, 387, 193, 0,
+ 1631, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1631, 1, 0, 0, 0,
+ 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1614, 1, 0, 0, 0,
+ 1635, 1627, 1, 0, 0, 0, 1636, 372, 1, 0, 0, 0, 1637, 1641, 5, 63, 0, 0,
+ 1638, 1640, 3, 389, 194, 0, 1639, 1638, 1, 0, 0, 0, 1640, 1643, 1, 0, 0,
+ 0, 1641, 1639, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1647, 1, 0, 0,
+ 0, 1643, 1641, 1, 0, 0, 0, 1644, 1645, 7, 32, 0, 0, 1645, 1647, 3, 369,
+ 184, 0, 1646, 1637, 1, 0, 0, 0, 1646, 1644, 1, 0, 0, 0, 1647, 374, 1, 0,
+ 0, 0, 1648, 1654, 5, 39, 0, 0, 1649, 1653, 8, 33, 0, 0, 1650, 1651, 5,
+ 39, 0, 0, 1651, 1653, 5, 39, 0, 0, 1652, 1649, 1, 0, 0, 0, 1652, 1650,
+ 1, 0, 0, 0, 1653, 1656, 1, 0, 0, 0, 1654, 1652, 1, 0, 0, 0, 1654, 1655,
+ 1, 0, 0, 0, 1655, 1657, 1, 0, 0, 0, 1656, 1654, 1, 0, 0, 0, 1657, 1658,
+ 5, 39, 0, 0, 1658, 376, 1, 0, 0, 0, 1659, 1660, 7, 22, 0, 0, 1660, 1661,
+ 3, 375, 187, 0, 1661, 378, 1, 0, 0, 0, 1662, 1663, 5, 45, 0, 0, 1663, 1664,
+ 5, 45, 0, 0, 1664, 1668, 1, 0, 0, 0, 1665, 1667, 8, 34, 0, 0, 1666, 1665,
+ 1, 0, 0, 0, 1667, 1670, 1, 0, 0, 0, 1668, 1666, 1, 0, 0, 0, 1668, 1669,
+ 1, 0, 0, 0, 1669, 1676, 1, 0, 0, 0, 1670, 1668, 1, 0, 0, 0, 1671, 1673,
+ 5, 13, 0, 0, 1672, 1671, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 1674,
+ 1, 0, 0, 0, 1674, 1677, 5, 10, 0, 0, 1675, 1677, 5, 0, 0, 1, 1676, 1672,
+ 1, 0, 0, 0, 1676, 1675, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1679,
+ 6, 189, 0, 0, 1679, 380, 1, 0, 0, 0, 1680, 1681, 5, 47, 0, 0, 1681, 1682,
+ 5, 42, 0, 0, 1682, 1686, 1, 0, 0, 0, 1683, 1685, 9, 0, 0, 0, 1684, 1683,
+ 1, 0, 0, 0, 1685, 1688, 1, 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1686, 1684,
+ 1, 0, 0, 0, 1687, 1689, 1, 0, 0, 0, 1688, 1686, 1, 0, 0, 0, 1689, 1690,
+ 5, 42, 0, 0, 1690, 1691, 5, 47, 0, 0, 1691, 1692, 1, 0, 0, 0, 1692, 1693,
+ 6, 190, 0, 0, 1693, 382, 1, 0, 0, 0, 1694, 1695, 7, 35, 0, 0, 1695, 1696,
+ 1, 0, 0, 0, 1696, 1697, 6, 191, 0, 0, 1697, 384, 1, 0, 0, 0, 1698, 1699,
+ 9, 0, 0, 0, 1699, 386, 1, 0, 0, 0, 1700, 1701, 7, 36, 0, 0, 1701, 388,
+ 1, 0, 0, 0, 1702, 1703, 7, 37, 0, 0, 1703, 390, 1, 0, 0, 0, 26, 0, 1561,
+ 1563, 1571, 1573, 1581, 1589, 1592, 1597, 1603, 1606, 1612, 1614, 1618,
+ 1623, 1625, 1633, 1635, 1641, 1646, 1652, 1654, 1668, 1672, 1676, 1686,
+ 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)
+ }
+}
+
+// SQLiteLexerInit initializes any static state used to implement SQLiteLexer. By default the
+// static state used to implement the lexer is lazily initialized during the first call to
+// NewSQLiteLexer(). You can call this function if you wish to initialize the static state ahead
+// of time.
+func SQLiteLexerInit() {
+ staticData := &SQLiteLexerLexerStaticData
+ staticData.once.Do(sqlitelexerLexerInit)
+}
+
+// NewSQLiteLexer produces a new lexer instance for the optional input antlr.CharStream.
+func NewSQLiteLexer(input antlr.CharStream) *SQLiteLexer {
+ SQLiteLexerInit()
+ l := new(SQLiteLexer)
+ l.BaseLexer = antlr.NewBaseLexer(input)
+ staticData := &SQLiteLexerLexerStaticData
+ 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 = "SQLiteLexer.g4"
+ // TODO: l.EOF = antlr.TokenEOF
+
+ return l
+}
+
+// SQLiteLexer tokens.
+const (
+ SQLiteLexerSCOL = 1
+ SQLiteLexerDOT = 2
+ SQLiteLexerOPEN_PAR = 3
+ SQLiteLexerCLOSE_PAR = 4
+ SQLiteLexerCOMMA = 5
+ SQLiteLexerASSIGN = 6
+ SQLiteLexerSTAR = 7
+ SQLiteLexerPLUS = 8
+ SQLiteLexerMINUS = 9
+ SQLiteLexerTILDE = 10
+ SQLiteLexerPIPE2 = 11
+ SQLiteLexerDIV = 12
+ SQLiteLexerMOD = 13
+ SQLiteLexerLT2 = 14
+ SQLiteLexerGT2 = 15
+ SQLiteLexerAMP = 16
+ SQLiteLexerPIPE = 17
+ SQLiteLexerLT = 18
+ SQLiteLexerLT_EQ = 19
+ SQLiteLexerGT = 20
+ SQLiteLexerGT_EQ = 21
+ SQLiteLexerEQ = 22
+ SQLiteLexerNOT_EQ1 = 23
+ SQLiteLexerNOT_EQ2 = 24
+ SQLiteLexerABORT_ = 25
+ SQLiteLexerACTION_ = 26
+ SQLiteLexerADD_ = 27
+ SQLiteLexerAFTER_ = 28
+ SQLiteLexerALL_ = 29
+ SQLiteLexerALTER_ = 30
+ SQLiteLexerANALYZE_ = 31
+ SQLiteLexerAND_ = 32
+ SQLiteLexerAS_ = 33
+ SQLiteLexerASC_ = 34
+ SQLiteLexerATTACH_ = 35
+ SQLiteLexerAUTOINCREMENT_ = 36
+ SQLiteLexerBEFORE_ = 37
+ SQLiteLexerBEGIN_ = 38
+ SQLiteLexerBETWEEN_ = 39
+ SQLiteLexerBY_ = 40
+ SQLiteLexerCASCADE_ = 41
+ SQLiteLexerCASE_ = 42
+ SQLiteLexerCAST_ = 43
+ SQLiteLexerCHECK_ = 44
+ SQLiteLexerCOLLATE_ = 45
+ SQLiteLexerCOLUMN_ = 46
+ SQLiteLexerCOMMIT_ = 47
+ SQLiteLexerCONFLICT_ = 48
+ SQLiteLexerCONSTRAINT_ = 49
+ SQLiteLexerCREATE_ = 50
+ SQLiteLexerCROSS_ = 51
+ SQLiteLexerCURRENT_DATE_ = 52
+ SQLiteLexerCURRENT_TIME_ = 53
+ SQLiteLexerCURRENT_TIMESTAMP_ = 54
+ SQLiteLexerDATABASE_ = 55
+ SQLiteLexerDEFAULT_ = 56
+ SQLiteLexerDEFERRABLE_ = 57
+ SQLiteLexerDEFERRED_ = 58
+ SQLiteLexerDELETE_ = 59
+ SQLiteLexerDESC_ = 60
+ SQLiteLexerDETACH_ = 61
+ SQLiteLexerDISTINCT_ = 62
+ SQLiteLexerDROP_ = 63
+ SQLiteLexerEACH_ = 64
+ SQLiteLexerELSE_ = 65
+ SQLiteLexerEND_ = 66
+ SQLiteLexerESCAPE_ = 67
+ SQLiteLexerEXCEPT_ = 68
+ SQLiteLexerEXCLUSIVE_ = 69
+ SQLiteLexerEXISTS_ = 70
+ SQLiteLexerEXPLAIN_ = 71
+ SQLiteLexerFAIL_ = 72
+ SQLiteLexerFOR_ = 73
+ SQLiteLexerFOREIGN_ = 74
+ SQLiteLexerFROM_ = 75
+ SQLiteLexerFULL_ = 76
+ SQLiteLexerGLOB_ = 77
+ SQLiteLexerGROUP_ = 78
+ SQLiteLexerHAVING_ = 79
+ SQLiteLexerIF_ = 80
+ SQLiteLexerIGNORE_ = 81
+ SQLiteLexerIMMEDIATE_ = 82
+ SQLiteLexerIN_ = 83
+ SQLiteLexerINDEX_ = 84
+ SQLiteLexerINDEXED_ = 85
+ SQLiteLexerINITIALLY_ = 86
+ SQLiteLexerINNER_ = 87
+ SQLiteLexerINSERT_ = 88
+ SQLiteLexerINSTEAD_ = 89
+ SQLiteLexerINTERSECT_ = 90
+ SQLiteLexerINTO_ = 91
+ SQLiteLexerIS_ = 92
+ SQLiteLexerISNULL_ = 93
+ SQLiteLexerJOIN_ = 94
+ SQLiteLexerKEY_ = 95
+ SQLiteLexerLEFT_ = 96
+ SQLiteLexerLIKE_ = 97
+ SQLiteLexerLIMIT_ = 98
+ SQLiteLexerMATCH_ = 99
+ SQLiteLexerNATURAL_ = 100
+ SQLiteLexerNO_ = 101
+ SQLiteLexerNOT_ = 102
+ SQLiteLexerNOTNULL_ = 103
+ SQLiteLexerNULL_ = 104
+ SQLiteLexerOF_ = 105
+ SQLiteLexerOFFSET_ = 106
+ SQLiteLexerON_ = 107
+ SQLiteLexerOR_ = 108
+ SQLiteLexerORDER_ = 109
+ SQLiteLexerOUTER_ = 110
+ SQLiteLexerPLAN_ = 111
+ SQLiteLexerPRAGMA_ = 112
+ SQLiteLexerPRIMARY_ = 113
+ SQLiteLexerQUERY_ = 114
+ SQLiteLexerRAISE_ = 115
+ SQLiteLexerRECURSIVE_ = 116
+ SQLiteLexerREFERENCES_ = 117
+ SQLiteLexerREGEXP_ = 118
+ SQLiteLexerREINDEX_ = 119
+ SQLiteLexerRELEASE_ = 120
+ SQLiteLexerRENAME_ = 121
+ SQLiteLexerREPLACE_ = 122
+ SQLiteLexerRESTRICT_ = 123
+ SQLiteLexerRETURNING_ = 124
+ SQLiteLexerRIGHT_ = 125
+ SQLiteLexerROLLBACK_ = 126
+ SQLiteLexerROW_ = 127
+ SQLiteLexerROWS_ = 128
+ SQLiteLexerSAVEPOINT_ = 129
+ SQLiteLexerSELECT_ = 130
+ SQLiteLexerSET_ = 131
+ SQLiteLexerTABLE_ = 132
+ SQLiteLexerTEMP_ = 133
+ SQLiteLexerTEMPORARY_ = 134
+ SQLiteLexerTHEN_ = 135
+ SQLiteLexerTO_ = 136
+ SQLiteLexerTRANSACTION_ = 137
+ SQLiteLexerTRIGGER_ = 138
+ SQLiteLexerUNION_ = 139
+ SQLiteLexerUNIQUE_ = 140
+ SQLiteLexerUPDATE_ = 141
+ SQLiteLexerUSING_ = 142
+ SQLiteLexerVACUUM_ = 143
+ SQLiteLexerVALUES_ = 144
+ SQLiteLexerVIEW_ = 145
+ SQLiteLexerVIRTUAL_ = 146
+ SQLiteLexerWHEN_ = 147
+ SQLiteLexerWHERE_ = 148
+ SQLiteLexerWITH_ = 149
+ SQLiteLexerWITHOUT_ = 150
+ SQLiteLexerFIRST_VALUE_ = 151
+ SQLiteLexerOVER_ = 152
+ SQLiteLexerPARTITION_ = 153
+ SQLiteLexerRANGE_ = 154
+ SQLiteLexerPRECEDING_ = 155
+ SQLiteLexerUNBOUNDED_ = 156
+ SQLiteLexerCURRENT_ = 157
+ SQLiteLexerFOLLOWING_ = 158
+ SQLiteLexerCUME_DIST_ = 159
+ SQLiteLexerDENSE_RANK_ = 160
+ SQLiteLexerLAG_ = 161
+ SQLiteLexerLAST_VALUE_ = 162
+ SQLiteLexerLEAD_ = 163
+ SQLiteLexerNTH_VALUE_ = 164
+ SQLiteLexerNTILE_ = 165
+ SQLiteLexerPERCENT_RANK_ = 166
+ SQLiteLexerRANK_ = 167
+ SQLiteLexerROW_NUMBER_ = 168
+ SQLiteLexerGENERATED_ = 169
+ SQLiteLexerALWAYS_ = 170
+ SQLiteLexerSTORED_ = 171
+ SQLiteLexerTRUE_ = 172
+ SQLiteLexerFALSE_ = 173
+ SQLiteLexerWINDOW_ = 174
+ SQLiteLexerNULLS_ = 175
+ SQLiteLexerFIRST_ = 176
+ SQLiteLexerLAST_ = 177
+ SQLiteLexerFILTER_ = 178
+ SQLiteLexerGROUPS_ = 179
+ SQLiteLexerEXCLUDE_ = 180
+ SQLiteLexerTIES_ = 181
+ SQLiteLexerOTHERS_ = 182
+ SQLiteLexerDO_ = 183
+ SQLiteLexerNOTHING_ = 184
+ SQLiteLexerIDENTIFIER = 185
+ SQLiteLexerNUMERIC_LITERAL = 186
+ SQLiteLexerBIND_PARAMETER = 187
+ SQLiteLexerSTRING_LITERAL = 188
+ SQLiteLexerBLOB_LITERAL = 189
+ SQLiteLexerSINGLE_LINE_COMMENT = 190
+ SQLiteLexerMULTILINE_COMMENT = 191
+ SQLiteLexerSPACES = 192
+ SQLiteLexerUNEXPECTED_CHAR = 193
+)
diff --git a/sqliteparser/sqlite_parser.go b/sqliteparser/sqlite_parser.go
new file mode 100644
index 0000000..d718e11
--- /dev/null
+++ b/sqliteparser/sqlite_parser.go
@@ -0,0 +1,31394 @@
+// Code generated from SQLiteParser.g4 by ANTLR 4.13.1. DO NOT EDIT.
+
+package sqliteparser // SQLiteParser
+import (
+ "fmt"
+ "strconv"
+ "sync"
+
+ "github.com/antlr4-go/antlr/v4"
+)
+
+// Suppress unused import errors
+var _ = fmt.Printf
+var _ = strconv.Itoa
+var _ = sync.Once{}
+
+type SQLiteParser struct {
+ *antlr.BaseParser
+}
+
+var SQLiteParserParserStaticData struct {
+ once sync.Once
+ serializedATN []int32
+ LiteralNames []string
+ SymbolicNames []string
+ RuleNames []string
+ PredictionContextCache *antlr.PredictionContextCache
+ atn *antlr.ATN
+ decisionToDFA []*antlr.DFA
+}
+
+func sqliteparserParserInit() {
+ staticData := &SQLiteParserParserStaticData
+ staticData.LiteralNames = []string{
+ "", "';'", "'.'", "'('", "')'", "','", "'='", "'*'", "'+'", "'-'", "'~'",
+ "'||'", "'/'", "'%'", "'<<'", "'>>'", "'&'", "'|'", "'<'", "'<='", "'>'",
+ "'>='", "'=='", "'!='", "'<>'", "'ABORT'", "'ACTION'", "'ADD'", "'AFTER'",
+ "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", "'AS'", "'ASC'", "'ATTACH'",
+ "'AUTOINCREMENT'", "'BEFORE'", "'BEGIN'", "'BETWEEN'", "'BY'", "'CASCADE'",
+ "'CASE'", "'CAST'", "'CHECK'", "'COLLATE'", "'COLUMN'", "'COMMIT'",
+ "'CONFLICT'", "'CONSTRAINT'", "'CREATE'", "'CROSS'", "'CURRENT_DATE'",
+ "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", "'DATABASE'", "'DEFAULT'",
+ "'DEFERRABLE'", "'DEFERRED'", "'DELETE'", "'DESC'", "'DETACH'", "'DISTINCT'",
+ "'DROP'", "'EACH'", "'ELSE'", "'END'", "'ESCAPE'", "'EXCEPT'", "'EXCLUSIVE'",
+ "'EXISTS'", "'EXPLAIN'", "'FAIL'", "'FOR'", "'FOREIGN'", "'FROM'", "'FULL'",
+ "'GLOB'", "'GROUP'", "'HAVING'", "'IF'", "'IGNORE'", "'IMMEDIATE'",
+ "'IN'", "'INDEX'", "'INDEXED'", "'INITIALLY'", "'INNER'", "'INSERT'",
+ "'INSTEAD'", "'INTERSECT'", "'INTO'", "'IS'", "'ISNULL'", "'JOIN'",
+ "'KEY'", "'LEFT'", "'LIKE'", "'LIMIT'", "'MATCH'", "'NATURAL'", "'NO'",
+ "'NOT'", "'NOTNULL'", "'NULL'", "'OF'", "'OFFSET'", "'ON'", "'OR'",
+ "'ORDER'", "'OUTER'", "'PLAN'", "'PRAGMA'", "'PRIMARY'", "'QUERY'",
+ "'RAISE'", "'RECURSIVE'", "'REFERENCES'", "'REGEXP'", "'REINDEX'", "'RELEASE'",
+ "'RENAME'", "'REPLACE'", "'RESTRICT'", "'RETURNING'", "'RIGHT'", "'ROLLBACK'",
+ "'ROW'", "'ROWS'", "'SAVEPOINT'", "'SELECT'", "'SET'", "'TABLE'", "'TEMP'",
+ "'TEMPORARY'", "'THEN'", "'TO'", "'TRANSACTION'", "'TRIGGER'", "'UNION'",
+ "'UNIQUE'", "'UPDATE'", "'USING'", "'VACUUM'", "'VALUES'", "'VIEW'",
+ "'VIRTUAL'", "'WHEN'", "'WHERE'", "'WITH'", "'WITHOUT'", "'FIRST_VALUE'",
+ "'OVER'", "'PARTITION'", "'RANGE'", "'PRECEDING'", "'UNBOUNDED'", "'CURRENT'",
+ "'FOLLOWING'", "'CUME_DIST'", "'DENSE_RANK'", "'LAG'", "'LAST_VALUE'",
+ "'LEAD'", "'NTH_VALUE'", "'NTILE'", "'PERCENT_RANK'", "'RANK'", "'ROW_NUMBER'",
+ "'GENERATED'", "'ALWAYS'", "'STORED'", "'TRUE'", "'FALSE'", "'WINDOW'",
+ "'NULLS'", "'FIRST'", "'LAST'", "'FILTER'", "'GROUPS'", "'EXCLUDE'",
+ "'TIES'", "'OTHERS'", "'DO'", "'NOTHING'",
+ }
+ 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", "ABORT_",
+ "ACTION_", "ADD_", "AFTER_", "ALL_", "ALTER_", "ANALYZE_", "AND_", "AS_",
+ "ASC_", "ATTACH_", "AUTOINCREMENT_", "BEFORE_", "BEGIN_", "BETWEEN_",
+ "BY_", "CASCADE_", "CASE_", "CAST_", "CHECK_", "COLLATE_", "COLUMN_",
+ "COMMIT_", "CONFLICT_", "CONSTRAINT_", "CREATE_", "CROSS_", "CURRENT_DATE_",
+ "CURRENT_TIME_", "CURRENT_TIMESTAMP_", "DATABASE_", "DEFAULT_", "DEFERRABLE_",
+ "DEFERRED_", "DELETE_", "DESC_", "DETACH_", "DISTINCT_", "DROP_", "EACH_",
+ "ELSE_", "END_", "ESCAPE_", "EXCEPT_", "EXCLUSIVE_", "EXISTS_", "EXPLAIN_",
+ "FAIL_", "FOR_", "FOREIGN_", "FROM_", "FULL_", "GLOB_", "GROUP_", "HAVING_",
+ "IF_", "IGNORE_", "IMMEDIATE_", "IN_", "INDEX_", "INDEXED_", "INITIALLY_",
+ "INNER_", "INSERT_", "INSTEAD_", "INTERSECT_", "INTO_", "IS_", "ISNULL_",
+ "JOIN_", "KEY_", "LEFT_", "LIKE_", "LIMIT_", "MATCH_", "NATURAL_", "NO_",
+ "NOT_", "NOTNULL_", "NULL_", "OF_", "OFFSET_", "ON_", "OR_", "ORDER_",
+ "OUTER_", "PLAN_", "PRAGMA_", "PRIMARY_", "QUERY_", "RAISE_", "RECURSIVE_",
+ "REFERENCES_", "REGEXP_", "REINDEX_", "RELEASE_", "RENAME_", "REPLACE_",
+ "RESTRICT_", "RETURNING_", "RIGHT_", "ROLLBACK_", "ROW_", "ROWS_", "SAVEPOINT_",
+ "SELECT_", "SET_", "TABLE_", "TEMP_", "TEMPORARY_", "THEN_", "TO_",
+ "TRANSACTION_", "TRIGGER_", "UNION_", "UNIQUE_", "UPDATE_", "USING_",
+ "VACUUM_", "VALUES_", "VIEW_", "VIRTUAL_", "WHEN_", "WHERE_", "WITH_",
+ "WITHOUT_", "FIRST_VALUE_", "OVER_", "PARTITION_", "RANGE_", "PRECEDING_",
+ "UNBOUNDED_", "CURRENT_", "FOLLOWING_", "CUME_DIST_", "DENSE_RANK_",
+ "LAG_", "LAST_VALUE_", "LEAD_", "NTH_VALUE_", "NTILE_", "PERCENT_RANK_",
+ "RANK_", "ROW_NUMBER_", "GENERATED_", "ALWAYS_", "STORED_", "TRUE_",
+ "FALSE_", "WINDOW_", "NULLS_", "FIRST_", "LAST_", "FILTER_", "GROUPS_",
+ "EXCLUDE_", "TIES_", "OTHERS_", "DO_", "NOTHING_", "IDENTIFIER", "NUMERIC_LITERAL",
+ "BIND_PARAMETER", "STRING_LITERAL", "BLOB_LITERAL", "SINGLE_LINE_COMMENT",
+ "MULTILINE_COMMENT", "SPACES", "UNEXPECTED_CHAR",
+ }
+ staticData.RuleNames = []string{
+ "parse", "sql_stmt_list", "sql_stmt", "alter_table_stmt", "analyze_stmt",
+ "attach_stmt", "begin_stmt", "commit_stmt", "rollback_stmt", "savepoint_stmt",
+ "release_stmt", "create_index_stmt", "indexed_column", "create_table_stmt",
+ "column_def", "type_name", "column_constraint", "signed_number", "table_constraint",
+ "foreign_key_clause", "conflict_clause", "create_trigger_stmt", "create_view_stmt",
+ "create_virtual_table_stmt", "with_clause", "cte_table_name", "recursive_cte",
+ "common_table_expression", "delete_stmt", "delete_stmt_limited", "detach_stmt",
+ "drop_stmt", "expr", "raise_function", "literal_value", "value_row",
+ "values_clause", "insert_stmt", "returning_clause", "upsert_clause",
+ "pragma_stmt", "pragma_value", "reindex_stmt", "select_stmt", "join_clause",
+ "select_core", "factored_select_stmt", "simple_select_stmt", "compound_select_stmt",
+ "table_or_subquery", "result_column", "join_operator", "join_constraint",
+ "compound_operator", "update_stmt", "column_name_list", "update_stmt_limited",
+ "qualified_table_name", "vacuum_stmt", "filter_clause", "window_defn",
+ "over_clause", "frame_spec", "frame_clause", "simple_function_invocation",
+ "aggregate_function_invocation", "window_function_invocation", "common_table_stmt",
+ "order_by_stmt", "limit_stmt", "ordering_term", "asc_desc", "frame_left",
+ "frame_right", "frame_single", "window_function", "offset", "default_value",
+ "partition_by", "order_by_expr", "order_by_expr_asc_desc", "expr_asc_desc",
+ "initial_select", "recursive_select", "unary_operator", "error_message",
+ "module_argument", "column_alias", "keyword", "name", "function_name",
+ "schema_name", "table_name", "table_or_index_name", "column_name", "collation_name",
+ "foreign_table", "index_name", "trigger_name", "view_name", "module_name",
+ "pragma_name", "savepoint_name", "table_alias", "transaction_name",
+ "window_name", "alias", "filename", "base_window_name", "simple_func",
+ "aggregate_func", "table_function_name", "any_name",
+ }
+ staticData.PredictionContextCache = antlr.NewPredictionContextCache()
+ staticData.serializedATN = []int32{
+ 4, 1, 193, 2056, 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, 1,
+ 0, 5, 0, 228, 8, 0, 10, 0, 12, 0, 231, 9, 0, 1, 0, 1, 0, 1, 1, 5, 1, 236,
+ 8, 1, 10, 1, 12, 1, 239, 9, 1, 1, 1, 1, 1, 4, 1, 243, 8, 1, 11, 1, 12,
+ 1, 244, 1, 1, 5, 1, 248, 8, 1, 10, 1, 12, 1, 251, 9, 1, 1, 1, 5, 1, 254,
+ 8, 1, 10, 1, 12, 1, 257, 9, 1, 1, 2, 1, 2, 1, 2, 3, 2, 262, 8, 2, 3, 2,
+ 264, 8, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
+ 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
+ 1, 2, 1, 2, 3, 2, 290, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 297, 8,
+ 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 304, 8, 3, 1, 3, 1, 3, 1, 3, 1,
+ 3, 3, 3, 310, 8, 3, 1, 3, 1, 3, 3, 3, 314, 8, 3, 1, 3, 1, 3, 1, 3, 3, 3,
+ 319, 8, 3, 1, 3, 3, 3, 322, 8, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 329,
+ 8, 4, 1, 4, 3, 4, 332, 8, 4, 1, 5, 1, 5, 3, 5, 336, 8, 5, 1, 5, 1, 5, 1,
+ 5, 1, 5, 1, 6, 1, 6, 3, 6, 344, 8, 6, 1, 6, 1, 6, 3, 6, 348, 8, 6, 3, 6,
+ 350, 8, 6, 1, 7, 1, 7, 3, 7, 354, 8, 7, 1, 8, 1, 8, 3, 8, 358, 8, 8, 1,
+ 8, 1, 8, 3, 8, 362, 8, 8, 1, 8, 3, 8, 365, 8, 8, 1, 9, 1, 9, 1, 9, 1, 10,
+ 1, 10, 3, 10, 372, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 378, 8, 11,
+ 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 384, 8, 11, 1, 11, 1, 11, 1, 11, 3,
+ 11, 389, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11,
+ 398, 8, 11, 10, 11, 12, 11, 401, 9, 11, 1, 11, 1, 11, 1, 11, 3, 11, 406,
+ 8, 11, 1, 12, 1, 12, 3, 12, 410, 8, 12, 1, 12, 1, 12, 3, 12, 414, 8, 12,
+ 1, 12, 3, 12, 417, 8, 12, 1, 13, 1, 13, 3, 13, 421, 8, 13, 1, 13, 1, 13,
+ 1, 13, 1, 13, 3, 13, 427, 8, 13, 1, 13, 1, 13, 1, 13, 3, 13, 432, 8, 13,
+ 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 5, 13, 439, 8, 13, 10, 13, 12, 13, 442,
+ 9, 13, 1, 13, 1, 13, 5, 13, 446, 8, 13, 10, 13, 12, 13, 449, 9, 13, 1,
+ 13, 1, 13, 1, 13, 3, 13, 454, 8, 13, 1, 13, 1, 13, 3, 13, 458, 8, 13, 1,
+ 14, 1, 14, 3, 14, 462, 8, 14, 1, 14, 5, 14, 465, 8, 14, 10, 14, 12, 14,
+ 468, 9, 14, 1, 15, 4, 15, 471, 8, 15, 11, 15, 12, 15, 472, 1, 15, 1, 15,
+ 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 485, 8,
+ 15, 1, 16, 1, 16, 3, 16, 489, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 494, 8,
+ 16, 1, 16, 3, 16, 497, 8, 16, 1, 16, 3, 16, 500, 8, 16, 1, 16, 3, 16, 503,
+ 8, 16, 1, 16, 1, 16, 3, 16, 507, 8, 16, 1, 16, 3, 16, 510, 8, 16, 1, 16,
+ 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1,
+ 16, 3, 16, 524, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 531, 8,
+ 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 538, 8, 16, 3, 16, 540, 8,
+ 16, 1, 17, 3, 17, 543, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 3, 18, 549, 8,
+ 18, 1, 18, 1, 18, 1, 18, 3, 18, 554, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18,
+ 5, 18, 560, 8, 18, 10, 18, 12, 18, 563, 9, 18, 1, 18, 1, 18, 3, 18, 567,
+ 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1,
+ 18, 1, 18, 5, 18, 580, 8, 18, 10, 18, 12, 18, 583, 9, 18, 1, 18, 1, 18,
+ 1, 18, 3, 18, 588, 8, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 5,
+ 19, 596, 8, 19, 10, 19, 12, 19, 599, 9, 19, 1, 19, 1, 19, 3, 19, 603, 8,
+ 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 613,
+ 8, 19, 1, 19, 1, 19, 5, 19, 617, 8, 19, 10, 19, 12, 19, 620, 9, 19, 1,
+ 19, 3, 19, 623, 8, 19, 1, 19, 1, 19, 1, 19, 3, 19, 628, 8, 19, 3, 19, 630,
+ 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 638, 8, 21, 1,
+ 21, 1, 21, 1, 21, 1, 21, 3, 21, 644, 8, 21, 1, 21, 1, 21, 1, 21, 3, 21,
+ 649, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 656, 8, 21, 1, 21,
+ 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 5, 21, 665, 8, 21, 10, 21, 12,
+ 21, 668, 9, 21, 3, 21, 670, 8, 21, 3, 21, 672, 8, 21, 1, 21, 1, 21, 1,
+ 21, 1, 21, 1, 21, 3, 21, 679, 8, 21, 1, 21, 1, 21, 3, 21, 683, 8, 21, 1,
+ 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 690, 8, 21, 1, 21, 1, 21, 4, 21,
+ 694, 8, 21, 11, 21, 12, 21, 695, 1, 21, 1, 21, 1, 22, 1, 22, 3, 22, 702,
+ 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 708, 8, 22, 1, 22, 1, 22, 1,
+ 22, 3, 22, 713, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 720, 8,
+ 22, 10, 22, 12, 22, 723, 9, 22, 1, 22, 1, 22, 3, 22, 727, 8, 22, 1, 22,
+ 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 738, 8,
+ 23, 1, 23, 1, 23, 1, 23, 3, 23, 743, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23,
+ 1, 23, 1, 23, 1, 23, 5, 23, 752, 8, 23, 10, 23, 12, 23, 755, 9, 23, 1,
+ 23, 1, 23, 3, 23, 759, 8, 23, 1, 24, 1, 24, 3, 24, 763, 8, 24, 1, 24, 1,
+ 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24,
+ 5, 24, 777, 8, 24, 10, 24, 12, 24, 780, 9, 24, 1, 25, 1, 25, 1, 25, 1,
+ 25, 1, 25, 5, 25, 787, 8, 25, 10, 25, 12, 25, 790, 9, 25, 1, 25, 1, 25,
+ 3, 25, 794, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 802,
+ 8, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 812,
+ 8, 27, 10, 27, 12, 27, 815, 9, 27, 1, 27, 1, 27, 3, 27, 819, 8, 27, 1,
+ 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 3, 28, 827, 8, 28, 1, 28, 1, 28,
+ 1, 28, 1, 28, 1, 28, 3, 28, 834, 8, 28, 1, 28, 3, 28, 837, 8, 28, 1, 29,
+ 3, 29, 840, 8, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 847, 8, 29,
+ 1, 29, 3, 29, 850, 8, 29, 1, 29, 3, 29, 853, 8, 29, 1, 29, 3, 29, 856,
+ 8, 29, 1, 30, 1, 30, 3, 30, 860, 8, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1,
+ 31, 1, 31, 3, 31, 868, 8, 31, 1, 31, 1, 31, 1, 31, 3, 31, 873, 8, 31, 1,
+ 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 883, 8, 32,
+ 1, 32, 1, 32, 1, 32, 3, 32, 888, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
+ 32, 1, 32, 1, 32, 3, 32, 897, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 902, 8,
+ 32, 10, 32, 12, 32, 905, 9, 32, 1, 32, 3, 32, 908, 8, 32, 1, 32, 1, 32,
+ 3, 32, 912, 8, 32, 1, 32, 3, 32, 915, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32,
+ 5, 32, 921, 8, 32, 10, 32, 12, 32, 924, 9, 32, 1, 32, 1, 32, 1, 32, 1,
+ 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 936, 8, 32, 1, 32,
+ 3, 32, 939, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 947,
+ 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 4, 32, 954, 8, 32, 11, 32, 12,
+ 32, 955, 1, 32, 1, 32, 3, 32, 960, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 965,
+ 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1,
+ 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
+ 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 995, 8,
+ 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
+ 3, 32, 1007, 8, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1012, 8, 32, 1, 32, 1,
+ 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1024,
+ 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1030, 8, 32, 1, 32, 1, 32, 1,
+ 32, 1, 32, 1, 32, 3, 32, 1037, 8, 32, 1, 32, 1, 32, 3, 32, 1041, 8, 32,
+ 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1049, 8, 32, 10, 32, 12,
+ 32, 1052, 9, 32, 3, 32, 1054, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32,
+ 1060, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1066, 8, 32, 1, 32, 1,
+ 32, 1, 32, 1, 32, 1, 32, 5, 32, 1073, 8, 32, 10, 32, 12, 32, 1076, 9, 32,
+ 3, 32, 1078, 8, 32, 1, 32, 1, 32, 3, 32, 1082, 8, 32, 5, 32, 1084, 8, 32,
+ 10, 32, 12, 32, 1087, 9, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
+ 3, 33, 1095, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1,
+ 35, 5, 35, 1105, 8, 35, 10, 35, 12, 35, 1108, 9, 35, 1, 35, 1, 35, 1, 36,
+ 1, 36, 1, 36, 1, 36, 5, 36, 1116, 8, 36, 10, 36, 12, 36, 1119, 9, 36, 1,
+ 37, 3, 37, 1122, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1129,
+ 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1135, 8, 37, 1, 37, 1, 37, 1,
+ 37, 3, 37, 1140, 8, 37, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 1146, 8, 37,
+ 10, 37, 12, 37, 1149, 9, 37, 1, 37, 1, 37, 3, 37, 1153, 8, 37, 1, 37, 1,
+ 37, 3, 37, 1157, 8, 37, 1, 37, 3, 37, 1160, 8, 37, 1, 37, 1, 37, 3, 37,
+ 1164, 8, 37, 1, 37, 3, 37, 1167, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 5,
+ 38, 1173, 8, 38, 10, 38, 12, 38, 1176, 9, 38, 1, 39, 1, 39, 1, 39, 1, 39,
+ 1, 39, 1, 39, 5, 39, 1184, 8, 39, 10, 39, 12, 39, 1187, 9, 39, 1, 39, 1,
+ 39, 1, 39, 3, 39, 1192, 8, 39, 3, 39, 1194, 8, 39, 1, 39, 1, 39, 1, 39,
+ 1, 39, 1, 39, 1, 39, 3, 39, 1202, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1,
+ 39, 3, 39, 1209, 8, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1214, 8, 39, 10, 39,
+ 12, 39, 1217, 9, 39, 1, 39, 1, 39, 3, 39, 1221, 8, 39, 3, 39, 1223, 8,
+ 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1229, 8, 40, 1, 40, 1, 40, 1, 40,
+ 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1238, 8, 40, 1, 41, 1, 41, 1, 41, 3,
+ 41, 1243, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1250, 8, 42,
+ 1, 42, 1, 42, 3, 42, 1254, 8, 42, 3, 42, 1256, 8, 42, 1, 43, 3, 43, 1259,
+ 8, 43, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 1265, 8, 43, 10, 43, 12, 43,
+ 1268, 9, 43, 1, 43, 3, 43, 1271, 8, 43, 1, 43, 3, 43, 1274, 8, 43, 1, 44,
+ 1, 44, 1, 44, 1, 44, 3, 44, 1280, 8, 44, 5, 44, 1282, 8, 44, 10, 44, 12,
+ 44, 1285, 9, 44, 1, 45, 1, 45, 3, 45, 1289, 8, 45, 1, 45, 1, 45, 1, 45,
+ 5, 45, 1294, 8, 45, 10, 45, 12, 45, 1297, 9, 45, 1, 45, 1, 45, 1, 45, 1,
+ 45, 5, 45, 1303, 8, 45, 10, 45, 12, 45, 1306, 9, 45, 1, 45, 3, 45, 1309,
+ 8, 45, 3, 45, 1311, 8, 45, 1, 45, 1, 45, 3, 45, 1315, 8, 45, 1, 45, 1,
+ 45, 1, 45, 1, 45, 1, 45, 5, 45, 1322, 8, 45, 10, 45, 12, 45, 1325, 9, 45,
+ 1, 45, 1, 45, 3, 45, 1329, 8, 45, 3, 45, 1331, 8, 45, 1, 45, 1, 45, 1,
+ 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 5, 45, 1342, 8, 45, 10, 45,
+ 12, 45, 1345, 9, 45, 3, 45, 1347, 8, 45, 1, 45, 3, 45, 1350, 8, 45, 1,
+ 46, 1, 46, 1, 47, 3, 47, 1355, 8, 47, 1, 47, 1, 47, 3, 47, 1359, 8, 47,
+ 1, 47, 3, 47, 1362, 8, 47, 1, 48, 3, 48, 1365, 8, 48, 1, 48, 1, 48, 1,
+ 48, 3, 48, 1370, 8, 48, 1, 48, 1, 48, 3, 48, 1374, 8, 48, 1, 48, 4, 48,
+ 1377, 8, 48, 11, 48, 12, 48, 1378, 1, 48, 3, 48, 1382, 8, 48, 1, 48, 3,
+ 48, 1385, 8, 48, 1, 49, 1, 49, 1, 49, 3, 49, 1390, 8, 49, 1, 49, 1, 49,
+ 3, 49, 1394, 8, 49, 1, 49, 3, 49, 1397, 8, 49, 1, 49, 1, 49, 1, 49, 1,
+ 49, 1, 49, 3, 49, 1404, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1409, 8, 49,
+ 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 1416, 8, 49, 10, 49, 12, 49,
+ 1419, 9, 49, 1, 49, 1, 49, 3, 49, 1423, 8, 49, 1, 49, 3, 49, 1426, 8, 49,
+ 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 1432, 8, 49, 10, 49, 12, 49, 1435, 9,
+ 49, 1, 49, 3, 49, 1438, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49,
+ 3, 49, 1446, 8, 49, 1, 49, 3, 49, 1449, 8, 49, 3, 49, 1451, 8, 49, 1, 50,
+ 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1460, 8, 50, 1, 50, 3,
+ 50, 1463, 8, 50, 3, 50, 1465, 8, 50, 1, 51, 1, 51, 3, 51, 1469, 8, 51,
+ 1, 51, 1, 51, 3, 51, 1473, 8, 51, 1, 51, 1, 51, 3, 51, 1477, 8, 51, 1,
+ 51, 3, 51, 1480, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52,
+ 5, 52, 1489, 8, 52, 10, 52, 12, 52, 1492, 9, 52, 1, 52, 1, 52, 3, 52, 1496,
+ 8, 52, 1, 53, 1, 53, 3, 53, 1500, 8, 53, 1, 53, 1, 53, 3, 53, 1504, 8,
+ 53, 1, 54, 3, 54, 1507, 8, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1512, 8, 54,
+ 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1518, 8, 54, 1, 54, 1, 54, 1, 54, 1,
+ 54, 1, 54, 3, 54, 1525, 8, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1530, 8, 54,
+ 10, 54, 12, 54, 1533, 9, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1539, 8,
+ 54, 10, 54, 12, 54, 1542, 9, 54, 1, 54, 3, 54, 1545, 8, 54, 3, 54, 1547,
+ 8, 54, 1, 54, 1, 54, 3, 54, 1551, 8, 54, 1, 54, 3, 54, 1554, 8, 54, 1,
+ 55, 1, 55, 1, 55, 1, 55, 5, 55, 1560, 8, 55, 10, 55, 12, 55, 1563, 9, 55,
+ 1, 55, 1, 55, 1, 56, 3, 56, 1568, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1573,
+ 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1579, 8, 56, 1, 56, 1, 56, 1,
+ 56, 1, 56, 1, 56, 3, 56, 1586, 8, 56, 1, 56, 1, 56, 1, 56, 5, 56, 1591,
+ 8, 56, 10, 56, 12, 56, 1594, 9, 56, 1, 56, 1, 56, 3, 56, 1598, 8, 56, 1,
+ 56, 3, 56, 1601, 8, 56, 1, 56, 3, 56, 1604, 8, 56, 1, 56, 3, 56, 1607,
+ 8, 56, 1, 57, 1, 57, 1, 57, 3, 57, 1612, 8, 57, 1, 57, 1, 57, 1, 57, 3,
+ 57, 1617, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 1624, 8, 57,
+ 1, 58, 1, 58, 3, 58, 1628, 8, 58, 1, 58, 1, 58, 3, 58, 1632, 8, 58, 1,
+ 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 3, 60, 1642, 8, 60,
+ 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5, 60, 1649, 8, 60, 10, 60, 12, 60,
+ 1652, 9, 60, 3, 60, 1654, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 5,
+ 60, 1661, 8, 60, 10, 60, 12, 60, 1664, 9, 60, 1, 60, 3, 60, 1667, 8, 60,
+ 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 1675, 8, 61, 1, 61, 1,
+ 61, 1, 61, 1, 61, 1, 61, 5, 61, 1682, 8, 61, 10, 61, 12, 61, 1685, 9, 61,
+ 3, 61, 1687, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 1694, 8,
+ 61, 10, 61, 12, 61, 1697, 9, 61, 3, 61, 1699, 8, 61, 1, 61, 3, 61, 1702,
+ 8, 61, 1, 61, 3, 61, 1705, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1,
+ 62, 1, 62, 1, 62, 3, 62, 1715, 8, 62, 3, 62, 1717, 8, 62, 1, 63, 1, 63,
+ 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 1726, 8, 63, 1, 64, 1, 64, 1,
+ 64, 1, 64, 1, 64, 5, 64, 1733, 8, 64, 10, 64, 12, 64, 1736, 9, 64, 1, 64,
+ 3, 64, 1739, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 3, 65, 1746, 8,
+ 65, 1, 65, 1, 65, 1, 65, 5, 65, 1751, 8, 65, 10, 65, 12, 65, 1754, 9, 65,
+ 1, 65, 3, 65, 1757, 8, 65, 1, 65, 1, 65, 3, 65, 1761, 8, 65, 1, 66, 1,
+ 66, 1, 66, 1, 66, 1, 66, 5, 66, 1768, 8, 66, 10, 66, 12, 66, 1771, 9, 66,
+ 1, 66, 3, 66, 1774, 8, 66, 1, 66, 1, 66, 3, 66, 1778, 8, 66, 1, 66, 1,
+ 66, 1, 66, 3, 66, 1783, 8, 66, 1, 67, 1, 67, 3, 67, 1787, 8, 67, 1, 67,
+ 1, 67, 1, 67, 5, 67, 1792, 8, 67, 10, 67, 12, 67, 1795, 9, 67, 1, 68, 1,
+ 68, 1, 68, 1, 68, 1, 68, 5, 68, 1802, 8, 68, 10, 68, 12, 68, 1805, 9, 68,
+ 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1811, 8, 69, 1, 70, 1, 70, 1, 70, 3,
+ 70, 1816, 8, 70, 1, 70, 3, 70, 1819, 8, 70, 1, 70, 1, 70, 3, 70, 1823,
+ 8, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1,
+ 72, 1, 72, 1, 72, 3, 72, 1837, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73,
+ 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1849, 8, 73, 1, 74, 1, 74, 1,
+ 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1858, 8, 74, 1, 75, 1, 75, 1, 75,
+ 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1867, 8, 75, 1, 75, 1, 75, 3, 75, 1871,
+ 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1881,
+ 8, 75, 1, 75, 3, 75, 1884, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1,
+ 75, 1, 75, 3, 75, 1893, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75,
+ 1, 75, 3, 75, 1902, 8, 75, 1, 75, 3, 75, 1905, 8, 75, 1, 75, 1, 75, 1,
+ 75, 1, 75, 3, 75, 1911, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75,
+ 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1925, 8, 75, 1, 75, 1,
+ 75, 3, 75, 1929, 8, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75,
+ 1, 75, 1, 75, 3, 75, 1940, 8, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1945, 8,
+ 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 4, 78,
+ 1956, 8, 78, 11, 78, 12, 78, 1957, 1, 79, 1, 79, 1, 79, 4, 79, 1963, 8,
+ 79, 11, 79, 12, 79, 1964, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 3,
+ 81, 1973, 8, 81, 1, 81, 1, 81, 1, 81, 3, 81, 1978, 8, 81, 5, 81, 1980,
+ 8, 81, 10, 81, 12, 81, 1983, 9, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 84,
+ 1, 84, 1, 85, 1, 85, 1, 86, 1, 86, 3, 86, 1995, 8, 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, 98, 1,
+ 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103,
+ 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107,
+ 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112,
+ 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 2054, 8, 112, 1,
+ 112, 2, 440, 472, 1, 64, 113, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22,
+ 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58,
+ 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94,
+ 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124,
+ 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154,
+ 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184,
+ 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214,
+ 216, 218, 220, 222, 224, 0, 28, 3, 0, 58, 58, 69, 69, 82, 82, 2, 0, 47,
+ 47, 66, 66, 1, 0, 133, 134, 2, 0, 146, 146, 171, 171, 1, 0, 8, 9, 2, 0,
+ 59, 59, 141, 141, 2, 0, 56, 56, 104, 104, 2, 0, 58, 58, 82, 82, 5, 0, 25,
+ 25, 72, 72, 81, 81, 122, 122, 126, 126, 4, 0, 84, 84, 132, 132, 138, 138,
+ 145, 145, 2, 0, 7, 7, 12, 13, 1, 0, 14, 17, 1, 0, 18, 21, 4, 0, 77, 77,
+ 97, 97, 99, 99, 118, 118, 3, 0, 25, 25, 72, 72, 126, 126, 5, 0, 52, 54,
+ 104, 104, 172, 173, 186, 186, 188, 189, 2, 0, 29, 29, 62, 62, 3, 0, 128,
+ 128, 154, 154, 179, 179, 2, 0, 5, 5, 106, 106, 1, 0, 176, 177, 2, 0, 34,
+ 34, 60, 60, 2, 0, 151, 151, 162, 162, 2, 0, 159, 159, 166, 166, 2, 0, 160,
+ 160, 167, 168, 2, 0, 161, 161, 163, 163, 2, 0, 8, 10, 102, 102, 2, 0, 185,
+ 185, 188, 188, 2, 0, 25, 123, 125, 180, 2338, 0, 229, 1, 0, 0, 0, 2, 237,
+ 1, 0, 0, 0, 4, 263, 1, 0, 0, 0, 6, 291, 1, 0, 0, 0, 8, 323, 1, 0, 0, 0,
+ 10, 333, 1, 0, 0, 0, 12, 341, 1, 0, 0, 0, 14, 351, 1, 0, 0, 0, 16, 355,
+ 1, 0, 0, 0, 18, 366, 1, 0, 0, 0, 20, 369, 1, 0, 0, 0, 22, 375, 1, 0, 0,
+ 0, 24, 409, 1, 0, 0, 0, 26, 418, 1, 0, 0, 0, 28, 459, 1, 0, 0, 0, 30, 470,
+ 1, 0, 0, 0, 32, 488, 1, 0, 0, 0, 34, 542, 1, 0, 0, 0, 36, 548, 1, 0, 0,
+ 0, 38, 589, 1, 0, 0, 0, 40, 631, 1, 0, 0, 0, 42, 635, 1, 0, 0, 0, 44, 699,
+ 1, 0, 0, 0, 46, 731, 1, 0, 0, 0, 48, 760, 1, 0, 0, 0, 50, 781, 1, 0, 0,
+ 0, 52, 795, 1, 0, 0, 0, 54, 806, 1, 0, 0, 0, 56, 826, 1, 0, 0, 0, 58, 839,
+ 1, 0, 0, 0, 60, 857, 1, 0, 0, 0, 62, 863, 1, 0, 0, 0, 64, 964, 1, 0, 0,
+ 0, 66, 1088, 1, 0, 0, 0, 68, 1098, 1, 0, 0, 0, 70, 1100, 1, 0, 0, 0, 72,
+ 1111, 1, 0, 0, 0, 74, 1121, 1, 0, 0, 0, 76, 1168, 1, 0, 0, 0, 78, 1177,
+ 1, 0, 0, 0, 80, 1224, 1, 0, 0, 0, 82, 1242, 1, 0, 0, 0, 84, 1244, 1, 0,
+ 0, 0, 86, 1258, 1, 0, 0, 0, 88, 1275, 1, 0, 0, 0, 90, 1349, 1, 0, 0, 0,
+ 92, 1351, 1, 0, 0, 0, 94, 1354, 1, 0, 0, 0, 96, 1364, 1, 0, 0, 0, 98, 1450,
+ 1, 0, 0, 0, 100, 1464, 1, 0, 0, 0, 102, 1479, 1, 0, 0, 0, 104, 1495, 1,
+ 0, 0, 0, 106, 1503, 1, 0, 0, 0, 108, 1506, 1, 0, 0, 0, 110, 1555, 1, 0,
+ 0, 0, 112, 1567, 1, 0, 0, 0, 114, 1611, 1, 0, 0, 0, 116, 1625, 1, 0, 0,
+ 0, 118, 1633, 1, 0, 0, 0, 120, 1639, 1, 0, 0, 0, 122, 1670, 1, 0, 0, 0,
+ 124, 1706, 1, 0, 0, 0, 126, 1718, 1, 0, 0, 0, 128, 1727, 1, 0, 0, 0, 130,
+ 1742, 1, 0, 0, 0, 132, 1762, 1, 0, 0, 0, 134, 1784, 1, 0, 0, 0, 136, 1796,
+ 1, 0, 0, 0, 138, 1806, 1, 0, 0, 0, 140, 1812, 1, 0, 0, 0, 142, 1824, 1,
+ 0, 0, 0, 144, 1836, 1, 0, 0, 0, 146, 1848, 1, 0, 0, 0, 148, 1857, 1, 0,
+ 0, 0, 150, 1944, 1, 0, 0, 0, 152, 1946, 1, 0, 0, 0, 154, 1949, 1, 0, 0,
+ 0, 156, 1952, 1, 0, 0, 0, 158, 1959, 1, 0, 0, 0, 160, 1966, 1, 0, 0, 0,
+ 162, 1970, 1, 0, 0, 0, 164, 1984, 1, 0, 0, 0, 166, 1986, 1, 0, 0, 0, 168,
+ 1988, 1, 0, 0, 0, 170, 1990, 1, 0, 0, 0, 172, 1994, 1, 0, 0, 0, 174, 1996,
+ 1, 0, 0, 0, 176, 1998, 1, 0, 0, 0, 178, 2000, 1, 0, 0, 0, 180, 2002, 1,
+ 0, 0, 0, 182, 2004, 1, 0, 0, 0, 184, 2006, 1, 0, 0, 0, 186, 2008, 1, 0,
+ 0, 0, 188, 2010, 1, 0, 0, 0, 190, 2012, 1, 0, 0, 0, 192, 2014, 1, 0, 0,
+ 0, 194, 2016, 1, 0, 0, 0, 196, 2018, 1, 0, 0, 0, 198, 2020, 1, 0, 0, 0,
+ 200, 2022, 1, 0, 0, 0, 202, 2024, 1, 0, 0, 0, 204, 2026, 1, 0, 0, 0, 206,
+ 2028, 1, 0, 0, 0, 208, 2030, 1, 0, 0, 0, 210, 2032, 1, 0, 0, 0, 212, 2034,
+ 1, 0, 0, 0, 214, 2036, 1, 0, 0, 0, 216, 2038, 1, 0, 0, 0, 218, 2040, 1,
+ 0, 0, 0, 220, 2042, 1, 0, 0, 0, 222, 2044, 1, 0, 0, 0, 224, 2053, 1, 0,
+ 0, 0, 226, 228, 3, 2, 1, 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, 232, 1, 0, 0, 0, 231,
+ 229, 1, 0, 0, 0, 232, 233, 5, 0, 0, 1, 233, 1, 1, 0, 0, 0, 234, 236, 5,
+ 1, 0, 0, 235, 234, 1, 0, 0, 0, 236, 239, 1, 0, 0, 0, 237, 235, 1, 0, 0,
+ 0, 237, 238, 1, 0, 0, 0, 238, 240, 1, 0, 0, 0, 239, 237, 1, 0, 0, 0, 240,
+ 249, 3, 4, 2, 0, 241, 243, 5, 1, 0, 0, 242, 241, 1, 0, 0, 0, 243, 244,
+ 1, 0, 0, 0, 244, 242, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 246, 1, 0,
+ 0, 0, 246, 248, 3, 4, 2, 0, 247, 242, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0,
+ 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 255, 1, 0, 0, 0, 251,
+ 249, 1, 0, 0, 0, 252, 254, 5, 1, 0, 0, 253, 252, 1, 0, 0, 0, 254, 257,
+ 1, 0, 0, 0, 255, 253, 1, 0, 0, 0, 255, 256, 1, 0, 0, 0, 256, 3, 1, 0, 0,
+ 0, 257, 255, 1, 0, 0, 0, 258, 261, 5, 71, 0, 0, 259, 260, 5, 114, 0, 0,
+ 260, 262, 5, 111, 0, 0, 261, 259, 1, 0, 0, 0, 261, 262, 1, 0, 0, 0, 262,
+ 264, 1, 0, 0, 0, 263, 258, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 289,
+ 1, 0, 0, 0, 265, 290, 3, 6, 3, 0, 266, 290, 3, 8, 4, 0, 267, 290, 3, 10,
+ 5, 0, 268, 290, 3, 12, 6, 0, 269, 290, 3, 14, 7, 0, 270, 290, 3, 22, 11,
+ 0, 271, 290, 3, 26, 13, 0, 272, 290, 3, 42, 21, 0, 273, 290, 3, 44, 22,
+ 0, 274, 290, 3, 46, 23, 0, 275, 290, 3, 56, 28, 0, 276, 290, 3, 58, 29,
+ 0, 277, 290, 3, 60, 30, 0, 278, 290, 3, 62, 31, 0, 279, 290, 3, 74, 37,
+ 0, 280, 290, 3, 80, 40, 0, 281, 290, 3, 84, 42, 0, 282, 290, 3, 20, 10,
+ 0, 283, 290, 3, 16, 8, 0, 284, 290, 3, 18, 9, 0, 285, 290, 3, 86, 43, 0,
+ 286, 290, 3, 108, 54, 0, 287, 290, 3, 112, 56, 0, 288, 290, 3, 116, 58,
+ 0, 289, 265, 1, 0, 0, 0, 289, 266, 1, 0, 0, 0, 289, 267, 1, 0, 0, 0, 289,
+ 268, 1, 0, 0, 0, 289, 269, 1, 0, 0, 0, 289, 270, 1, 0, 0, 0, 289, 271,
+ 1, 0, 0, 0, 289, 272, 1, 0, 0, 0, 289, 273, 1, 0, 0, 0, 289, 274, 1, 0,
+ 0, 0, 289, 275, 1, 0, 0, 0, 289, 276, 1, 0, 0, 0, 289, 277, 1, 0, 0, 0,
+ 289, 278, 1, 0, 0, 0, 289, 279, 1, 0, 0, 0, 289, 280, 1, 0, 0, 0, 289,
+ 281, 1, 0, 0, 0, 289, 282, 1, 0, 0, 0, 289, 283, 1, 0, 0, 0, 289, 284,
+ 1, 0, 0, 0, 289, 285, 1, 0, 0, 0, 289, 286, 1, 0, 0, 0, 289, 287, 1, 0,
+ 0, 0, 289, 288, 1, 0, 0, 0, 290, 5, 1, 0, 0, 0, 291, 292, 5, 30, 0, 0,
+ 292, 296, 5, 132, 0, 0, 293, 294, 3, 182, 91, 0, 294, 295, 5, 2, 0, 0,
+ 295, 297, 1, 0, 0, 0, 296, 293, 1, 0, 0, 0, 296, 297, 1, 0, 0, 0, 297,
+ 298, 1, 0, 0, 0, 298, 321, 3, 184, 92, 0, 299, 309, 5, 121, 0, 0, 300,
+ 301, 5, 136, 0, 0, 301, 310, 3, 184, 92, 0, 302, 304, 5, 46, 0, 0, 303,
+ 302, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 305, 1, 0, 0, 0, 305, 306,
+ 3, 188, 94, 0, 306, 307, 5, 136, 0, 0, 307, 308, 3, 188, 94, 0, 308, 310,
+ 1, 0, 0, 0, 309, 300, 1, 0, 0, 0, 309, 303, 1, 0, 0, 0, 310, 322, 1, 0,
+ 0, 0, 311, 313, 5, 27, 0, 0, 312, 314, 5, 46, 0, 0, 313, 312, 1, 0, 0,
+ 0, 313, 314, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 322, 3, 28, 14, 0,
+ 316, 318, 5, 63, 0, 0, 317, 319, 5, 46, 0, 0, 318, 317, 1, 0, 0, 0, 318,
+ 319, 1, 0, 0, 0, 319, 320, 1, 0, 0, 0, 320, 322, 3, 188, 94, 0, 321, 299,
+ 1, 0, 0, 0, 321, 311, 1, 0, 0, 0, 321, 316, 1, 0, 0, 0, 322, 7, 1, 0, 0,
+ 0, 323, 331, 5, 31, 0, 0, 324, 332, 3, 182, 91, 0, 325, 326, 3, 182, 91,
+ 0, 326, 327, 5, 2, 0, 0, 327, 329, 1, 0, 0, 0, 328, 325, 1, 0, 0, 0, 328,
+ 329, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 332, 3, 186, 93, 0, 331, 324,
+ 1, 0, 0, 0, 331, 328, 1, 0, 0, 0, 331, 332, 1, 0, 0, 0, 332, 9, 1, 0, 0,
+ 0, 333, 335, 5, 35, 0, 0, 334, 336, 5, 55, 0, 0, 335, 334, 1, 0, 0, 0,
+ 335, 336, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 3, 64, 32, 0, 338,
+ 339, 5, 33, 0, 0, 339, 340, 3, 182, 91, 0, 340, 11, 1, 0, 0, 0, 341, 343,
+ 5, 38, 0, 0, 342, 344, 7, 0, 0, 0, 343, 342, 1, 0, 0, 0, 343, 344, 1, 0,
+ 0, 0, 344, 349, 1, 0, 0, 0, 345, 347, 5, 137, 0, 0, 346, 348, 3, 208, 104,
+ 0, 347, 346, 1, 0, 0, 0, 347, 348, 1, 0, 0, 0, 348, 350, 1, 0, 0, 0, 349,
+ 345, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 13, 1, 0, 0, 0, 351, 353, 7,
+ 1, 0, 0, 352, 354, 5, 137, 0, 0, 353, 352, 1, 0, 0, 0, 353, 354, 1, 0,
+ 0, 0, 354, 15, 1, 0, 0, 0, 355, 357, 5, 126, 0, 0, 356, 358, 5, 137, 0,
+ 0, 357, 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 364, 1, 0, 0, 0, 359,
+ 361, 5, 136, 0, 0, 360, 362, 5, 129, 0, 0, 361, 360, 1, 0, 0, 0, 361, 362,
+ 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 365, 3, 204, 102, 0, 364, 359, 1,
+ 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 17, 1, 0, 0, 0, 366, 367, 5, 129, 0,
+ 0, 367, 368, 3, 204, 102, 0, 368, 19, 1, 0, 0, 0, 369, 371, 5, 120, 0,
+ 0, 370, 372, 5, 129, 0, 0, 371, 370, 1, 0, 0, 0, 371, 372, 1, 0, 0, 0,
+ 372, 373, 1, 0, 0, 0, 373, 374, 3, 204, 102, 0, 374, 21, 1, 0, 0, 0, 375,
+ 377, 5, 50, 0, 0, 376, 378, 5, 140, 0, 0, 377, 376, 1, 0, 0, 0, 377, 378,
+ 1, 0, 0, 0, 378, 379, 1, 0, 0, 0, 379, 383, 5, 84, 0, 0, 380, 381, 5, 80,
+ 0, 0, 381, 382, 5, 102, 0, 0, 382, 384, 5, 70, 0, 0, 383, 380, 1, 0, 0,
+ 0, 383, 384, 1, 0, 0, 0, 384, 388, 1, 0, 0, 0, 385, 386, 3, 182, 91, 0,
+ 386, 387, 5, 2, 0, 0, 387, 389, 1, 0, 0, 0, 388, 385, 1, 0, 0, 0, 388,
+ 389, 1, 0, 0, 0, 389, 390, 1, 0, 0, 0, 390, 391, 3, 194, 97, 0, 391, 392,
+ 5, 107, 0, 0, 392, 393, 3, 184, 92, 0, 393, 394, 5, 3, 0, 0, 394, 399,
+ 3, 24, 12, 0, 395, 396, 5, 5, 0, 0, 396, 398, 3, 24, 12, 0, 397, 395, 1,
+ 0, 0, 0, 398, 401, 1, 0, 0, 0, 399, 397, 1, 0, 0, 0, 399, 400, 1, 0, 0,
+ 0, 400, 402, 1, 0, 0, 0, 401, 399, 1, 0, 0, 0, 402, 405, 5, 4, 0, 0, 403,
+ 404, 5, 148, 0, 0, 404, 406, 3, 64, 32, 0, 405, 403, 1, 0, 0, 0, 405, 406,
+ 1, 0, 0, 0, 406, 23, 1, 0, 0, 0, 407, 410, 3, 188, 94, 0, 408, 410, 3,
+ 64, 32, 0, 409, 407, 1, 0, 0, 0, 409, 408, 1, 0, 0, 0, 410, 413, 1, 0,
+ 0, 0, 411, 412, 5, 45, 0, 0, 412, 414, 3, 190, 95, 0, 413, 411, 1, 0, 0,
+ 0, 413, 414, 1, 0, 0, 0, 414, 416, 1, 0, 0, 0, 415, 417, 3, 142, 71, 0,
+ 416, 415, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 25, 1, 0, 0, 0, 418, 420,
+ 5, 50, 0, 0, 419, 421, 7, 2, 0, 0, 420, 419, 1, 0, 0, 0, 420, 421, 1, 0,
+ 0, 0, 421, 422, 1, 0, 0, 0, 422, 426, 5, 132, 0, 0, 423, 424, 5, 80, 0,
+ 0, 424, 425, 5, 102, 0, 0, 425, 427, 5, 70, 0, 0, 426, 423, 1, 0, 0, 0,
+ 426, 427, 1, 0, 0, 0, 427, 431, 1, 0, 0, 0, 428, 429, 3, 182, 91, 0, 429,
+ 430, 5, 2, 0, 0, 430, 432, 1, 0, 0, 0, 431, 428, 1, 0, 0, 0, 431, 432,
+ 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 457, 3, 184, 92, 0, 434, 435, 5,
+ 3, 0, 0, 435, 440, 3, 28, 14, 0, 436, 437, 5, 5, 0, 0, 437, 439, 3, 28,
+ 14, 0, 438, 436, 1, 0, 0, 0, 439, 442, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0,
+ 440, 438, 1, 0, 0, 0, 441, 447, 1, 0, 0, 0, 442, 440, 1, 0, 0, 0, 443,
+ 444, 5, 5, 0, 0, 444, 446, 3, 36, 18, 0, 445, 443, 1, 0, 0, 0, 446, 449,
+ 1, 0, 0, 0, 447, 445, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 450, 1, 0,
+ 0, 0, 449, 447, 1, 0, 0, 0, 450, 453, 5, 4, 0, 0, 451, 452, 5, 150, 0,
+ 0, 452, 454, 5, 185, 0, 0, 453, 451, 1, 0, 0, 0, 453, 454, 1, 0, 0, 0,
+ 454, 458, 1, 0, 0, 0, 455, 456, 5, 33, 0, 0, 456, 458, 3, 86, 43, 0, 457,
+ 434, 1, 0, 0, 0, 457, 455, 1, 0, 0, 0, 458, 27, 1, 0, 0, 0, 459, 461, 3,
+ 188, 94, 0, 460, 462, 3, 30, 15, 0, 461, 460, 1, 0, 0, 0, 461, 462, 1,
+ 0, 0, 0, 462, 466, 1, 0, 0, 0, 463, 465, 3, 32, 16, 0, 464, 463, 1, 0,
+ 0, 0, 465, 468, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0,
+ 467, 29, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 469, 471, 3, 178, 89, 0, 470,
+ 469, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 472, 470,
+ 1, 0, 0, 0, 473, 484, 1, 0, 0, 0, 474, 475, 5, 3, 0, 0, 475, 476, 3, 34,
+ 17, 0, 476, 477, 5, 4, 0, 0, 477, 485, 1, 0, 0, 0, 478, 479, 5, 3, 0, 0,
+ 479, 480, 3, 34, 17, 0, 480, 481, 5, 5, 0, 0, 481, 482, 3, 34, 17, 0, 482,
+ 483, 5, 4, 0, 0, 483, 485, 1, 0, 0, 0, 484, 474, 1, 0, 0, 0, 484, 478,
+ 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 31, 1, 0, 0, 0, 486, 487, 5, 49,
+ 0, 0, 487, 489, 3, 178, 89, 0, 488, 486, 1, 0, 0, 0, 488, 489, 1, 0, 0,
+ 0, 489, 539, 1, 0, 0, 0, 490, 491, 5, 113, 0, 0, 491, 493, 5, 95, 0, 0,
+ 492, 494, 3, 142, 71, 0, 493, 492, 1, 0, 0, 0, 493, 494, 1, 0, 0, 0, 494,
+ 496, 1, 0, 0, 0, 495, 497, 3, 40, 20, 0, 496, 495, 1, 0, 0, 0, 496, 497,
+ 1, 0, 0, 0, 497, 499, 1, 0, 0, 0, 498, 500, 5, 36, 0, 0, 499, 498, 1, 0,
+ 0, 0, 499, 500, 1, 0, 0, 0, 500, 540, 1, 0, 0, 0, 501, 503, 5, 102, 0,
+ 0, 502, 501, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 504, 1, 0, 0, 0, 504,
+ 507, 5, 104, 0, 0, 505, 507, 5, 140, 0, 0, 506, 502, 1, 0, 0, 0, 506, 505,
+ 1, 0, 0, 0, 507, 509, 1, 0, 0, 0, 508, 510, 3, 40, 20, 0, 509, 508, 1,
+ 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 540, 1, 0, 0, 0, 511, 512, 5, 44, 0,
+ 0, 512, 513, 5, 3, 0, 0, 513, 514, 3, 64, 32, 0, 514, 515, 5, 4, 0, 0,
+ 515, 540, 1, 0, 0, 0, 516, 523, 5, 56, 0, 0, 517, 524, 3, 34, 17, 0, 518,
+ 524, 3, 68, 34, 0, 519, 520, 5, 3, 0, 0, 520, 521, 3, 64, 32, 0, 521, 522,
+ 5, 4, 0, 0, 522, 524, 1, 0, 0, 0, 523, 517, 1, 0, 0, 0, 523, 518, 1, 0,
+ 0, 0, 523, 519, 1, 0, 0, 0, 524, 540, 1, 0, 0, 0, 525, 526, 5, 45, 0, 0,
+ 526, 540, 3, 190, 95, 0, 527, 540, 3, 38, 19, 0, 528, 529, 5, 169, 0, 0,
+ 529, 531, 5, 170, 0, 0, 530, 528, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531,
+ 532, 1, 0, 0, 0, 532, 533, 5, 33, 0, 0, 533, 534, 5, 3, 0, 0, 534, 535,
+ 3, 64, 32, 0, 535, 537, 5, 4, 0, 0, 536, 538, 7, 3, 0, 0, 537, 536, 1,
+ 0, 0, 0, 537, 538, 1, 0, 0, 0, 538, 540, 1, 0, 0, 0, 539, 490, 1, 0, 0,
+ 0, 539, 506, 1, 0, 0, 0, 539, 511, 1, 0, 0, 0, 539, 516, 1, 0, 0, 0, 539,
+ 525, 1, 0, 0, 0, 539, 527, 1, 0, 0, 0, 539, 530, 1, 0, 0, 0, 540, 33, 1,
+ 0, 0, 0, 541, 543, 7, 4, 0, 0, 542, 541, 1, 0, 0, 0, 542, 543, 1, 0, 0,
+ 0, 543, 544, 1, 0, 0, 0, 544, 545, 5, 186, 0, 0, 545, 35, 1, 0, 0, 0, 546,
+ 547, 5, 49, 0, 0, 547, 549, 3, 178, 89, 0, 548, 546, 1, 0, 0, 0, 548, 549,
+ 1, 0, 0, 0, 549, 587, 1, 0, 0, 0, 550, 551, 5, 113, 0, 0, 551, 554, 5,
+ 95, 0, 0, 552, 554, 5, 140, 0, 0, 553, 550, 1, 0, 0, 0, 553, 552, 1, 0,
+ 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 5, 3, 0, 0, 556, 561, 3, 24, 12,
+ 0, 557, 558, 5, 5, 0, 0, 558, 560, 3, 24, 12, 0, 559, 557, 1, 0, 0, 0,
+ 560, 563, 1, 0, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562,
+ 564, 1, 0, 0, 0, 563, 561, 1, 0, 0, 0, 564, 566, 5, 4, 0, 0, 565, 567,
+ 3, 40, 20, 0, 566, 565, 1, 0, 0, 0, 566, 567, 1, 0, 0, 0, 567, 588, 1,
+ 0, 0, 0, 568, 569, 5, 44, 0, 0, 569, 570, 5, 3, 0, 0, 570, 571, 3, 64,
+ 32, 0, 571, 572, 5, 4, 0, 0, 572, 588, 1, 0, 0, 0, 573, 574, 5, 74, 0,
+ 0, 574, 575, 5, 95, 0, 0, 575, 576, 5, 3, 0, 0, 576, 581, 3, 188, 94, 0,
+ 577, 578, 5, 5, 0, 0, 578, 580, 3, 188, 94, 0, 579, 577, 1, 0, 0, 0, 580,
+ 583, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 584,
+ 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 584, 585, 5, 4, 0, 0, 585, 586, 3, 38,
+ 19, 0, 586, 588, 1, 0, 0, 0, 587, 553, 1, 0, 0, 0, 587, 568, 1, 0, 0, 0,
+ 587, 573, 1, 0, 0, 0, 588, 37, 1, 0, 0, 0, 589, 590, 5, 117, 0, 0, 590,
+ 602, 3, 192, 96, 0, 591, 592, 5, 3, 0, 0, 592, 597, 3, 188, 94, 0, 593,
+ 594, 5, 5, 0, 0, 594, 596, 3, 188, 94, 0, 595, 593, 1, 0, 0, 0, 596, 599,
+ 1, 0, 0, 0, 597, 595, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 600, 1, 0,
+ 0, 0, 599, 597, 1, 0, 0, 0, 600, 601, 5, 4, 0, 0, 601, 603, 1, 0, 0, 0,
+ 602, 591, 1, 0, 0, 0, 602, 603, 1, 0, 0, 0, 603, 618, 1, 0, 0, 0, 604,
+ 605, 5, 107, 0, 0, 605, 612, 7, 5, 0, 0, 606, 607, 5, 131, 0, 0, 607, 613,
+ 7, 6, 0, 0, 608, 613, 5, 41, 0, 0, 609, 613, 5, 123, 0, 0, 610, 611, 5,
+ 101, 0, 0, 611, 613, 5, 26, 0, 0, 612, 606, 1, 0, 0, 0, 612, 608, 1, 0,
+ 0, 0, 612, 609, 1, 0, 0, 0, 612, 610, 1, 0, 0, 0, 613, 617, 1, 0, 0, 0,
+ 614, 615, 5, 99, 0, 0, 615, 617, 3, 178, 89, 0, 616, 604, 1, 0, 0, 0, 616,
+ 614, 1, 0, 0, 0, 617, 620, 1, 0, 0, 0, 618, 616, 1, 0, 0, 0, 618, 619,
+ 1, 0, 0, 0, 619, 629, 1, 0, 0, 0, 620, 618, 1, 0, 0, 0, 621, 623, 5, 102,
+ 0, 0, 622, 621, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 624, 1, 0, 0, 0,
+ 624, 627, 5, 57, 0, 0, 625, 626, 5, 86, 0, 0, 626, 628, 7, 7, 0, 0, 627,
+ 625, 1, 0, 0, 0, 627, 628, 1, 0, 0, 0, 628, 630, 1, 0, 0, 0, 629, 622,
+ 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 39, 1, 0, 0, 0, 631, 632, 5, 107,
+ 0, 0, 632, 633, 5, 48, 0, 0, 633, 634, 7, 8, 0, 0, 634, 41, 1, 0, 0, 0,
+ 635, 637, 5, 50, 0, 0, 636, 638, 7, 2, 0, 0, 637, 636, 1, 0, 0, 0, 637,
+ 638, 1, 0, 0, 0, 638, 639, 1, 0, 0, 0, 639, 643, 5, 138, 0, 0, 640, 641,
+ 5, 80, 0, 0, 641, 642, 5, 102, 0, 0, 642, 644, 5, 70, 0, 0, 643, 640, 1,
+ 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 648, 1, 0, 0, 0, 645, 646, 3, 182,
+ 91, 0, 646, 647, 5, 2, 0, 0, 647, 649, 1, 0, 0, 0, 648, 645, 1, 0, 0, 0,
+ 648, 649, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 655, 3, 196, 98, 0, 651,
+ 656, 5, 37, 0, 0, 652, 656, 5, 28, 0, 0, 653, 654, 5, 89, 0, 0, 654, 656,
+ 5, 105, 0, 0, 655, 651, 1, 0, 0, 0, 655, 652, 1, 0, 0, 0, 655, 653, 1,
+ 0, 0, 0, 655, 656, 1, 0, 0, 0, 656, 671, 1, 0, 0, 0, 657, 672, 5, 59, 0,
+ 0, 658, 672, 5, 88, 0, 0, 659, 669, 5, 141, 0, 0, 660, 661, 5, 105, 0,
+ 0, 661, 666, 3, 188, 94, 0, 662, 663, 5, 5, 0, 0, 663, 665, 3, 188, 94,
+ 0, 664, 662, 1, 0, 0, 0, 665, 668, 1, 0, 0, 0, 666, 664, 1, 0, 0, 0, 666,
+ 667, 1, 0, 0, 0, 667, 670, 1, 0, 0, 0, 668, 666, 1, 0, 0, 0, 669, 660,
+ 1, 0, 0, 0, 669, 670, 1, 0, 0, 0, 670, 672, 1, 0, 0, 0, 671, 657, 1, 0,
+ 0, 0, 671, 658, 1, 0, 0, 0, 671, 659, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0,
+ 673, 674, 5, 107, 0, 0, 674, 678, 3, 184, 92, 0, 675, 676, 5, 73, 0, 0,
+ 676, 677, 5, 64, 0, 0, 677, 679, 5, 127, 0, 0, 678, 675, 1, 0, 0, 0, 678,
+ 679, 1, 0, 0, 0, 679, 682, 1, 0, 0, 0, 680, 681, 5, 147, 0, 0, 681, 683,
+ 3, 64, 32, 0, 682, 680, 1, 0, 0, 0, 682, 683, 1, 0, 0, 0, 683, 684, 1,
+ 0, 0, 0, 684, 693, 5, 38, 0, 0, 685, 690, 3, 108, 54, 0, 686, 690, 3, 74,
+ 37, 0, 687, 690, 3, 56, 28, 0, 688, 690, 3, 86, 43, 0, 689, 685, 1, 0,
+ 0, 0, 689, 686, 1, 0, 0, 0, 689, 687, 1, 0, 0, 0, 689, 688, 1, 0, 0, 0,
+ 690, 691, 1, 0, 0, 0, 691, 692, 5, 1, 0, 0, 692, 694, 1, 0, 0, 0, 693,
+ 689, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 693, 1, 0, 0, 0, 695, 696,
+ 1, 0, 0, 0, 696, 697, 1, 0, 0, 0, 697, 698, 5, 66, 0, 0, 698, 43, 1, 0,
+ 0, 0, 699, 701, 5, 50, 0, 0, 700, 702, 7, 2, 0, 0, 701, 700, 1, 0, 0, 0,
+ 701, 702, 1, 0, 0, 0, 702, 703, 1, 0, 0, 0, 703, 707, 5, 145, 0, 0, 704,
+ 705, 5, 80, 0, 0, 705, 706, 5, 102, 0, 0, 706, 708, 5, 70, 0, 0, 707, 704,
+ 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 712, 1, 0, 0, 0, 709, 710, 3, 182,
+ 91, 0, 710, 711, 5, 2, 0, 0, 711, 713, 1, 0, 0, 0, 712, 709, 1, 0, 0, 0,
+ 712, 713, 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 726, 3, 198, 99, 0, 715,
+ 716, 5, 3, 0, 0, 716, 721, 3, 188, 94, 0, 717, 718, 5, 5, 0, 0, 718, 720,
+ 3, 188, 94, 0, 719, 717, 1, 0, 0, 0, 720, 723, 1, 0, 0, 0, 721, 719, 1,
+ 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 724, 1, 0, 0, 0, 723, 721, 1, 0, 0,
+ 0, 724, 725, 5, 4, 0, 0, 725, 727, 1, 0, 0, 0, 726, 715, 1, 0, 0, 0, 726,
+ 727, 1, 0, 0, 0, 727, 728, 1, 0, 0, 0, 728, 729, 5, 33, 0, 0, 729, 730,
+ 3, 86, 43, 0, 730, 45, 1, 0, 0, 0, 731, 732, 5, 50, 0, 0, 732, 733, 5,
+ 146, 0, 0, 733, 737, 5, 132, 0, 0, 734, 735, 5, 80, 0, 0, 735, 736, 5,
+ 102, 0, 0, 736, 738, 5, 70, 0, 0, 737, 734, 1, 0, 0, 0, 737, 738, 1, 0,
+ 0, 0, 738, 742, 1, 0, 0, 0, 739, 740, 3, 182, 91, 0, 740, 741, 5, 2, 0,
+ 0, 741, 743, 1, 0, 0, 0, 742, 739, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743,
+ 744, 1, 0, 0, 0, 744, 745, 3, 184, 92, 0, 745, 746, 5, 142, 0, 0, 746,
+ 758, 3, 200, 100, 0, 747, 748, 5, 3, 0, 0, 748, 753, 3, 172, 86, 0, 749,
+ 750, 5, 5, 0, 0, 750, 752, 3, 172, 86, 0, 751, 749, 1, 0, 0, 0, 752, 755,
+ 1, 0, 0, 0, 753, 751, 1, 0, 0, 0, 753, 754, 1, 0, 0, 0, 754, 756, 1, 0,
+ 0, 0, 755, 753, 1, 0, 0, 0, 756, 757, 5, 4, 0, 0, 757, 759, 1, 0, 0, 0,
+ 758, 747, 1, 0, 0, 0, 758, 759, 1, 0, 0, 0, 759, 47, 1, 0, 0, 0, 760, 762,
+ 5, 149, 0, 0, 761, 763, 5, 116, 0, 0, 762, 761, 1, 0, 0, 0, 762, 763, 1,
+ 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 765, 3, 50, 25, 0, 765, 766, 5, 33,
+ 0, 0, 766, 767, 5, 3, 0, 0, 767, 768, 3, 86, 43, 0, 768, 778, 5, 4, 0,
+ 0, 769, 770, 5, 5, 0, 0, 770, 771, 3, 50, 25, 0, 771, 772, 5, 33, 0, 0,
+ 772, 773, 5, 3, 0, 0, 773, 774, 3, 86, 43, 0, 774, 775, 5, 4, 0, 0, 775,
+ 777, 1, 0, 0, 0, 776, 769, 1, 0, 0, 0, 777, 780, 1, 0, 0, 0, 778, 776,
+ 1, 0, 0, 0, 778, 779, 1, 0, 0, 0, 779, 49, 1, 0, 0, 0, 780, 778, 1, 0,
+ 0, 0, 781, 793, 3, 184, 92, 0, 782, 783, 5, 3, 0, 0, 783, 788, 3, 188,
+ 94, 0, 784, 785, 5, 5, 0, 0, 785, 787, 3, 188, 94, 0, 786, 784, 1, 0, 0,
+ 0, 787, 790, 1, 0, 0, 0, 788, 786, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789,
+ 791, 1, 0, 0, 0, 790, 788, 1, 0, 0, 0, 791, 792, 5, 4, 0, 0, 792, 794,
+ 1, 0, 0, 0, 793, 782, 1, 0, 0, 0, 793, 794, 1, 0, 0, 0, 794, 51, 1, 0,
+ 0, 0, 795, 796, 3, 50, 25, 0, 796, 797, 5, 33, 0, 0, 797, 798, 5, 3, 0,
+ 0, 798, 799, 3, 164, 82, 0, 799, 801, 5, 139, 0, 0, 800, 802, 5, 29, 0,
+ 0, 801, 800, 1, 0, 0, 0, 801, 802, 1, 0, 0, 0, 802, 803, 1, 0, 0, 0, 803,
+ 804, 3, 166, 83, 0, 804, 805, 5, 4, 0, 0, 805, 53, 1, 0, 0, 0, 806, 818,
+ 3, 184, 92, 0, 807, 808, 5, 3, 0, 0, 808, 813, 3, 188, 94, 0, 809, 810,
+ 5, 5, 0, 0, 810, 812, 3, 188, 94, 0, 811, 809, 1, 0, 0, 0, 812, 815, 1,
+ 0, 0, 0, 813, 811, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 816, 1, 0, 0,
+ 0, 815, 813, 1, 0, 0, 0, 816, 817, 5, 4, 0, 0, 817, 819, 1, 0, 0, 0, 818,
+ 807, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 820, 1, 0, 0, 0, 820, 821,
+ 5, 33, 0, 0, 821, 822, 5, 3, 0, 0, 822, 823, 3, 86, 43, 0, 823, 824, 5,
+ 4, 0, 0, 824, 55, 1, 0, 0, 0, 825, 827, 3, 48, 24, 0, 826, 825, 1, 0, 0,
+ 0, 826, 827, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 829, 5, 59, 0, 0, 829,
+ 830, 5, 75, 0, 0, 830, 833, 3, 114, 57, 0, 831, 832, 5, 148, 0, 0, 832,
+ 834, 3, 64, 32, 0, 833, 831, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 836,
+ 1, 0, 0, 0, 835, 837, 3, 76, 38, 0, 836, 835, 1, 0, 0, 0, 836, 837, 1,
+ 0, 0, 0, 837, 57, 1, 0, 0, 0, 838, 840, 3, 48, 24, 0, 839, 838, 1, 0, 0,
+ 0, 839, 840, 1, 0, 0, 0, 840, 841, 1, 0, 0, 0, 841, 842, 5, 59, 0, 0, 842,
+ 843, 5, 75, 0, 0, 843, 846, 3, 114, 57, 0, 844, 845, 5, 148, 0, 0, 845,
+ 847, 3, 64, 32, 0, 846, 844, 1, 0, 0, 0, 846, 847, 1, 0, 0, 0, 847, 849,
+ 1, 0, 0, 0, 848, 850, 3, 76, 38, 0, 849, 848, 1, 0, 0, 0, 849, 850, 1,
+ 0, 0, 0, 850, 855, 1, 0, 0, 0, 851, 853, 3, 136, 68, 0, 852, 851, 1, 0,
+ 0, 0, 852, 853, 1, 0, 0, 0, 853, 854, 1, 0, 0, 0, 854, 856, 3, 138, 69,
+ 0, 855, 852, 1, 0, 0, 0, 855, 856, 1, 0, 0, 0, 856, 59, 1, 0, 0, 0, 857,
+ 859, 5, 61, 0, 0, 858, 860, 5, 55, 0, 0, 859, 858, 1, 0, 0, 0, 859, 860,
+ 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 862, 3, 182, 91, 0, 862, 61, 1,
+ 0, 0, 0, 863, 864, 5, 63, 0, 0, 864, 867, 7, 9, 0, 0, 865, 866, 5, 80,
+ 0, 0, 866, 868, 5, 70, 0, 0, 867, 865, 1, 0, 0, 0, 867, 868, 1, 0, 0, 0,
+ 868, 872, 1, 0, 0, 0, 869, 870, 3, 182, 91, 0, 870, 871, 5, 2, 0, 0, 871,
+ 873, 1, 0, 0, 0, 872, 869, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874,
+ 1, 0, 0, 0, 874, 875, 3, 224, 112, 0, 875, 63, 1, 0, 0, 0, 876, 877, 6,
+ 32, -1, 0, 877, 965, 3, 68, 34, 0, 878, 965, 5, 187, 0, 0, 879, 880, 3,
+ 182, 91, 0, 880, 881, 5, 2, 0, 0, 881, 883, 1, 0, 0, 0, 882, 879, 1, 0,
+ 0, 0, 882, 883, 1, 0, 0, 0, 883, 884, 1, 0, 0, 0, 884, 885, 3, 184, 92,
+ 0, 885, 886, 5, 2, 0, 0, 886, 888, 1, 0, 0, 0, 887, 882, 1, 0, 0, 0, 887,
+ 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 965, 3, 188, 94, 0, 890, 891,
+ 3, 168, 84, 0, 891, 892, 3, 64, 32, 21, 892, 965, 1, 0, 0, 0, 893, 894,
+ 3, 180, 90, 0, 894, 907, 5, 3, 0, 0, 895, 897, 5, 62, 0, 0, 896, 895, 1,
+ 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 898, 1, 0, 0, 0, 898, 903, 3, 64, 32,
+ 0, 899, 900, 5, 5, 0, 0, 900, 902, 3, 64, 32, 0, 901, 899, 1, 0, 0, 0,
+ 902, 905, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 903, 904, 1, 0, 0, 0, 904,
+ 908, 1, 0, 0, 0, 905, 903, 1, 0, 0, 0, 906, 908, 5, 7, 0, 0, 907, 896,
+ 1, 0, 0, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 909, 1, 0,
+ 0, 0, 909, 911, 5, 4, 0, 0, 910, 912, 3, 118, 59, 0, 911, 910, 1, 0, 0,
+ 0, 911, 912, 1, 0, 0, 0, 912, 914, 1, 0, 0, 0, 913, 915, 3, 122, 61, 0,
+ 914, 913, 1, 0, 0, 0, 914, 915, 1, 0, 0, 0, 915, 965, 1, 0, 0, 0, 916,
+ 917, 5, 3, 0, 0, 917, 922, 3, 64, 32, 0, 918, 919, 5, 5, 0, 0, 919, 921,
+ 3, 64, 32, 0, 920, 918, 1, 0, 0, 0, 921, 924, 1, 0, 0, 0, 922, 920, 1,
+ 0, 0, 0, 922, 923, 1, 0, 0, 0, 923, 925, 1, 0, 0, 0, 924, 922, 1, 0, 0,
+ 0, 925, 926, 5, 4, 0, 0, 926, 965, 1, 0, 0, 0, 927, 928, 5, 43, 0, 0, 928,
+ 929, 5, 3, 0, 0, 929, 930, 3, 64, 32, 0, 930, 931, 5, 33, 0, 0, 931, 932,
+ 3, 30, 15, 0, 932, 933, 5, 4, 0, 0, 933, 965, 1, 0, 0, 0, 934, 936, 5,
+ 102, 0, 0, 935, 934, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 937, 1, 0,
+ 0, 0, 937, 939, 5, 70, 0, 0, 938, 935, 1, 0, 0, 0, 938, 939, 1, 0, 0, 0,
+ 939, 940, 1, 0, 0, 0, 940, 941, 5, 3, 0, 0, 941, 942, 3, 86, 43, 0, 942,
+ 943, 5, 4, 0, 0, 943, 965, 1, 0, 0, 0, 944, 946, 5, 42, 0, 0, 945, 947,
+ 3, 64, 32, 0, 946, 945, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 953, 1,
+ 0, 0, 0, 948, 949, 5, 147, 0, 0, 949, 950, 3, 64, 32, 0, 950, 951, 5, 135,
+ 0, 0, 951, 952, 3, 64, 32, 0, 952, 954, 1, 0, 0, 0, 953, 948, 1, 0, 0,
+ 0, 954, 955, 1, 0, 0, 0, 955, 953, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956,
+ 959, 1, 0, 0, 0, 957, 958, 5, 65, 0, 0, 958, 960, 3, 64, 32, 0, 959, 957,
+ 1, 0, 0, 0, 959, 960, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, 962, 5, 66,
+ 0, 0, 962, 965, 1, 0, 0, 0, 963, 965, 3, 66, 33, 0, 964, 876, 1, 0, 0,
+ 0, 964, 878, 1, 0, 0, 0, 964, 887, 1, 0, 0, 0, 964, 890, 1, 0, 0, 0, 964,
+ 893, 1, 0, 0, 0, 964, 916, 1, 0, 0, 0, 964, 927, 1, 0, 0, 0, 964, 938,
+ 1, 0, 0, 0, 964, 944, 1, 0, 0, 0, 964, 963, 1, 0, 0, 0, 965, 1085, 1, 0,
+ 0, 0, 966, 967, 10, 20, 0, 0, 967, 968, 5, 11, 0, 0, 968, 1084, 3, 64,
+ 32, 21, 969, 970, 10, 19, 0, 0, 970, 971, 7, 10, 0, 0, 971, 1084, 3, 64,
+ 32, 20, 972, 973, 10, 18, 0, 0, 973, 974, 7, 4, 0, 0, 974, 1084, 3, 64,
+ 32, 19, 975, 976, 10, 17, 0, 0, 976, 977, 7, 11, 0, 0, 977, 1084, 3, 64,
+ 32, 18, 978, 979, 10, 16, 0, 0, 979, 980, 7, 12, 0, 0, 980, 1084, 3, 64,
+ 32, 17, 981, 994, 10, 15, 0, 0, 982, 995, 5, 6, 0, 0, 983, 995, 5, 22,
+ 0, 0, 984, 995, 5, 23, 0, 0, 985, 995, 5, 24, 0, 0, 986, 995, 5, 92, 0,
+ 0, 987, 988, 5, 92, 0, 0, 988, 995, 5, 102, 0, 0, 989, 995, 5, 83, 0, 0,
+ 990, 995, 5, 97, 0, 0, 991, 995, 5, 77, 0, 0, 992, 995, 5, 99, 0, 0, 993,
+ 995, 5, 118, 0, 0, 994, 982, 1, 0, 0, 0, 994, 983, 1, 0, 0, 0, 994, 984,
+ 1, 0, 0, 0, 994, 985, 1, 0, 0, 0, 994, 986, 1, 0, 0, 0, 994, 987, 1, 0,
+ 0, 0, 994, 989, 1, 0, 0, 0, 994, 990, 1, 0, 0, 0, 994, 991, 1, 0, 0, 0,
+ 994, 992, 1, 0, 0, 0, 994, 993, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996,
+ 1084, 3, 64, 32, 16, 997, 998, 10, 14, 0, 0, 998, 999, 5, 32, 0, 0, 999,
+ 1084, 3, 64, 32, 15, 1000, 1001, 10, 13, 0, 0, 1001, 1002, 5, 108, 0, 0,
+ 1002, 1084, 3, 64, 32, 14, 1003, 1004, 10, 6, 0, 0, 1004, 1006, 5, 92,
+ 0, 0, 1005, 1007, 5, 102, 0, 0, 1006, 1005, 1, 0, 0, 0, 1006, 1007, 1,
+ 0, 0, 0, 1007, 1008, 1, 0, 0, 0, 1008, 1084, 3, 64, 32, 7, 1009, 1011,
+ 10, 5, 0, 0, 1010, 1012, 5, 102, 0, 0, 1011, 1010, 1, 0, 0, 0, 1011, 1012,
+ 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 5, 39, 0, 0, 1014, 1015,
+ 3, 64, 32, 0, 1015, 1016, 5, 32, 0, 0, 1016, 1017, 3, 64, 32, 6, 1017,
+ 1084, 1, 0, 0, 0, 1018, 1019, 10, 9, 0, 0, 1019, 1020, 5, 45, 0, 0, 1020,
+ 1084, 3, 190, 95, 0, 1021, 1023, 10, 8, 0, 0, 1022, 1024, 5, 102, 0, 0,
+ 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0,
+ 1025, 1026, 7, 13, 0, 0, 1026, 1029, 3, 64, 32, 0, 1027, 1028, 5, 67, 0,
+ 0, 1028, 1030, 3, 64, 32, 0, 1029, 1027, 1, 0, 0, 0, 1029, 1030, 1, 0,
+ 0, 0, 1030, 1084, 1, 0, 0, 0, 1031, 1036, 10, 7, 0, 0, 1032, 1037, 5, 93,
+ 0, 0, 1033, 1037, 5, 103, 0, 0, 1034, 1035, 5, 102, 0, 0, 1035, 1037, 5,
+ 104, 0, 0, 1036, 1032, 1, 0, 0, 0, 1036, 1033, 1, 0, 0, 0, 1036, 1034,
+ 1, 0, 0, 0, 1037, 1084, 1, 0, 0, 0, 1038, 1040, 10, 4, 0, 0, 1039, 1041,
+ 5, 102, 0, 0, 1040, 1039, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042,
+ 1, 0, 0, 0, 1042, 1081, 5, 83, 0, 0, 1043, 1053, 5, 3, 0, 0, 1044, 1054,
+ 3, 86, 43, 0, 1045, 1050, 3, 64, 32, 0, 1046, 1047, 5, 5, 0, 0, 1047, 1049,
+ 3, 64, 32, 0, 1048, 1046, 1, 0, 0, 0, 1049, 1052, 1, 0, 0, 0, 1050, 1048,
+ 1, 0, 0, 0, 1050, 1051, 1, 0, 0, 0, 1051, 1054, 1, 0, 0, 0, 1052, 1050,
+ 1, 0, 0, 0, 1053, 1044, 1, 0, 0, 0, 1053, 1045, 1, 0, 0, 0, 1053, 1054,
+ 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 1082, 5, 4, 0, 0, 1056, 1057,
+ 3, 182, 91, 0, 1057, 1058, 5, 2, 0, 0, 1058, 1060, 1, 0, 0, 0, 1059, 1056,
+ 1, 0, 0, 0, 1059, 1060, 1, 0, 0, 0, 1060, 1061, 1, 0, 0, 0, 1061, 1082,
+ 3, 184, 92, 0, 1062, 1063, 3, 182, 91, 0, 1063, 1064, 5, 2, 0, 0, 1064,
+ 1066, 1, 0, 0, 0, 1065, 1062, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066,
+ 1067, 1, 0, 0, 0, 1067, 1068, 3, 222, 111, 0, 1068, 1077, 5, 3, 0, 0, 1069,
+ 1074, 3, 64, 32, 0, 1070, 1071, 5, 5, 0, 0, 1071, 1073, 3, 64, 32, 0, 1072,
+ 1070, 1, 0, 0, 0, 1073, 1076, 1, 0, 0, 0, 1074, 1072, 1, 0, 0, 0, 1074,
+ 1075, 1, 0, 0, 0, 1075, 1078, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1077,
+ 1069, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079,
+ 1080, 5, 4, 0, 0, 1080, 1082, 1, 0, 0, 0, 1081, 1043, 1, 0, 0, 0, 1081,
+ 1059, 1, 0, 0, 0, 1081, 1065, 1, 0, 0, 0, 1082, 1084, 1, 0, 0, 0, 1083,
+ 966, 1, 0, 0, 0, 1083, 969, 1, 0, 0, 0, 1083, 972, 1, 0, 0, 0, 1083, 975,
+ 1, 0, 0, 0, 1083, 978, 1, 0, 0, 0, 1083, 981, 1, 0, 0, 0, 1083, 997, 1,
+ 0, 0, 0, 1083, 1000, 1, 0, 0, 0, 1083, 1003, 1, 0, 0, 0, 1083, 1009, 1,
+ 0, 0, 0, 1083, 1018, 1, 0, 0, 0, 1083, 1021, 1, 0, 0, 0, 1083, 1031, 1,
+ 0, 0, 0, 1083, 1038, 1, 0, 0, 0, 1084, 1087, 1, 0, 0, 0, 1085, 1083, 1,
+ 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 65, 1, 0, 0, 0, 1087, 1085, 1, 0,
+ 0, 0, 1088, 1089, 5, 115, 0, 0, 1089, 1094, 5, 3, 0, 0, 1090, 1095, 5,
+ 81, 0, 0, 1091, 1092, 7, 14, 0, 0, 1092, 1093, 5, 5, 0, 0, 1093, 1095,
+ 3, 170, 85, 0, 1094, 1090, 1, 0, 0, 0, 1094, 1091, 1, 0, 0, 0, 1095, 1096,
+ 1, 0, 0, 0, 1096, 1097, 5, 4, 0, 0, 1097, 67, 1, 0, 0, 0, 1098, 1099, 7,
+ 15, 0, 0, 1099, 69, 1, 0, 0, 0, 1100, 1101, 5, 3, 0, 0, 1101, 1106, 3,
+ 64, 32, 0, 1102, 1103, 5, 5, 0, 0, 1103, 1105, 3, 64, 32, 0, 1104, 1102,
+ 1, 0, 0, 0, 1105, 1108, 1, 0, 0, 0, 1106, 1104, 1, 0, 0, 0, 1106, 1107,
+ 1, 0, 0, 0, 1107, 1109, 1, 0, 0, 0, 1108, 1106, 1, 0, 0, 0, 1109, 1110,
+ 5, 4, 0, 0, 1110, 71, 1, 0, 0, 0, 1111, 1112, 5, 144, 0, 0, 1112, 1117,
+ 3, 70, 35, 0, 1113, 1114, 5, 5, 0, 0, 1114, 1116, 3, 70, 35, 0, 1115, 1113,
+ 1, 0, 0, 0, 1116, 1119, 1, 0, 0, 0, 1117, 1115, 1, 0, 0, 0, 1117, 1118,
+ 1, 0, 0, 0, 1118, 73, 1, 0, 0, 0, 1119, 1117, 1, 0, 0, 0, 1120, 1122, 3,
+ 48, 24, 0, 1121, 1120, 1, 0, 0, 0, 1121, 1122, 1, 0, 0, 0, 1122, 1128,
+ 1, 0, 0, 0, 1123, 1129, 5, 88, 0, 0, 1124, 1129, 5, 122, 0, 0, 1125, 1126,
+ 5, 88, 0, 0, 1126, 1127, 5, 108, 0, 0, 1127, 1129, 7, 8, 0, 0, 1128, 1123,
+ 1, 0, 0, 0, 1128, 1124, 1, 0, 0, 0, 1128, 1125, 1, 0, 0, 0, 1129, 1130,
+ 1, 0, 0, 0, 1130, 1134, 5, 91, 0, 0, 1131, 1132, 3, 182, 91, 0, 1132, 1133,
+ 5, 2, 0, 0, 1133, 1135, 1, 0, 0, 0, 1134, 1131, 1, 0, 0, 0, 1134, 1135,
+ 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1139, 3, 184, 92, 0, 1137, 1138,
+ 5, 33, 0, 0, 1138, 1140, 3, 206, 103, 0, 1139, 1137, 1, 0, 0, 0, 1139,
+ 1140, 1, 0, 0, 0, 1140, 1152, 1, 0, 0, 0, 1141, 1142, 5, 3, 0, 0, 1142,
+ 1147, 3, 188, 94, 0, 1143, 1144, 5, 5, 0, 0, 1144, 1146, 3, 188, 94, 0,
+ 1145, 1143, 1, 0, 0, 0, 1146, 1149, 1, 0, 0, 0, 1147, 1145, 1, 0, 0, 0,
+ 1147, 1148, 1, 0, 0, 0, 1148, 1150, 1, 0, 0, 0, 1149, 1147, 1, 0, 0, 0,
+ 1150, 1151, 5, 4, 0, 0, 1151, 1153, 1, 0, 0, 0, 1152, 1141, 1, 0, 0, 0,
+ 1152, 1153, 1, 0, 0, 0, 1153, 1163, 1, 0, 0, 0, 1154, 1157, 3, 72, 36,
+ 0, 1155, 1157, 3, 86, 43, 0, 1156, 1154, 1, 0, 0, 0, 1156, 1155, 1, 0,
+ 0, 0, 1157, 1159, 1, 0, 0, 0, 1158, 1160, 3, 78, 39, 0, 1159, 1158, 1,
+ 0, 0, 0, 1159, 1160, 1, 0, 0, 0, 1160, 1164, 1, 0, 0, 0, 1161, 1162, 5,
+ 56, 0, 0, 1162, 1164, 5, 144, 0, 0, 1163, 1156, 1, 0, 0, 0, 1163, 1161,
+ 1, 0, 0, 0, 1164, 1166, 1, 0, 0, 0, 1165, 1167, 3, 76, 38, 0, 1166, 1165,
+ 1, 0, 0, 0, 1166, 1167, 1, 0, 0, 0, 1167, 75, 1, 0, 0, 0, 1168, 1169, 5,
+ 124, 0, 0, 1169, 1174, 3, 100, 50, 0, 1170, 1171, 5, 5, 0, 0, 1171, 1173,
+ 3, 100, 50, 0, 1172, 1170, 1, 0, 0, 0, 1173, 1176, 1, 0, 0, 0, 1174, 1172,
+ 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 77, 1, 0, 0, 0, 1176, 1174, 1,
+ 0, 0, 0, 1177, 1178, 5, 107, 0, 0, 1178, 1193, 5, 48, 0, 0, 1179, 1180,
+ 5, 3, 0, 0, 1180, 1185, 3, 24, 12, 0, 1181, 1182, 5, 5, 0, 0, 1182, 1184,
+ 3, 24, 12, 0, 1183, 1181, 1, 0, 0, 0, 1184, 1187, 1, 0, 0, 0, 1185, 1183,
+ 1, 0, 0, 0, 1185, 1186, 1, 0, 0, 0, 1186, 1188, 1, 0, 0, 0, 1187, 1185,
+ 1, 0, 0, 0, 1188, 1191, 5, 4, 0, 0, 1189, 1190, 5, 148, 0, 0, 1190, 1192,
+ 3, 64, 32, 0, 1191, 1189, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1194,
+ 1, 0, 0, 0, 1193, 1179, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1195,
+ 1, 0, 0, 0, 1195, 1222, 5, 183, 0, 0, 1196, 1223, 5, 184, 0, 0, 1197, 1198,
+ 5, 141, 0, 0, 1198, 1201, 5, 131, 0, 0, 1199, 1202, 3, 188, 94, 0, 1200,
+ 1202, 3, 110, 55, 0, 1201, 1199, 1, 0, 0, 0, 1201, 1200, 1, 0, 0, 0, 1202,
+ 1203, 1, 0, 0, 0, 1203, 1204, 5, 6, 0, 0, 1204, 1215, 3, 64, 32, 0, 1205,
+ 1208, 5, 5, 0, 0, 1206, 1209, 3, 188, 94, 0, 1207, 1209, 3, 110, 55, 0,
+ 1208, 1206, 1, 0, 0, 0, 1208, 1207, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0,
+ 1210, 1211, 5, 6, 0, 0, 1211, 1212, 3, 64, 32, 0, 1212, 1214, 1, 0, 0,
+ 0, 1213, 1205, 1, 0, 0, 0, 1214, 1217, 1, 0, 0, 0, 1215, 1213, 1, 0, 0,
+ 0, 1215, 1216, 1, 0, 0, 0, 1216, 1220, 1, 0, 0, 0, 1217, 1215, 1, 0, 0,
+ 0, 1218, 1219, 5, 148, 0, 0, 1219, 1221, 3, 64, 32, 0, 1220, 1218, 1, 0,
+ 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 1223, 1, 0, 0, 0, 1222, 1196, 1, 0,
+ 0, 0, 1222, 1197, 1, 0, 0, 0, 1223, 79, 1, 0, 0, 0, 1224, 1228, 5, 112,
+ 0, 0, 1225, 1226, 3, 182, 91, 0, 1226, 1227, 5, 2, 0, 0, 1227, 1229, 1,
+ 0, 0, 0, 1228, 1225, 1, 0, 0, 0, 1228, 1229, 1, 0, 0, 0, 1229, 1230, 1,
+ 0, 0, 0, 1230, 1237, 3, 202, 101, 0, 1231, 1232, 5, 6, 0, 0, 1232, 1238,
+ 3, 82, 41, 0, 1233, 1234, 5, 3, 0, 0, 1234, 1235, 3, 82, 41, 0, 1235, 1236,
+ 5, 4, 0, 0, 1236, 1238, 1, 0, 0, 0, 1237, 1231, 1, 0, 0, 0, 1237, 1233,
+ 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 81, 1, 0, 0, 0, 1239, 1243, 3,
+ 34, 17, 0, 1240, 1243, 3, 178, 89, 0, 1241, 1243, 5, 188, 0, 0, 1242, 1239,
+ 1, 0, 0, 0, 1242, 1240, 1, 0, 0, 0, 1242, 1241, 1, 0, 0, 0, 1243, 83, 1,
+ 0, 0, 0, 1244, 1255, 5, 119, 0, 0, 1245, 1256, 3, 190, 95, 0, 1246, 1247,
+ 3, 182, 91, 0, 1247, 1248, 5, 2, 0, 0, 1248, 1250, 1, 0, 0, 0, 1249, 1246,
+ 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1253, 1, 0, 0, 0, 1251, 1254,
+ 3, 184, 92, 0, 1252, 1254, 3, 194, 97, 0, 1253, 1251, 1, 0, 0, 0, 1253,
+ 1252, 1, 0, 0, 0, 1254, 1256, 1, 0, 0, 0, 1255, 1245, 1, 0, 0, 0, 1255,
+ 1249, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 85, 1, 0, 0, 0, 1257, 1259,
+ 3, 134, 67, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260,
+ 1, 0, 0, 0, 1260, 1266, 3, 90, 45, 0, 1261, 1262, 3, 106, 53, 0, 1262,
+ 1263, 3, 90, 45, 0, 1263, 1265, 1, 0, 0, 0, 1264, 1261, 1, 0, 0, 0, 1265,
+ 1268, 1, 0, 0, 0, 1266, 1264, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267,
+ 1270, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1269, 1271, 3, 136, 68, 0, 1270,
+ 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 1, 0, 0, 0, 1272,
+ 1274, 3, 138, 69, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274,
+ 87, 1, 0, 0, 0, 1275, 1283, 3, 98, 49, 0, 1276, 1277, 3, 102, 51, 0, 1277,
+ 1279, 3, 98, 49, 0, 1278, 1280, 3, 104, 52, 0, 1279, 1278, 1, 0, 0, 0,
+ 1279, 1280, 1, 0, 0, 0, 1280, 1282, 1, 0, 0, 0, 1281, 1276, 1, 0, 0, 0,
+ 1282, 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0,
+ 1284, 89, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1288, 5, 130, 0, 0,
+ 1287, 1289, 7, 16, 0, 0, 1288, 1287, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0,
+ 1289, 1290, 1, 0, 0, 0, 1290, 1295, 3, 100, 50, 0, 1291, 1292, 5, 5, 0,
+ 0, 1292, 1294, 3, 100, 50, 0, 1293, 1291, 1, 0, 0, 0, 1294, 1297, 1, 0,
+ 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1310, 1, 0,
+ 0, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1308, 5, 75, 0, 0, 1299, 1304, 3, 98,
+ 49, 0, 1300, 1301, 5, 5, 0, 0, 1301, 1303, 3, 98, 49, 0, 1302, 1300, 1,
+ 0, 0, 0, 1303, 1306, 1, 0, 0, 0, 1304, 1302, 1, 0, 0, 0, 1304, 1305, 1,
+ 0, 0, 0, 1305, 1309, 1, 0, 0, 0, 1306, 1304, 1, 0, 0, 0, 1307, 1309, 3,
+ 88, 44, 0, 1308, 1299, 1, 0, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 1311,
+ 1, 0, 0, 0, 1310, 1298, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 1314,
+ 1, 0, 0, 0, 1312, 1313, 5, 148, 0, 0, 1313, 1315, 3, 64, 32, 0, 1314, 1312,
+ 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1330, 1, 0, 0, 0, 1316, 1317,
+ 5, 78, 0, 0, 1317, 1318, 5, 40, 0, 0, 1318, 1323, 3, 64, 32, 0, 1319, 1320,
+ 5, 5, 0, 0, 1320, 1322, 3, 64, 32, 0, 1321, 1319, 1, 0, 0, 0, 1322, 1325,
+ 1, 0, 0, 0, 1323, 1321, 1, 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1328,
+ 1, 0, 0, 0, 1325, 1323, 1, 0, 0, 0, 1326, 1327, 5, 79, 0, 0, 1327, 1329,
+ 3, 64, 32, 0, 1328, 1326, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1331,
+ 1, 0, 0, 0, 1330, 1316, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1346,
+ 1, 0, 0, 0, 1332, 1333, 5, 174, 0, 0, 1333, 1334, 3, 210, 105, 0, 1334,
+ 1335, 5, 33, 0, 0, 1335, 1343, 3, 120, 60, 0, 1336, 1337, 5, 5, 0, 0, 1337,
+ 1338, 3, 210, 105, 0, 1338, 1339, 5, 33, 0, 0, 1339, 1340, 3, 120, 60,
+ 0, 1340, 1342, 1, 0, 0, 0, 1341, 1336, 1, 0, 0, 0, 1342, 1345, 1, 0, 0,
+ 0, 1343, 1341, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 1347, 1, 0, 0,
+ 0, 1345, 1343, 1, 0, 0, 0, 1346, 1332, 1, 0, 0, 0, 1346, 1347, 1, 0, 0,
+ 0, 1347, 1350, 1, 0, 0, 0, 1348, 1350, 3, 72, 36, 0, 1349, 1286, 1, 0,
+ 0, 0, 1349, 1348, 1, 0, 0, 0, 1350, 91, 1, 0, 0, 0, 1351, 1352, 3, 86,
+ 43, 0, 1352, 93, 1, 0, 0, 0, 1353, 1355, 3, 134, 67, 0, 1354, 1353, 1,
+ 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1356, 1, 0, 0, 0, 1356, 1358, 3,
+ 90, 45, 0, 1357, 1359, 3, 136, 68, 0, 1358, 1357, 1, 0, 0, 0, 1358, 1359,
+ 1, 0, 0, 0, 1359, 1361, 1, 0, 0, 0, 1360, 1362, 3, 138, 69, 0, 1361, 1360,
+ 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 95, 1, 0, 0, 0, 1363, 1365, 3,
+ 134, 67, 0, 1364, 1363, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1366,
+ 1, 0, 0, 0, 1366, 1376, 3, 90, 45, 0, 1367, 1369, 5, 139, 0, 0, 1368, 1370,
+ 5, 29, 0, 0, 1369, 1368, 1, 0, 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1374,
+ 1, 0, 0, 0, 1371, 1374, 5, 90, 0, 0, 1372, 1374, 5, 68, 0, 0, 1373, 1367,
+ 1, 0, 0, 0, 1373, 1371, 1, 0, 0, 0, 1373, 1372, 1, 0, 0, 0, 1374, 1375,
+ 1, 0, 0, 0, 1375, 1377, 3, 90, 45, 0, 1376, 1373, 1, 0, 0, 0, 1377, 1378,
+ 1, 0, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1379, 1, 0, 0, 0, 1379, 1381,
+ 1, 0, 0, 0, 1380, 1382, 3, 136, 68, 0, 1381, 1380, 1, 0, 0, 0, 1381, 1382,
+ 1, 0, 0, 0, 1382, 1384, 1, 0, 0, 0, 1383, 1385, 3, 138, 69, 0, 1384, 1383,
+ 1, 0, 0, 0, 1384, 1385, 1, 0, 0, 0, 1385, 97, 1, 0, 0, 0, 1386, 1387, 3,
+ 182, 91, 0, 1387, 1388, 5, 2, 0, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1386,
+ 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1396,
+ 3, 184, 92, 0, 1392, 1394, 5, 33, 0, 0, 1393, 1392, 1, 0, 0, 0, 1393, 1394,
+ 1, 0, 0, 0, 1394, 1395, 1, 0, 0, 0, 1395, 1397, 3, 206, 103, 0, 1396, 1393,
+ 1, 0, 0, 0, 1396, 1397, 1, 0, 0, 0, 1397, 1403, 1, 0, 0, 0, 1398, 1399,
+ 5, 85, 0, 0, 1399, 1400, 5, 40, 0, 0, 1400, 1404, 3, 194, 97, 0, 1401,
+ 1402, 5, 102, 0, 0, 1402, 1404, 5, 85, 0, 0, 1403, 1398, 1, 0, 0, 0, 1403,
+ 1401, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1451, 1, 0, 0, 0, 1405,
+ 1406, 3, 182, 91, 0, 1406, 1407, 5, 2, 0, 0, 1407, 1409, 1, 0, 0, 0, 1408,
+ 1405, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410,
+ 1411, 3, 222, 111, 0, 1411, 1412, 5, 3, 0, 0, 1412, 1417, 3, 64, 32, 0,
+ 1413, 1414, 5, 5, 0, 0, 1414, 1416, 3, 64, 32, 0, 1415, 1413, 1, 0, 0,
+ 0, 1416, 1419, 1, 0, 0, 0, 1417, 1415, 1, 0, 0, 0, 1417, 1418, 1, 0, 0,
+ 0, 1418, 1420, 1, 0, 0, 0, 1419, 1417, 1, 0, 0, 0, 1420, 1425, 5, 4, 0,
+ 0, 1421, 1423, 5, 33, 0, 0, 1422, 1421, 1, 0, 0, 0, 1422, 1423, 1, 0, 0,
+ 0, 1423, 1424, 1, 0, 0, 0, 1424, 1426, 3, 206, 103, 0, 1425, 1422, 1, 0,
+ 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1451, 1, 0, 0, 0, 1427, 1437, 5, 3,
+ 0, 0, 1428, 1433, 3, 98, 49, 0, 1429, 1430, 5, 5, 0, 0, 1430, 1432, 3,
+ 98, 49, 0, 1431, 1429, 1, 0, 0, 0, 1432, 1435, 1, 0, 0, 0, 1433, 1431,
+ 1, 0, 0, 0, 1433, 1434, 1, 0, 0, 0, 1434, 1438, 1, 0, 0, 0, 1435, 1433,
+ 1, 0, 0, 0, 1436, 1438, 3, 88, 44, 0, 1437, 1428, 1, 0, 0, 0, 1437, 1436,
+ 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1440, 5, 4, 0, 0, 1440, 1451,
+ 1, 0, 0, 0, 1441, 1442, 5, 3, 0, 0, 1442, 1443, 3, 86, 43, 0, 1443, 1448,
+ 5, 4, 0, 0, 1444, 1446, 5, 33, 0, 0, 1445, 1444, 1, 0, 0, 0, 1445, 1446,
+ 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1447, 1449, 3, 206, 103, 0, 1448, 1445,
+ 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1451, 1, 0, 0, 0, 1450, 1389,
+ 1, 0, 0, 0, 1450, 1408, 1, 0, 0, 0, 1450, 1427, 1, 0, 0, 0, 1450, 1441,
+ 1, 0, 0, 0, 1451, 99, 1, 0, 0, 0, 1452, 1465, 5, 7, 0, 0, 1453, 1454, 3,
+ 184, 92, 0, 1454, 1455, 5, 2, 0, 0, 1455, 1456, 5, 7, 0, 0, 1456, 1465,
+ 1, 0, 0, 0, 1457, 1462, 3, 64, 32, 0, 1458, 1460, 5, 33, 0, 0, 1459, 1458,
+ 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1463,
+ 3, 174, 87, 0, 1462, 1459, 1, 0, 0, 0, 1462, 1463, 1, 0, 0, 0, 1463, 1465,
+ 1, 0, 0, 0, 1464, 1452, 1, 0, 0, 0, 1464, 1453, 1, 0, 0, 0, 1464, 1457,
+ 1, 0, 0, 0, 1465, 101, 1, 0, 0, 0, 1466, 1480, 5, 5, 0, 0, 1467, 1469,
+ 5, 100, 0, 0, 1468, 1467, 1, 0, 0, 0, 1468, 1469, 1, 0, 0, 0, 1469, 1476,
+ 1, 0, 0, 0, 1470, 1472, 5, 96, 0, 0, 1471, 1473, 5, 110, 0, 0, 1472, 1471,
+ 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 1477, 1, 0, 0, 0, 1474, 1477,
+ 5, 87, 0, 0, 1475, 1477, 5, 51, 0, 0, 1476, 1470, 1, 0, 0, 0, 1476, 1474,
+ 1, 0, 0, 0, 1476, 1475, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1478,
+ 1, 0, 0, 0, 1478, 1480, 5, 94, 0, 0, 1479, 1466, 1, 0, 0, 0, 1479, 1468,
+ 1, 0, 0, 0, 1480, 103, 1, 0, 0, 0, 1481, 1482, 5, 107, 0, 0, 1482, 1496,
+ 3, 64, 32, 0, 1483, 1484, 5, 142, 0, 0, 1484, 1485, 5, 3, 0, 0, 1485, 1490,
+ 3, 188, 94, 0, 1486, 1487, 5, 5, 0, 0, 1487, 1489, 3, 188, 94, 0, 1488,
+ 1486, 1, 0, 0, 0, 1489, 1492, 1, 0, 0, 0, 1490, 1488, 1, 0, 0, 0, 1490,
+ 1491, 1, 0, 0, 0, 1491, 1493, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1493,
+ 1494, 5, 4, 0, 0, 1494, 1496, 1, 0, 0, 0, 1495, 1481, 1, 0, 0, 0, 1495,
+ 1483, 1, 0, 0, 0, 1496, 105, 1, 0, 0, 0, 1497, 1499, 5, 139, 0, 0, 1498,
+ 1500, 5, 29, 0, 0, 1499, 1498, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500,
+ 1504, 1, 0, 0, 0, 1501, 1504, 5, 90, 0, 0, 1502, 1504, 5, 68, 0, 0, 1503,
+ 1497, 1, 0, 0, 0, 1503, 1501, 1, 0, 0, 0, 1503, 1502, 1, 0, 0, 0, 1504,
+ 107, 1, 0, 0, 0, 1505, 1507, 3, 48, 24, 0, 1506, 1505, 1, 0, 0, 0, 1506,
+ 1507, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1511, 5, 141, 0, 0, 1509,
+ 1510, 5, 108, 0, 0, 1510, 1512, 7, 8, 0, 0, 1511, 1509, 1, 0, 0, 0, 1511,
+ 1512, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 3, 114, 57, 0, 1514,
+ 1517, 5, 131, 0, 0, 1515, 1518, 3, 188, 94, 0, 1516, 1518, 3, 110, 55,
+ 0, 1517, 1515, 1, 0, 0, 0, 1517, 1516, 1, 0, 0, 0, 1518, 1519, 1, 0, 0,
+ 0, 1519, 1520, 5, 6, 0, 0, 1520, 1531, 3, 64, 32, 0, 1521, 1524, 5, 5,
+ 0, 0, 1522, 1525, 3, 188, 94, 0, 1523, 1525, 3, 110, 55, 0, 1524, 1522,
+ 1, 0, 0, 0, 1524, 1523, 1, 0, 0, 0, 1525, 1526, 1, 0, 0, 0, 1526, 1527,
+ 5, 6, 0, 0, 1527, 1528, 3, 64, 32, 0, 1528, 1530, 1, 0, 0, 0, 1529, 1521,
+ 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531, 1529, 1, 0, 0, 0, 1531, 1532,
+ 1, 0, 0, 0, 1532, 1546, 1, 0, 0, 0, 1533, 1531, 1, 0, 0, 0, 1534, 1544,
+ 5, 75, 0, 0, 1535, 1540, 3, 98, 49, 0, 1536, 1537, 5, 5, 0, 0, 1537, 1539,
+ 3, 98, 49, 0, 1538, 1536, 1, 0, 0, 0, 1539, 1542, 1, 0, 0, 0, 1540, 1538,
+ 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1545, 1, 0, 0, 0, 1542, 1540,
+ 1, 0, 0, 0, 1543, 1545, 3, 88, 44, 0, 1544, 1535, 1, 0, 0, 0, 1544, 1543,
+ 1, 0, 0, 0, 1545, 1547, 1, 0, 0, 0, 1546, 1534, 1, 0, 0, 0, 1546, 1547,
+ 1, 0, 0, 0, 1547, 1550, 1, 0, 0, 0, 1548, 1549, 5, 148, 0, 0, 1549, 1551,
+ 3, 64, 32, 0, 1550, 1548, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1553,
+ 1, 0, 0, 0, 1552, 1554, 3, 76, 38, 0, 1553, 1552, 1, 0, 0, 0, 1553, 1554,
+ 1, 0, 0, 0, 1554, 109, 1, 0, 0, 0, 1555, 1556, 5, 3, 0, 0, 1556, 1561,
+ 3, 188, 94, 0, 1557, 1558, 5, 5, 0, 0, 1558, 1560, 3, 188, 94, 0, 1559,
+ 1557, 1, 0, 0, 0, 1560, 1563, 1, 0, 0, 0, 1561, 1559, 1, 0, 0, 0, 1561,
+ 1562, 1, 0, 0, 0, 1562, 1564, 1, 0, 0, 0, 1563, 1561, 1, 0, 0, 0, 1564,
+ 1565, 5, 4, 0, 0, 1565, 111, 1, 0, 0, 0, 1566, 1568, 3, 48, 24, 0, 1567,
+ 1566, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569,
+ 1572, 5, 141, 0, 0, 1570, 1571, 5, 108, 0, 0, 1571, 1573, 7, 8, 0, 0, 1572,
+ 1570, 1, 0, 0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574,
+ 1575, 3, 114, 57, 0, 1575, 1578, 5, 131, 0, 0, 1576, 1579, 3, 188, 94,
+ 0, 1577, 1579, 3, 110, 55, 0, 1578, 1576, 1, 0, 0, 0, 1578, 1577, 1, 0,
+ 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 5, 6, 0, 0, 1581, 1592, 3, 64,
+ 32, 0, 1582, 1585, 5, 5, 0, 0, 1583, 1586, 3, 188, 94, 0, 1584, 1586, 3,
+ 110, 55, 0, 1585, 1583, 1, 0, 0, 0, 1585, 1584, 1, 0, 0, 0, 1586, 1587,
+ 1, 0, 0, 0, 1587, 1588, 5, 6, 0, 0, 1588, 1589, 3, 64, 32, 0, 1589, 1591,
+ 1, 0, 0, 0, 1590, 1582, 1, 0, 0, 0, 1591, 1594, 1, 0, 0, 0, 1592, 1590,
+ 1, 0, 0, 0, 1592, 1593, 1, 0, 0, 0, 1593, 1597, 1, 0, 0, 0, 1594, 1592,
+ 1, 0, 0, 0, 1595, 1596, 5, 148, 0, 0, 1596, 1598, 3, 64, 32, 0, 1597, 1595,
+ 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1600, 1, 0, 0, 0, 1599, 1601,
+ 3, 76, 38, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1606,
+ 1, 0, 0, 0, 1602, 1604, 3, 136, 68, 0, 1603, 1602, 1, 0, 0, 0, 1603, 1604,
+ 1, 0, 0, 0, 1604, 1605, 1, 0, 0, 0, 1605, 1607, 3, 138, 69, 0, 1606, 1603,
+ 1, 0, 0, 0, 1606, 1607, 1, 0, 0, 0, 1607, 113, 1, 0, 0, 0, 1608, 1609,
+ 3, 182, 91, 0, 1609, 1610, 5, 2, 0, 0, 1610, 1612, 1, 0, 0, 0, 1611, 1608,
+ 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1613, 1, 0, 0, 0, 1613, 1616,
+ 3, 184, 92, 0, 1614, 1615, 5, 33, 0, 0, 1615, 1617, 3, 212, 106, 0, 1616,
+ 1614, 1, 0, 0, 0, 1616, 1617, 1, 0, 0, 0, 1617, 1623, 1, 0, 0, 0, 1618,
+ 1619, 5, 85, 0, 0, 1619, 1620, 5, 40, 0, 0, 1620, 1624, 3, 194, 97, 0,
+ 1621, 1622, 5, 102, 0, 0, 1622, 1624, 5, 85, 0, 0, 1623, 1618, 1, 0, 0,
+ 0, 1623, 1621, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 115, 1, 0, 0,
+ 0, 1625, 1627, 5, 143, 0, 0, 1626, 1628, 3, 182, 91, 0, 1627, 1626, 1,
+ 0, 0, 0, 1627, 1628, 1, 0, 0, 0, 1628, 1631, 1, 0, 0, 0, 1629, 1630, 5,
+ 91, 0, 0, 1630, 1632, 3, 214, 107, 0, 1631, 1629, 1, 0, 0, 0, 1631, 1632,
+ 1, 0, 0, 0, 1632, 117, 1, 0, 0, 0, 1633, 1634, 5, 178, 0, 0, 1634, 1635,
+ 5, 3, 0, 0, 1635, 1636, 5, 148, 0, 0, 1636, 1637, 3, 64, 32, 0, 1637, 1638,
+ 5, 4, 0, 0, 1638, 119, 1, 0, 0, 0, 1639, 1641, 5, 3, 0, 0, 1640, 1642,
+ 3, 216, 108, 0, 1641, 1640, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1653,
+ 1, 0, 0, 0, 1643, 1644, 5, 153, 0, 0, 1644, 1645, 5, 40, 0, 0, 1645, 1650,
+ 3, 64, 32, 0, 1646, 1647, 5, 5, 0, 0, 1647, 1649, 3, 64, 32, 0, 1648, 1646,
+ 1, 0, 0, 0, 1649, 1652, 1, 0, 0, 0, 1650, 1648, 1, 0, 0, 0, 1650, 1651,
+ 1, 0, 0, 0, 1651, 1654, 1, 0, 0, 0, 1652, 1650, 1, 0, 0, 0, 1653, 1643,
+ 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1655, 1, 0, 0, 0, 1655, 1656,
+ 5, 109, 0, 0, 1656, 1657, 5, 40, 0, 0, 1657, 1662, 3, 140, 70, 0, 1658,
+ 1659, 5, 5, 0, 0, 1659, 1661, 3, 140, 70, 0, 1660, 1658, 1, 0, 0, 0, 1661,
+ 1664, 1, 0, 0, 0, 1662, 1660, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663,
+ 1666, 1, 0, 0, 0, 1664, 1662, 1, 0, 0, 0, 1665, 1667, 3, 124, 62, 0, 1666,
+ 1665, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668,
+ 1669, 5, 4, 0, 0, 1669, 121, 1, 0, 0, 0, 1670, 1704, 5, 152, 0, 0, 1671,
+ 1705, 3, 210, 105, 0, 1672, 1674, 5, 3, 0, 0, 1673, 1675, 3, 216, 108,
+ 0, 1674, 1673, 1, 0, 0, 0, 1674, 1675, 1, 0, 0, 0, 1675, 1686, 1, 0, 0,
+ 0, 1676, 1677, 5, 153, 0, 0, 1677, 1678, 5, 40, 0, 0, 1678, 1683, 3, 64,
+ 32, 0, 1679, 1680, 5, 5, 0, 0, 1680, 1682, 3, 64, 32, 0, 1681, 1679, 1,
+ 0, 0, 0, 1682, 1685, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1683, 1684, 1,
+ 0, 0, 0, 1684, 1687, 1, 0, 0, 0, 1685, 1683, 1, 0, 0, 0, 1686, 1676, 1,
+ 0, 0, 0, 1686, 1687, 1, 0, 0, 0, 1687, 1698, 1, 0, 0, 0, 1688, 1689, 5,
+ 109, 0, 0, 1689, 1690, 5, 40, 0, 0, 1690, 1695, 3, 140, 70, 0, 1691, 1692,
+ 5, 5, 0, 0, 1692, 1694, 3, 140, 70, 0, 1693, 1691, 1, 0, 0, 0, 1694, 1697,
+ 1, 0, 0, 0, 1695, 1693, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1699,
+ 1, 0, 0, 0, 1697, 1695, 1, 0, 0, 0, 1698, 1688, 1, 0, 0, 0, 1698, 1699,
+ 1, 0, 0, 0, 1699, 1701, 1, 0, 0, 0, 1700, 1702, 3, 124, 62, 0, 1701, 1700,
+ 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1705,
+ 5, 4, 0, 0, 1704, 1671, 1, 0, 0, 0, 1704, 1672, 1, 0, 0, 0, 1705, 123,
+ 1, 0, 0, 0, 1706, 1716, 3, 126, 63, 0, 1707, 1714, 5, 180, 0, 0, 1708,
+ 1709, 5, 101, 0, 0, 1709, 1715, 5, 182, 0, 0, 1710, 1711, 5, 157, 0, 0,
+ 1711, 1715, 5, 127, 0, 0, 1712, 1715, 5, 78, 0, 0, 1713, 1715, 5, 181,
+ 0, 0, 1714, 1708, 1, 0, 0, 0, 1714, 1710, 1, 0, 0, 0, 1714, 1712, 1, 0,
+ 0, 0, 1714, 1713, 1, 0, 0, 0, 1715, 1717, 1, 0, 0, 0, 1716, 1707, 1, 0,
+ 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 125, 1, 0, 0, 0, 1718, 1725, 7, 17,
+ 0, 0, 1719, 1726, 3, 148, 74, 0, 1720, 1721, 5, 39, 0, 0, 1721, 1722, 3,
+ 144, 72, 0, 1722, 1723, 5, 32, 0, 0, 1723, 1724, 3, 146, 73, 0, 1724, 1726,
+ 1, 0, 0, 0, 1725, 1719, 1, 0, 0, 0, 1725, 1720, 1, 0, 0, 0, 1726, 127,
+ 1, 0, 0, 0, 1727, 1728, 3, 218, 109, 0, 1728, 1738, 5, 3, 0, 0, 1729, 1734,
+ 3, 64, 32, 0, 1730, 1731, 5, 5, 0, 0, 1731, 1733, 3, 64, 32, 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, 1739,
+ 5, 7, 0, 0, 1738, 1729, 1, 0, 0, 0, 1738, 1737, 1, 0, 0, 0, 1739, 1740,
+ 1, 0, 0, 0, 1740, 1741, 5, 4, 0, 0, 1741, 129, 1, 0, 0, 0, 1742, 1743,
+ 3, 220, 110, 0, 1743, 1756, 5, 3, 0, 0, 1744, 1746, 5, 62, 0, 0, 1745,
+ 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747,
+ 1752, 3, 64, 32, 0, 1748, 1749, 5, 5, 0, 0, 1749, 1751, 3, 64, 32, 0, 1750,
+ 1748, 1, 0, 0, 0, 1751, 1754, 1, 0, 0, 0, 1752, 1750, 1, 0, 0, 0, 1752,
+ 1753, 1, 0, 0, 0, 1753, 1757, 1, 0, 0, 0, 1754, 1752, 1, 0, 0, 0, 1755,
+ 1757, 5, 7, 0, 0, 1756, 1745, 1, 0, 0, 0, 1756, 1755, 1, 0, 0, 0, 1756,
+ 1757, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1760, 5, 4, 0, 0, 1759,
+ 1761, 3, 118, 59, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761,
+ 131, 1, 0, 0, 0, 1762, 1763, 3, 150, 75, 0, 1763, 1773, 5, 3, 0, 0, 1764,
+ 1769, 3, 64, 32, 0, 1765, 1766, 5, 5, 0, 0, 1766, 1768, 3, 64, 32, 0, 1767,
+ 1765, 1, 0, 0, 0, 1768, 1771, 1, 0, 0, 0, 1769, 1767, 1, 0, 0, 0, 1769,
+ 1770, 1, 0, 0, 0, 1770, 1774, 1, 0, 0, 0, 1771, 1769, 1, 0, 0, 0, 1772,
+ 1774, 5, 7, 0, 0, 1773, 1764, 1, 0, 0, 0, 1773, 1772, 1, 0, 0, 0, 1773,
+ 1774, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1777, 5, 4, 0, 0, 1776,
+ 1778, 3, 118, 59, 0, 1777, 1776, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778,
+ 1779, 1, 0, 0, 0, 1779, 1782, 5, 152, 0, 0, 1780, 1783, 3, 120, 60, 0,
+ 1781, 1783, 3, 210, 105, 0, 1782, 1780, 1, 0, 0, 0, 1782, 1781, 1, 0, 0,
+ 0, 1783, 133, 1, 0, 0, 0, 1784, 1786, 5, 149, 0, 0, 1785, 1787, 5, 116,
+ 0, 0, 1786, 1785, 1, 0, 0, 0, 1786, 1787, 1, 0, 0, 0, 1787, 1788, 1, 0,
+ 0, 0, 1788, 1793, 3, 54, 27, 0, 1789, 1790, 5, 5, 0, 0, 1790, 1792, 3,
+ 54, 27, 0, 1791, 1789, 1, 0, 0, 0, 1792, 1795, 1, 0, 0, 0, 1793, 1791,
+ 1, 0, 0, 0, 1793, 1794, 1, 0, 0, 0, 1794, 135, 1, 0, 0, 0, 1795, 1793,
+ 1, 0, 0, 0, 1796, 1797, 5, 109, 0, 0, 1797, 1798, 5, 40, 0, 0, 1798, 1803,
+ 3, 140, 70, 0, 1799, 1800, 5, 5, 0, 0, 1800, 1802, 3, 140, 70, 0, 1801,
+ 1799, 1, 0, 0, 0, 1802, 1805, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1803,
+ 1804, 1, 0, 0, 0, 1804, 137, 1, 0, 0, 0, 1805, 1803, 1, 0, 0, 0, 1806,
+ 1807, 5, 98, 0, 0, 1807, 1810, 3, 64, 32, 0, 1808, 1809, 7, 18, 0, 0, 1809,
+ 1811, 3, 64, 32, 0, 1810, 1808, 1, 0, 0, 0, 1810, 1811, 1, 0, 0, 0, 1811,
+ 139, 1, 0, 0, 0, 1812, 1815, 3, 64, 32, 0, 1813, 1814, 5, 45, 0, 0, 1814,
+ 1816, 3, 190, 95, 0, 1815, 1813, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816,
+ 1818, 1, 0, 0, 0, 1817, 1819, 3, 142, 71, 0, 1818, 1817, 1, 0, 0, 0, 1818,
+ 1819, 1, 0, 0, 0, 1819, 1822, 1, 0, 0, 0, 1820, 1821, 5, 175, 0, 0, 1821,
+ 1823, 7, 19, 0, 0, 1822, 1820, 1, 0, 0, 0, 1822, 1823, 1, 0, 0, 0, 1823,
+ 141, 1, 0, 0, 0, 1824, 1825, 7, 20, 0, 0, 1825, 143, 1, 0, 0, 0, 1826,
+ 1827, 3, 64, 32, 0, 1827, 1828, 5, 155, 0, 0, 1828, 1837, 1, 0, 0, 0, 1829,
+ 1830, 3, 64, 32, 0, 1830, 1831, 5, 158, 0, 0, 1831, 1837, 1, 0, 0, 0, 1832,
+ 1833, 5, 157, 0, 0, 1833, 1837, 5, 127, 0, 0, 1834, 1835, 5, 156, 0, 0,
+ 1835, 1837, 5, 155, 0, 0, 1836, 1826, 1, 0, 0, 0, 1836, 1829, 1, 0, 0,
+ 0, 1836, 1832, 1, 0, 0, 0, 1836, 1834, 1, 0, 0, 0, 1837, 145, 1, 0, 0,
+ 0, 1838, 1839, 3, 64, 32, 0, 1839, 1840, 5, 155, 0, 0, 1840, 1849, 1, 0,
+ 0, 0, 1841, 1842, 3, 64, 32, 0, 1842, 1843, 5, 158, 0, 0, 1843, 1849, 1,
+ 0, 0, 0, 1844, 1845, 5, 157, 0, 0, 1845, 1849, 5, 127, 0, 0, 1846, 1847,
+ 5, 156, 0, 0, 1847, 1849, 5, 158, 0, 0, 1848, 1838, 1, 0, 0, 0, 1848, 1841,
+ 1, 0, 0, 0, 1848, 1844, 1, 0, 0, 0, 1848, 1846, 1, 0, 0, 0, 1849, 147,
+ 1, 0, 0, 0, 1850, 1851, 3, 64, 32, 0, 1851, 1852, 5, 155, 0, 0, 1852, 1858,
+ 1, 0, 0, 0, 1853, 1854, 5, 156, 0, 0, 1854, 1858, 5, 155, 0, 0, 1855, 1856,
+ 5, 157, 0, 0, 1856, 1858, 5, 127, 0, 0, 1857, 1850, 1, 0, 0, 0, 1857, 1853,
+ 1, 0, 0, 0, 1857, 1855, 1, 0, 0, 0, 1858, 149, 1, 0, 0, 0, 1859, 1860,
+ 7, 21, 0, 0, 1860, 1861, 5, 3, 0, 0, 1861, 1862, 3, 64, 32, 0, 1862, 1863,
+ 5, 4, 0, 0, 1863, 1864, 5, 152, 0, 0, 1864, 1866, 5, 3, 0, 0, 1865, 1867,
+ 3, 156, 78, 0, 1866, 1865, 1, 0, 0, 0, 1866, 1867, 1, 0, 0, 0, 1867, 1868,
+ 1, 0, 0, 0, 1868, 1870, 3, 160, 80, 0, 1869, 1871, 3, 126, 63, 0, 1870,
+ 1869, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872,
+ 1873, 5, 4, 0, 0, 1873, 1945, 1, 0, 0, 0, 1874, 1875, 7, 22, 0, 0, 1875,
+ 1876, 5, 3, 0, 0, 1876, 1877, 5, 4, 0, 0, 1877, 1878, 5, 152, 0, 0, 1878,
+ 1880, 5, 3, 0, 0, 1879, 1881, 3, 156, 78, 0, 1880, 1879, 1, 0, 0, 0, 1880,
+ 1881, 1, 0, 0, 0, 1881, 1883, 1, 0, 0, 0, 1882, 1884, 3, 158, 79, 0, 1883,
+ 1882, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885,
+ 1945, 5, 4, 0, 0, 1886, 1887, 7, 23, 0, 0, 1887, 1888, 5, 3, 0, 0, 1888,
+ 1889, 5, 4, 0, 0, 1889, 1890, 5, 152, 0, 0, 1890, 1892, 5, 3, 0, 0, 1891,
+ 1893, 3, 156, 78, 0, 1892, 1891, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893,
+ 1894, 1, 0, 0, 0, 1894, 1895, 3, 160, 80, 0, 1895, 1896, 5, 4, 0, 0, 1896,
+ 1945, 1, 0, 0, 0, 1897, 1898, 7, 24, 0, 0, 1898, 1899, 5, 3, 0, 0, 1899,
+ 1901, 3, 64, 32, 0, 1900, 1902, 3, 152, 76, 0, 1901, 1900, 1, 0, 0, 0,
+ 1901, 1902, 1, 0, 0, 0, 1902, 1904, 1, 0, 0, 0, 1903, 1905, 3, 154, 77,
+ 0, 1904, 1903, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1906, 1, 0, 0,
+ 0, 1906, 1907, 5, 4, 0, 0, 1907, 1908, 5, 152, 0, 0, 1908, 1910, 5, 3,
+ 0, 0, 1909, 1911, 3, 156, 78, 0, 1910, 1909, 1, 0, 0, 0, 1910, 1911, 1,
+ 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1913, 3, 160, 80, 0, 1913, 1914,
+ 5, 4, 0, 0, 1914, 1945, 1, 0, 0, 0, 1915, 1916, 5, 164, 0, 0, 1916, 1917,
+ 5, 3, 0, 0, 1917, 1918, 3, 64, 32, 0, 1918, 1919, 5, 5, 0, 0, 1919, 1920,
+ 3, 34, 17, 0, 1920, 1921, 5, 4, 0, 0, 1921, 1922, 5, 152, 0, 0, 1922, 1924,
+ 5, 3, 0, 0, 1923, 1925, 3, 156, 78, 0, 1924, 1923, 1, 0, 0, 0, 1924, 1925,
+ 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1928, 3, 160, 80, 0, 1927, 1929,
+ 3, 126, 63, 0, 1928, 1927, 1, 0, 0, 0, 1928, 1929, 1, 0, 0, 0, 1929, 1930,
+ 1, 0, 0, 0, 1930, 1931, 5, 4, 0, 0, 1931, 1945, 1, 0, 0, 0, 1932, 1933,
+ 5, 165, 0, 0, 1933, 1934, 5, 3, 0, 0, 1934, 1935, 3, 64, 32, 0, 1935, 1936,
+ 5, 4, 0, 0, 1936, 1937, 5, 152, 0, 0, 1937, 1939, 5, 3, 0, 0, 1938, 1940,
+ 3, 156, 78, 0, 1939, 1938, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1941,
+ 1, 0, 0, 0, 1941, 1942, 3, 160, 80, 0, 1942, 1943, 5, 4, 0, 0, 1943, 1945,
+ 1, 0, 0, 0, 1944, 1859, 1, 0, 0, 0, 1944, 1874, 1, 0, 0, 0, 1944, 1886,
+ 1, 0, 0, 0, 1944, 1897, 1, 0, 0, 0, 1944, 1915, 1, 0, 0, 0, 1944, 1932,
+ 1, 0, 0, 0, 1945, 151, 1, 0, 0, 0, 1946, 1947, 5, 5, 0, 0, 1947, 1948,
+ 3, 34, 17, 0, 1948, 153, 1, 0, 0, 0, 1949, 1950, 5, 5, 0, 0, 1950, 1951,
+ 3, 34, 17, 0, 1951, 155, 1, 0, 0, 0, 1952, 1953, 5, 153, 0, 0, 1953, 1955,
+ 5, 40, 0, 0, 1954, 1956, 3, 64, 32, 0, 1955, 1954, 1, 0, 0, 0, 1956, 1957,
+ 1, 0, 0, 0, 1957, 1955, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 157,
+ 1, 0, 0, 0, 1959, 1960, 5, 109, 0, 0, 1960, 1962, 5, 40, 0, 0, 1961, 1963,
+ 3, 64, 32, 0, 1962, 1961, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 1962,
+ 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 159, 1, 0, 0, 0, 1966, 1967,
+ 5, 109, 0, 0, 1967, 1968, 5, 40, 0, 0, 1968, 1969, 3, 162, 81, 0, 1969,
+ 161, 1, 0, 0, 0, 1970, 1972, 3, 64, 32, 0, 1971, 1973, 3, 142, 71, 0, 1972,
+ 1971, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1981, 1, 0, 0, 0, 1974,
+ 1975, 5, 5, 0, 0, 1975, 1977, 3, 64, 32, 0, 1976, 1978, 3, 142, 71, 0,
+ 1977, 1976, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1980, 1, 0, 0, 0,
+ 1979, 1974, 1, 0, 0, 0, 1980, 1983, 1, 0, 0, 0, 1981, 1979, 1, 0, 0, 0,
+ 1981, 1982, 1, 0, 0, 0, 1982, 163, 1, 0, 0, 0, 1983, 1981, 1, 0, 0, 0,
+ 1984, 1985, 3, 86, 43, 0, 1985, 165, 1, 0, 0, 0, 1986, 1987, 3, 86, 43,
+ 0, 1987, 167, 1, 0, 0, 0, 1988, 1989, 7, 25, 0, 0, 1989, 169, 1, 0, 0,
+ 0, 1990, 1991, 5, 188, 0, 0, 1991, 171, 1, 0, 0, 0, 1992, 1995, 3, 64,
+ 32, 0, 1993, 1995, 3, 28, 14, 0, 1994, 1992, 1, 0, 0, 0, 1994, 1993, 1,
+ 0, 0, 0, 1995, 173, 1, 0, 0, 0, 1996, 1997, 7, 26, 0, 0, 1997, 175, 1,
+ 0, 0, 0, 1998, 1999, 7, 27, 0, 0, 1999, 177, 1, 0, 0, 0, 2000, 2001, 3,
+ 224, 112, 0, 2001, 179, 1, 0, 0, 0, 2002, 2003, 3, 224, 112, 0, 2003, 181,
+ 1, 0, 0, 0, 2004, 2005, 3, 224, 112, 0, 2005, 183, 1, 0, 0, 0, 2006, 2007,
+ 3, 224, 112, 0, 2007, 185, 1, 0, 0, 0, 2008, 2009, 3, 224, 112, 0, 2009,
+ 187, 1, 0, 0, 0, 2010, 2011, 3, 224, 112, 0, 2011, 189, 1, 0, 0, 0, 2012,
+ 2013, 3, 224, 112, 0, 2013, 191, 1, 0, 0, 0, 2014, 2015, 3, 224, 112, 0,
+ 2015, 193, 1, 0, 0, 0, 2016, 2017, 3, 224, 112, 0, 2017, 195, 1, 0, 0,
+ 0, 2018, 2019, 3, 224, 112, 0, 2019, 197, 1, 0, 0, 0, 2020, 2021, 3, 224,
+ 112, 0, 2021, 199, 1, 0, 0, 0, 2022, 2023, 3, 224, 112, 0, 2023, 201, 1,
+ 0, 0, 0, 2024, 2025, 3, 224, 112, 0, 2025, 203, 1, 0, 0, 0, 2026, 2027,
+ 3, 224, 112, 0, 2027, 205, 1, 0, 0, 0, 2028, 2029, 3, 224, 112, 0, 2029,
+ 207, 1, 0, 0, 0, 2030, 2031, 3, 224, 112, 0, 2031, 209, 1, 0, 0, 0, 2032,
+ 2033, 3, 224, 112, 0, 2033, 211, 1, 0, 0, 0, 2034, 2035, 3, 224, 112, 0,
+ 2035, 213, 1, 0, 0, 0, 2036, 2037, 3, 224, 112, 0, 2037, 215, 1, 0, 0,
+ 0, 2038, 2039, 3, 224, 112, 0, 2039, 217, 1, 0, 0, 0, 2040, 2041, 3, 224,
+ 112, 0, 2041, 219, 1, 0, 0, 0, 2042, 2043, 3, 224, 112, 0, 2043, 221, 1,
+ 0, 0, 0, 2044, 2045, 3, 224, 112, 0, 2045, 223, 1, 0, 0, 0, 2046, 2054,
+ 5, 185, 0, 0, 2047, 2054, 3, 176, 88, 0, 2048, 2054, 5, 188, 0, 0, 2049,
+ 2050, 5, 3, 0, 0, 2050, 2051, 3, 224, 112, 0, 2051, 2052, 5, 4, 0, 0, 2052,
+ 2054, 1, 0, 0, 0, 2053, 2046, 1, 0, 0, 0, 2053, 2047, 1, 0, 0, 0, 2053,
+ 2048, 1, 0, 0, 0, 2053, 2049, 1, 0, 0, 0, 2054, 225, 1, 0, 0, 0, 296, 229,
+ 237, 244, 249, 255, 261, 263, 289, 296, 303, 309, 313, 318, 321, 328, 331,
+ 335, 343, 347, 349, 353, 357, 361, 364, 371, 377, 383, 388, 399, 405, 409,
+ 413, 416, 420, 426, 431, 440, 447, 453, 457, 461, 466, 472, 484, 488, 493,
+ 496, 499, 502, 506, 509, 523, 530, 537, 539, 542, 548, 553, 561, 566, 581,
+ 587, 597, 602, 612, 616, 618, 622, 627, 629, 637, 643, 648, 655, 666, 669,
+ 671, 678, 682, 689, 695, 701, 707, 712, 721, 726, 737, 742, 753, 758, 762,
+ 778, 788, 793, 801, 813, 818, 826, 833, 836, 839, 846, 849, 852, 855, 859,
+ 867, 872, 882, 887, 896, 903, 907, 911, 914, 922, 935, 938, 946, 955, 959,
+ 964, 994, 1006, 1011, 1023, 1029, 1036, 1040, 1050, 1053, 1059, 1065, 1074,
+ 1077, 1081, 1083, 1085, 1094, 1106, 1117, 1121, 1128, 1134, 1139, 1147,
+ 1152, 1156, 1159, 1163, 1166, 1174, 1185, 1191, 1193, 1201, 1208, 1215,
+ 1220, 1222, 1228, 1237, 1242, 1249, 1253, 1255, 1258, 1266, 1270, 1273,
+ 1279, 1283, 1288, 1295, 1304, 1308, 1310, 1314, 1323, 1328, 1330, 1343,
+ 1346, 1349, 1354, 1358, 1361, 1364, 1369, 1373, 1378, 1381, 1384, 1389,
+ 1393, 1396, 1403, 1408, 1417, 1422, 1425, 1433, 1437, 1445, 1448, 1450,
+ 1459, 1462, 1464, 1468, 1472, 1476, 1479, 1490, 1495, 1499, 1503, 1506,
+ 1511, 1517, 1524, 1531, 1540, 1544, 1546, 1550, 1553, 1561, 1567, 1572,
+ 1578, 1585, 1592, 1597, 1600, 1603, 1606, 1611, 1616, 1623, 1627, 1631,
+ 1641, 1650, 1653, 1662, 1666, 1674, 1683, 1686, 1695, 1698, 1701, 1704,
+ 1714, 1716, 1725, 1734, 1738, 1745, 1752, 1756, 1760, 1769, 1773, 1777,
+ 1782, 1786, 1793, 1803, 1810, 1815, 1818, 1822, 1836, 1848, 1857, 1866,
+ 1870, 1880, 1883, 1892, 1901, 1904, 1910, 1924, 1928, 1939, 1944, 1957,
+ 1964, 1972, 1977, 1981, 1994, 2053,
+ }
+ 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)
+ }
+}
+
+// SQLiteParserInit initializes any static state used to implement SQLiteParser. By default the
+// static state used to implement the parser is lazily initialized during the first call to
+// NewSQLiteParser(). You can call this function if you wish to initialize the static state ahead
+// of time.
+func SQLiteParserInit() {
+ staticData := &SQLiteParserParserStaticData
+ staticData.once.Do(sqliteparserParserInit)
+}
+
+// NewSQLiteParser produces a new parser instance for the optional input antlr.TokenStream.
+func NewSQLiteParser(input antlr.TokenStream) *SQLiteParser {
+ SQLiteParserInit()
+ this := new(SQLiteParser)
+ this.BaseParser = antlr.NewBaseParser(input)
+ staticData := &SQLiteParserParserStaticData
+ 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 = "SQLiteParser.g4"
+
+ return this
+}
+
+// SQLiteParser tokens.
+const (
+ SQLiteParserEOF = antlr.TokenEOF
+ SQLiteParserSCOL = 1
+ SQLiteParserDOT = 2
+ SQLiteParserOPEN_PAR = 3
+ SQLiteParserCLOSE_PAR = 4
+ SQLiteParserCOMMA = 5
+ SQLiteParserASSIGN = 6
+ SQLiteParserSTAR = 7
+ SQLiteParserPLUS = 8
+ SQLiteParserMINUS = 9
+ SQLiteParserTILDE = 10
+ SQLiteParserPIPE2 = 11
+ SQLiteParserDIV = 12
+ SQLiteParserMOD = 13
+ SQLiteParserLT2 = 14
+ SQLiteParserGT2 = 15
+ SQLiteParserAMP = 16
+ SQLiteParserPIPE = 17
+ SQLiteParserLT = 18
+ SQLiteParserLT_EQ = 19
+ SQLiteParserGT = 20
+ SQLiteParserGT_EQ = 21
+ SQLiteParserEQ = 22
+ SQLiteParserNOT_EQ1 = 23
+ SQLiteParserNOT_EQ2 = 24
+ SQLiteParserABORT_ = 25
+ SQLiteParserACTION_ = 26
+ SQLiteParserADD_ = 27
+ SQLiteParserAFTER_ = 28
+ SQLiteParserALL_ = 29
+ SQLiteParserALTER_ = 30
+ SQLiteParserANALYZE_ = 31
+ SQLiteParserAND_ = 32
+ SQLiteParserAS_ = 33
+ SQLiteParserASC_ = 34
+ SQLiteParserATTACH_ = 35
+ SQLiteParserAUTOINCREMENT_ = 36
+ SQLiteParserBEFORE_ = 37
+ SQLiteParserBEGIN_ = 38
+ SQLiteParserBETWEEN_ = 39
+ SQLiteParserBY_ = 40
+ SQLiteParserCASCADE_ = 41
+ SQLiteParserCASE_ = 42
+ SQLiteParserCAST_ = 43
+ SQLiteParserCHECK_ = 44
+ SQLiteParserCOLLATE_ = 45
+ SQLiteParserCOLUMN_ = 46
+ SQLiteParserCOMMIT_ = 47
+ SQLiteParserCONFLICT_ = 48
+ SQLiteParserCONSTRAINT_ = 49
+ SQLiteParserCREATE_ = 50
+ SQLiteParserCROSS_ = 51
+ SQLiteParserCURRENT_DATE_ = 52
+ SQLiteParserCURRENT_TIME_ = 53
+ SQLiteParserCURRENT_TIMESTAMP_ = 54
+ SQLiteParserDATABASE_ = 55
+ SQLiteParserDEFAULT_ = 56
+ SQLiteParserDEFERRABLE_ = 57
+ SQLiteParserDEFERRED_ = 58
+ SQLiteParserDELETE_ = 59
+ SQLiteParserDESC_ = 60
+ SQLiteParserDETACH_ = 61
+ SQLiteParserDISTINCT_ = 62
+ SQLiteParserDROP_ = 63
+ SQLiteParserEACH_ = 64
+ SQLiteParserELSE_ = 65
+ SQLiteParserEND_ = 66
+ SQLiteParserESCAPE_ = 67
+ SQLiteParserEXCEPT_ = 68
+ SQLiteParserEXCLUSIVE_ = 69
+ SQLiteParserEXISTS_ = 70
+ SQLiteParserEXPLAIN_ = 71
+ SQLiteParserFAIL_ = 72
+ SQLiteParserFOR_ = 73
+ SQLiteParserFOREIGN_ = 74
+ SQLiteParserFROM_ = 75
+ SQLiteParserFULL_ = 76
+ SQLiteParserGLOB_ = 77
+ SQLiteParserGROUP_ = 78
+ SQLiteParserHAVING_ = 79
+ SQLiteParserIF_ = 80
+ SQLiteParserIGNORE_ = 81
+ SQLiteParserIMMEDIATE_ = 82
+ SQLiteParserIN_ = 83
+ SQLiteParserINDEX_ = 84
+ SQLiteParserINDEXED_ = 85
+ SQLiteParserINITIALLY_ = 86
+ SQLiteParserINNER_ = 87
+ SQLiteParserINSERT_ = 88
+ SQLiteParserINSTEAD_ = 89
+ SQLiteParserINTERSECT_ = 90
+ SQLiteParserINTO_ = 91
+ SQLiteParserIS_ = 92
+ SQLiteParserISNULL_ = 93
+ SQLiteParserJOIN_ = 94
+ SQLiteParserKEY_ = 95
+ SQLiteParserLEFT_ = 96
+ SQLiteParserLIKE_ = 97
+ SQLiteParserLIMIT_ = 98
+ SQLiteParserMATCH_ = 99
+ SQLiteParserNATURAL_ = 100
+ SQLiteParserNO_ = 101
+ SQLiteParserNOT_ = 102
+ SQLiteParserNOTNULL_ = 103
+ SQLiteParserNULL_ = 104
+ SQLiteParserOF_ = 105
+ SQLiteParserOFFSET_ = 106
+ SQLiteParserON_ = 107
+ SQLiteParserOR_ = 108
+ SQLiteParserORDER_ = 109
+ SQLiteParserOUTER_ = 110
+ SQLiteParserPLAN_ = 111
+ SQLiteParserPRAGMA_ = 112
+ SQLiteParserPRIMARY_ = 113
+ SQLiteParserQUERY_ = 114
+ SQLiteParserRAISE_ = 115
+ SQLiteParserRECURSIVE_ = 116
+ SQLiteParserREFERENCES_ = 117
+ SQLiteParserREGEXP_ = 118
+ SQLiteParserREINDEX_ = 119
+ SQLiteParserRELEASE_ = 120
+ SQLiteParserRENAME_ = 121
+ SQLiteParserREPLACE_ = 122
+ SQLiteParserRESTRICT_ = 123
+ SQLiteParserRETURNING_ = 124
+ SQLiteParserRIGHT_ = 125
+ SQLiteParserROLLBACK_ = 126
+ SQLiteParserROW_ = 127
+ SQLiteParserROWS_ = 128
+ SQLiteParserSAVEPOINT_ = 129
+ SQLiteParserSELECT_ = 130
+ SQLiteParserSET_ = 131
+ SQLiteParserTABLE_ = 132
+ SQLiteParserTEMP_ = 133
+ SQLiteParserTEMPORARY_ = 134
+ SQLiteParserTHEN_ = 135
+ SQLiteParserTO_ = 136
+ SQLiteParserTRANSACTION_ = 137
+ SQLiteParserTRIGGER_ = 138
+ SQLiteParserUNION_ = 139
+ SQLiteParserUNIQUE_ = 140
+ SQLiteParserUPDATE_ = 141
+ SQLiteParserUSING_ = 142
+ SQLiteParserVACUUM_ = 143
+ SQLiteParserVALUES_ = 144
+ SQLiteParserVIEW_ = 145
+ SQLiteParserVIRTUAL_ = 146
+ SQLiteParserWHEN_ = 147
+ SQLiteParserWHERE_ = 148
+ SQLiteParserWITH_ = 149
+ SQLiteParserWITHOUT_ = 150
+ SQLiteParserFIRST_VALUE_ = 151
+ SQLiteParserOVER_ = 152
+ SQLiteParserPARTITION_ = 153
+ SQLiteParserRANGE_ = 154
+ SQLiteParserPRECEDING_ = 155
+ SQLiteParserUNBOUNDED_ = 156
+ SQLiteParserCURRENT_ = 157
+ SQLiteParserFOLLOWING_ = 158
+ SQLiteParserCUME_DIST_ = 159
+ SQLiteParserDENSE_RANK_ = 160
+ SQLiteParserLAG_ = 161
+ SQLiteParserLAST_VALUE_ = 162
+ SQLiteParserLEAD_ = 163
+ SQLiteParserNTH_VALUE_ = 164
+ SQLiteParserNTILE_ = 165
+ SQLiteParserPERCENT_RANK_ = 166
+ SQLiteParserRANK_ = 167
+ SQLiteParserROW_NUMBER_ = 168
+ SQLiteParserGENERATED_ = 169
+ SQLiteParserALWAYS_ = 170
+ SQLiteParserSTORED_ = 171
+ SQLiteParserTRUE_ = 172
+ SQLiteParserFALSE_ = 173
+ SQLiteParserWINDOW_ = 174
+ SQLiteParserNULLS_ = 175
+ SQLiteParserFIRST_ = 176
+ SQLiteParserLAST_ = 177
+ SQLiteParserFILTER_ = 178
+ SQLiteParserGROUPS_ = 179
+ SQLiteParserEXCLUDE_ = 180
+ SQLiteParserTIES_ = 181
+ SQLiteParserOTHERS_ = 182
+ SQLiteParserDO_ = 183
+ SQLiteParserNOTHING_ = 184
+ SQLiteParserIDENTIFIER = 185
+ SQLiteParserNUMERIC_LITERAL = 186
+ SQLiteParserBIND_PARAMETER = 187
+ SQLiteParserSTRING_LITERAL = 188
+ SQLiteParserBLOB_LITERAL = 189
+ SQLiteParserSINGLE_LINE_COMMENT = 190
+ SQLiteParserMULTILINE_COMMENT = 191
+ SQLiteParserSPACES = 192
+ SQLiteParserUNEXPECTED_CHAR = 193
+)
+
+// SQLiteParser rules.
+const (
+ SQLiteParserRULE_parse = 0
+ SQLiteParserRULE_sql_stmt_list = 1
+ SQLiteParserRULE_sql_stmt = 2
+ SQLiteParserRULE_alter_table_stmt = 3
+ SQLiteParserRULE_analyze_stmt = 4
+ SQLiteParserRULE_attach_stmt = 5
+ SQLiteParserRULE_begin_stmt = 6
+ SQLiteParserRULE_commit_stmt = 7
+ SQLiteParserRULE_rollback_stmt = 8
+ SQLiteParserRULE_savepoint_stmt = 9
+ SQLiteParserRULE_release_stmt = 10
+ SQLiteParserRULE_create_index_stmt = 11
+ SQLiteParserRULE_indexed_column = 12
+ SQLiteParserRULE_create_table_stmt = 13
+ SQLiteParserRULE_column_def = 14
+ SQLiteParserRULE_type_name = 15
+ SQLiteParserRULE_column_constraint = 16
+ SQLiteParserRULE_signed_number = 17
+ SQLiteParserRULE_table_constraint = 18
+ SQLiteParserRULE_foreign_key_clause = 19
+ SQLiteParserRULE_conflict_clause = 20
+ SQLiteParserRULE_create_trigger_stmt = 21
+ SQLiteParserRULE_create_view_stmt = 22
+ SQLiteParserRULE_create_virtual_table_stmt = 23
+ SQLiteParserRULE_with_clause = 24
+ SQLiteParserRULE_cte_table_name = 25
+ SQLiteParserRULE_recursive_cte = 26
+ SQLiteParserRULE_common_table_expression = 27
+ SQLiteParserRULE_delete_stmt = 28
+ SQLiteParserRULE_delete_stmt_limited = 29
+ SQLiteParserRULE_detach_stmt = 30
+ SQLiteParserRULE_drop_stmt = 31
+ SQLiteParserRULE_expr = 32
+ SQLiteParserRULE_raise_function = 33
+ SQLiteParserRULE_literal_value = 34
+ SQLiteParserRULE_value_row = 35
+ SQLiteParserRULE_values_clause = 36
+ SQLiteParserRULE_insert_stmt = 37
+ SQLiteParserRULE_returning_clause = 38
+ SQLiteParserRULE_upsert_clause = 39
+ SQLiteParserRULE_pragma_stmt = 40
+ SQLiteParserRULE_pragma_value = 41
+ SQLiteParserRULE_reindex_stmt = 42
+ SQLiteParserRULE_select_stmt = 43
+ SQLiteParserRULE_join_clause = 44
+ SQLiteParserRULE_select_core = 45
+ SQLiteParserRULE_factored_select_stmt = 46
+ SQLiteParserRULE_simple_select_stmt = 47
+ SQLiteParserRULE_compound_select_stmt = 48
+ SQLiteParserRULE_table_or_subquery = 49
+ SQLiteParserRULE_result_column = 50
+ SQLiteParserRULE_join_operator = 51
+ SQLiteParserRULE_join_constraint = 52
+ SQLiteParserRULE_compound_operator = 53
+ SQLiteParserRULE_update_stmt = 54
+ SQLiteParserRULE_column_name_list = 55
+ SQLiteParserRULE_update_stmt_limited = 56
+ SQLiteParserRULE_qualified_table_name = 57
+ SQLiteParserRULE_vacuum_stmt = 58
+ SQLiteParserRULE_filter_clause = 59
+ SQLiteParserRULE_window_defn = 60
+ SQLiteParserRULE_over_clause = 61
+ SQLiteParserRULE_frame_spec = 62
+ SQLiteParserRULE_frame_clause = 63
+ SQLiteParserRULE_simple_function_invocation = 64
+ SQLiteParserRULE_aggregate_function_invocation = 65
+ SQLiteParserRULE_window_function_invocation = 66
+ SQLiteParserRULE_common_table_stmt = 67
+ SQLiteParserRULE_order_by_stmt = 68
+ SQLiteParserRULE_limit_stmt = 69
+ SQLiteParserRULE_ordering_term = 70
+ SQLiteParserRULE_asc_desc = 71
+ SQLiteParserRULE_frame_left = 72
+ SQLiteParserRULE_frame_right = 73
+ SQLiteParserRULE_frame_single = 74
+ SQLiteParserRULE_window_function = 75
+ SQLiteParserRULE_offset = 76
+ SQLiteParserRULE_default_value = 77
+ SQLiteParserRULE_partition_by = 78
+ SQLiteParserRULE_order_by_expr = 79
+ SQLiteParserRULE_order_by_expr_asc_desc = 80
+ SQLiteParserRULE_expr_asc_desc = 81
+ SQLiteParserRULE_initial_select = 82
+ SQLiteParserRULE_recursive_select = 83
+ SQLiteParserRULE_unary_operator = 84
+ SQLiteParserRULE_error_message = 85
+ SQLiteParserRULE_module_argument = 86
+ SQLiteParserRULE_column_alias = 87
+ SQLiteParserRULE_keyword = 88
+ SQLiteParserRULE_name = 89
+ SQLiteParserRULE_function_name = 90
+ SQLiteParserRULE_schema_name = 91
+ SQLiteParserRULE_table_name = 92
+ SQLiteParserRULE_table_or_index_name = 93
+ SQLiteParserRULE_column_name = 94
+ SQLiteParserRULE_collation_name = 95
+ SQLiteParserRULE_foreign_table = 96
+ SQLiteParserRULE_index_name = 97
+ SQLiteParserRULE_trigger_name = 98
+ SQLiteParserRULE_view_name = 99
+ SQLiteParserRULE_module_name = 100
+ SQLiteParserRULE_pragma_name = 101
+ SQLiteParserRULE_savepoint_name = 102
+ SQLiteParserRULE_table_alias = 103
+ SQLiteParserRULE_transaction_name = 104
+ SQLiteParserRULE_window_name = 105
+ SQLiteParserRULE_alias = 106
+ SQLiteParserRULE_filename = 107
+ SQLiteParserRULE_base_window_name = 108
+ SQLiteParserRULE_simple_func = 109
+ SQLiteParserRULE_aggregate_func = 110
+ SQLiteParserRULE_table_function_name = 111
+ SQLiteParserRULE_any_name = 112
+)
+
+// IParseContext is an interface to support dynamic dispatch.
+type IParseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ EOF() antlr.TerminalNode
+ AllSql_stmt_list() []ISql_stmt_listContext
+ Sql_stmt_list(i int) ISql_stmt_listContext
+
+ // IsParseContext differentiates from other interfaces.
+ IsParseContext()
+}
+
+type ParseContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyParseContext() *ParseContext {
+ var p = new(ParseContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_parse
+ return p
+}
+
+func InitEmptyParseContext(p *ParseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_parse
+}
+
+func (*ParseContext) IsParseContext() {}
+
+func NewParseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ParseContext {
+ var p = new(ParseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_parse
+
+ return p
+}
+
+func (s *ParseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *ParseContext) EOF() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEOF, 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) 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.(SQLiteParserListener); ok {
+ listenerT.EnterParse(s)
+ }
+}
+
+func (s *ParseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitParse(s)
+ }
+}
+
+func (p *SQLiteParser) Parse() (localctx IParseContext) {
+ localctx = NewParseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 0, SQLiteParserRULE_parse)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(229)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-6339801325483589630) != 0) || ((int64((_la-66)) & ^0x3f) == 0 && ((int64(1)<<(_la-66))&-7971300971697405919) != 0) || ((int64((_la-130)) & ^0x3f) == 0 && ((int64(1)<<(_la-130))&550913) != 0) {
+ {
+ p.SetState(226)
+ p.Sql_stmt_list()
+ }
+
+ p.SetState(231)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(232)
+ p.Match(SQLiteParserEOF)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISql_stmt_listContext is an interface to support dynamic dispatch.
+type ISql_stmt_listContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ AllSql_stmt() []ISql_stmtContext
+ Sql_stmt(i int) ISql_stmtContext
+ AllSCOL() []antlr.TerminalNode
+ SCOL(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_sql_stmt_list
+ return p
+}
+
+func InitEmptySql_stmt_listContext(p *Sql_stmt_listContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_sql_stmt_list
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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(SQLiteParserSCOL)
+}
+
+func (s *Sql_stmt_listContext) SCOL(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSCOL, 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.(SQLiteParserListener); ok {
+ listenerT.EnterSql_stmt_list(s)
+ }
+}
+
+func (s *Sql_stmt_listContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSql_stmt_list(s)
+ }
+}
+
+func (p *SQLiteParser) Sql_stmt_list() (localctx ISql_stmt_listContext) {
+ localctx = NewSql_stmt_listContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 2, SQLiteParserRULE_sql_stmt_list)
+ var _la int
+
+ var _alt int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(237)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserSCOL {
+ {
+ p.SetState(234)
+ p.Match(SQLiteParserSCOL)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ p.SetState(239)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(240)
+ p.Sql_stmt()
+ }
+ p.SetState(249)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 3, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
+ if _alt == 1 {
+ p.SetState(242)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for ok := true; ok; ok = _la == SQLiteParserSCOL {
+ {
+ p.SetState(241)
+ p.Match(SQLiteParserSCOL)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ p.SetState(244)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(246)
+ p.Sql_stmt()
+ }
+
+ }
+ p.SetState(251)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 3, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ }
+ p.SetState(255)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 4, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
+ if _alt == 1 {
+ {
+ p.SetState(252)
+ p.Match(SQLiteParserSCOL)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ p.SetState(257)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 4, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISql_stmtContext is an interface to support dynamic dispatch.
+type ISql_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Alter_table_stmt() IAlter_table_stmtContext
+ Analyze_stmt() IAnalyze_stmtContext
+ Attach_stmt() IAttach_stmtContext
+ Begin_stmt() IBegin_stmtContext
+ Commit_stmt() ICommit_stmtContext
+ Create_index_stmt() ICreate_index_stmtContext
+ Create_table_stmt() ICreate_table_stmtContext
+ Create_trigger_stmt() ICreate_trigger_stmtContext
+ Create_view_stmt() ICreate_view_stmtContext
+ Create_virtual_table_stmt() ICreate_virtual_table_stmtContext
+ Delete_stmt() IDelete_stmtContext
+ Delete_stmt_limited() IDelete_stmt_limitedContext
+ Detach_stmt() IDetach_stmtContext
+ Drop_stmt() IDrop_stmtContext
+ Insert_stmt() IInsert_stmtContext
+ Pragma_stmt() IPragma_stmtContext
+ Reindex_stmt() IReindex_stmtContext
+ Release_stmt() IRelease_stmtContext
+ Rollback_stmt() IRollback_stmtContext
+ Savepoint_stmt() ISavepoint_stmtContext
+ Select_stmt() ISelect_stmtContext
+ Update_stmt() IUpdate_stmtContext
+ Update_stmt_limited() IUpdate_stmt_limitedContext
+ Vacuum_stmt() IVacuum_stmtContext
+ EXPLAIN_() antlr.TerminalNode
+ QUERY_() antlr.TerminalNode
+ PLAN_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_sql_stmt
+ return p
+}
+
+func InitEmptySql_stmtContext(p *Sql_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_sql_stmt
+}
+
+func (*Sql_stmtContext) IsSql_stmtContext() {}
+
+func NewSql_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Sql_stmtContext {
+ var p = new(Sql_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) 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_stmt() IDrop_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IDrop_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IDrop_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) 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) EXPLAIN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXPLAIN_, 0)
+}
+
+func (s *Sql_stmtContext) QUERY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserQUERY_, 0)
+}
+
+func (s *Sql_stmtContext) PLAN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPLAN_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterSql_stmt(s)
+ }
+}
+
+func (s *Sql_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSql_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Sql_stmt() (localctx ISql_stmtContext) {
+ localctx = NewSql_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 4, SQLiteParserRULE_sql_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(263)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserEXPLAIN_ {
+ {
+ p.SetState(258)
+ p.Match(SQLiteParserEXPLAIN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(261)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserQUERY_ {
+ {
+ p.SetState(259)
+ p.Match(SQLiteParserQUERY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(260)
+ p.Match(SQLiteParserPLAN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+ }
+ p.SetState(289)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 7, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(265)
+ p.Alter_table_stmt()
+ }
+
+ case 2:
+ {
+ p.SetState(266)
+ p.Analyze_stmt()
+ }
+
+ case 3:
+ {
+ p.SetState(267)
+ p.Attach_stmt()
+ }
+
+ case 4:
+ {
+ p.SetState(268)
+ p.Begin_stmt()
+ }
+
+ case 5:
+ {
+ p.SetState(269)
+ p.Commit_stmt()
+ }
+
+ case 6:
+ {
+ p.SetState(270)
+ p.Create_index_stmt()
+ }
+
+ case 7:
+ {
+ p.SetState(271)
+ p.Create_table_stmt()
+ }
+
+ case 8:
+ {
+ p.SetState(272)
+ p.Create_trigger_stmt()
+ }
+
+ case 9:
+ {
+ p.SetState(273)
+ p.Create_view_stmt()
+ }
+
+ case 10:
+ {
+ p.SetState(274)
+ p.Create_virtual_table_stmt()
+ }
+
+ case 11:
+ {
+ p.SetState(275)
+ p.Delete_stmt()
+ }
+
+ case 12:
+ {
+ p.SetState(276)
+ p.Delete_stmt_limited()
+ }
+
+ case 13:
+ {
+ p.SetState(277)
+ p.Detach_stmt()
+ }
+
+ case 14:
+ {
+ p.SetState(278)
+ p.Drop_stmt()
+ }
+
+ case 15:
+ {
+ p.SetState(279)
+ p.Insert_stmt()
+ }
+
+ case 16:
+ {
+ p.SetState(280)
+ p.Pragma_stmt()
+ }
+
+ case 17:
+ {
+ p.SetState(281)
+ p.Reindex_stmt()
+ }
+
+ case 18:
+ {
+ p.SetState(282)
+ p.Release_stmt()
+ }
+
+ case 19:
+ {
+ p.SetState(283)
+ p.Rollback_stmt()
+ }
+
+ case 20:
+ {
+ p.SetState(284)
+ p.Savepoint_stmt()
+ }
+
+ case 21:
+ {
+ p.SetState(285)
+ p.Select_stmt()
+ }
+
+ case 22:
+ {
+ p.SetState(286)
+ p.Update_stmt()
+ }
+
+ case 23:
+ {
+ p.SetState(287)
+ p.Update_stmt_limited()
+ }
+
+ case 24:
+ {
+ p.SetState(288)
+ p.Vacuum_stmt()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IAlter_table_stmtContext is an interface to support dynamic dispatch.
+type IAlter_table_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // GetNew_table_name returns the new_table_name rule contexts.
+ GetNew_table_name() ITable_nameContext
+
+ // GetOld_column_name returns the old_column_name rule contexts.
+ GetOld_column_name() IColumn_nameContext
+
+ // GetNew_column_name returns the new_column_name rule contexts.
+ GetNew_column_name() IColumn_nameContext
+
+ // SetNew_table_name sets the new_table_name rule contexts.
+ SetNew_table_name(ITable_nameContext)
+
+ // SetOld_column_name sets the old_column_name rule contexts.
+ SetOld_column_name(IColumn_nameContext)
+
+ // SetNew_column_name sets the new_column_name rule contexts.
+ SetNew_column_name(IColumn_nameContext)
+
+ // Getter signatures
+ ALTER_() antlr.TerminalNode
+ TABLE_() antlr.TerminalNode
+ AllTable_name() []ITable_nameContext
+ Table_name(i int) ITable_nameContext
+ RENAME_() antlr.TerminalNode
+ ADD_() antlr.TerminalNode
+ Column_def() IColumn_defContext
+ DROP_() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ TO_() antlr.TerminalNode
+ COLUMN_() antlr.TerminalNode
+
+ // IsAlter_table_stmtContext differentiates from other interfaces.
+ IsAlter_table_stmtContext()
+}
+
+type Alter_table_stmtContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+ new_table_name ITable_nameContext
+ old_column_name IColumn_nameContext
+ new_column_name IColumn_nameContext
+}
+
+func NewEmptyAlter_table_stmtContext() *Alter_table_stmtContext {
+ var p = new(Alter_table_stmtContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_alter_table_stmt
+ return p
+}
+
+func InitEmptyAlter_table_stmtContext(p *Alter_table_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_alter_table_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_alter_table_stmt
+
+ return p
+}
+
+func (s *Alter_table_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Alter_table_stmtContext) GetNew_table_name() ITable_nameContext { return s.new_table_name }
+
+func (s *Alter_table_stmtContext) GetOld_column_name() IColumn_nameContext { return s.old_column_name }
+
+func (s *Alter_table_stmtContext) GetNew_column_name() IColumn_nameContext { return s.new_column_name }
+
+func (s *Alter_table_stmtContext) SetNew_table_name(v ITable_nameContext) { s.new_table_name = v }
+
+func (s *Alter_table_stmtContext) SetOld_column_name(v IColumn_nameContext) { s.old_column_name = v }
+
+func (s *Alter_table_stmtContext) SetNew_column_name(v IColumn_nameContext) { s.new_column_name = v }
+
+func (s *Alter_table_stmtContext) ALTER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALTER_, 0)
+}
+
+func (s *Alter_table_stmtContext) TABLE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTABLE_, 0)
+}
+
+func (s *Alter_table_stmtContext) AllTable_name() []ITable_nameContext {
+ children := s.GetChildren()
+ len := 0
+ for _, ctx := range children {
+ if _, ok := ctx.(ITable_nameContext); ok {
+ len++
+ }
+ }
+
+ tst := make([]ITable_nameContext, len)
+ i := 0
+ for _, ctx := range children {
+ if t, ok := ctx.(ITable_nameContext); ok {
+ tst[i] = t.(ITable_nameContext)
+ i++
+ }
+ }
+
+ return tst
+}
+
+func (s *Alter_table_stmtContext) Table_name(i int) ITable_nameContext {
+ var t antlr.RuleContext
+ j := 0
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ITable_nameContext); ok {
+ if j == i {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ j++
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ITable_nameContext)
+}
+
+func (s *Alter_table_stmtContext) RENAME_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRENAME_, 0)
+}
+
+func (s *Alter_table_stmtContext) ADD_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserADD_, 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) DROP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDROP_, 0)
+}
+
+func (s *Alter_table_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 *Alter_table_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 *Alter_table_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Alter_table_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Alter_table_stmtContext) TO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTO_, 0)
+}
+
+func (s *Alter_table_stmtContext) COLUMN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOLUMN_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterAlter_table_stmt(s)
+ }
+}
+
+func (s *Alter_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitAlter_table_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Alter_table_stmt() (localctx IAlter_table_stmtContext) {
+ localctx = NewAlter_table_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 6, SQLiteParserRULE_alter_table_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(291)
+ p.Match(SQLiteParserALTER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(292)
+ p.Match(SQLiteParserTABLE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(296)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 8, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(293)
+ p.Schema_name()
+ }
+ {
+ p.SetState(294)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(298)
+ p.Table_name()
+ }
+ p.SetState(321)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserRENAME_:
+ {
+ p.SetState(299)
+ p.Match(SQLiteParserRENAME_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(309)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 10, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(300)
+ p.Match(SQLiteParserTO_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(301)
+
+ var _x = p.Table_name()
+
+ localctx.(*Alter_table_stmtContext).new_table_name = _x
+ }
+
+ case 2:
+ p.SetState(303)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 9, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(302)
+ p.Match(SQLiteParserCOLUMN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(305)
+
+ var _x = p.Column_name()
+
+ localctx.(*Alter_table_stmtContext).old_column_name = _x
+ }
+ {
+ p.SetState(306)
+ p.Match(SQLiteParserTO_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(307)
+
+ var _x = p.Column_name()
+
+ localctx.(*Alter_table_stmtContext).new_column_name = _x
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+ case SQLiteParserADD_:
+ {
+ p.SetState(311)
+ p.Match(SQLiteParserADD_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(313)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 11, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(312)
+ p.Match(SQLiteParserCOLUMN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(315)
+ p.Column_def()
+ }
+
+ case SQLiteParserDROP_:
+ {
+ p.SetState(316)
+ p.Match(SQLiteParserDROP_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(318)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 12, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(317)
+ p.Match(SQLiteParserCOLUMN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(320)
+ p.Column_name()
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IAnalyze_stmtContext is an interface to support dynamic dispatch.
+type IAnalyze_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ANALYZE_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ Table_or_index_name() ITable_or_index_nameContext
+ DOT() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_analyze_stmt
+ return p
+}
+
+func InitEmptyAnalyze_stmtContext(p *Analyze_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_analyze_stmt
+}
+
+func (*Analyze_stmtContext) IsAnalyze_stmtContext() {}
+
+func NewAnalyze_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Analyze_stmtContext {
+ var p = new(Analyze_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_analyze_stmt
+
+ return p
+}
+
+func (s *Analyze_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Analyze_stmtContext) ANALYZE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserANALYZE_, 0)
+}
+
+func (s *Analyze_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_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(SQLiteParserDOT, 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.(SQLiteParserListener); ok {
+ listenerT.EnterAnalyze_stmt(s)
+ }
+}
+
+func (s *Analyze_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitAnalyze_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Analyze_stmt() (localctx IAnalyze_stmtContext) {
+ localctx = NewAnalyze_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 8, SQLiteParserRULE_analyze_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(323)
+ p.Match(SQLiteParserANALYZE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(331)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 15, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(324)
+ p.Schema_name()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 15, p.GetParserRuleContext()) == 2 {
+ p.SetState(328)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 14, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(325)
+ p.Schema_name()
+ }
+ {
+ p.SetState(326)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(330)
+ p.Table_or_index_name()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IAttach_stmtContext is an interface to support dynamic dispatch.
+type IAttach_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ATTACH_() antlr.TerminalNode
+ Expr() IExprContext
+ AS_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DATABASE_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_attach_stmt
+ return p
+}
+
+func InitEmptyAttach_stmtContext(p *Attach_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_attach_stmt
+}
+
+func (*Attach_stmtContext) IsAttach_stmtContext() {}
+
+func NewAttach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Attach_stmtContext {
+ var p = new(Attach_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_attach_stmt
+
+ return p
+}
+
+func (s *Attach_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Attach_stmtContext) ATTACH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserATTACH_, 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) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 0)
+}
+
+func (s *Attach_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Attach_stmtContext) DATABASE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDATABASE_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterAttach_stmt(s)
+ }
+}
+
+func (s *Attach_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitAttach_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Attach_stmt() (localctx IAttach_stmtContext) {
+ localctx = NewAttach_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 10, SQLiteParserRULE_attach_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(333)
+ p.Match(SQLiteParserATTACH_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(335)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 16, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(334)
+ p.Match(SQLiteParserDATABASE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(337)
+ p.expr(0)
+ }
+ {
+ p.SetState(338)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(339)
+ p.Schema_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IBegin_stmtContext is an interface to support dynamic dispatch.
+type IBegin_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ BEGIN_() antlr.TerminalNode
+ TRANSACTION_() antlr.TerminalNode
+ DEFERRED_() antlr.TerminalNode
+ IMMEDIATE_() antlr.TerminalNode
+ EXCLUSIVE_() antlr.TerminalNode
+ Transaction_name() ITransaction_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_begin_stmt
+ return p
+}
+
+func InitEmptyBegin_stmtContext(p *Begin_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_begin_stmt
+}
+
+func (*Begin_stmtContext) IsBegin_stmtContext() {}
+
+func NewBegin_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Begin_stmtContext {
+ var p = new(Begin_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_begin_stmt
+
+ return p
+}
+
+func (s *Begin_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Begin_stmtContext) BEGIN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBEGIN_, 0)
+}
+
+func (s *Begin_stmtContext) TRANSACTION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRANSACTION_, 0)
+}
+
+func (s *Begin_stmtContext) DEFERRED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFERRED_, 0)
+}
+
+func (s *Begin_stmtContext) IMMEDIATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIMMEDIATE_, 0)
+}
+
+func (s *Begin_stmtContext) EXCLUSIVE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXCLUSIVE_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterBegin_stmt(s)
+ }
+}
+
+func (s *Begin_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitBegin_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Begin_stmt() (localctx IBegin_stmtContext) {
+ localctx = NewBegin_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 12, SQLiteParserRULE_begin_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(341)
+ p.Match(SQLiteParserBEGIN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(343)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if (int64((_la-58)) & ^0x3f) == 0 && ((int64(1)<<(_la-58))&16779265) != 0 {
+ {
+ p.SetState(342)
+ _la = p.GetTokenStream().LA(1)
+
+ if !((int64((_la-58)) & ^0x3f) == 0 && ((int64(1)<<(_la-58))&16779265) != 0) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ }
+ p.SetState(349)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserTRANSACTION_ {
+ {
+ p.SetState(345)
+ p.Match(SQLiteParserTRANSACTION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(347)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 18, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(346)
+ p.Transaction_name()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICommit_stmtContext is an interface to support dynamic dispatch.
+type ICommit_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ COMMIT_() antlr.TerminalNode
+ END_() antlr.TerminalNode
+ TRANSACTION_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_commit_stmt
+ return p
+}
+
+func InitEmptyCommit_stmtContext(p *Commit_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_commit_stmt
+}
+
+func (*Commit_stmtContext) IsCommit_stmtContext() {}
+
+func NewCommit_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Commit_stmtContext {
+ var p = new(Commit_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_commit_stmt
+
+ return p
+}
+
+func (s *Commit_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Commit_stmtContext) COMMIT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMIT_, 0)
+}
+
+func (s *Commit_stmtContext) END_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEND_, 0)
+}
+
+func (s *Commit_stmtContext) TRANSACTION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRANSACTION_, 0)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterCommit_stmt(s)
+ }
+}
+
+func (s *Commit_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCommit_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Commit_stmt() (localctx ICommit_stmtContext) {
+ localctx = NewCommit_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 14, SQLiteParserRULE_commit_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(351)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserCOMMIT_ || _la == SQLiteParserEND_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ p.SetState(353)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserTRANSACTION_ {
+ {
+ p.SetState(352)
+ p.Match(SQLiteParserTRANSACTION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IRollback_stmtContext is an interface to support dynamic dispatch.
+type IRollback_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ROLLBACK_() antlr.TerminalNode
+ TRANSACTION_() antlr.TerminalNode
+ TO_() antlr.TerminalNode
+ Savepoint_name() ISavepoint_nameContext
+ SAVEPOINT_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_rollback_stmt
+ return p
+}
+
+func InitEmptyRollback_stmtContext(p *Rollback_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_rollback_stmt
+}
+
+func (*Rollback_stmtContext) IsRollback_stmtContext() {}
+
+func NewRollback_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Rollback_stmtContext {
+ var p = new(Rollback_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_rollback_stmt
+
+ return p
+}
+
+func (s *Rollback_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Rollback_stmtContext) ROLLBACK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROLLBACK_, 0)
+}
+
+func (s *Rollback_stmtContext) TRANSACTION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRANSACTION_, 0)
+}
+
+func (s *Rollback_stmtContext) TO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTO_, 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) SAVEPOINT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSAVEPOINT_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterRollback_stmt(s)
+ }
+}
+
+func (s *Rollback_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitRollback_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Rollback_stmt() (localctx IRollback_stmtContext) {
+ localctx = NewRollback_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 16, SQLiteParserRULE_rollback_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(355)
+ p.Match(SQLiteParserROLLBACK_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(357)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserTRANSACTION_ {
+ {
+ p.SetState(356)
+ p.Match(SQLiteParserTRANSACTION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ p.SetState(364)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserTO_ {
+ {
+ p.SetState(359)
+ p.Match(SQLiteParserTO_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(361)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 22, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(360)
+ p.Match(SQLiteParserSAVEPOINT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(363)
+ p.Savepoint_name()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISavepoint_stmtContext is an interface to support dynamic dispatch.
+type ISavepoint_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ SAVEPOINT_() antlr.TerminalNode
+ Savepoint_name() ISavepoint_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_savepoint_stmt
+ return p
+}
+
+func InitEmptySavepoint_stmtContext(p *Savepoint_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_savepoint_stmt
+}
+
+func (*Savepoint_stmtContext) IsSavepoint_stmtContext() {}
+
+func NewSavepoint_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_stmtContext {
+ var p = new(Savepoint_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_savepoint_stmt
+
+ return p
+}
+
+func (s *Savepoint_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Savepoint_stmtContext) SAVEPOINT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSAVEPOINT_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterSavepoint_stmt(s)
+ }
+}
+
+func (s *Savepoint_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSavepoint_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Savepoint_stmt() (localctx ISavepoint_stmtContext) {
+ localctx = NewSavepoint_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 18, SQLiteParserRULE_savepoint_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(366)
+ p.Match(SQLiteParserSAVEPOINT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(367)
+ p.Savepoint_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IRelease_stmtContext is an interface to support dynamic dispatch.
+type IRelease_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ RELEASE_() antlr.TerminalNode
+ Savepoint_name() ISavepoint_nameContext
+ SAVEPOINT_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_release_stmt
+ return p
+}
+
+func InitEmptyRelease_stmtContext(p *Release_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_release_stmt
+}
+
+func (*Release_stmtContext) IsRelease_stmtContext() {}
+
+func NewRelease_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Release_stmtContext {
+ var p = new(Release_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_release_stmt
+
+ return p
+}
+
+func (s *Release_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Release_stmtContext) RELEASE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRELEASE_, 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) SAVEPOINT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSAVEPOINT_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterRelease_stmt(s)
+ }
+}
+
+func (s *Release_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitRelease_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Release_stmt() (localctx IRelease_stmtContext) {
+ localctx = NewRelease_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 20, SQLiteParserRULE_release_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(369)
+ p.Match(SQLiteParserRELEASE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(371)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 24, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(370)
+ p.Match(SQLiteParserSAVEPOINT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(373)
+ p.Savepoint_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICreate_index_stmtContext is an interface to support dynamic dispatch.
+type ICreate_index_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ CREATE_() antlr.TerminalNode
+ INDEX_() antlr.TerminalNode
+ Index_name() IIndex_nameContext
+ ON_() antlr.TerminalNode
+ Table_name() ITable_nameContext
+ OPEN_PAR() antlr.TerminalNode
+ AllIndexed_column() []IIndexed_columnContext
+ Indexed_column(i int) IIndexed_columnContext
+ CLOSE_PAR() antlr.TerminalNode
+ UNIQUE_() antlr.TerminalNode
+ IF_() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+ EXISTS_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ WHERE_() antlr.TerminalNode
+ Expr() IExprContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_index_stmt
+ return p
+}
+
+func InitEmptyCreate_index_stmtContext(p *Create_index_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_index_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_create_index_stmt
+
+ return p
+}
+
+func (s *Create_index_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Create_index_stmtContext) CREATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCREATE_, 0)
+}
+
+func (s *Create_index_stmtContext) INDEX_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINDEX_, 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) ON_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserON_, 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(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Create_index_stmtContext) UNIQUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNIQUE_, 0)
+}
+
+func (s *Create_index_stmtContext) IF_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIF_, 0)
+}
+
+func (s *Create_index_stmtContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *Create_index_stmtContext) EXISTS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXISTS_, 0)
+}
+
+func (s *Create_index_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Create_index_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Create_index_stmtContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Create_index_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Create_index_stmtContext) WHERE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterCreate_index_stmt(s)
+ }
+}
+
+func (s *Create_index_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCreate_index_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Create_index_stmt() (localctx ICreate_index_stmtContext) {
+ localctx = NewCreate_index_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 22, SQLiteParserRULE_create_index_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(375)
+ p.Match(SQLiteParserCREATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(377)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserUNIQUE_ {
+ {
+ p.SetState(376)
+ p.Match(SQLiteParserUNIQUE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(379)
+ p.Match(SQLiteParserINDEX_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(383)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 26, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(380)
+ p.Match(SQLiteParserIF_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(381)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(382)
+ p.Match(SQLiteParserEXISTS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(388)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 27, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(385)
+ p.Schema_name()
+ }
+ {
+ p.SetState(386)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(390)
+ p.Index_name()
+ }
+ {
+ p.SetState(391)
+ p.Match(SQLiteParserON_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(392)
+ p.Table_name()
+ }
+ {
+ p.SetState(393)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(394)
+ p.Indexed_column()
+ }
+ p.SetState(399)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(395)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(396)
+ p.Indexed_column()
+ }
+
+ p.SetState(401)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(402)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(405)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHERE_ {
+ {
+ p.SetState(403)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(404)
+ p.expr(0)
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IIndexed_columnContext is an interface to support dynamic dispatch.
+type IIndexed_columnContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Column_name() IColumn_nameContext
+ Expr() IExprContext
+ COLLATE_() antlr.TerminalNode
+ Collation_name() ICollation_nameContext
+ Asc_desc() IAsc_descContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_indexed_column
+ return p
+}
+
+func InitEmptyIndexed_columnContext(p *Indexed_columnContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_indexed_column
+}
+
+func (*Indexed_columnContext) IsIndexed_columnContext() {}
+
+func NewIndexed_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Indexed_columnContext {
+ var p = new(Indexed_columnContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) 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 *Indexed_columnContext) COLLATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOLLATE_, 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) Asc_desc() IAsc_descContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IAsc_descContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IAsc_descContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterIndexed_column(s)
+ }
+}
+
+func (s *Indexed_columnContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitIndexed_column(s)
+ }
+}
+
+func (p *SQLiteParser) Indexed_column() (localctx IIndexed_columnContext) {
+ localctx = NewIndexed_columnContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 24, SQLiteParserRULE_indexed_column)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(409)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 30, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(407)
+ p.Column_name()
+ }
+
+ case 2:
+ {
+ p.SetState(408)
+ p.expr(0)
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ p.SetState(413)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserCOLLATE_ {
+ {
+ p.SetState(411)
+ p.Match(SQLiteParserCOLLATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(412)
+ p.Collation_name()
+ }
+
+ }
+ p.SetState(416)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserASC_ || _la == SQLiteParserDESC_ {
+ {
+ p.SetState(415)
+ p.Asc_desc()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICreate_table_stmtContext is an interface to support dynamic dispatch.
+type ICreate_table_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // GetRow_ROW_ID returns the row_ROW_ID token.
+ GetRow_ROW_ID() antlr.Token
+
+ // SetRow_ROW_ID sets the row_ROW_ID token.
+ SetRow_ROW_ID(antlr.Token)
+
+ // Getter signatures
+ CREATE_() antlr.TerminalNode
+ TABLE_() antlr.TerminalNode
+ Table_name() ITable_nameContext
+ OPEN_PAR() antlr.TerminalNode
+ AllColumn_def() []IColumn_defContext
+ Column_def(i int) IColumn_defContext
+ CLOSE_PAR() antlr.TerminalNode
+ AS_() antlr.TerminalNode
+ Select_stmt() ISelect_stmtContext
+ IF_() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+ EXISTS_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ TEMP_() antlr.TerminalNode
+ TEMPORARY_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ AllTable_constraint() []ITable_constraintContext
+ Table_constraint(i int) ITable_constraintContext
+ WITHOUT_() antlr.TerminalNode
+ IDENTIFIER() antlr.TerminalNode
+
+ // IsCreate_table_stmtContext differentiates from other interfaces.
+ IsCreate_table_stmtContext()
+}
+
+type Create_table_stmtContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+ row_ROW_ID antlr.Token
+}
+
+func NewEmptyCreate_table_stmtContext() *Create_table_stmtContext {
+ var p = new(Create_table_stmtContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_table_stmt
+ return p
+}
+
+func InitEmptyCreate_table_stmtContext(p *Create_table_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_table_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_create_table_stmt
+
+ return p
+}
+
+func (s *Create_table_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Create_table_stmtContext) GetRow_ROW_ID() antlr.Token { return s.row_ROW_ID }
+
+func (s *Create_table_stmtContext) SetRow_ROW_ID(v antlr.Token) { s.row_ROW_ID = v }
+
+func (s *Create_table_stmtContext) CREATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCREATE_, 0)
+}
+
+func (s *Create_table_stmtContext) TABLE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTABLE_, 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(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Create_table_stmtContext) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 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) IF_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIF_, 0)
+}
+
+func (s *Create_table_stmtContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *Create_table_stmtContext) EXISTS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXISTS_, 0)
+}
+
+func (s *Create_table_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Create_table_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Create_table_stmtContext) TEMP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTEMP_, 0)
+}
+
+func (s *Create_table_stmtContext) TEMPORARY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTEMPORARY_, 0)
+}
+
+func (s *Create_table_stmtContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Create_table_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 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) WITHOUT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWITHOUT_, 0)
+}
+
+func (s *Create_table_stmtContext) IDENTIFIER() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIDENTIFIER, 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.(SQLiteParserListener); ok {
+ listenerT.EnterCreate_table_stmt(s)
+ }
+}
+
+func (s *Create_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCreate_table_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Create_table_stmt() (localctx ICreate_table_stmtContext) {
+ localctx = NewCreate_table_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 26, SQLiteParserRULE_create_table_stmt)
+ var _la int
+
+ var _alt int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(418)
+ p.Match(SQLiteParserCREATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(420)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserTEMP_ || _la == SQLiteParserTEMPORARY_ {
+ {
+ p.SetState(419)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserTEMP_ || _la == SQLiteParserTEMPORARY_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ }
+ {
+ p.SetState(422)
+ p.Match(SQLiteParserTABLE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(426)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 34, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(423)
+ p.Match(SQLiteParserIF_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(424)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(425)
+ p.Match(SQLiteParserEXISTS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(431)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 35, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(428)
+ p.Schema_name()
+ }
+ {
+ p.SetState(429)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(433)
+ p.Table_name()
+ }
+ p.SetState(457)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserOPEN_PAR:
+ {
+ p.SetState(434)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(435)
+ p.Column_def()
+ }
+ p.SetState(440)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 36, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ for _alt != 1 && _alt != antlr.ATNInvalidAltNumber {
+ if _alt == 1+1 {
+ {
+ p.SetState(436)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(437)
+ p.Column_def()
+ }
+
+ }
+ p.SetState(442)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 36, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ }
+ p.SetState(447)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(443)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(444)
+ p.Table_constraint()
+ }
+
+ p.SetState(449)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(450)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(453)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITHOUT_ {
+ {
+ p.SetState(451)
+ p.Match(SQLiteParserWITHOUT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(452)
+
+ var _m = p.Match(SQLiteParserIDENTIFIER)
+
+ localctx.(*Create_table_stmtContext).row_ROW_ID = _m
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+ case SQLiteParserAS_:
+ {
+ p.SetState(455)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(456)
+ p.Select_stmt()
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IColumn_defContext is an interface to support dynamic dispatch.
+type IColumn_defContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Column_name() IColumn_nameContext
+ Type_name() IType_nameContext
+ AllColumn_constraint() []IColumn_constraintContext
+ Column_constraint(i int) IColumn_constraintContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_def
+ return p
+}
+
+func InitEmptyColumn_defContext(p *Column_defContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_def
+}
+
+func (*Column_defContext) IsColumn_defContext() {}
+
+func NewColumn_defContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_defContext {
+ var p = new(Column_defContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) 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 *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) 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.(SQLiteParserListener); ok {
+ listenerT.EnterColumn_def(s)
+ }
+}
+
+func (s *Column_defContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitColumn_def(s)
+ }
+}
+
+func (p *SQLiteParser) Column_def() (localctx IColumn_defContext) {
+ localctx = NewColumn_defContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 28, SQLiteParserRULE_column_def)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(459)
+ p.Column_name()
+ }
+ p.SetState(461)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 40, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(460)
+ p.Type_name()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(466)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&72673329139417088) != 0) || ((int64((_la-102)) & ^0x3f) == 0 && ((int64(1)<<(_la-102))&274877941765) != 0) || _la == SQLiteParserGENERATED_ {
+ {
+ p.SetState(463)
+ p.Column_constraint()
+ }
+
+ p.SetState(468)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IType_nameContext is an interface to support dynamic dispatch.
+type IType_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ AllName() []INameContext
+ Name(i int) INameContext
+ OPEN_PAR() antlr.TerminalNode
+ AllSigned_number() []ISigned_numberContext
+ Signed_number(i int) ISigned_numberContext
+ CLOSE_PAR() antlr.TerminalNode
+ COMMA() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_type_name
+ return p
+}
+
+func InitEmptyType_nameContext(p *Type_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_type_name
+}
+
+func (*Type_nameContext) IsType_nameContext() {}
+
+func NewType_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Type_nameContext {
+ var p = new(Type_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_type_name
+
+ return p
+}
+
+func (s *Type_nameContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Type_nameContext) 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 *Type_nameContext) 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 *Type_nameContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Type_nameContext) COMMA() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 0)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterType_name(s)
+ }
+}
+
+func (s *Type_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitType_name(s)
+ }
+}
+
+func (p *SQLiteParser) Type_name() (localctx IType_nameContext) {
+ localctx = NewType_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 30, SQLiteParserRULE_type_name)
+ var _alt int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(470)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = 1 + 1
+ for ok := true; ok; ok = _alt != 1 && _alt != antlr.ATNInvalidAltNumber {
+ switch _alt {
+ case 1 + 1:
+ {
+ p.SetState(469)
+ p.Name()
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+ p.SetState(472)
+ p.GetErrorHandler().Sync(p)
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 42, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ }
+ p.SetState(484)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 43, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(474)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(475)
+ p.Signed_number()
+ }
+ {
+ p.SetState(476)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 43, p.GetParserRuleContext()) == 2 {
+ {
+ p.SetState(478)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(479)
+ p.Signed_number()
+ }
+ {
+ p.SetState(480)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(481)
+ p.Signed_number()
+ }
+ {
+ p.SetState(482)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IColumn_constraintContext is an interface to support dynamic dispatch.
+type IColumn_constraintContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ CHECK_() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ Expr() IExprContext
+ CLOSE_PAR() antlr.TerminalNode
+ DEFAULT_() antlr.TerminalNode
+ COLLATE_() antlr.TerminalNode
+ Collation_name() ICollation_nameContext
+ Foreign_key_clause() IForeign_key_clauseContext
+ AS_() antlr.TerminalNode
+ CONSTRAINT_() antlr.TerminalNode
+ Name() INameContext
+ PRIMARY_() antlr.TerminalNode
+ KEY_() antlr.TerminalNode
+ NULL_() antlr.TerminalNode
+ UNIQUE_() antlr.TerminalNode
+ Signed_number() ISigned_numberContext
+ Literal_value() ILiteral_valueContext
+ Conflict_clause() IConflict_clauseContext
+ GENERATED_() antlr.TerminalNode
+ ALWAYS_() antlr.TerminalNode
+ STORED_() antlr.TerminalNode
+ VIRTUAL_() antlr.TerminalNode
+ Asc_desc() IAsc_descContext
+ AUTOINCREMENT_() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_constraint
+ return p
+}
+
+func InitEmptyColumn_constraintContext(p *Column_constraintContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_constraint
+}
+
+func (*Column_constraintContext) IsColumn_constraintContext() {}
+
+func NewColumn_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_constraintContext {
+ var p = new(Column_constraintContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_column_constraint
+
+ return p
+}
+
+func (s *Column_constraintContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Column_constraintContext) CHECK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCHECK_, 0)
+}
+
+func (s *Column_constraintContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Column_constraintContext) DEFAULT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFAULT_, 0)
+}
+
+func (s *Column_constraintContext) COLLATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOLLATE_, 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) 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_constraintContext) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 0)
+}
+
+func (s *Column_constraintContext) CONSTRAINT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCONSTRAINT_, 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) PRIMARY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRIMARY_, 0)
+}
+
+func (s *Column_constraintContext) KEY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserKEY_, 0)
+}
+
+func (s *Column_constraintContext) NULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNULL_, 0)
+}
+
+func (s *Column_constraintContext) UNIQUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNIQUE_, 0)
+}
+
+func (s *Column_constraintContext) 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_constraintContext) 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_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) GENERATED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGENERATED_, 0)
+}
+
+func (s *Column_constraintContext) ALWAYS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALWAYS_, 0)
+}
+
+func (s *Column_constraintContext) STORED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTORED_, 0)
+}
+
+func (s *Column_constraintContext) VIRTUAL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVIRTUAL_, 0)
+}
+
+func (s *Column_constraintContext) Asc_desc() IAsc_descContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IAsc_descContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IAsc_descContext)
+}
+
+func (s *Column_constraintContext) AUTOINCREMENT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAUTOINCREMENT_, 0)
+}
+
+func (s *Column_constraintContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterColumn_constraint(s)
+ }
+}
+
+func (s *Column_constraintContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitColumn_constraint(s)
+ }
+}
+
+func (p *SQLiteParser) Column_constraint() (localctx IColumn_constraintContext) {
+ localctx = NewColumn_constraintContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 32, SQLiteParserRULE_column_constraint)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(488)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserCONSTRAINT_ {
+ {
+ p.SetState(486)
+ p.Match(SQLiteParserCONSTRAINT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(487)
+ p.Name()
+ }
+
+ }
+ p.SetState(539)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserPRIMARY_:
+ {
+ p.SetState(490)
+ p.Match(SQLiteParserPRIMARY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(491)
+ p.Match(SQLiteParserKEY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(493)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserASC_ || _la == SQLiteParserDESC_ {
+ {
+ p.SetState(492)
+ p.Asc_desc()
+ }
+
+ }
+ p.SetState(496)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserON_ {
+ {
+ p.SetState(495)
+ p.Conflict_clause()
+ }
+
+ }
+ p.SetState(499)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserAUTOINCREMENT_ {
+ {
+ p.SetState(498)
+ p.Match(SQLiteParserAUTOINCREMENT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+ case SQLiteParserNOT_, SQLiteParserNULL_, SQLiteParserUNIQUE_:
+ p.SetState(506)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserNOT_, SQLiteParserNULL_:
+ p.SetState(502)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserNOT_ {
+ {
+ p.SetState(501)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(504)
+ p.Match(SQLiteParserNULL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserUNIQUE_:
+ {
+ p.SetState(505)
+ p.Match(SQLiteParserUNIQUE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+ p.SetState(509)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserON_ {
+ {
+ p.SetState(508)
+ p.Conflict_clause()
+ }
+
+ }
+
+ case SQLiteParserCHECK_:
+ {
+ p.SetState(511)
+ p.Match(SQLiteParserCHECK_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(512)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(513)
+ p.expr(0)
+ }
+ {
+ p.SetState(514)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserDEFAULT_:
+ {
+ p.SetState(516)
+ p.Match(SQLiteParserDEFAULT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(523)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 51, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(517)
+ p.Signed_number()
+ }
+
+ case 2:
+ {
+ p.SetState(518)
+ p.Literal_value()
+ }
+
+ case 3:
+ {
+ p.SetState(519)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(520)
+ p.expr(0)
+ }
+ {
+ p.SetState(521)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+ case SQLiteParserCOLLATE_:
+ {
+ p.SetState(525)
+ p.Match(SQLiteParserCOLLATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(526)
+ p.Collation_name()
+ }
+
+ case SQLiteParserREFERENCES_:
+ {
+ p.SetState(527)
+ p.Foreign_key_clause()
+ }
+
+ case SQLiteParserAS_, SQLiteParserGENERATED_:
+ p.SetState(530)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserGENERATED_ {
+ {
+ p.SetState(528)
+ p.Match(SQLiteParserGENERATED_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(529)
+ p.Match(SQLiteParserALWAYS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(532)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(533)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(534)
+ p.expr(0)
+ }
+ {
+ p.SetState(535)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(537)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserVIRTUAL_ || _la == SQLiteParserSTORED_ {
+ {
+ p.SetState(536)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserVIRTUAL_ || _la == SQLiteParserSTORED_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISigned_numberContext is an interface to support dynamic dispatch.
+type ISigned_numberContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ NUMERIC_LITERAL() antlr.TerminalNode
+ PLUS() antlr.TerminalNode
+ MINUS() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_signed_number
+ return p
+}
+
+func InitEmptySigned_numberContext(p *Signed_numberContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_signed_number
+}
+
+func (*Signed_numberContext) IsSigned_numberContext() {}
+
+func NewSigned_numberContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Signed_numberContext {
+ var p = new(Signed_numberContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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(SQLiteParserNUMERIC_LITERAL, 0)
+}
+
+func (s *Signed_numberContext) PLUS() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPLUS, 0)
+}
+
+func (s *Signed_numberContext) MINUS() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserMINUS, 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.(SQLiteParserListener); ok {
+ listenerT.EnterSigned_number(s)
+ }
+}
+
+func (s *Signed_numberContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSigned_number(s)
+ }
+}
+
+func (p *SQLiteParser) Signed_number() (localctx ISigned_numberContext) {
+ localctx = NewSigned_numberContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 34, SQLiteParserRULE_signed_number)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(542)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPLUS || _la == SQLiteParserMINUS {
+ {
+ p.SetState(541)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserPLUS || _la == SQLiteParserMINUS) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ }
+ {
+ p.SetState(544)
+ p.Match(SQLiteParserNUMERIC_LITERAL)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ITable_constraintContext is an interface to support dynamic dispatch.
+type ITable_constraintContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ OPEN_PAR() antlr.TerminalNode
+ AllIndexed_column() []IIndexed_columnContext
+ Indexed_column(i int) IIndexed_columnContext
+ CLOSE_PAR() antlr.TerminalNode
+ CHECK_() antlr.TerminalNode
+ Expr() IExprContext
+ FOREIGN_() antlr.TerminalNode
+ KEY_() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ Foreign_key_clause() IForeign_key_clauseContext
+ CONSTRAINT_() antlr.TerminalNode
+ Name() INameContext
+ PRIMARY_() antlr.TerminalNode
+ UNIQUE_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ Conflict_clause() IConflict_clauseContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_constraint
+ return p
+}
+
+func InitEmptyTable_constraintContext(p *Table_constraintContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_constraint
+}
+
+func (*Table_constraintContext) IsTable_constraintContext() {}
+
+func NewTable_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_constraintContext {
+ var p = new(Table_constraintContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_table_constraint
+
+ return p
+}
+
+func (s *Table_constraintContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Table_constraintContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Table_constraintContext) 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_constraintContext) 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_constraintContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Table_constraintContext) CHECK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCHECK_, 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) FOREIGN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFOREIGN_, 0)
+}
+
+func (s *Table_constraintContext) KEY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserKEY_, 0)
+}
+
+func (s *Table_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 *Table_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 *Table_constraintContext) 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_constraintContext) CONSTRAINT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCONSTRAINT_, 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) PRIMARY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRIMARY_, 0)
+}
+
+func (s *Table_constraintContext) UNIQUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNIQUE_, 0)
+}
+
+func (s *Table_constraintContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Table_constraintContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Table_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 *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.(SQLiteParserListener); ok {
+ listenerT.EnterTable_constraint(s)
+ }
+}
+
+func (s *Table_constraintContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitTable_constraint(s)
+ }
+}
+
+func (p *SQLiteParser) Table_constraint() (localctx ITable_constraintContext) {
+ localctx = NewTable_constraintContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 36, SQLiteParserRULE_table_constraint)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(548)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserCONSTRAINT_ {
+ {
+ p.SetState(546)
+ p.Match(SQLiteParserCONSTRAINT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(547)
+ p.Name()
+ }
+
+ }
+ p.SetState(587)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserPRIMARY_, SQLiteParserUNIQUE_:
+ p.SetState(553)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserPRIMARY_:
+ {
+ p.SetState(550)
+ p.Match(SQLiteParserPRIMARY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(551)
+ p.Match(SQLiteParserKEY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserUNIQUE_:
+ {
+ p.SetState(552)
+ p.Match(SQLiteParserUNIQUE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+ {
+ p.SetState(555)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(556)
+ p.Indexed_column()
+ }
+ p.SetState(561)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(557)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(558)
+ p.Indexed_column()
+ }
+
+ p.SetState(563)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(564)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(566)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserON_ {
+ {
+ p.SetState(565)
+ p.Conflict_clause()
+ }
+
+ }
+
+ case SQLiteParserCHECK_:
+ {
+ p.SetState(568)
+ p.Match(SQLiteParserCHECK_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(569)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(570)
+ p.expr(0)
+ }
+ {
+ p.SetState(571)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserFOREIGN_:
+ {
+ p.SetState(573)
+ p.Match(SQLiteParserFOREIGN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(574)
+ p.Match(SQLiteParserKEY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(575)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(576)
+ p.Column_name()
+ }
+ p.SetState(581)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(577)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(578)
+ p.Column_name()
+ }
+
+ p.SetState(583)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(584)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(585)
+ p.Foreign_key_clause()
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IForeign_key_clauseContext is an interface to support dynamic dispatch.
+type IForeign_key_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ REFERENCES_() antlr.TerminalNode
+ Foreign_table() IForeign_tableContext
+ OPEN_PAR() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ CLOSE_PAR() antlr.TerminalNode
+ AllON_() []antlr.TerminalNode
+ ON_(i int) antlr.TerminalNode
+ AllMATCH_() []antlr.TerminalNode
+ MATCH_(i int) antlr.TerminalNode
+ AllName() []INameContext
+ Name(i int) INameContext
+ DEFERRABLE_() antlr.TerminalNode
+ AllDELETE_() []antlr.TerminalNode
+ DELETE_(i int) antlr.TerminalNode
+ AllUPDATE_() []antlr.TerminalNode
+ UPDATE_(i int) antlr.TerminalNode
+ AllSET_() []antlr.TerminalNode
+ SET_(i int) antlr.TerminalNode
+ AllCASCADE_() []antlr.TerminalNode
+ CASCADE_(i int) antlr.TerminalNode
+ AllRESTRICT_() []antlr.TerminalNode
+ RESTRICT_(i int) antlr.TerminalNode
+ AllNO_() []antlr.TerminalNode
+ NO_(i int) antlr.TerminalNode
+ AllACTION_() []antlr.TerminalNode
+ ACTION_(i int) antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ AllNULL_() []antlr.TerminalNode
+ NULL_(i int) antlr.TerminalNode
+ AllDEFAULT_() []antlr.TerminalNode
+ DEFAULT_(i int) antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+ INITIALLY_() antlr.TerminalNode
+ DEFERRED_() antlr.TerminalNode
+ IMMEDIATE_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_foreign_key_clause
+ return p
+}
+
+func InitEmptyForeign_key_clauseContext(p *Foreign_key_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_foreign_key_clause
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_foreign_key_clause
+
+ return p
+}
+
+func (s *Foreign_key_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Foreign_key_clauseContext) REFERENCES_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREFERENCES_, 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) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Foreign_key_clauseContext) 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 *Foreign_key_clauseContext) 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 *Foreign_key_clauseContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Foreign_key_clauseContext) AllON_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserON_)
+}
+
+func (s *Foreign_key_clauseContext) ON_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserON_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllMATCH_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserMATCH_)
+}
+
+func (s *Foreign_key_clauseContext) MATCH_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserMATCH_, 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) DEFERRABLE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFERRABLE_, 0)
+}
+
+func (s *Foreign_key_clauseContext) AllDELETE_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserDELETE_)
+}
+
+func (s *Foreign_key_clauseContext) DELETE_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDELETE_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllUPDATE_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserUPDATE_)
+}
+
+func (s *Foreign_key_clauseContext) UPDATE_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUPDATE_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllSET_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserSET_)
+}
+
+func (s *Foreign_key_clauseContext) SET_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSET_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllCASCADE_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCASCADE_)
+}
+
+func (s *Foreign_key_clauseContext) CASCADE_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCASCADE_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllRESTRICT_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserRESTRICT_)
+}
+
+func (s *Foreign_key_clauseContext) RESTRICT_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRESTRICT_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllNO_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserNO_)
+}
+
+func (s *Foreign_key_clauseContext) NO_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNO_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllACTION_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserACTION_)
+}
+
+func (s *Foreign_key_clauseContext) ACTION_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserACTION_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Foreign_key_clauseContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Foreign_key_clauseContext) AllNULL_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserNULL_)
+}
+
+func (s *Foreign_key_clauseContext) NULL_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNULL_, i)
+}
+
+func (s *Foreign_key_clauseContext) AllDEFAULT_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserDEFAULT_)
+}
+
+func (s *Foreign_key_clauseContext) DEFAULT_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFAULT_, i)
+}
+
+func (s *Foreign_key_clauseContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *Foreign_key_clauseContext) INITIALLY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINITIALLY_, 0)
+}
+
+func (s *Foreign_key_clauseContext) DEFERRED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFERRED_, 0)
+}
+
+func (s *Foreign_key_clauseContext) IMMEDIATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIMMEDIATE_, 0)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterForeign_key_clause(s)
+ }
+}
+
+func (s *Foreign_key_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitForeign_key_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Foreign_key_clause() (localctx IForeign_key_clauseContext) {
+ localctx = NewForeign_key_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 38, SQLiteParserRULE_foreign_key_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(589)
+ p.Match(SQLiteParserREFERENCES_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(590)
+ p.Foreign_table()
+ }
+ p.SetState(602)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOPEN_PAR {
+ {
+ p.SetState(591)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(592)
+ p.Column_name()
+ }
+ p.SetState(597)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(593)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(594)
+ p.Column_name()
+ }
+
+ p.SetState(599)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(600)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ p.SetState(618)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserMATCH_ || _la == SQLiteParserON_ {
+ p.SetState(616)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserON_:
+ {
+ p.SetState(604)
+ p.Match(SQLiteParserON_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(605)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserDELETE_ || _la == SQLiteParserUPDATE_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ p.SetState(612)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserSET_:
+ {
+ p.SetState(606)
+ p.Match(SQLiteParserSET_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(607)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserDEFAULT_ || _la == SQLiteParserNULL_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ case SQLiteParserCASCADE_:
+ {
+ p.SetState(608)
+ p.Match(SQLiteParserCASCADE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserRESTRICT_:
+ {
+ p.SetState(609)
+ p.Match(SQLiteParserRESTRICT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserNO_:
+ {
+ p.SetState(610)
+ p.Match(SQLiteParserNO_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(611)
+ p.Match(SQLiteParserACTION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+ case SQLiteParserMATCH_:
+ {
+ p.SetState(614)
+ p.Match(SQLiteParserMATCH_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(615)
+ p.Name()
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+ p.SetState(620)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ p.SetState(629)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 69, p.GetParserRuleContext()) == 1 {
+ p.SetState(622)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserNOT_ {
+ {
+ p.SetState(621)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(624)
+ p.Match(SQLiteParserDEFERRABLE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(627)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserINITIALLY_ {
+ {
+ p.SetState(625)
+ p.Match(SQLiteParserINITIALLY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(626)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserDEFERRED_ || _la == SQLiteParserIMMEDIATE_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IConflict_clauseContext is an interface to support dynamic dispatch.
+type IConflict_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ON_() antlr.TerminalNode
+ CONFLICT_() antlr.TerminalNode
+ ROLLBACK_() antlr.TerminalNode
+ ABORT_() antlr.TerminalNode
+ FAIL_() antlr.TerminalNode
+ IGNORE_() antlr.TerminalNode
+ REPLACE_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_conflict_clause
+ return p
+}
+
+func InitEmptyConflict_clauseContext(p *Conflict_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_conflict_clause
+}
+
+func (*Conflict_clauseContext) IsConflict_clauseContext() {}
+
+func NewConflict_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Conflict_clauseContext {
+ var p = new(Conflict_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_conflict_clause
+
+ return p
+}
+
+func (s *Conflict_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Conflict_clauseContext) ON_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserON_, 0)
+}
+
+func (s *Conflict_clauseContext) CONFLICT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCONFLICT_, 0)
+}
+
+func (s *Conflict_clauseContext) ROLLBACK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROLLBACK_, 0)
+}
+
+func (s *Conflict_clauseContext) ABORT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserABORT_, 0)
+}
+
+func (s *Conflict_clauseContext) FAIL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFAIL_, 0)
+}
+
+func (s *Conflict_clauseContext) IGNORE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIGNORE_, 0)
+}
+
+func (s *Conflict_clauseContext) REPLACE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREPLACE_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterConflict_clause(s)
+ }
+}
+
+func (s *Conflict_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitConflict_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Conflict_clause() (localctx IConflict_clauseContext) {
+ localctx = NewConflict_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 40, SQLiteParserRULE_conflict_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(631)
+ p.Match(SQLiteParserON_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(632)
+ p.Match(SQLiteParserCONFLICT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(633)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserABORT_ || ((int64((_la-72)) & ^0x3f) == 0 && ((int64(1)<<(_la-72))&19140298416325121) != 0)) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICreate_trigger_stmtContext is an interface to support dynamic dispatch.
+type ICreate_trigger_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ CREATE_() antlr.TerminalNode
+ TRIGGER_() antlr.TerminalNode
+ Trigger_name() ITrigger_nameContext
+ ON_() antlr.TerminalNode
+ Table_name() ITable_nameContext
+ BEGIN_() antlr.TerminalNode
+ END_() antlr.TerminalNode
+ DELETE_() antlr.TerminalNode
+ INSERT_() antlr.TerminalNode
+ UPDATE_() antlr.TerminalNode
+ IF_() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+ EXISTS_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ BEFORE_() antlr.TerminalNode
+ AFTER_() antlr.TerminalNode
+ INSTEAD_() antlr.TerminalNode
+ AllOF_() []antlr.TerminalNode
+ OF_(i int) antlr.TerminalNode
+ FOR_() antlr.TerminalNode
+ EACH_() antlr.TerminalNode
+ ROW_() antlr.TerminalNode
+ WHEN_() antlr.TerminalNode
+ Expr() IExprContext
+ AllSCOL() []antlr.TerminalNode
+ SCOL(i int) antlr.TerminalNode
+ TEMP_() antlr.TerminalNode
+ TEMPORARY_() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ AllUpdate_stmt() []IUpdate_stmtContext
+ Update_stmt(i int) IUpdate_stmtContext
+ AllInsert_stmt() []IInsert_stmtContext
+ Insert_stmt(i int) IInsert_stmtContext
+ AllDelete_stmt() []IDelete_stmtContext
+ Delete_stmt(i int) IDelete_stmtContext
+ AllSelect_stmt() []ISelect_stmtContext
+ Select_stmt(i int) ISelect_stmtContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_trigger_stmt
+ return p
+}
+
+func InitEmptyCreate_trigger_stmtContext(p *Create_trigger_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_trigger_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_create_trigger_stmt
+
+ return p
+}
+
+func (s *Create_trigger_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Create_trigger_stmtContext) CREATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCREATE_, 0)
+}
+
+func (s *Create_trigger_stmtContext) TRIGGER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRIGGER_, 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) ON_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserON_, 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) BEGIN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBEGIN_, 0)
+}
+
+func (s *Create_trigger_stmtContext) END_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEND_, 0)
+}
+
+func (s *Create_trigger_stmtContext) DELETE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDELETE_, 0)
+}
+
+func (s *Create_trigger_stmtContext) INSERT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINSERT_, 0)
+}
+
+func (s *Create_trigger_stmtContext) UPDATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUPDATE_, 0)
+}
+
+func (s *Create_trigger_stmtContext) IF_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIF_, 0)
+}
+
+func (s *Create_trigger_stmtContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *Create_trigger_stmtContext) EXISTS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXISTS_, 0)
+}
+
+func (s *Create_trigger_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Create_trigger_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Create_trigger_stmtContext) BEFORE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBEFORE_, 0)
+}
+
+func (s *Create_trigger_stmtContext) AFTER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAFTER_, 0)
+}
+
+func (s *Create_trigger_stmtContext) INSTEAD_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINSTEAD_, 0)
+}
+
+func (s *Create_trigger_stmtContext) AllOF_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserOF_)
+}
+
+func (s *Create_trigger_stmtContext) OF_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOF_, i)
+}
+
+func (s *Create_trigger_stmtContext) FOR_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFOR_, 0)
+}
+
+func (s *Create_trigger_stmtContext) EACH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEACH_, 0)
+}
+
+func (s *Create_trigger_stmtContext) ROW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROW_, 0)
+}
+
+func (s *Create_trigger_stmtContext) WHEN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHEN_, 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(SQLiteParserSCOL)
+}
+
+func (s *Create_trigger_stmtContext) SCOL(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSCOL, i)
+}
+
+func (s *Create_trigger_stmtContext) TEMP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTEMP_, 0)
+}
+
+func (s *Create_trigger_stmtContext) TEMPORARY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTEMPORARY_, 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(SQLiteParserCOMMA)
+}
+
+func (s *Create_trigger_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 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.(SQLiteParserListener); ok {
+ listenerT.EnterCreate_trigger_stmt(s)
+ }
+}
+
+func (s *Create_trigger_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCreate_trigger_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Create_trigger_stmt() (localctx ICreate_trigger_stmtContext) {
+ localctx = NewCreate_trigger_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 42, SQLiteParserRULE_create_trigger_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(635)
+ p.Match(SQLiteParserCREATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(637)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserTEMP_ || _la == SQLiteParserTEMPORARY_ {
+ {
+ p.SetState(636)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserTEMP_ || _la == SQLiteParserTEMPORARY_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ }
+ {
+ p.SetState(639)
+ p.Match(SQLiteParserTRIGGER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(643)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 71, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(640)
+ p.Match(SQLiteParserIF_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(641)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(642)
+ p.Match(SQLiteParserEXISTS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(648)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 72, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(645)
+ p.Schema_name()
+ }
+ {
+ p.SetState(646)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(650)
+ p.Trigger_name()
+ }
+ p.SetState(655)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserBEFORE_:
+ {
+ p.SetState(651)
+ p.Match(SQLiteParserBEFORE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserAFTER_:
+ {
+ p.SetState(652)
+ p.Match(SQLiteParserAFTER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserINSTEAD_:
+ {
+ p.SetState(653)
+ p.Match(SQLiteParserINSTEAD_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(654)
+ p.Match(SQLiteParserOF_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserDELETE_, SQLiteParserINSERT_, SQLiteParserUPDATE_:
+
+ default:
+ }
+ p.SetState(671)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserDELETE_:
+ {
+ p.SetState(657)
+ p.Match(SQLiteParserDELETE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserINSERT_:
+ {
+ p.SetState(658)
+ p.Match(SQLiteParserINSERT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserUPDATE_:
+ {
+ p.SetState(659)
+ p.Match(SQLiteParserUPDATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(669)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOF_ {
+ {
+ p.SetState(660)
+ p.Match(SQLiteParserOF_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(661)
+ p.Column_name()
+ }
+ p.SetState(666)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(662)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(663)
+ p.Column_name()
+ }
+
+ p.SetState(668)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+ {
+ p.SetState(673)
+ p.Match(SQLiteParserON_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(674)
+ p.Table_name()
+ }
+ p.SetState(678)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserFOR_ {
+ {
+ p.SetState(675)
+ p.Match(SQLiteParserFOR_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(676)
+ p.Match(SQLiteParserEACH_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(677)
+ p.Match(SQLiteParserROW_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ p.SetState(682)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHEN_ {
+ {
+ p.SetState(680)
+ p.Match(SQLiteParserWHEN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(681)
+ p.expr(0)
+ }
+
+ }
+ {
+ p.SetState(684)
+ p.Match(SQLiteParserBEGIN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(693)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for ok := true; ok; ok = _la == SQLiteParserDELETE_ || ((int64((_la-88)) & ^0x3f) == 0 && ((int64(1)<<(_la-88))&2386912217732743169) != 0) {
+ p.SetState(689)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 79, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(685)
+ p.Update_stmt()
+ }
+
+ case 2:
+ {
+ p.SetState(686)
+ p.Insert_stmt()
+ }
+
+ case 3:
+ {
+ p.SetState(687)
+ p.Delete_stmt()
+ }
+
+ case 4:
+ {
+ p.SetState(688)
+ p.Select_stmt()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(691)
+ p.Match(SQLiteParserSCOL)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ p.SetState(695)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(697)
+ p.Match(SQLiteParserEND_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICreate_view_stmtContext is an interface to support dynamic dispatch.
+type ICreate_view_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ CREATE_() antlr.TerminalNode
+ VIEW_() antlr.TerminalNode
+ View_name() IView_nameContext
+ AS_() antlr.TerminalNode
+ Select_stmt() ISelect_stmtContext
+ IF_() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+ EXISTS_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ CLOSE_PAR() antlr.TerminalNode
+ TEMP_() antlr.TerminalNode
+ TEMPORARY_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_view_stmt
+ return p
+}
+
+func InitEmptyCreate_view_stmtContext(p *Create_view_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_view_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_create_view_stmt
+
+ return p
+}
+
+func (s *Create_view_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Create_view_stmtContext) CREATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCREATE_, 0)
+}
+
+func (s *Create_view_stmtContext) VIEW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVIEW_, 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) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 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) IF_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIF_, 0)
+}
+
+func (s *Create_view_stmtContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *Create_view_stmtContext) EXISTS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXISTS_, 0)
+}
+
+func (s *Create_view_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Create_view_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Create_view_stmtContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Create_view_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_view_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_view_stmtContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Create_view_stmtContext) TEMP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTEMP_, 0)
+}
+
+func (s *Create_view_stmtContext) TEMPORARY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTEMPORARY_, 0)
+}
+
+func (s *Create_view_stmtContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Create_view_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterCreate_view_stmt(s)
+ }
+}
+
+func (s *Create_view_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCreate_view_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Create_view_stmt() (localctx ICreate_view_stmtContext) {
+ localctx = NewCreate_view_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 44, SQLiteParserRULE_create_view_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(699)
+ p.Match(SQLiteParserCREATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(701)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserTEMP_ || _la == SQLiteParserTEMPORARY_ {
+ {
+ p.SetState(700)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserTEMP_ || _la == SQLiteParserTEMPORARY_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ }
+ {
+ p.SetState(703)
+ p.Match(SQLiteParserVIEW_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(707)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 82, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(704)
+ p.Match(SQLiteParserIF_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(705)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(706)
+ p.Match(SQLiteParserEXISTS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(712)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 83, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(709)
+ p.Schema_name()
+ }
+ {
+ p.SetState(710)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(714)
+ p.View_name()
+ }
+ p.SetState(726)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOPEN_PAR {
+ {
+ p.SetState(715)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(716)
+ p.Column_name()
+ }
+ p.SetState(721)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(717)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(718)
+ p.Column_name()
+ }
+
+ p.SetState(723)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(724)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(728)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(729)
+ p.Select_stmt()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// 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
+
+ // Getter signatures
+ CREATE_() antlr.TerminalNode
+ VIRTUAL_() antlr.TerminalNode
+ TABLE_() antlr.TerminalNode
+ Table_name() ITable_nameContext
+ USING_() antlr.TerminalNode
+ Module_name() IModule_nameContext
+ IF_() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+ EXISTS_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ AllModule_argument() []IModule_argumentContext
+ Module_argument(i int) IModule_argumentContext
+ CLOSE_PAR() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_virtual_table_stmt
+ return p
+}
+
+func InitEmptyCreate_virtual_table_stmtContext(p *Create_virtual_table_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_create_virtual_table_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_create_virtual_table_stmt
+
+ return p
+}
+
+func (s *Create_virtual_table_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Create_virtual_table_stmtContext) CREATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCREATE_, 0)
+}
+
+func (s *Create_virtual_table_stmtContext) VIRTUAL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVIRTUAL_, 0)
+}
+
+func (s *Create_virtual_table_stmtContext) TABLE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTABLE_, 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) USING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUSING_, 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) IF_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIF_, 0)
+}
+
+func (s *Create_virtual_table_stmtContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *Create_virtual_table_stmtContext) EXISTS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXISTS_, 0)
+}
+
+func (s *Create_virtual_table_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Create_virtual_table_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Create_virtual_table_stmtContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Create_virtual_table_stmtContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Create_virtual_table_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 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.(SQLiteParserListener); ok {
+ listenerT.EnterCreate_virtual_table_stmt(s)
+ }
+}
+
+func (s *Create_virtual_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCreate_virtual_table_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Create_virtual_table_stmt() (localctx ICreate_virtual_table_stmtContext) {
+ localctx = NewCreate_virtual_table_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 46, SQLiteParserRULE_create_virtual_table_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(731)
+ p.Match(SQLiteParserCREATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(732)
+ p.Match(SQLiteParserVIRTUAL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(733)
+ p.Match(SQLiteParserTABLE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(737)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 86, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(734)
+ p.Match(SQLiteParserIF_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(735)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(736)
+ p.Match(SQLiteParserEXISTS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(742)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 87, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(739)
+ p.Schema_name()
+ }
+ {
+ p.SetState(740)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(744)
+ p.Table_name()
+ }
+ {
+ p.SetState(745)
+ p.Match(SQLiteParserUSING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(746)
+ p.Module_name()
+ }
+ p.SetState(758)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOPEN_PAR {
+ {
+ p.SetState(747)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(748)
+ p.Module_argument()
+ }
+ p.SetState(753)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(749)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(750)
+ p.Module_argument()
+ }
+
+ p.SetState(755)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(756)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IWith_clauseContext is an interface to support dynamic dispatch.
+type IWith_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ WITH_() antlr.TerminalNode
+ AllCte_table_name() []ICte_table_nameContext
+ Cte_table_name(i int) ICte_table_nameContext
+ AllAS_() []antlr.TerminalNode
+ AS_(i int) antlr.TerminalNode
+ AllOPEN_PAR() []antlr.TerminalNode
+ OPEN_PAR(i int) antlr.TerminalNode
+ AllSelect_stmt() []ISelect_stmtContext
+ Select_stmt(i int) ISelect_stmtContext
+ AllCLOSE_PAR() []antlr.TerminalNode
+ CLOSE_PAR(i int) antlr.TerminalNode
+ RECURSIVE_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_with_clause
+ return p
+}
+
+func InitEmptyWith_clauseContext(p *With_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_with_clause
+}
+
+func (*With_clauseContext) IsWith_clauseContext() {}
+
+func NewWith_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *With_clauseContext {
+ var p = new(With_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_with_clause
+
+ return p
+}
+
+func (s *With_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *With_clauseContext) WITH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWITH_, 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) AllAS_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserAS_)
+}
+
+func (s *With_clauseContext) AS_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, i)
+}
+
+func (s *With_clauseContext) AllOPEN_PAR() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserOPEN_PAR)
+}
+
+func (s *With_clauseContext) OPEN_PAR(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR)
+}
+
+func (s *With_clauseContext) CLOSE_PAR(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, i)
+}
+
+func (s *With_clauseContext) RECURSIVE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRECURSIVE_, 0)
+}
+
+func (s *With_clauseContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *With_clauseContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 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.(SQLiteParserListener); ok {
+ listenerT.EnterWith_clause(s)
+ }
+}
+
+func (s *With_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitWith_clause(s)
+ }
+}
+
+func (p *SQLiteParser) With_clause() (localctx IWith_clauseContext) {
+ localctx = NewWith_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 48, SQLiteParserRULE_with_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(760)
+ p.Match(SQLiteParserWITH_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(762)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 90, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(761)
+ p.Match(SQLiteParserRECURSIVE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(764)
+ p.Cte_table_name()
+ }
+ {
+ p.SetState(765)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(766)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(767)
+ p.Select_stmt()
+ }
+ {
+ p.SetState(768)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(778)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(769)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(770)
+ p.Cte_table_name()
+ }
+ {
+ p.SetState(771)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(772)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(773)
+ p.Select_stmt()
+ }
+ {
+ p.SetState(774)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ p.SetState(780)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICte_table_nameContext is an interface to support dynamic dispatch.
+type ICte_table_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Table_name() ITable_nameContext
+ OPEN_PAR() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ CLOSE_PAR() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_cte_table_name
+ return p
+}
+
+func InitEmptyCte_table_nameContext(p *Cte_table_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_cte_table_name
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Cte_table_nameContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Cte_table_nameContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 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.(SQLiteParserListener); ok {
+ listenerT.EnterCte_table_name(s)
+ }
+}
+
+func (s *Cte_table_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCte_table_name(s)
+ }
+}
+
+func (p *SQLiteParser) Cte_table_name() (localctx ICte_table_nameContext) {
+ localctx = NewCte_table_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 50, SQLiteParserRULE_cte_table_name)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(781)
+ p.Table_name()
+ }
+ p.SetState(793)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOPEN_PAR {
+ {
+ p.SetState(782)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(783)
+ p.Column_name()
+ }
+ p.SetState(788)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(784)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(785)
+ p.Column_name()
+ }
+
+ p.SetState(790)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(791)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IRecursive_cteContext is an interface to support dynamic dispatch.
+type IRecursive_cteContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Cte_table_name() ICte_table_nameContext
+ AS_() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ Initial_select() IInitial_selectContext
+ UNION_() antlr.TerminalNode
+ Recursive_select() IRecursive_selectContext
+ CLOSE_PAR() antlr.TerminalNode
+ ALL_() antlr.TerminalNode
+
+ // IsRecursive_cteContext differentiates from other interfaces.
+ IsRecursive_cteContext()
+}
+
+type Recursive_cteContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyRecursive_cteContext() *Recursive_cteContext {
+ var p = new(Recursive_cteContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_recursive_cte
+ return p
+}
+
+func InitEmptyRecursive_cteContext(p *Recursive_cteContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_recursive_cte
+}
+
+func (*Recursive_cteContext) IsRecursive_cteContext() {}
+
+func NewRecursive_cteContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Recursive_cteContext {
+ var p = new(Recursive_cteContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_recursive_cte
+
+ return p
+}
+
+func (s *Recursive_cteContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Recursive_cteContext) Cte_table_name() ICte_table_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ICte_table_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ICte_table_nameContext)
+}
+
+func (s *Recursive_cteContext) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 0)
+}
+
+func (s *Recursive_cteContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Recursive_cteContext) Initial_select() IInitial_selectContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IInitial_selectContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IInitial_selectContext)
+}
+
+func (s *Recursive_cteContext) UNION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNION_, 0)
+}
+
+func (s *Recursive_cteContext) Recursive_select() IRecursive_selectContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IRecursive_selectContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IRecursive_selectContext)
+}
+
+func (s *Recursive_cteContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Recursive_cteContext) ALL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALL_, 0)
+}
+
+func (s *Recursive_cteContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Recursive_cteContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Recursive_cteContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterRecursive_cte(s)
+ }
+}
+
+func (s *Recursive_cteContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitRecursive_cte(s)
+ }
+}
+
+func (p *SQLiteParser) Recursive_cte() (localctx IRecursive_cteContext) {
+ localctx = NewRecursive_cteContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 52, SQLiteParserRULE_recursive_cte)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(795)
+ p.Cte_table_name()
+ }
+ {
+ p.SetState(796)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(797)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(798)
+ p.Initial_select()
+ }
+ {
+ p.SetState(799)
+ p.Match(SQLiteParserUNION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(801)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserALL_ {
+ {
+ p.SetState(800)
+ p.Match(SQLiteParserALL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(803)
+ p.Recursive_select()
+ }
+ {
+ p.SetState(804)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICommon_table_expressionContext is an interface to support dynamic dispatch.
+type ICommon_table_expressionContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Table_name() ITable_nameContext
+ AS_() antlr.TerminalNode
+ AllOPEN_PAR() []antlr.TerminalNode
+ OPEN_PAR(i int) antlr.TerminalNode
+ Select_stmt() ISelect_stmtContext
+ AllCLOSE_PAR() []antlr.TerminalNode
+ CLOSE_PAR(i int) antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_common_table_expression
+ return p
+}
+
+func InitEmptyCommon_table_expressionContext(p *Common_table_expressionContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_common_table_expression
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 0)
+}
+
+func (s *Common_table_expressionContext) AllOPEN_PAR() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserOPEN_PAR)
+}
+
+func (s *Common_table_expressionContext) OPEN_PAR(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR)
+}
+
+func (s *Common_table_expressionContext) CLOSE_PAR(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_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(SQLiteParserCOMMA)
+}
+
+func (s *Common_table_expressionContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 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.(SQLiteParserListener); ok {
+ listenerT.EnterCommon_table_expression(s)
+ }
+}
+
+func (s *Common_table_expressionContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCommon_table_expression(s)
+ }
+}
+
+func (p *SQLiteParser) Common_table_expression() (localctx ICommon_table_expressionContext) {
+ localctx = NewCommon_table_expressionContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 54, SQLiteParserRULE_common_table_expression)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(806)
+ p.Table_name()
+ }
+ p.SetState(818)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOPEN_PAR {
+ {
+ p.SetState(807)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(808)
+ p.Column_name()
+ }
+ p.SetState(813)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(809)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(810)
+ p.Column_name()
+ }
+
+ p.SetState(815)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(816)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(820)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(821)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(822)
+ p.Select_stmt()
+ }
+ {
+ p.SetState(823)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IDelete_stmtContext is an interface to support dynamic dispatch.
+type IDelete_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ DELETE_() antlr.TerminalNode
+ FROM_() antlr.TerminalNode
+ Qualified_table_name() IQualified_table_nameContext
+ With_clause() IWith_clauseContext
+ WHERE_() antlr.TerminalNode
+ Expr() IExprContext
+ Returning_clause() IReturning_clauseContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_delete_stmt
+ return p
+}
+
+func InitEmptyDelete_stmtContext(p *Delete_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_delete_stmt
+}
+
+func (*Delete_stmtContext) IsDelete_stmtContext() {}
+
+func NewDelete_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Delete_stmtContext {
+ var p = new(Delete_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_delete_stmt
+
+ return p
+}
+
+func (s *Delete_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Delete_stmtContext) DELETE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDELETE_, 0)
+}
+
+func (s *Delete_stmtContext) FROM_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFROM_, 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) WHERE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, 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) Returning_clause() IReturning_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IReturning_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IReturning_clauseContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterDelete_stmt(s)
+ }
+}
+
+func (s *Delete_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitDelete_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Delete_stmt() (localctx IDelete_stmtContext) {
+ localctx = NewDelete_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 56, SQLiteParserRULE_delete_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(826)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITH_ {
+ {
+ p.SetState(825)
+ p.With_clause()
+ }
+
+ }
+ {
+ p.SetState(828)
+ p.Match(SQLiteParserDELETE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(829)
+ p.Match(SQLiteParserFROM_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(830)
+ p.Qualified_table_name()
+ }
+ p.SetState(833)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHERE_ {
+ {
+ p.SetState(831)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(832)
+ p.expr(0)
+ }
+
+ }
+ p.SetState(836)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserRETURNING_ {
+ {
+ p.SetState(835)
+ p.Returning_clause()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IDelete_stmt_limitedContext is an interface to support dynamic dispatch.
+type IDelete_stmt_limitedContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ DELETE_() antlr.TerminalNode
+ FROM_() antlr.TerminalNode
+ Qualified_table_name() IQualified_table_nameContext
+ With_clause() IWith_clauseContext
+ WHERE_() antlr.TerminalNode
+ Expr() IExprContext
+ Returning_clause() IReturning_clauseContext
+ Limit_stmt() ILimit_stmtContext
+ Order_by_stmt() IOrder_by_stmtContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_delete_stmt_limited
+ return p
+}
+
+func InitEmptyDelete_stmt_limitedContext(p *Delete_stmt_limitedContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_delete_stmt_limited
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_delete_stmt_limited
+
+ return p
+}
+
+func (s *Delete_stmt_limitedContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Delete_stmt_limitedContext) DELETE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDELETE_, 0)
+}
+
+func (s *Delete_stmt_limitedContext) FROM_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFROM_, 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) WHERE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, 0)
+}
+
+func (s *Delete_stmt_limitedContext) 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_stmt_limitedContext) Returning_clause() IReturning_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IReturning_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IReturning_clauseContext)
+}
+
+func (s *Delete_stmt_limitedContext) Limit_stmt() ILimit_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ILimit_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ILimit_stmtContext)
+}
+
+func (s *Delete_stmt_limitedContext) Order_by_stmt() IOrder_by_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOrder_by_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOrder_by_stmtContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterDelete_stmt_limited(s)
+ }
+}
+
+func (s *Delete_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitDelete_stmt_limited(s)
+ }
+}
+
+func (p *SQLiteParser) Delete_stmt_limited() (localctx IDelete_stmt_limitedContext) {
+ localctx = NewDelete_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 58, SQLiteParserRULE_delete_stmt_limited)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(839)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITH_ {
+ {
+ p.SetState(838)
+ p.With_clause()
+ }
+
+ }
+ {
+ p.SetState(841)
+ p.Match(SQLiteParserDELETE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(842)
+ p.Match(SQLiteParserFROM_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(843)
+ p.Qualified_table_name()
+ }
+ p.SetState(846)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHERE_ {
+ {
+ p.SetState(844)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(845)
+ p.expr(0)
+ }
+
+ }
+ p.SetState(849)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserRETURNING_ {
+ {
+ p.SetState(848)
+ p.Returning_clause()
+ }
+
+ }
+ p.SetState(855)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserLIMIT_ || _la == SQLiteParserORDER_ {
+ p.SetState(852)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserORDER_ {
+ {
+ p.SetState(851)
+ p.Order_by_stmt()
+ }
+
+ }
+ {
+ p.SetState(854)
+ p.Limit_stmt()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IDetach_stmtContext is an interface to support dynamic dispatch.
+type IDetach_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ DETACH_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DATABASE_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_detach_stmt
+ return p
+}
+
+func InitEmptyDetach_stmtContext(p *Detach_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_detach_stmt
+}
+
+func (*Detach_stmtContext) IsDetach_stmtContext() {}
+
+func NewDetach_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Detach_stmtContext {
+ var p = new(Detach_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_detach_stmt
+
+ return p
+}
+
+func (s *Detach_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Detach_stmtContext) DETACH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDETACH_, 0)
+}
+
+func (s *Detach_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Detach_stmtContext) DATABASE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDATABASE_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterDetach_stmt(s)
+ }
+}
+
+func (s *Detach_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitDetach_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Detach_stmt() (localctx IDetach_stmtContext) {
+ localctx = NewDetach_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 60, SQLiteParserRULE_detach_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(857)
+ p.Match(SQLiteParserDETACH_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(859)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 105, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(858)
+ p.Match(SQLiteParserDATABASE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(861)
+ p.Schema_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IDrop_stmtContext is an interface to support dynamic dispatch.
+type IDrop_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // GetObject returns the object token.
+ GetObject() antlr.Token
+
+ // SetObject sets the object token.
+ SetObject(antlr.Token)
+
+ // Getter signatures
+ DROP_() antlr.TerminalNode
+ Any_name() IAny_nameContext
+ INDEX_() antlr.TerminalNode
+ TABLE_() antlr.TerminalNode
+ TRIGGER_() antlr.TerminalNode
+ VIEW_() antlr.TerminalNode
+ IF_() antlr.TerminalNode
+ EXISTS_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+
+ // IsDrop_stmtContext differentiates from other interfaces.
+ IsDrop_stmtContext()
+}
+
+type Drop_stmtContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+ object antlr.Token
+}
+
+func NewEmptyDrop_stmtContext() *Drop_stmtContext {
+ var p = new(Drop_stmtContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_drop_stmt
+ return p
+}
+
+func InitEmptyDrop_stmtContext(p *Drop_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_drop_stmt
+}
+
+func (*Drop_stmtContext) IsDrop_stmtContext() {}
+
+func NewDrop_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Drop_stmtContext {
+ var p = new(Drop_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_drop_stmt
+
+ return p
+}
+
+func (s *Drop_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Drop_stmtContext) GetObject() antlr.Token { return s.object }
+
+func (s *Drop_stmtContext) SetObject(v antlr.Token) { s.object = v }
+
+func (s *Drop_stmtContext) DROP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDROP_, 0)
+}
+
+func (s *Drop_stmtContext) 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 *Drop_stmtContext) INDEX_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINDEX_, 0)
+}
+
+func (s *Drop_stmtContext) TABLE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTABLE_, 0)
+}
+
+func (s *Drop_stmtContext) TRIGGER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRIGGER_, 0)
+}
+
+func (s *Drop_stmtContext) VIEW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVIEW_, 0)
+}
+
+func (s *Drop_stmtContext) IF_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIF_, 0)
+}
+
+func (s *Drop_stmtContext) EXISTS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXISTS_, 0)
+}
+
+func (s *Drop_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Drop_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Drop_stmtContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Drop_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Drop_stmtContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterDrop_stmt(s)
+ }
+}
+
+func (s *Drop_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitDrop_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Drop_stmt() (localctx IDrop_stmtContext) {
+ localctx = NewDrop_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 62, SQLiteParserRULE_drop_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(863)
+ p.Match(SQLiteParserDROP_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(864)
+
+ var _lt = p.GetTokenStream().LT(1)
+
+ localctx.(*Drop_stmtContext).object = _lt
+
+ _la = p.GetTokenStream().LA(1)
+
+ if !((int64((_la-84)) & ^0x3f) == 0 && ((int64(1)<<(_la-84))&2324138882699886593) != 0) {
+ var _ri = p.GetErrorHandler().RecoverInline(p)
+
+ localctx.(*Drop_stmtContext).object = _ri
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ p.SetState(867)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 106, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(865)
+ p.Match(SQLiteParserIF_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(866)
+ p.Match(SQLiteParserEXISTS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(872)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 107, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(869)
+ p.Schema_name()
+ }
+ {
+ p.SetState(870)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(874)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IExprContext is an interface to support dynamic dispatch.
+type IExprContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Literal_value() ILiteral_valueContext
+ BIND_PARAMETER() antlr.TerminalNode
+ Column_name() IColumn_nameContext
+ Table_name() ITable_nameContext
+ AllDOT() []antlr.TerminalNode
+ DOT(i int) antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ Unary_operator() IUnary_operatorContext
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ Function_name() IFunction_nameContext
+ OPEN_PAR() antlr.TerminalNode
+ CLOSE_PAR() antlr.TerminalNode
+ STAR() antlr.TerminalNode
+ Filter_clause() IFilter_clauseContext
+ Over_clause() IOver_clauseContext
+ DISTINCT_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ CAST_() antlr.TerminalNode
+ AS_() antlr.TerminalNode
+ Type_name() IType_nameContext
+ Select_stmt() ISelect_stmtContext
+ EXISTS_() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+ CASE_() antlr.TerminalNode
+ END_() antlr.TerminalNode
+ AllWHEN_() []antlr.TerminalNode
+ WHEN_(i int) antlr.TerminalNode
+ AllTHEN_() []antlr.TerminalNode
+ THEN_(i int) antlr.TerminalNode
+ ELSE_() antlr.TerminalNode
+ Raise_function() IRaise_functionContext
+ PIPE2() antlr.TerminalNode
+ DIV() antlr.TerminalNode
+ MOD() antlr.TerminalNode
+ PLUS() antlr.TerminalNode
+ MINUS() antlr.TerminalNode
+ LT2() antlr.TerminalNode
+ GT2() antlr.TerminalNode
+ AMP() antlr.TerminalNode
+ PIPE() antlr.TerminalNode
+ LT() antlr.TerminalNode
+ LT_EQ() antlr.TerminalNode
+ GT() antlr.TerminalNode
+ GT_EQ() antlr.TerminalNode
+ ASSIGN() antlr.TerminalNode
+ EQ() antlr.TerminalNode
+ NOT_EQ1() antlr.TerminalNode
+ NOT_EQ2() antlr.TerminalNode
+ IS_() antlr.TerminalNode
+ IN_() antlr.TerminalNode
+ LIKE_() antlr.TerminalNode
+ GLOB_() antlr.TerminalNode
+ MATCH_() antlr.TerminalNode
+ REGEXP_() antlr.TerminalNode
+ AND_() antlr.TerminalNode
+ OR_() antlr.TerminalNode
+ BETWEEN_() antlr.TerminalNode
+ COLLATE_() antlr.TerminalNode
+ Collation_name() ICollation_nameContext
+ ESCAPE_() antlr.TerminalNode
+ ISNULL_() antlr.TerminalNode
+ NOTNULL_() antlr.TerminalNode
+ NULL_() antlr.TerminalNode
+ Table_function_name() ITable_function_nameContext
+
+ // IsExprContext differentiates from other interfaces.
+ IsExprContext()
+}
+
+type ExprContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyExprContext() *ExprContext {
+ var p = new(ExprContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_expr
+ return p
+}
+
+func InitEmptyExprContext(p *ExprContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_expr
+}
+
+func (*ExprContext) IsExprContext() {}
+
+func NewExprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *ExprContext {
+ var p = new(ExprContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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(SQLiteParserBIND_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(SQLiteParserDOT)
+}
+
+func (s *ExprContext) DOT(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, i)
+}
+
+func (s *ExprContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_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(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *ExprContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *ExprContext) STAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTAR, 0)
+}
+
+func (s *ExprContext) Filter_clause() IFilter_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFilter_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFilter_clauseContext)
+}
+
+func (s *ExprContext) Over_clause() IOver_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOver_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOver_clauseContext)
+}
+
+func (s *ExprContext) DISTINCT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDISTINCT_, 0)
+}
+
+func (s *ExprContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *ExprContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *ExprContext) CAST_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCAST_, 0)
+}
+
+func (s *ExprContext) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 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) EXISTS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXISTS_, 0)
+}
+
+func (s *ExprContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *ExprContext) CASE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCASE_, 0)
+}
+
+func (s *ExprContext) END_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEND_, 0)
+}
+
+func (s *ExprContext) AllWHEN_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserWHEN_)
+}
+
+func (s *ExprContext) WHEN_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHEN_, i)
+}
+
+func (s *ExprContext) AllTHEN_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserTHEN_)
+}
+
+func (s *ExprContext) THEN_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTHEN_, i)
+}
+
+func (s *ExprContext) ELSE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserELSE_, 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(SQLiteParserPIPE2, 0)
+}
+
+func (s *ExprContext) DIV() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDIV, 0)
+}
+
+func (s *ExprContext) MOD() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserMOD, 0)
+}
+
+func (s *ExprContext) PLUS() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPLUS, 0)
+}
+
+func (s *ExprContext) MINUS() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserMINUS, 0)
+}
+
+func (s *ExprContext) LT2() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLT2, 0)
+}
+
+func (s *ExprContext) GT2() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGT2, 0)
+}
+
+func (s *ExprContext) AMP() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAMP, 0)
+}
+
+func (s *ExprContext) PIPE() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPIPE, 0)
+}
+
+func (s *ExprContext) LT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLT, 0)
+}
+
+func (s *ExprContext) LT_EQ() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLT_EQ, 0)
+}
+
+func (s *ExprContext) GT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGT, 0)
+}
+
+func (s *ExprContext) GT_EQ() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGT_EQ, 0)
+}
+
+func (s *ExprContext) ASSIGN() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserASSIGN, 0)
+}
+
+func (s *ExprContext) EQ() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEQ, 0)
+}
+
+func (s *ExprContext) NOT_EQ1() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_EQ1, 0)
+}
+
+func (s *ExprContext) NOT_EQ2() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_EQ2, 0)
+}
+
+func (s *ExprContext) IS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIS_, 0)
+}
+
+func (s *ExprContext) IN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIN_, 0)
+}
+
+func (s *ExprContext) LIKE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLIKE_, 0)
+}
+
+func (s *ExprContext) GLOB_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGLOB_, 0)
+}
+
+func (s *ExprContext) MATCH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserMATCH_, 0)
+}
+
+func (s *ExprContext) REGEXP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREGEXP_, 0)
+}
+
+func (s *ExprContext) AND_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAND_, 0)
+}
+
+func (s *ExprContext) OR_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOR_, 0)
+}
+
+func (s *ExprContext) BETWEEN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBETWEEN_, 0)
+}
+
+func (s *ExprContext) COLLATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOLLATE_, 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) ESCAPE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserESCAPE_, 0)
+}
+
+func (s *ExprContext) ISNULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserISNULL_, 0)
+}
+
+func (s *ExprContext) NOTNULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOTNULL_, 0)
+}
+
+func (s *ExprContext) NULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNULL_, 0)
+}
+
+func (s *ExprContext) Table_function_name() ITable_function_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ITable_function_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ITable_function_nameContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterExpr(s)
+ }
+}
+
+func (s *ExprContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitExpr(s)
+ }
+}
+
+func (p *SQLiteParser) Expr() (localctx IExprContext) {
+ return p.expr(0)
+}
+
+func (p *SQLiteParser) expr(_p int) (localctx IExprContext) {
+ 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 := 64
+ p.EnterRecursionRule(localctx, 64, SQLiteParserRULE_expr, _p)
+ var _la int
+
+ var _alt int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(964)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 121, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(877)
+ p.Literal_value()
+ }
+
+ case 2:
+ {
+ p.SetState(878)
+ p.Match(SQLiteParserBIND_PARAMETER)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 3:
+ p.SetState(887)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 109, p.GetParserRuleContext()) == 1 {
+ p.SetState(882)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 108, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(879)
+ p.Schema_name()
+ }
+ {
+ p.SetState(880)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(884)
+ p.Table_name()
+ }
+ {
+ p.SetState(885)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(889)
+ p.Column_name()
+ }
+
+ case 4:
+ {
+ p.SetState(890)
+ p.Unary_operator()
+ }
+ {
+ p.SetState(891)
+ p.expr(21)
+ }
+
+ case 5:
+ {
+ p.SetState(893)
+ p.Function_name()
+ }
+ {
+ p.SetState(894)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(907)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserOPEN_PAR, SQLiteParserPLUS, SQLiteParserMINUS, SQLiteParserTILDE, SQLiteParserABORT_, SQLiteParserACTION_, SQLiteParserADD_, SQLiteParserAFTER_, SQLiteParserALL_, SQLiteParserALTER_, SQLiteParserANALYZE_, SQLiteParserAND_, SQLiteParserAS_, SQLiteParserASC_, SQLiteParserATTACH_, SQLiteParserAUTOINCREMENT_, SQLiteParserBEFORE_, SQLiteParserBEGIN_, SQLiteParserBETWEEN_, SQLiteParserBY_, SQLiteParserCASCADE_, SQLiteParserCASE_, SQLiteParserCAST_, SQLiteParserCHECK_, SQLiteParserCOLLATE_, SQLiteParserCOLUMN_, SQLiteParserCOMMIT_, SQLiteParserCONFLICT_, SQLiteParserCONSTRAINT_, SQLiteParserCREATE_, SQLiteParserCROSS_, SQLiteParserCURRENT_DATE_, SQLiteParserCURRENT_TIME_, SQLiteParserCURRENT_TIMESTAMP_, SQLiteParserDATABASE_, SQLiteParserDEFAULT_, SQLiteParserDEFERRABLE_, SQLiteParserDEFERRED_, SQLiteParserDELETE_, SQLiteParserDESC_, SQLiteParserDETACH_, SQLiteParserDISTINCT_, SQLiteParserDROP_, SQLiteParserEACH_, SQLiteParserELSE_, SQLiteParserEND_, SQLiteParserESCAPE_, SQLiteParserEXCEPT_, SQLiteParserEXCLUSIVE_, SQLiteParserEXISTS_, SQLiteParserEXPLAIN_, SQLiteParserFAIL_, SQLiteParserFOR_, SQLiteParserFOREIGN_, SQLiteParserFROM_, SQLiteParserFULL_, SQLiteParserGLOB_, SQLiteParserGROUP_, SQLiteParserHAVING_, SQLiteParserIF_, SQLiteParserIGNORE_, SQLiteParserIMMEDIATE_, SQLiteParserIN_, SQLiteParserINDEX_, SQLiteParserINDEXED_, SQLiteParserINITIALLY_, SQLiteParserINNER_, SQLiteParserINSERT_, SQLiteParserINSTEAD_, SQLiteParserINTERSECT_, SQLiteParserINTO_, SQLiteParserIS_, SQLiteParserISNULL_, SQLiteParserJOIN_, SQLiteParserKEY_, SQLiteParserLEFT_, SQLiteParserLIKE_, SQLiteParserLIMIT_, SQLiteParserMATCH_, SQLiteParserNATURAL_, SQLiteParserNO_, SQLiteParserNOT_, SQLiteParserNOTNULL_, SQLiteParserNULL_, SQLiteParserOF_, SQLiteParserOFFSET_, SQLiteParserON_, SQLiteParserOR_, SQLiteParserORDER_, SQLiteParserOUTER_, SQLiteParserPLAN_, SQLiteParserPRAGMA_, SQLiteParserPRIMARY_, SQLiteParserQUERY_, SQLiteParserRAISE_, SQLiteParserRECURSIVE_, SQLiteParserREFERENCES_, SQLiteParserREGEXP_, SQLiteParserREINDEX_, SQLiteParserRELEASE_, SQLiteParserRENAME_, SQLiteParserREPLACE_, SQLiteParserRESTRICT_, SQLiteParserRIGHT_, SQLiteParserROLLBACK_, SQLiteParserROW_, SQLiteParserROWS_, SQLiteParserSAVEPOINT_, SQLiteParserSELECT_, SQLiteParserSET_, SQLiteParserTABLE_, SQLiteParserTEMP_, SQLiteParserTEMPORARY_, SQLiteParserTHEN_, SQLiteParserTO_, SQLiteParserTRANSACTION_, SQLiteParserTRIGGER_, SQLiteParserUNION_, SQLiteParserUNIQUE_, SQLiteParserUPDATE_, SQLiteParserUSING_, SQLiteParserVACUUM_, SQLiteParserVALUES_, SQLiteParserVIEW_, SQLiteParserVIRTUAL_, SQLiteParserWHEN_, SQLiteParserWHERE_, SQLiteParserWITH_, SQLiteParserWITHOUT_, SQLiteParserFIRST_VALUE_, SQLiteParserOVER_, SQLiteParserPARTITION_, SQLiteParserRANGE_, SQLiteParserPRECEDING_, SQLiteParserUNBOUNDED_, SQLiteParserCURRENT_, SQLiteParserFOLLOWING_, SQLiteParserCUME_DIST_, SQLiteParserDENSE_RANK_, SQLiteParserLAG_, SQLiteParserLAST_VALUE_, SQLiteParserLEAD_, SQLiteParserNTH_VALUE_, SQLiteParserNTILE_, SQLiteParserPERCENT_RANK_, SQLiteParserRANK_, SQLiteParserROW_NUMBER_, SQLiteParserGENERATED_, SQLiteParserALWAYS_, SQLiteParserSTORED_, SQLiteParserTRUE_, SQLiteParserFALSE_, SQLiteParserWINDOW_, SQLiteParserNULLS_, SQLiteParserFIRST_, SQLiteParserLAST_, SQLiteParserFILTER_, SQLiteParserGROUPS_, SQLiteParserEXCLUDE_, SQLiteParserIDENTIFIER, SQLiteParserNUMERIC_LITERAL, SQLiteParserBIND_PARAMETER, SQLiteParserSTRING_LITERAL, SQLiteParserBLOB_LITERAL:
+ p.SetState(896)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 110, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(895)
+ p.Match(SQLiteParserDISTINCT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(898)
+ p.expr(0)
+ }
+ p.SetState(903)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(899)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(900)
+ p.expr(0)
+ }
+
+ p.SetState(905)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ case SQLiteParserSTAR:
+ {
+ p.SetState(906)
+ p.Match(SQLiteParserSTAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserCLOSE_PAR:
+
+ default:
+ }
+ {
+ p.SetState(909)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(911)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 113, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(910)
+ p.Filter_clause()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(914)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 114, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(913)
+ p.Over_clause()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+ case 6:
+ {
+ p.SetState(916)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(917)
+ p.expr(0)
+ }
+ p.SetState(922)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(918)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(919)
+ p.expr(0)
+ }
+
+ p.SetState(924)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(925)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 7:
+ {
+ p.SetState(927)
+ p.Match(SQLiteParserCAST_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(928)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(929)
+ p.expr(0)
+ }
+ {
+ p.SetState(930)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(931)
+ p.Type_name()
+ }
+ {
+ p.SetState(932)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 8:
+ p.SetState(938)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserEXISTS_ || _la == SQLiteParserNOT_ {
+ p.SetState(935)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserNOT_ {
+ {
+ p.SetState(934)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(937)
+ p.Match(SQLiteParserEXISTS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(940)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(941)
+ p.Select_stmt()
+ }
+ {
+ p.SetState(942)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 9:
+ {
+ p.SetState(944)
+ p.Match(SQLiteParserCASE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(946)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 118, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(945)
+ p.expr(0)
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(953)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for ok := true; ok; ok = _la == SQLiteParserWHEN_ {
+ {
+ p.SetState(948)
+ p.Match(SQLiteParserWHEN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(949)
+ p.expr(0)
+ }
+ {
+ p.SetState(950)
+ p.Match(SQLiteParserTHEN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(951)
+ p.expr(0)
+ }
+
+ p.SetState(955)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ p.SetState(959)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserELSE_ {
+ {
+ p.SetState(957)
+ p.Match(SQLiteParserELSE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(958)
+ p.expr(0)
+ }
+
+ }
+ {
+ p.SetState(961)
+ p.Match(SQLiteParserEND_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 10:
+ {
+ p.SetState(963)
+ p.Raise_function()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ p.GetParserRuleContext().SetStop(p.GetTokenStream().LT(-1))
+ p.SetState(1085)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 137, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
+ if _alt == 1 {
+ if p.GetParseListeners() != nil {
+ p.TriggerExitRuleEvent()
+ }
+ _prevctx = localctx
+ p.SetState(1083)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 136, p.GetParserRuleContext()) {
+ case 1:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(966)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 20)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 20)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(967)
+ p.Match(SQLiteParserPIPE2)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(968)
+ p.expr(21)
+ }
+
+ case 2:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(969)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 19)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 19)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(970)
+ _la = p.GetTokenStream().LA(1)
+
+ if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&12416) != 0) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(971)
+ p.expr(20)
+ }
+
+ case 3:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(972)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 18)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 18)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(973)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserPLUS || _la == SQLiteParserMINUS) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(974)
+ p.expr(19)
+ }
+
+ case 4:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(975)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 17)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 17)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(976)
+ _la = p.GetTokenStream().LA(1)
+
+ if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&245760) != 0) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(977)
+ p.expr(18)
+ }
+
+ case 5:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(978)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 16)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 16)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(979)
+ _la = p.GetTokenStream().LA(1)
+
+ if !((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&3932160) != 0) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(980)
+ p.expr(17)
+ }
+
+ case 6:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(981)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 15)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 15)", ""))
+ goto errorExit
+ }
+ p.SetState(994)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 122, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(982)
+ p.Match(SQLiteParserASSIGN)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 2:
+ {
+ p.SetState(983)
+ p.Match(SQLiteParserEQ)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 3:
+ {
+ p.SetState(984)
+ p.Match(SQLiteParserNOT_EQ1)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 4:
+ {
+ p.SetState(985)
+ p.Match(SQLiteParserNOT_EQ2)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 5:
+ {
+ p.SetState(986)
+ p.Match(SQLiteParserIS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 6:
+ {
+ p.SetState(987)
+ p.Match(SQLiteParserIS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(988)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 7:
+ {
+ p.SetState(989)
+ p.Match(SQLiteParserIN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 8:
+ {
+ p.SetState(990)
+ p.Match(SQLiteParserLIKE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 9:
+ {
+ p.SetState(991)
+ p.Match(SQLiteParserGLOB_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 10:
+ {
+ p.SetState(992)
+ p.Match(SQLiteParserMATCH_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 11:
+ {
+ p.SetState(993)
+ p.Match(SQLiteParserREGEXP_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(996)
+ p.expr(16)
+ }
+
+ case 7:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(997)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 14)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 14)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(998)
+ p.Match(SQLiteParserAND_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(999)
+ p.expr(15)
+ }
+
+ case 8:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(1000)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 13)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 13)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(1001)
+ p.Match(SQLiteParserOR_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1002)
+ p.expr(14)
+ }
+
+ case 9:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(1003)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 6)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 6)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(1004)
+ p.Match(SQLiteParserIS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1006)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 123, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1005)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1008)
+ p.expr(7)
+ }
+
+ case 10:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(1009)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 5)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 5)", ""))
+ goto errorExit
+ }
+ p.SetState(1011)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserNOT_ {
+ {
+ p.SetState(1010)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(1013)
+ p.Match(SQLiteParserBETWEEN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1014)
+ p.expr(0)
+ }
+ {
+ p.SetState(1015)
+ p.Match(SQLiteParserAND_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1016)
+ p.expr(6)
+ }
+
+ case 11:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(1018)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 9)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 9)", ""))
+ goto errorExit
+ }
+ {
+ p.SetState(1019)
+ p.Match(SQLiteParserCOLLATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1020)
+ p.Collation_name()
+ }
+
+ case 12:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(1021)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 8)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 8)", ""))
+ goto errorExit
+ }
+ p.SetState(1023)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserNOT_ {
+ {
+ p.SetState(1022)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(1025)
+ _la = p.GetTokenStream().LA(1)
+
+ if !((int64((_la-77)) & ^0x3f) == 0 && ((int64(1)<<(_la-77))&2199028498433) != 0) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(1026)
+ p.expr(0)
+ }
+ p.SetState(1029)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 126, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1027)
+ p.Match(SQLiteParserESCAPE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1028)
+ p.expr(0)
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+ case 13:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(1031)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 7)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 7)", ""))
+ goto errorExit
+ }
+ p.SetState(1036)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserISNULL_:
+ {
+ p.SetState(1032)
+ p.Match(SQLiteParserISNULL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserNOTNULL_:
+ {
+ p.SetState(1033)
+ p.Match(SQLiteParserNOTNULL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserNOT_:
+ {
+ p.SetState(1034)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1035)
+ p.Match(SQLiteParserNULL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+ case 14:
+ localctx = NewExprContext(p, _parentctx, _parentState)
+ p.PushNewRecursionContext(localctx, _startState, SQLiteParserRULE_expr)
+ p.SetState(1038)
+
+ if !(p.Precpred(p.GetParserRuleContext(), 4)) {
+ p.SetError(antlr.NewFailedPredicateException(p, "p.Precpred(p.GetParserRuleContext(), 4)", ""))
+ goto errorExit
+ }
+ p.SetState(1040)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserNOT_ {
+ {
+ p.SetState(1039)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(1042)
+ p.Match(SQLiteParserIN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1081)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 135, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1043)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1053)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 130, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1044)
+ p.Select_stmt()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 130, p.GetParserRuleContext()) == 2 {
+ {
+ p.SetState(1045)
+ p.expr(0)
+ }
+ p.SetState(1050)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1046)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1047)
+ p.expr(0)
+ }
+
+ p.SetState(1052)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1055)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 2:
+ p.SetState(1059)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 131, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1056)
+ p.Schema_name()
+ }
+ {
+ p.SetState(1057)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1061)
+ p.Table_name()
+ }
+
+ case 3:
+ p.SetState(1065)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 132, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1062)
+ p.Schema_name()
+ }
+ {
+ p.SetState(1063)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1067)
+ p.Table_function_name()
+ }
+ {
+ p.SetState(1068)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1077)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-33552632) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1152921504606846977) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4476578029606273023) != 0) {
+ {
+ p.SetState(1069)
+ p.expr(0)
+ }
+ p.SetState(1074)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1070)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1071)
+ p.expr(0)
+ }
+
+ p.SetState(1076)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ }
+ {
+ p.SetState(1079)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+ }
+ p.SetState(1087)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 137, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.UnrollRecursionContexts(_parentctx)
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IRaise_functionContext is an interface to support dynamic dispatch.
+type IRaise_functionContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ RAISE_() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ CLOSE_PAR() antlr.TerminalNode
+ IGNORE_() antlr.TerminalNode
+ COMMA() antlr.TerminalNode
+ Error_message() IError_messageContext
+ ROLLBACK_() antlr.TerminalNode
+ ABORT_() antlr.TerminalNode
+ FAIL_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_raise_function
+ return p
+}
+
+func InitEmptyRaise_functionContext(p *Raise_functionContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_raise_function
+}
+
+func (*Raise_functionContext) IsRaise_functionContext() {}
+
+func NewRaise_functionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Raise_functionContext {
+ var p = new(Raise_functionContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_raise_function
+
+ return p
+}
+
+func (s *Raise_functionContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Raise_functionContext) RAISE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRAISE_, 0)
+}
+
+func (s *Raise_functionContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Raise_functionContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Raise_functionContext) IGNORE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIGNORE_, 0)
+}
+
+func (s *Raise_functionContext) COMMA() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 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) ROLLBACK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROLLBACK_, 0)
+}
+
+func (s *Raise_functionContext) ABORT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserABORT_, 0)
+}
+
+func (s *Raise_functionContext) FAIL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFAIL_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterRaise_function(s)
+ }
+}
+
+func (s *Raise_functionContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitRaise_function(s)
+ }
+}
+
+func (p *SQLiteParser) Raise_function() (localctx IRaise_functionContext) {
+ localctx = NewRaise_functionContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 66, SQLiteParserRULE_raise_function)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1088)
+ p.Match(SQLiteParserRAISE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1089)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1094)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserIGNORE_:
+ {
+ p.SetState(1090)
+ p.Match(SQLiteParserIGNORE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserABORT_, SQLiteParserFAIL_, SQLiteParserROLLBACK_:
+ {
+ p.SetState(1091)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserABORT_ || _la == SQLiteParserFAIL_ || _la == SQLiteParserROLLBACK_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(1092)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1093)
+ p.Error_message()
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+ {
+ p.SetState(1096)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ILiteral_valueContext is an interface to support dynamic dispatch.
+type ILiteral_valueContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ NUMERIC_LITERAL() antlr.TerminalNode
+ STRING_LITERAL() antlr.TerminalNode
+ BLOB_LITERAL() antlr.TerminalNode
+ NULL_() antlr.TerminalNode
+ TRUE_() antlr.TerminalNode
+ FALSE_() antlr.TerminalNode
+ CURRENT_TIME_() antlr.TerminalNode
+ CURRENT_DATE_() antlr.TerminalNode
+ CURRENT_TIMESTAMP_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_literal_value
+ return p
+}
+
+func InitEmptyLiteral_valueContext(p *Literal_valueContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_literal_value
+}
+
+func (*Literal_valueContext) IsLiteral_valueContext() {}
+
+func NewLiteral_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Literal_valueContext {
+ var p = new(Literal_valueContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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(SQLiteParserNUMERIC_LITERAL, 0)
+}
+
+func (s *Literal_valueContext) STRING_LITERAL() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTRING_LITERAL, 0)
+}
+
+func (s *Literal_valueContext) BLOB_LITERAL() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBLOB_LITERAL, 0)
+}
+
+func (s *Literal_valueContext) NULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNULL_, 0)
+}
+
+func (s *Literal_valueContext) TRUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRUE_, 0)
+}
+
+func (s *Literal_valueContext) FALSE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFALSE_, 0)
+}
+
+func (s *Literal_valueContext) CURRENT_TIME_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_TIME_, 0)
+}
+
+func (s *Literal_valueContext) CURRENT_DATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_DATE_, 0)
+}
+
+func (s *Literal_valueContext) CURRENT_TIMESTAMP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_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.(SQLiteParserListener); ok {
+ listenerT.EnterLiteral_value(s)
+ }
+}
+
+func (s *Literal_valueContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitLiteral_value(s)
+ }
+}
+
+func (p *SQLiteParser) Literal_value() (localctx ILiteral_valueContext) {
+ localctx = NewLiteral_valueContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 68, SQLiteParserRULE_literal_value)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1098)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(((int64((_la-52)) & ^0x3f) == 0 && ((int64(1)<<(_la-52))&4503599627370503) != 0) || ((int64((_la-172)) & ^0x3f) == 0 && ((int64(1)<<(_la-172))&212995) != 0)) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IValue_rowContext is an interface to support dynamic dispatch.
+type IValue_rowContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ OPEN_PAR() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ CLOSE_PAR() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsValue_rowContext differentiates from other interfaces.
+ IsValue_rowContext()
+}
+
+type Value_rowContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyValue_rowContext() *Value_rowContext {
+ var p = new(Value_rowContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_value_row
+ return p
+}
+
+func InitEmptyValue_rowContext(p *Value_rowContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_value_row
+}
+
+func (*Value_rowContext) IsValue_rowContext() {}
+
+func NewValue_rowContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Value_rowContext {
+ var p = new(Value_rowContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_value_row
+
+ return p
+}
+
+func (s *Value_rowContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Value_rowContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Value_rowContext) 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 *Value_rowContext) 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 *Value_rowContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Value_rowContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Value_rowContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Value_rowContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Value_rowContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Value_rowContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterValue_row(s)
+ }
+}
+
+func (s *Value_rowContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitValue_row(s)
+ }
+}
+
+func (p *SQLiteParser) Value_row() (localctx IValue_rowContext) {
+ localctx = NewValue_rowContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 70, SQLiteParserRULE_value_row)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1100)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1101)
+ p.expr(0)
+ }
+ p.SetState(1106)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1102)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1103)
+ p.expr(0)
+ }
+
+ p.SetState(1108)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(1109)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IValues_clauseContext is an interface to support dynamic dispatch.
+type IValues_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ VALUES_() antlr.TerminalNode
+ AllValue_row() []IValue_rowContext
+ Value_row(i int) IValue_rowContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsValues_clauseContext differentiates from other interfaces.
+ IsValues_clauseContext()
+}
+
+type Values_clauseContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyValues_clauseContext() *Values_clauseContext {
+ var p = new(Values_clauseContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_values_clause
+ return p
+}
+
+func InitEmptyValues_clauseContext(p *Values_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_values_clause
+}
+
+func (*Values_clauseContext) IsValues_clauseContext() {}
+
+func NewValues_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Values_clauseContext {
+ var p = new(Values_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_values_clause
+
+ return p
+}
+
+func (s *Values_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Values_clauseContext) VALUES_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVALUES_, 0)
+}
+
+func (s *Values_clauseContext) AllValue_row() []IValue_rowContext {
+ children := s.GetChildren()
+ len := 0
+ for _, ctx := range children {
+ if _, ok := ctx.(IValue_rowContext); ok {
+ len++
+ }
+ }
+
+ tst := make([]IValue_rowContext, len)
+ i := 0
+ for _, ctx := range children {
+ if t, ok := ctx.(IValue_rowContext); ok {
+ tst[i] = t.(IValue_rowContext)
+ i++
+ }
+ }
+
+ return tst
+}
+
+func (s *Values_clauseContext) Value_row(i int) IValue_rowContext {
+ var t antlr.RuleContext
+ j := 0
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IValue_rowContext); ok {
+ if j == i {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ j++
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IValue_rowContext)
+}
+
+func (s *Values_clauseContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Values_clauseContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Values_clauseContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Values_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Values_clauseContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterValues_clause(s)
+ }
+}
+
+func (s *Values_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitValues_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Values_clause() (localctx IValues_clauseContext) {
+ localctx = NewValues_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 72, SQLiteParserRULE_values_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1111)
+ p.Match(SQLiteParserVALUES_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1112)
+ p.Value_row()
+ }
+ p.SetState(1117)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1113)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1114)
+ p.Value_row()
+ }
+
+ p.SetState(1119)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IInsert_stmtContext is an interface to support dynamic dispatch.
+type IInsert_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ INTO_() antlr.TerminalNode
+ Table_name() ITable_nameContext
+ INSERT_() antlr.TerminalNode
+ REPLACE_() antlr.TerminalNode
+ OR_() antlr.TerminalNode
+ DEFAULT_() antlr.TerminalNode
+ VALUES_() antlr.TerminalNode
+ With_clause() IWith_clauseContext
+ ROLLBACK_() antlr.TerminalNode
+ ABORT_() antlr.TerminalNode
+ FAIL_() antlr.TerminalNode
+ IGNORE_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ AS_() antlr.TerminalNode
+ Table_alias() ITable_aliasContext
+ OPEN_PAR() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ CLOSE_PAR() antlr.TerminalNode
+ Returning_clause() IReturning_clauseContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ Values_clause() IValues_clauseContext
+ Select_stmt() ISelect_stmtContext
+ Upsert_clause() IUpsert_clauseContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_insert_stmt
+ return p
+}
+
+func InitEmptyInsert_stmtContext(p *Insert_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_insert_stmt
+}
+
+func (*Insert_stmtContext) IsInsert_stmtContext() {}
+
+func NewInsert_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Insert_stmtContext {
+ var p = new(Insert_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_insert_stmt
+
+ return p
+}
+
+func (s *Insert_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Insert_stmtContext) INTO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINTO_, 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) INSERT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINSERT_, 0)
+}
+
+func (s *Insert_stmtContext) REPLACE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREPLACE_, 0)
+}
+
+func (s *Insert_stmtContext) OR_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOR_, 0)
+}
+
+func (s *Insert_stmtContext) DEFAULT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFAULT_, 0)
+}
+
+func (s *Insert_stmtContext) VALUES_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVALUES_, 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) ROLLBACK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROLLBACK_, 0)
+}
+
+func (s *Insert_stmtContext) ABORT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserABORT_, 0)
+}
+
+func (s *Insert_stmtContext) FAIL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFAIL_, 0)
+}
+
+func (s *Insert_stmtContext) IGNORE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIGNORE_, 0)
+}
+
+func (s *Insert_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Insert_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Insert_stmtContext) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 0)
+}
+
+func (s *Insert_stmtContext) 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 *Insert_stmtContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 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) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Insert_stmtContext) Returning_clause() IReturning_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IReturning_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IReturning_clauseContext)
+}
+
+func (s *Insert_stmtContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Insert_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Insert_stmtContext) Values_clause() IValues_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IValues_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IValues_clauseContext)
+}
+
+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) Upsert_clause() IUpsert_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IUpsert_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IUpsert_clauseContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterInsert_stmt(s)
+ }
+}
+
+func (s *Insert_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitInsert_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Insert_stmt() (localctx IInsert_stmtContext) {
+ localctx = NewInsert_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 74, SQLiteParserRULE_insert_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(1121)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITH_ {
+ {
+ p.SetState(1120)
+ p.With_clause()
+ }
+
+ }
+ p.SetState(1128)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 142, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1123)
+ p.Match(SQLiteParserINSERT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 2:
+ {
+ p.SetState(1124)
+ p.Match(SQLiteParserREPLACE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 3:
+ {
+ p.SetState(1125)
+ p.Match(SQLiteParserINSERT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1126)
+ p.Match(SQLiteParserOR_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1127)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserABORT_ || ((int64((_la-72)) & ^0x3f) == 0 && ((int64(1)<<(_la-72))&19140298416325121) != 0)) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(1130)
+ p.Match(SQLiteParserINTO_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1134)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 143, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1131)
+ p.Schema_name()
+ }
+ {
+ p.SetState(1132)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1136)
+ p.Table_name()
+ }
+ p.SetState(1139)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserAS_ {
+ {
+ p.SetState(1137)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1138)
+ p.Table_alias()
+ }
+
+ }
+ p.SetState(1152)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOPEN_PAR {
+ {
+ p.SetState(1141)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1142)
+ p.Column_name()
+ }
+ p.SetState(1147)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1143)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1144)
+ p.Column_name()
+ }
+
+ p.SetState(1149)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(1150)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ p.SetState(1163)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserSELECT_, SQLiteParserVALUES_, SQLiteParserWITH_:
+ p.SetState(1156)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 147, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1154)
+ p.Values_clause()
+ }
+
+ case 2:
+ {
+ p.SetState(1155)
+ p.Select_stmt()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ p.SetState(1159)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserON_ {
+ {
+ p.SetState(1158)
+ p.Upsert_clause()
+ }
+
+ }
+
+ case SQLiteParserDEFAULT_:
+ {
+ p.SetState(1161)
+ p.Match(SQLiteParserDEFAULT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1162)
+ p.Match(SQLiteParserVALUES_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+ p.SetState(1166)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserRETURNING_ {
+ {
+ p.SetState(1165)
+ p.Returning_clause()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IReturning_clauseContext is an interface to support dynamic dispatch.
+type IReturning_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ RETURNING_() antlr.TerminalNode
+ AllResult_column() []IResult_columnContext
+ Result_column(i int) IResult_columnContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsReturning_clauseContext differentiates from other interfaces.
+ IsReturning_clauseContext()
+}
+
+type Returning_clauseContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyReturning_clauseContext() *Returning_clauseContext {
+ var p = new(Returning_clauseContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_returning_clause
+ return p
+}
+
+func InitEmptyReturning_clauseContext(p *Returning_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_returning_clause
+}
+
+func (*Returning_clauseContext) IsReturning_clauseContext() {}
+
+func NewReturning_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Returning_clauseContext {
+ var p = new(Returning_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_returning_clause
+
+ return p
+}
+
+func (s *Returning_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Returning_clauseContext) RETURNING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRETURNING_, 0)
+}
+
+func (s *Returning_clauseContext) 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 *Returning_clauseContext) 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 *Returning_clauseContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Returning_clauseContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Returning_clauseContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Returning_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Returning_clauseContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterReturning_clause(s)
+ }
+}
+
+func (s *Returning_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitReturning_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Returning_clause() (localctx IReturning_clauseContext) {
+ localctx = NewReturning_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 76, SQLiteParserRULE_returning_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1168)
+ p.Match(SQLiteParserRETURNING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1169)
+ p.Result_column()
+ }
+ p.SetState(1174)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1170)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1171)
+ p.Result_column()
+ }
+
+ p.SetState(1176)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IUpsert_clauseContext is an interface to support dynamic dispatch.
+type IUpsert_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ON_() antlr.TerminalNode
+ CONFLICT_() antlr.TerminalNode
+ DO_() antlr.TerminalNode
+ NOTHING_() antlr.TerminalNode
+ UPDATE_() antlr.TerminalNode
+ SET_() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ AllIndexed_column() []IIndexed_columnContext
+ Indexed_column(i int) IIndexed_columnContext
+ CLOSE_PAR() antlr.TerminalNode
+ AllASSIGN() []antlr.TerminalNode
+ ASSIGN(i int) antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ AllWHERE_() []antlr.TerminalNode
+ WHERE_(i int) antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ AllColumn_name_list() []IColumn_name_listContext
+ Column_name_list(i int) IColumn_name_listContext
+
+ // IsUpsert_clauseContext differentiates from other interfaces.
+ IsUpsert_clauseContext()
+}
+
+type Upsert_clauseContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyUpsert_clauseContext() *Upsert_clauseContext {
+ var p = new(Upsert_clauseContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_upsert_clause
+ return p
+}
+
+func InitEmptyUpsert_clauseContext(p *Upsert_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_upsert_clause
+}
+
+func (*Upsert_clauseContext) IsUpsert_clauseContext() {}
+
+func NewUpsert_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Upsert_clauseContext {
+ var p = new(Upsert_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_upsert_clause
+
+ return p
+}
+
+func (s *Upsert_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Upsert_clauseContext) ON_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserON_, 0)
+}
+
+func (s *Upsert_clauseContext) CONFLICT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCONFLICT_, 0)
+}
+
+func (s *Upsert_clauseContext) DO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDO_, 0)
+}
+
+func (s *Upsert_clauseContext) NOTHING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOTHING_, 0)
+}
+
+func (s *Upsert_clauseContext) UPDATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUPDATE_, 0)
+}
+
+func (s *Upsert_clauseContext) SET_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSET_, 0)
+}
+
+func (s *Upsert_clauseContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Upsert_clauseContext) 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 *Upsert_clauseContext) 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 *Upsert_clauseContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Upsert_clauseContext) AllASSIGN() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserASSIGN)
+}
+
+func (s *Upsert_clauseContext) ASSIGN(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserASSIGN, i)
+}
+
+func (s *Upsert_clauseContext) 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 *Upsert_clauseContext) 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 *Upsert_clauseContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Upsert_clauseContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Upsert_clauseContext) AllWHERE_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserWHERE_)
+}
+
+func (s *Upsert_clauseContext) WHERE_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, i)
+}
+
+func (s *Upsert_clauseContext) 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 *Upsert_clauseContext) 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 *Upsert_clauseContext) AllColumn_name_list() []IColumn_name_listContext {
+ children := s.GetChildren()
+ len := 0
+ for _, ctx := range children {
+ if _, ok := ctx.(IColumn_name_listContext); ok {
+ len++
+ }
+ }
+
+ tst := make([]IColumn_name_listContext, len)
+ i := 0
+ for _, ctx := range children {
+ if t, ok := ctx.(IColumn_name_listContext); ok {
+ tst[i] = t.(IColumn_name_listContext)
+ i++
+ }
+ }
+
+ return tst
+}
+
+func (s *Upsert_clauseContext) Column_name_list(i int) IColumn_name_listContext {
+ var t antlr.RuleContext
+ j := 0
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IColumn_name_listContext); ok {
+ if j == i {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ j++
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IColumn_name_listContext)
+}
+
+func (s *Upsert_clauseContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Upsert_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Upsert_clauseContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterUpsert_clause(s)
+ }
+}
+
+func (s *Upsert_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitUpsert_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Upsert_clause() (localctx IUpsert_clauseContext) {
+ localctx = NewUpsert_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 78, SQLiteParserRULE_upsert_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1177)
+ p.Match(SQLiteParserON_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1178)
+ p.Match(SQLiteParserCONFLICT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1193)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOPEN_PAR {
+ {
+ p.SetState(1179)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1180)
+ p.Indexed_column()
+ }
+ p.SetState(1185)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1181)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1182)
+ p.Indexed_column()
+ }
+
+ p.SetState(1187)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(1188)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1191)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHERE_ {
+ {
+ p.SetState(1189)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1190)
+ p.expr(0)
+ }
+
+ }
+
+ }
+ {
+ p.SetState(1195)
+ p.Match(SQLiteParserDO_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1222)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserNOTHING_:
+ {
+ p.SetState(1196)
+ p.Match(SQLiteParserNOTHING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserUPDATE_:
+ {
+ p.SetState(1197)
+ p.Match(SQLiteParserUPDATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1198)
+ p.Match(SQLiteParserSET_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ p.SetState(1201)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 155, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1199)
+ p.Column_name()
+ }
+
+ case 2:
+ {
+ p.SetState(1200)
+ p.Column_name_list()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(1203)
+ p.Match(SQLiteParserASSIGN)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1204)
+ p.expr(0)
+ }
+ p.SetState(1215)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1205)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1208)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 156, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1206)
+ p.Column_name()
+ }
+
+ case 2:
+ {
+ p.SetState(1207)
+ p.Column_name_list()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(1210)
+ p.Match(SQLiteParserASSIGN)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1211)
+ p.expr(0)
+ }
+
+ p.SetState(1217)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ p.SetState(1220)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHERE_ {
+ {
+ p.SetState(1218)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1219)
+ p.expr(0)
+ }
+
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IPragma_stmtContext is an interface to support dynamic dispatch.
+type IPragma_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ PRAGMA_() antlr.TerminalNode
+ Pragma_name() IPragma_nameContext
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ ASSIGN() antlr.TerminalNode
+ Pragma_value() IPragma_valueContext
+ OPEN_PAR() antlr.TerminalNode
+ CLOSE_PAR() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_pragma_stmt
+ return p
+}
+
+func InitEmptyPragma_stmtContext(p *Pragma_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_pragma_stmt
+}
+
+func (*Pragma_stmtContext) IsPragma_stmtContext() {}
+
+func NewPragma_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_stmtContext {
+ var p = new(Pragma_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_pragma_stmt
+
+ return p
+}
+
+func (s *Pragma_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Pragma_stmtContext) PRAGMA_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRAGMA_, 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) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Pragma_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Pragma_stmtContext) ASSIGN() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserASSIGN, 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(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Pragma_stmtContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_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.(SQLiteParserListener); ok {
+ listenerT.EnterPragma_stmt(s)
+ }
+}
+
+func (s *Pragma_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitPragma_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Pragma_stmt() (localctx IPragma_stmtContext) {
+ localctx = NewPragma_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 80, SQLiteParserRULE_pragma_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1224)
+ p.Match(SQLiteParserPRAGMA_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1228)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 160, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1225)
+ p.Schema_name()
+ }
+ {
+ p.SetState(1226)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1230)
+ p.Pragma_name()
+ }
+ p.SetState(1237)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserASSIGN:
+ {
+ p.SetState(1231)
+ p.Match(SQLiteParserASSIGN)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1232)
+ p.Pragma_value()
+ }
+
+ case SQLiteParserOPEN_PAR:
+ {
+ p.SetState(1233)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1234)
+ p.Pragma_value()
+ }
+ {
+ p.SetState(1235)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserEOF, SQLiteParserSCOL, SQLiteParserALTER_, SQLiteParserANALYZE_, SQLiteParserATTACH_, SQLiteParserBEGIN_, SQLiteParserCOMMIT_, SQLiteParserCREATE_, SQLiteParserDELETE_, SQLiteParserDETACH_, SQLiteParserDROP_, SQLiteParserEND_, SQLiteParserEXPLAIN_, SQLiteParserINSERT_, SQLiteParserPRAGMA_, SQLiteParserREINDEX_, SQLiteParserRELEASE_, SQLiteParserREPLACE_, SQLiteParserROLLBACK_, SQLiteParserSAVEPOINT_, SQLiteParserSELECT_, SQLiteParserUPDATE_, SQLiteParserVACUUM_, SQLiteParserVALUES_, SQLiteParserWITH_:
+
+ default:
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IPragma_valueContext is an interface to support dynamic dispatch.
+type IPragma_valueContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Signed_number() ISigned_numberContext
+ Name() INameContext
+ STRING_LITERAL() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_pragma_value
+ return p
+}
+
+func InitEmptyPragma_valueContext(p *Pragma_valueContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_pragma_value
+}
+
+func (*Pragma_valueContext) IsPragma_valueContext() {}
+
+func NewPragma_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_valueContext {
+ var p = new(Pragma_valueContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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(SQLiteParserSTRING_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.(SQLiteParserListener); ok {
+ listenerT.EnterPragma_value(s)
+ }
+}
+
+func (s *Pragma_valueContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitPragma_value(s)
+ }
+}
+
+func (p *SQLiteParser) Pragma_value() (localctx IPragma_valueContext) {
+ localctx = NewPragma_valueContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 82, SQLiteParserRULE_pragma_value)
+ p.SetState(1242)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 162, p.GetParserRuleContext()) {
+ case 1:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1239)
+ p.Signed_number()
+ }
+
+ case 2:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1240)
+ p.Name()
+ }
+
+ case 3:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(1241)
+ p.Match(SQLiteParserSTRING_LITERAL)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IReindex_stmtContext is an interface to support dynamic dispatch.
+type IReindex_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ REINDEX_() antlr.TerminalNode
+ Collation_name() ICollation_nameContext
+ Table_name() ITable_nameContext
+ Index_name() IIndex_nameContext
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_reindex_stmt
+ return p
+}
+
+func InitEmptyReindex_stmtContext(p *Reindex_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_reindex_stmt
+}
+
+func (*Reindex_stmtContext) IsReindex_stmtContext() {}
+
+func NewReindex_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Reindex_stmtContext {
+ var p = new(Reindex_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_reindex_stmt
+
+ return p
+}
+
+func (s *Reindex_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Reindex_stmtContext) REINDEX_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREINDEX_, 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) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Reindex_stmtContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 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.(SQLiteParserListener); ok {
+ listenerT.EnterReindex_stmt(s)
+ }
+}
+
+func (s *Reindex_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitReindex_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Reindex_stmt() (localctx IReindex_stmtContext) {
+ localctx = NewReindex_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 84, SQLiteParserRULE_reindex_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1244)
+ p.Match(SQLiteParserREINDEX_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1255)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1245)
+ p.Collation_name()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ } else if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 165, p.GetParserRuleContext()) == 2 {
+ p.SetState(1249)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 163, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1246)
+ p.Schema_name()
+ }
+ {
+ p.SetState(1247)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(1253)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 164, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1251)
+ p.Table_name()
+ }
+
+ case 2:
+ {
+ p.SetState(1252)
+ p.Index_name()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISelect_stmtContext is an interface to support dynamic dispatch.
+type ISelect_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ AllSelect_core() []ISelect_coreContext
+ Select_core(i int) ISelect_coreContext
+ Common_table_stmt() ICommon_table_stmtContext
+ AllCompound_operator() []ICompound_operatorContext
+ Compound_operator(i int) ICompound_operatorContext
+ Order_by_stmt() IOrder_by_stmtContext
+ Limit_stmt() ILimit_stmtContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_select_stmt
+ return p
+}
+
+func InitEmptySelect_stmtContext(p *Select_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_select_stmt
+}
+
+func (*Select_stmtContext) IsSelect_stmtContext() {}
+
+func NewSelect_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_stmtContext {
+ var p = new(Select_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_select_stmt
+
+ return p
+}
+
+func (s *Select_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *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 *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 *Select_stmtContext) Common_table_stmt() ICommon_table_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ICommon_table_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ICommon_table_stmtContext)
+}
+
+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) Order_by_stmt() IOrder_by_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOrder_by_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOrder_by_stmtContext)
+}
+
+func (s *Select_stmtContext) Limit_stmt() ILimit_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ILimit_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ILimit_stmtContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterSelect_stmt(s)
+ }
+}
+
+func (s *Select_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSelect_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Select_stmt() (localctx ISelect_stmtContext) {
+ localctx = NewSelect_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 86, SQLiteParserRULE_select_stmt)
+ var _la int
+
+ var _alt int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(1258)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITH_ {
+ {
+ p.SetState(1257)
+ p.Common_table_stmt()
+ }
+
+ }
+ {
+ p.SetState(1260)
+ p.Select_core()
+ }
+ p.SetState(1266)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 167, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ for _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
+ if _alt == 1 {
+ {
+ p.SetState(1261)
+ p.Compound_operator()
+ }
+ {
+ p.SetState(1262)
+ p.Select_core()
+ }
+
+ }
+ p.SetState(1268)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 167, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ }
+ p.SetState(1270)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserORDER_ {
+ {
+ p.SetState(1269)
+ p.Order_by_stmt()
+ }
+
+ }
+ p.SetState(1273)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserLIMIT_ {
+ {
+ p.SetState(1272)
+ p.Limit_stmt()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IJoin_clauseContext is an interface to support dynamic dispatch.
+type IJoin_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ AllTable_or_subquery() []ITable_or_subqueryContext
+ Table_or_subquery(i int) ITable_or_subqueryContext
+ AllJoin_operator() []IJoin_operatorContext
+ Join_operator(i int) IJoin_operatorContext
+ AllJoin_constraint() []IJoin_constraintContext
+ Join_constraint(i int) IJoin_constraintContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_join_clause
+ return p
+}
+
+func InitEmptyJoin_clauseContext(p *Join_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_join_clause
+}
+
+func (*Join_clauseContext) IsJoin_clauseContext() {}
+
+func NewJoin_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_clauseContext {
+ var p = new(Join_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterJoin_clause(s)
+ }
+}
+
+func (s *Join_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitJoin_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Join_clause() (localctx IJoin_clauseContext) {
+ localctx = NewJoin_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 88, SQLiteParserRULE_join_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1275)
+ p.Table_or_subquery()
+ }
+ p.SetState(1283)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA || _la == SQLiteParserCROSS_ || ((int64((_la-87)) & ^0x3f) == 0 && ((int64(1)<<(_la-87))&8833) != 0) {
+ {
+ p.SetState(1276)
+ p.Join_operator()
+ }
+ {
+ p.SetState(1277)
+ p.Table_or_subquery()
+ }
+ p.SetState(1279)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 170, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1278)
+ p.Join_constraint()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+ p.SetState(1285)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISelect_coreContext is an interface to support dynamic dispatch.
+type ISelect_coreContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // GetWhereExpr returns the whereExpr rule contexts.
+ GetWhereExpr() IExprContext
+
+ // Get_expr returns the _expr rule contexts.
+ Get_expr() IExprContext
+
+ // GetHavingExpr returns the havingExpr rule contexts.
+ GetHavingExpr() IExprContext
+
+ // SetWhereExpr sets the whereExpr rule contexts.
+ SetWhereExpr(IExprContext)
+
+ // Set_expr sets the _expr rule contexts.
+ Set_expr(IExprContext)
+
+ // SetHavingExpr sets the havingExpr rule contexts.
+ SetHavingExpr(IExprContext)
+
+ // GetGroupByExpr returns the groupByExpr rule context list.
+ GetGroupByExpr() []IExprContext
+
+ // SetGroupByExpr sets the groupByExpr rule context list.
+ SetGroupByExpr([]IExprContext)
+
+ // Getter signatures
+ SELECT_() antlr.TerminalNode
+ AllResult_column() []IResult_columnContext
+ Result_column(i int) IResult_columnContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ FROM_() antlr.TerminalNode
+ WHERE_() antlr.TerminalNode
+ GROUP_() antlr.TerminalNode
+ BY_() antlr.TerminalNode
+ WINDOW_() antlr.TerminalNode
+ AllWindow_name() []IWindow_nameContext
+ Window_name(i int) IWindow_nameContext
+ AllAS_() []antlr.TerminalNode
+ AS_(i int) antlr.TerminalNode
+ AllWindow_defn() []IWindow_defnContext
+ Window_defn(i int) IWindow_defnContext
+ DISTINCT_() antlr.TerminalNode
+ ALL_() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ AllTable_or_subquery() []ITable_or_subqueryContext
+ Table_or_subquery(i int) ITable_or_subqueryContext
+ Join_clause() IJoin_clauseContext
+ HAVING_() antlr.TerminalNode
+ Values_clause() IValues_clauseContext
+
+ // IsSelect_coreContext differentiates from other interfaces.
+ IsSelect_coreContext()
+}
+
+type Select_coreContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+ whereExpr IExprContext
+ _expr IExprContext
+ groupByExpr []IExprContext
+ havingExpr IExprContext
+}
+
+func NewEmptySelect_coreContext() *Select_coreContext {
+ var p = new(Select_coreContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_select_core
+ return p
+}
+
+func InitEmptySelect_coreContext(p *Select_coreContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_select_core
+}
+
+func (*Select_coreContext) IsSelect_coreContext() {}
+
+func NewSelect_coreContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Select_coreContext {
+ var p = new(Select_coreContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_select_core
+
+ return p
+}
+
+func (s *Select_coreContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Select_coreContext) GetWhereExpr() IExprContext { return s.whereExpr }
+
+func (s *Select_coreContext) Get_expr() IExprContext { return s._expr }
+
+func (s *Select_coreContext) GetHavingExpr() IExprContext { return s.havingExpr }
+
+func (s *Select_coreContext) SetWhereExpr(v IExprContext) { s.whereExpr = v }
+
+func (s *Select_coreContext) Set_expr(v IExprContext) { s._expr = v }
+
+func (s *Select_coreContext) SetHavingExpr(v IExprContext) { s.havingExpr = v }
+
+func (s *Select_coreContext) GetGroupByExpr() []IExprContext { return s.groupByExpr }
+
+func (s *Select_coreContext) SetGroupByExpr(v []IExprContext) { s.groupByExpr = v }
+
+func (s *Select_coreContext) SELECT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSELECT_, 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(SQLiteParserCOMMA)
+}
+
+func (s *Select_coreContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Select_coreContext) FROM_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFROM_, 0)
+}
+
+func (s *Select_coreContext) WHERE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, 0)
+}
+
+func (s *Select_coreContext) GROUP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGROUP_, 0)
+}
+
+func (s *Select_coreContext) BY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, 0)
+}
+
+func (s *Select_coreContext) WINDOW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWINDOW_, 0)
+}
+
+func (s *Select_coreContext) AllWindow_name() []IWindow_nameContext {
+ children := s.GetChildren()
+ len := 0
+ for _, ctx := range children {
+ if _, ok := ctx.(IWindow_nameContext); ok {
+ len++
+ }
+ }
+
+ tst := make([]IWindow_nameContext, len)
+ i := 0
+ for _, ctx := range children {
+ if t, ok := ctx.(IWindow_nameContext); ok {
+ tst[i] = t.(IWindow_nameContext)
+ i++
+ }
+ }
+
+ return tst
+}
+
+func (s *Select_coreContext) Window_name(i int) IWindow_nameContext {
+ var t antlr.RuleContext
+ j := 0
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IWindow_nameContext); ok {
+ if j == i {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ j++
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IWindow_nameContext)
+}
+
+func (s *Select_coreContext) AllAS_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserAS_)
+}
+
+func (s *Select_coreContext) AS_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, i)
+}
+
+func (s *Select_coreContext) AllWindow_defn() []IWindow_defnContext {
+ children := s.GetChildren()
+ len := 0
+ for _, ctx := range children {
+ if _, ok := ctx.(IWindow_defnContext); ok {
+ len++
+ }
+ }
+
+ tst := make([]IWindow_defnContext, len)
+ i := 0
+ for _, ctx := range children {
+ if t, ok := ctx.(IWindow_defnContext); ok {
+ tst[i] = t.(IWindow_defnContext)
+ i++
+ }
+ }
+
+ return tst
+}
+
+func (s *Select_coreContext) Window_defn(i int) IWindow_defnContext {
+ var t antlr.RuleContext
+ j := 0
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IWindow_defnContext); ok {
+ if j == i {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ j++
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IWindow_defnContext)
+}
+
+func (s *Select_coreContext) DISTINCT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDISTINCT_, 0)
+}
+
+func (s *Select_coreContext) ALL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALL_, 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) 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) HAVING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserHAVING_, 0)
+}
+
+func (s *Select_coreContext) Values_clause() IValues_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IValues_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IValues_clauseContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterSelect_core(s)
+ }
+}
+
+func (s *Select_coreContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSelect_core(s)
+ }
+}
+
+func (p *SQLiteParser) Select_core() (localctx ISelect_coreContext) {
+ localctx = NewSelect_coreContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 90, SQLiteParserRULE_select_core)
+ var _la int
+
+ p.SetState(1349)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserSELECT_:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1286)
+ p.Match(SQLiteParserSELECT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1288)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 172, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1287)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserALL_ || _la == SQLiteParserDISTINCT_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1290)
+ p.Result_column()
+ }
+ p.SetState(1295)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1291)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1292)
+ p.Result_column()
+ }
+
+ p.SetState(1297)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ p.SetState(1310)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserFROM_ {
+ {
+ p.SetState(1298)
+ p.Match(SQLiteParserFROM_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1308)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 175, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1299)
+ p.Table_or_subquery()
+ }
+ p.SetState(1304)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1300)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1301)
+ p.Table_or_subquery()
+ }
+
+ p.SetState(1306)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ case 2:
+ {
+ p.SetState(1307)
+ p.Join_clause()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+ }
+ p.SetState(1314)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHERE_ {
+ {
+ p.SetState(1312)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1313)
+
+ var _x = p.expr(0)
+
+ localctx.(*Select_coreContext).whereExpr = _x
+ }
+
+ }
+ p.SetState(1330)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserGROUP_ {
+ {
+ p.SetState(1316)
+ p.Match(SQLiteParserGROUP_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1317)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1318)
+
+ var _x = p.expr(0)
+
+ localctx.(*Select_coreContext)._expr = _x
+ }
+ localctx.(*Select_coreContext).groupByExpr = append(localctx.(*Select_coreContext).groupByExpr, localctx.(*Select_coreContext)._expr)
+ p.SetState(1323)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1319)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1320)
+
+ var _x = p.expr(0)
+
+ localctx.(*Select_coreContext)._expr = _x
+ }
+ localctx.(*Select_coreContext).groupByExpr = append(localctx.(*Select_coreContext).groupByExpr, localctx.(*Select_coreContext)._expr)
+
+ p.SetState(1325)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ p.SetState(1328)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserHAVING_ {
+ {
+ p.SetState(1326)
+ p.Match(SQLiteParserHAVING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1327)
+
+ var _x = p.expr(0)
+
+ localctx.(*Select_coreContext).havingExpr = _x
+ }
+
+ }
+
+ }
+ p.SetState(1346)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWINDOW_ {
+ {
+ p.SetState(1332)
+ p.Match(SQLiteParserWINDOW_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1333)
+ p.Window_name()
+ }
+ {
+ p.SetState(1334)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1335)
+ p.Window_defn()
+ }
+ p.SetState(1343)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1336)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1337)
+ p.Window_name()
+ }
+ {
+ p.SetState(1338)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1339)
+ p.Window_defn()
+ }
+
+ p.SetState(1345)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ }
+
+ case SQLiteParserVALUES_:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1348)
+ p.Values_clause()
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFactored_select_stmtContext is an interface to support dynamic dispatch.
+type IFactored_select_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Select_stmt() ISelect_stmtContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_factored_select_stmt
+ return p
+}
+
+func InitEmptyFactored_select_stmtContext(p *Factored_select_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_factored_select_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_factored_select_stmt
+
+ return p
+}
+
+func (s *Factored_select_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Factored_select_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 *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.(SQLiteParserListener); ok {
+ listenerT.EnterFactored_select_stmt(s)
+ }
+}
+
+func (s *Factored_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFactored_select_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Factored_select_stmt() (localctx IFactored_select_stmtContext) {
+ localctx = NewFactored_select_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 92, SQLiteParserRULE_factored_select_stmt)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1351)
+ p.Select_stmt()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISimple_select_stmtContext is an interface to support dynamic dispatch.
+type ISimple_select_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Select_core() ISelect_coreContext
+ Common_table_stmt() ICommon_table_stmtContext
+ Order_by_stmt() IOrder_by_stmtContext
+ Limit_stmt() ILimit_stmtContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_simple_select_stmt
+ return p
+}
+
+func InitEmptySimple_select_stmtContext(p *Simple_select_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_simple_select_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) Common_table_stmt() ICommon_table_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ICommon_table_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ICommon_table_stmtContext)
+}
+
+func (s *Simple_select_stmtContext) Order_by_stmt() IOrder_by_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOrder_by_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOrder_by_stmtContext)
+}
+
+func (s *Simple_select_stmtContext) Limit_stmt() ILimit_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ILimit_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ILimit_stmtContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterSimple_select_stmt(s)
+ }
+}
+
+func (s *Simple_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSimple_select_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Simple_select_stmt() (localctx ISimple_select_stmtContext) {
+ localctx = NewSimple_select_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 94, SQLiteParserRULE_simple_select_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(1354)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITH_ {
+ {
+ p.SetState(1353)
+ p.Common_table_stmt()
+ }
+
+ }
+ {
+ p.SetState(1356)
+ p.Select_core()
+ }
+ p.SetState(1358)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserORDER_ {
+ {
+ p.SetState(1357)
+ p.Order_by_stmt()
+ }
+
+ }
+ p.SetState(1361)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserLIMIT_ {
+ {
+ p.SetState(1360)
+ p.Limit_stmt()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICompound_select_stmtContext is an interface to support dynamic dispatch.
+type ICompound_select_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ AllSelect_core() []ISelect_coreContext
+ Select_core(i int) ISelect_coreContext
+ Common_table_stmt() ICommon_table_stmtContext
+ Order_by_stmt() IOrder_by_stmtContext
+ Limit_stmt() ILimit_stmtContext
+ AllUNION_() []antlr.TerminalNode
+ UNION_(i int) antlr.TerminalNode
+ AllINTERSECT_() []antlr.TerminalNode
+ INTERSECT_(i int) antlr.TerminalNode
+ AllEXCEPT_() []antlr.TerminalNode
+ EXCEPT_(i int) antlr.TerminalNode
+ AllALL_() []antlr.TerminalNode
+ ALL_(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_compound_select_stmt
+ return p
+}
+
+func InitEmptyCompound_select_stmtContext(p *Compound_select_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_compound_select_stmt
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) Common_table_stmt() ICommon_table_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ICommon_table_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ICommon_table_stmtContext)
+}
+
+func (s *Compound_select_stmtContext) Order_by_stmt() IOrder_by_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOrder_by_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOrder_by_stmtContext)
+}
+
+func (s *Compound_select_stmtContext) Limit_stmt() ILimit_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ILimit_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ILimit_stmtContext)
+}
+
+func (s *Compound_select_stmtContext) AllUNION_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserUNION_)
+}
+
+func (s *Compound_select_stmtContext) UNION_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNION_, i)
+}
+
+func (s *Compound_select_stmtContext) AllINTERSECT_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserINTERSECT_)
+}
+
+func (s *Compound_select_stmtContext) INTERSECT_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINTERSECT_, i)
+}
+
+func (s *Compound_select_stmtContext) AllEXCEPT_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserEXCEPT_)
+}
+
+func (s *Compound_select_stmtContext) EXCEPT_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXCEPT_, i)
+}
+
+func (s *Compound_select_stmtContext) AllALL_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserALL_)
+}
+
+func (s *Compound_select_stmtContext) ALL_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALL_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterCompound_select_stmt(s)
+ }
+}
+
+func (s *Compound_select_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCompound_select_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Compound_select_stmt() (localctx ICompound_select_stmtContext) {
+ localctx = NewCompound_select_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 96, SQLiteParserRULE_compound_select_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(1364)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITH_ {
+ {
+ p.SetState(1363)
+ p.Common_table_stmt()
+ }
+
+ }
+ {
+ p.SetState(1366)
+ p.Select_core()
+ }
+ p.SetState(1376)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for ok := true; ok; ok = _la == SQLiteParserEXCEPT_ || _la == SQLiteParserINTERSECT_ || _la == SQLiteParserUNION_ {
+ p.SetState(1373)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserUNION_:
+ {
+ p.SetState(1367)
+ p.Match(SQLiteParserUNION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1369)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserALL_ {
+ {
+ p.SetState(1368)
+ p.Match(SQLiteParserALL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+ case SQLiteParserINTERSECT_:
+ {
+ p.SetState(1371)
+ p.Match(SQLiteParserINTERSECT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserEXCEPT_:
+ {
+ p.SetState(1372)
+ p.Match(SQLiteParserEXCEPT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+ {
+ p.SetState(1375)
+ p.Select_core()
+ }
+
+ p.SetState(1378)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ p.SetState(1381)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserORDER_ {
+ {
+ p.SetState(1380)
+ p.Order_by_stmt()
+ }
+
+ }
+ p.SetState(1384)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserLIMIT_ {
+ {
+ p.SetState(1383)
+ p.Limit_stmt()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ITable_or_subqueryContext is an interface to support dynamic dispatch.
+type ITable_or_subqueryContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Table_name() ITable_nameContext
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ Table_alias() ITable_aliasContext
+ INDEXED_() antlr.TerminalNode
+ BY_() antlr.TerminalNode
+ Index_name() IIndex_nameContext
+ NOT_() antlr.TerminalNode
+ AS_() antlr.TerminalNode
+ Table_function_name() ITable_function_nameContext
+ OPEN_PAR() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ CLOSE_PAR() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ AllTable_or_subquery() []ITable_or_subqueryContext
+ Table_or_subquery(i int) ITable_or_subqueryContext
+ Join_clause() IJoin_clauseContext
+ Select_stmt() ISelect_stmtContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_or_subquery
+ return p
+}
+
+func InitEmptyTable_or_subqueryContext(p *Table_or_subqueryContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_or_subquery
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Table_or_subqueryContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 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) INDEXED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINDEXED_, 0)
+}
+
+func (s *Table_or_subqueryContext) BY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, 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) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *Table_or_subqueryContext) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 0)
+}
+
+func (s *Table_or_subqueryContext) Table_function_name() ITable_function_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ITable_function_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ITable_function_nameContext)
+}
+
+func (s *Table_or_subqueryContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Table_or_subqueryContext) 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 *Table_or_subqueryContext) 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 *Table_or_subqueryContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Table_or_subqueryContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Table_or_subqueryContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+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) 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.(SQLiteParserListener); ok {
+ listenerT.EnterTable_or_subquery(s)
+ }
+}
+
+func (s *Table_or_subqueryContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitTable_or_subquery(s)
+ }
+}
+
+func (p *SQLiteParser) Table_or_subquery() (localctx ITable_or_subqueryContext) {
+ localctx = NewTable_or_subqueryContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 98, SQLiteParserRULE_table_or_subquery)
+ var _la int
+
+ p.SetState(1450)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 205, p.GetParserRuleContext()) {
+ case 1:
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(1389)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 193, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1386)
+ p.Schema_name()
+ }
+ {
+ p.SetState(1387)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1391)
+ p.Table_name()
+ }
+ p.SetState(1396)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 195, p.GetParserRuleContext()) == 1 {
+ p.SetState(1393)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 194, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1392)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1395)
+ p.Table_alias()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(1403)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserINDEXED_:
+ {
+ p.SetState(1398)
+ p.Match(SQLiteParserINDEXED_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1399)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1400)
+ p.Index_name()
+ }
+
+ case SQLiteParserNOT_:
+ {
+ p.SetState(1401)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1402)
+ p.Match(SQLiteParserINDEXED_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserEOF, SQLiteParserSCOL, SQLiteParserCLOSE_PAR, SQLiteParserCOMMA, SQLiteParserALTER_, SQLiteParserANALYZE_, SQLiteParserATTACH_, SQLiteParserBEGIN_, SQLiteParserCOMMIT_, SQLiteParserCREATE_, SQLiteParserCROSS_, SQLiteParserDELETE_, SQLiteParserDETACH_, SQLiteParserDROP_, SQLiteParserEND_, SQLiteParserEXCEPT_, SQLiteParserEXPLAIN_, SQLiteParserGROUP_, SQLiteParserINNER_, SQLiteParserINSERT_, SQLiteParserINTERSECT_, SQLiteParserJOIN_, SQLiteParserLEFT_, SQLiteParserLIMIT_, SQLiteParserNATURAL_, SQLiteParserON_, SQLiteParserORDER_, SQLiteParserPRAGMA_, SQLiteParserREINDEX_, SQLiteParserRELEASE_, SQLiteParserREPLACE_, SQLiteParserRETURNING_, SQLiteParserROLLBACK_, SQLiteParserSAVEPOINT_, SQLiteParserSELECT_, SQLiteParserUNION_, SQLiteParserUPDATE_, SQLiteParserUSING_, SQLiteParserVACUUM_, SQLiteParserVALUES_, SQLiteParserWHERE_, SQLiteParserWITH_, SQLiteParserWINDOW_:
+
+ default:
+ }
+
+ case 2:
+ p.EnterOuterAlt(localctx, 2)
+ p.SetState(1408)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 197, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1405)
+ p.Schema_name()
+ }
+ {
+ p.SetState(1406)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1410)
+ p.Table_function_name()
+ }
+ {
+ p.SetState(1411)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1412)
+ p.expr(0)
+ }
+ p.SetState(1417)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1413)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1414)
+ p.expr(0)
+ }
+
+ p.SetState(1419)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(1420)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1425)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 200, p.GetParserRuleContext()) == 1 {
+ p.SetState(1422)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 199, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1421)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1424)
+ p.Table_alias()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+ case 3:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(1427)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1437)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 202, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1428)
+ p.Table_or_subquery()
+ }
+ p.SetState(1433)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1429)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1430)
+ p.Table_or_subquery()
+ }
+
+ p.SetState(1435)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ case 2:
+ {
+ p.SetState(1436)
+ p.Join_clause()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(1439)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 4:
+ p.EnterOuterAlt(localctx, 4)
+ {
+ p.SetState(1441)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1442)
+ p.Select_stmt()
+ }
+ {
+ p.SetState(1443)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1448)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 204, p.GetParserRuleContext()) == 1 {
+ p.SetState(1445)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 203, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1444)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1447)
+ p.Table_alias()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IResult_columnContext is an interface to support dynamic dispatch.
+type IResult_columnContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ STAR() antlr.TerminalNode
+ Table_name() ITable_nameContext
+ DOT() antlr.TerminalNode
+ Expr() IExprContext
+ Column_alias() IColumn_aliasContext
+ AS_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_result_column
+ return p
+}
+
+func InitEmptyResult_columnContext(p *Result_columnContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_result_column
+}
+
+func (*Result_columnContext) IsResult_columnContext() {}
+
+func NewResult_columnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Result_columnContext {
+ var p = new(Result_columnContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_result_column
+
+ return p
+}
+
+func (s *Result_columnContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Result_columnContext) STAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTAR, 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(SQLiteParserDOT, 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) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterResult_column(s)
+ }
+}
+
+func (s *Result_columnContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitResult_column(s)
+ }
+}
+
+func (p *SQLiteParser) Result_column() (localctx IResult_columnContext) {
+ localctx = NewResult_columnContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 100, SQLiteParserRULE_result_column)
+ var _la int
+
+ p.SetState(1464)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 208, p.GetParserRuleContext()) {
+ case 1:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1452)
+ p.Match(SQLiteParserSTAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 2:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1453)
+ p.Table_name()
+ }
+ {
+ p.SetState(1454)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1455)
+ p.Match(SQLiteParserSTAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 3:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(1457)
+ p.expr(0)
+ }
+ p.SetState(1462)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserAS_ || _la == SQLiteParserIDENTIFIER || _la == SQLiteParserSTRING_LITERAL {
+ p.SetState(1459)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserAS_ {
+ {
+ p.SetState(1458)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ {
+ p.SetState(1461)
+ p.Column_alias()
+ }
+
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IJoin_operatorContext is an interface to support dynamic dispatch.
+type IJoin_operatorContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ COMMA() antlr.TerminalNode
+ JOIN_() antlr.TerminalNode
+ NATURAL_() antlr.TerminalNode
+ LEFT_() antlr.TerminalNode
+ INNER_() antlr.TerminalNode
+ CROSS_() antlr.TerminalNode
+ OUTER_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_join_operator
+ return p
+}
+
+func InitEmptyJoin_operatorContext(p *Join_operatorContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_join_operator
+}
+
+func (*Join_operatorContext) IsJoin_operatorContext() {}
+
+func NewJoin_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_operatorContext {
+ var p = new(Join_operatorContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_join_operator
+
+ return p
+}
+
+func (s *Join_operatorContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Join_operatorContext) COMMA() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 0)
+}
+
+func (s *Join_operatorContext) JOIN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserJOIN_, 0)
+}
+
+func (s *Join_operatorContext) NATURAL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNATURAL_, 0)
+}
+
+func (s *Join_operatorContext) LEFT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLEFT_, 0)
+}
+
+func (s *Join_operatorContext) INNER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINNER_, 0)
+}
+
+func (s *Join_operatorContext) CROSS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCROSS_, 0)
+}
+
+func (s *Join_operatorContext) OUTER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOUTER_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterJoin_operator(s)
+ }
+}
+
+func (s *Join_operatorContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitJoin_operator(s)
+ }
+}
+
+func (p *SQLiteParser) Join_operator() (localctx IJoin_operatorContext) {
+ localctx = NewJoin_operatorContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 102, SQLiteParserRULE_join_operator)
+ var _la int
+
+ p.SetState(1479)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserCOMMA:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1466)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserCROSS_, SQLiteParserINNER_, SQLiteParserJOIN_, SQLiteParserLEFT_, SQLiteParserNATURAL_:
+ p.EnterOuterAlt(localctx, 2)
+ p.SetState(1468)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserNATURAL_ {
+ {
+ p.SetState(1467)
+ p.Match(SQLiteParserNATURAL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+ p.SetState(1476)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserLEFT_:
+ {
+ p.SetState(1470)
+ p.Match(SQLiteParserLEFT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1472)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserOUTER_ {
+ {
+ p.SetState(1471)
+ p.Match(SQLiteParserOUTER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+ case SQLiteParserINNER_:
+ {
+ p.SetState(1474)
+ p.Match(SQLiteParserINNER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserCROSS_:
+ {
+ p.SetState(1475)
+ p.Match(SQLiteParserCROSS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserJOIN_:
+
+ default:
+ }
+ {
+ p.SetState(1478)
+ p.Match(SQLiteParserJOIN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IJoin_constraintContext is an interface to support dynamic dispatch.
+type IJoin_constraintContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ON_() antlr.TerminalNode
+ Expr() IExprContext
+ USING_() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ CLOSE_PAR() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_join_constraint
+ return p
+}
+
+func InitEmptyJoin_constraintContext(p *Join_constraintContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_join_constraint
+}
+
+func (*Join_constraintContext) IsJoin_constraintContext() {}
+
+func NewJoin_constraintContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Join_constraintContext {
+ var p = new(Join_constraintContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_join_constraint
+
+ return p
+}
+
+func (s *Join_constraintContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Join_constraintContext) ON_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserON_, 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) USING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUSING_, 0)
+}
+
+func (s *Join_constraintContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_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(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Join_constraintContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Join_constraintContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 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.(SQLiteParserListener); ok {
+ listenerT.EnterJoin_constraint(s)
+ }
+}
+
+func (s *Join_constraintContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitJoin_constraint(s)
+ }
+}
+
+func (p *SQLiteParser) Join_constraint() (localctx IJoin_constraintContext) {
+ localctx = NewJoin_constraintContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 104, SQLiteParserRULE_join_constraint)
+ var _la int
+
+ p.SetState(1495)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserON_:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1481)
+ p.Match(SQLiteParserON_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1482)
+ p.expr(0)
+ }
+
+ case SQLiteParserUSING_:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1483)
+ p.Match(SQLiteParserUSING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1484)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1485)
+ p.Column_name()
+ }
+ p.SetState(1490)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1486)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1487)
+ p.Column_name()
+ }
+
+ p.SetState(1492)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(1493)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICompound_operatorContext is an interface to support dynamic dispatch.
+type ICompound_operatorContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ UNION_() antlr.TerminalNode
+ ALL_() antlr.TerminalNode
+ INTERSECT_() antlr.TerminalNode
+ EXCEPT_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_compound_operator
+ return p
+}
+
+func InitEmptyCompound_operatorContext(p *Compound_operatorContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_compound_operator
+}
+
+func (*Compound_operatorContext) IsCompound_operatorContext() {}
+
+func NewCompound_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Compound_operatorContext {
+ var p = new(Compound_operatorContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_compound_operator
+
+ return p
+}
+
+func (s *Compound_operatorContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Compound_operatorContext) UNION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNION_, 0)
+}
+
+func (s *Compound_operatorContext) ALL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALL_, 0)
+}
+
+func (s *Compound_operatorContext) INTERSECT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINTERSECT_, 0)
+}
+
+func (s *Compound_operatorContext) EXCEPT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXCEPT_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterCompound_operator(s)
+ }
+}
+
+func (s *Compound_operatorContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCompound_operator(s)
+ }
+}
+
+func (p *SQLiteParser) Compound_operator() (localctx ICompound_operatorContext) {
+ localctx = NewCompound_operatorContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 106, SQLiteParserRULE_compound_operator)
+ var _la int
+
+ p.SetState(1503)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserUNION_:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1497)
+ p.Match(SQLiteParserUNION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1499)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserALL_ {
+ {
+ p.SetState(1498)
+ p.Match(SQLiteParserALL_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ }
+
+ case SQLiteParserINTERSECT_:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1501)
+ p.Match(SQLiteParserINTERSECT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserEXCEPT_:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(1502)
+ p.Match(SQLiteParserEXCEPT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IUpdate_stmtContext is an interface to support dynamic dispatch.
+type IUpdate_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ UPDATE_() antlr.TerminalNode
+ Qualified_table_name() IQualified_table_nameContext
+ SET_() antlr.TerminalNode
+ AllASSIGN() []antlr.TerminalNode
+ ASSIGN(i int) antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ AllColumn_name_list() []IColumn_name_listContext
+ Column_name_list(i int) IColumn_name_listContext
+ With_clause() IWith_clauseContext
+ OR_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ FROM_() antlr.TerminalNode
+ WHERE_() antlr.TerminalNode
+ Returning_clause() IReturning_clauseContext
+ ROLLBACK_() antlr.TerminalNode
+ ABORT_() antlr.TerminalNode
+ REPLACE_() antlr.TerminalNode
+ FAIL_() antlr.TerminalNode
+ IGNORE_() antlr.TerminalNode
+ AllTable_or_subquery() []ITable_or_subqueryContext
+ Table_or_subquery(i int) ITable_or_subqueryContext
+ Join_clause() IJoin_clauseContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_update_stmt
+ return p
+}
+
+func InitEmptyUpdate_stmtContext(p *Update_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_update_stmt
+}
+
+func (*Update_stmtContext) IsUpdate_stmtContext() {}
+
+func NewUpdate_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Update_stmtContext {
+ var p = new(Update_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_update_stmt
+
+ return p
+}
+
+func (s *Update_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Update_stmtContext) UPDATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUPDATE_, 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) SET_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSET_, 0)
+}
+
+func (s *Update_stmtContext) AllASSIGN() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserASSIGN)
+}
+
+func (s *Update_stmtContext) ASSIGN(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserASSIGN, 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) 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) AllColumn_name_list() []IColumn_name_listContext {
+ children := s.GetChildren()
+ len := 0
+ for _, ctx := range children {
+ if _, ok := ctx.(IColumn_name_listContext); ok {
+ len++
+ }
+ }
+
+ tst := make([]IColumn_name_listContext, len)
+ i := 0
+ for _, ctx := range children {
+ if t, ok := ctx.(IColumn_name_listContext); ok {
+ tst[i] = t.(IColumn_name_listContext)
+ i++
+ }
+ }
+
+ return tst
+}
+
+func (s *Update_stmtContext) Column_name_list(i int) IColumn_name_listContext {
+ var t antlr.RuleContext
+ j := 0
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IColumn_name_listContext); ok {
+ if j == i {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ j++
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IColumn_name_listContext)
+}
+
+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) OR_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOR_, 0)
+}
+
+func (s *Update_stmtContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Update_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Update_stmtContext) FROM_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFROM_, 0)
+}
+
+func (s *Update_stmtContext) WHERE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, 0)
+}
+
+func (s *Update_stmtContext) Returning_clause() IReturning_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IReturning_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IReturning_clauseContext)
+}
+
+func (s *Update_stmtContext) ROLLBACK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROLLBACK_, 0)
+}
+
+func (s *Update_stmtContext) ABORT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserABORT_, 0)
+}
+
+func (s *Update_stmtContext) REPLACE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREPLACE_, 0)
+}
+
+func (s *Update_stmtContext) FAIL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFAIL_, 0)
+}
+
+func (s *Update_stmtContext) IGNORE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIGNORE_, 0)
+}
+
+func (s *Update_stmtContext) 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 *Update_stmtContext) 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 *Update_stmtContext) 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 *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.(SQLiteParserListener); ok {
+ listenerT.EnterUpdate_stmt(s)
+ }
+}
+
+func (s *Update_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitUpdate_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Update_stmt() (localctx IUpdate_stmtContext) {
+ localctx = NewUpdate_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 108, SQLiteParserRULE_update_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(1506)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITH_ {
+ {
+ p.SetState(1505)
+ p.With_clause()
+ }
+
+ }
+ {
+ p.SetState(1508)
+ p.Match(SQLiteParserUPDATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1511)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 218, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1509)
+ p.Match(SQLiteParserOR_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1510)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserABORT_ || ((int64((_la-72)) & ^0x3f) == 0 && ((int64(1)<<(_la-72))&19140298416325121) != 0)) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1513)
+ p.Qualified_table_name()
+ }
+ {
+ p.SetState(1514)
+ p.Match(SQLiteParserSET_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1517)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 219, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1515)
+ p.Column_name()
+ }
+
+ case 2:
+ {
+ p.SetState(1516)
+ p.Column_name_list()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(1519)
+ p.Match(SQLiteParserASSIGN)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1520)
+ p.expr(0)
+ }
+ p.SetState(1531)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1521)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1524)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 220, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1522)
+ p.Column_name()
+ }
+
+ case 2:
+ {
+ p.SetState(1523)
+ p.Column_name_list()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(1526)
+ p.Match(SQLiteParserASSIGN)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1527)
+ p.expr(0)
+ }
+
+ p.SetState(1533)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ p.SetState(1546)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserFROM_ {
+ {
+ p.SetState(1534)
+ p.Match(SQLiteParserFROM_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1544)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 223, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1535)
+ p.Table_or_subquery()
+ }
+ p.SetState(1540)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1536)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1537)
+ p.Table_or_subquery()
+ }
+
+ p.SetState(1542)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ case 2:
+ {
+ p.SetState(1543)
+ p.Join_clause()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+ }
+ p.SetState(1550)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHERE_ {
+ {
+ p.SetState(1548)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1549)
+ p.expr(0)
+ }
+
+ }
+ p.SetState(1553)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserRETURNING_ {
+ {
+ p.SetState(1552)
+ p.Returning_clause()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IColumn_name_listContext is an interface to support dynamic dispatch.
+type IColumn_name_listContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ OPEN_PAR() antlr.TerminalNode
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ CLOSE_PAR() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsColumn_name_listContext differentiates from other interfaces.
+ IsColumn_name_listContext()
+}
+
+type Column_name_listContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyColumn_name_listContext() *Column_name_listContext {
+ var p = new(Column_name_listContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_name_list
+ return p
+}
+
+func InitEmptyColumn_name_listContext(p *Column_name_listContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_name_list
+}
+
+func (*Column_name_listContext) IsColumn_name_listContext() {}
+
+func NewColumn_name_listContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_name_listContext {
+ var p = new(Column_name_listContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_column_name_list
+
+ return p
+}
+
+func (s *Column_name_listContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Column_name_listContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Column_name_listContext) 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 *Column_name_listContext) 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 *Column_name_listContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Column_name_listContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Column_name_listContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Column_name_listContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Column_name_listContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Column_name_listContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterColumn_name_list(s)
+ }
+}
+
+func (s *Column_name_listContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitColumn_name_list(s)
+ }
+}
+
+func (p *SQLiteParser) Column_name_list() (localctx IColumn_name_listContext) {
+ localctx = NewColumn_name_listContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 110, SQLiteParserRULE_column_name_list)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1555)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1556)
+ p.Column_name()
+ }
+ p.SetState(1561)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1557)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1558)
+ p.Column_name()
+ }
+
+ p.SetState(1563)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ {
+ p.SetState(1564)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IUpdate_stmt_limitedContext is an interface to support dynamic dispatch.
+type IUpdate_stmt_limitedContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ UPDATE_() antlr.TerminalNode
+ Qualified_table_name() IQualified_table_nameContext
+ SET_() antlr.TerminalNode
+ AllASSIGN() []antlr.TerminalNode
+ ASSIGN(i int) antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ AllColumn_name() []IColumn_nameContext
+ Column_name(i int) IColumn_nameContext
+ AllColumn_name_list() []IColumn_name_listContext
+ Column_name_list(i int) IColumn_name_listContext
+ With_clause() IWith_clauseContext
+ OR_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+ WHERE_() antlr.TerminalNode
+ Returning_clause() IReturning_clauseContext
+ Limit_stmt() ILimit_stmtContext
+ ROLLBACK_() antlr.TerminalNode
+ ABORT_() antlr.TerminalNode
+ REPLACE_() antlr.TerminalNode
+ FAIL_() antlr.TerminalNode
+ IGNORE_() antlr.TerminalNode
+ Order_by_stmt() IOrder_by_stmtContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_update_stmt_limited
+ return p
+}
+
+func InitEmptyUpdate_stmt_limitedContext(p *Update_stmt_limitedContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_update_stmt_limited
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_update_stmt_limited
+
+ return p
+}
+
+func (s *Update_stmt_limitedContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Update_stmt_limitedContext) UPDATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUPDATE_, 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) SET_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSET_, 0)
+}
+
+func (s *Update_stmt_limitedContext) AllASSIGN() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserASSIGN)
+}
+
+func (s *Update_stmt_limitedContext) ASSIGN(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserASSIGN, 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) 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) AllColumn_name_list() []IColumn_name_listContext {
+ children := s.GetChildren()
+ len := 0
+ for _, ctx := range children {
+ if _, ok := ctx.(IColumn_name_listContext); ok {
+ len++
+ }
+ }
+
+ tst := make([]IColumn_name_listContext, len)
+ i := 0
+ for _, ctx := range children {
+ if t, ok := ctx.(IColumn_name_listContext); ok {
+ tst[i] = t.(IColumn_name_listContext)
+ i++
+ }
+ }
+
+ return tst
+}
+
+func (s *Update_stmt_limitedContext) Column_name_list(i int) IColumn_name_listContext {
+ var t antlr.RuleContext
+ j := 0
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IColumn_name_listContext); ok {
+ if j == i {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ j++
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IColumn_name_listContext)
+}
+
+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) OR_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOR_, 0)
+}
+
+func (s *Update_stmt_limitedContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Update_stmt_limitedContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Update_stmt_limitedContext) WHERE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, 0)
+}
+
+func (s *Update_stmt_limitedContext) Returning_clause() IReturning_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IReturning_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IReturning_clauseContext)
+}
+
+func (s *Update_stmt_limitedContext) Limit_stmt() ILimit_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ILimit_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ILimit_stmtContext)
+}
+
+func (s *Update_stmt_limitedContext) ROLLBACK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROLLBACK_, 0)
+}
+
+func (s *Update_stmt_limitedContext) ABORT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserABORT_, 0)
+}
+
+func (s *Update_stmt_limitedContext) REPLACE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREPLACE_, 0)
+}
+
+func (s *Update_stmt_limitedContext) FAIL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFAIL_, 0)
+}
+
+func (s *Update_stmt_limitedContext) IGNORE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIGNORE_, 0)
+}
+
+func (s *Update_stmt_limitedContext) Order_by_stmt() IOrder_by_stmtContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOrder_by_stmtContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOrder_by_stmtContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterUpdate_stmt_limited(s)
+ }
+}
+
+func (s *Update_stmt_limitedContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitUpdate_stmt_limited(s)
+ }
+}
+
+func (p *SQLiteParser) Update_stmt_limited() (localctx IUpdate_stmt_limitedContext) {
+ localctx = NewUpdate_stmt_limitedContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 112, SQLiteParserRULE_update_stmt_limited)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(1567)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWITH_ {
+ {
+ p.SetState(1566)
+ p.With_clause()
+ }
+
+ }
+ {
+ p.SetState(1569)
+ p.Match(SQLiteParserUPDATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1572)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 229, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1570)
+ p.Match(SQLiteParserOR_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1571)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserABORT_ || ((int64((_la-72)) & ^0x3f) == 0 && ((int64(1)<<(_la-72))&19140298416325121) != 0)) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1574)
+ p.Qualified_table_name()
+ }
+ {
+ p.SetState(1575)
+ p.Match(SQLiteParserSET_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1578)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 230, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1576)
+ p.Column_name()
+ }
+
+ case 2:
+ {
+ p.SetState(1577)
+ p.Column_name_list()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(1580)
+ p.Match(SQLiteParserASSIGN)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1581)
+ p.expr(0)
+ }
+ p.SetState(1592)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1582)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1585)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 231, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1583)
+ p.Column_name()
+ }
+
+ case 2:
+ {
+ p.SetState(1584)
+ p.Column_name_list()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+ {
+ p.SetState(1587)
+ p.Match(SQLiteParserASSIGN)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1588)
+ p.expr(0)
+ }
+
+ p.SetState(1594)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+ p.SetState(1597)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserWHERE_ {
+ {
+ p.SetState(1595)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1596)
+ p.expr(0)
+ }
+
+ }
+ p.SetState(1600)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserRETURNING_ {
+ {
+ p.SetState(1599)
+ p.Returning_clause()
+ }
+
+ }
+ p.SetState(1606)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserLIMIT_ || _la == SQLiteParserORDER_ {
+ p.SetState(1603)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserORDER_ {
+ {
+ p.SetState(1602)
+ p.Order_by_stmt()
+ }
+
+ }
+ {
+ p.SetState(1605)
+ p.Limit_stmt()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IQualified_table_nameContext is an interface to support dynamic dispatch.
+type IQualified_table_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Table_name() ITable_nameContext
+ Schema_name() ISchema_nameContext
+ DOT() antlr.TerminalNode
+ AS_() antlr.TerminalNode
+ Alias() IAliasContext
+ INDEXED_() antlr.TerminalNode
+ BY_() antlr.TerminalNode
+ Index_name() IIndex_nameContext
+ NOT_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_qualified_table_name
+ return p
+}
+
+func InitEmptyQualified_table_nameContext(p *Qualified_table_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_qualified_table_name
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Qualified_table_nameContext) DOT() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDOT, 0)
+}
+
+func (s *Qualified_table_nameContext) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 0)
+}
+
+func (s *Qualified_table_nameContext) Alias() IAliasContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IAliasContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IAliasContext)
+}
+
+func (s *Qualified_table_nameContext) INDEXED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINDEXED_, 0)
+}
+
+func (s *Qualified_table_nameContext) BY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, 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) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterQualified_table_name(s)
+ }
+}
+
+func (s *Qualified_table_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitQualified_table_name(s)
+ }
+}
+
+func (p *SQLiteParser) Qualified_table_name() (localctx IQualified_table_nameContext) {
+ localctx = NewQualified_table_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 114, SQLiteParserRULE_qualified_table_name)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ p.SetState(1611)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 237, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1608)
+ p.Schema_name()
+ }
+ {
+ p.SetState(1609)
+ p.Match(SQLiteParserDOT)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1613)
+ p.Table_name()
+ }
+ p.SetState(1616)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserAS_ {
+ {
+ p.SetState(1614)
+ p.Match(SQLiteParserAS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1615)
+ p.Alias()
+ }
+
+ }
+ p.SetState(1623)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserINDEXED_:
+ {
+ p.SetState(1618)
+ p.Match(SQLiteParserINDEXED_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1619)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1620)
+ p.Index_name()
+ }
+
+ case SQLiteParserNOT_:
+ {
+ p.SetState(1621)
+ p.Match(SQLiteParserNOT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1622)
+ p.Match(SQLiteParserINDEXED_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserEOF, SQLiteParserSCOL, SQLiteParserALTER_, SQLiteParserANALYZE_, SQLiteParserATTACH_, SQLiteParserBEGIN_, SQLiteParserCOMMIT_, SQLiteParserCREATE_, SQLiteParserDELETE_, SQLiteParserDETACH_, SQLiteParserDROP_, SQLiteParserEND_, SQLiteParserEXPLAIN_, SQLiteParserINSERT_, SQLiteParserLIMIT_, SQLiteParserORDER_, SQLiteParserPRAGMA_, SQLiteParserREINDEX_, SQLiteParserRELEASE_, SQLiteParserREPLACE_, SQLiteParserRETURNING_, SQLiteParserROLLBACK_, SQLiteParserSAVEPOINT_, SQLiteParserSELECT_, SQLiteParserSET_, SQLiteParserUPDATE_, SQLiteParserVACUUM_, SQLiteParserVALUES_, SQLiteParserWHERE_, SQLiteParserWITH_:
+
+ default:
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IVacuum_stmtContext is an interface to support dynamic dispatch.
+type IVacuum_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ VACUUM_() antlr.TerminalNode
+ Schema_name() ISchema_nameContext
+ INTO_() antlr.TerminalNode
+ Filename() IFilenameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_vacuum_stmt
+ return p
+}
+
+func InitEmptyVacuum_stmtContext(p *Vacuum_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_vacuum_stmt
+}
+
+func (*Vacuum_stmtContext) IsVacuum_stmtContext() {}
+
+func NewVacuum_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Vacuum_stmtContext {
+ var p = new(Vacuum_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_vacuum_stmt
+
+ return p
+}
+
+func (s *Vacuum_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Vacuum_stmtContext) VACUUM_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVACUUM_, 0)
+}
+
+func (s *Vacuum_stmtContext) Schema_name() ISchema_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISchema_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISchema_nameContext)
+}
+
+func (s *Vacuum_stmtContext) INTO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINTO_, 0)
+}
+
+func (s *Vacuum_stmtContext) Filename() IFilenameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFilenameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFilenameContext)
+}
+
+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.(SQLiteParserListener); ok {
+ listenerT.EnterVacuum_stmt(s)
+ }
+}
+
+func (s *Vacuum_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitVacuum_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Vacuum_stmt() (localctx IVacuum_stmtContext) {
+ localctx = NewVacuum_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 116, SQLiteParserRULE_vacuum_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1625)
+ p.Match(SQLiteParserVACUUM_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1627)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 240, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1626)
+ p.Schema_name()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(1631)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserINTO_ {
+ {
+ p.SetState(1629)
+ p.Match(SQLiteParserINTO_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1630)
+ p.Filename()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFilter_clauseContext is an interface to support dynamic dispatch.
+type IFilter_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ FILTER_() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ WHERE_() antlr.TerminalNode
+ Expr() IExprContext
+ CLOSE_PAR() antlr.TerminalNode
+
+ // IsFilter_clauseContext differentiates from other interfaces.
+ IsFilter_clauseContext()
+}
+
+type Filter_clauseContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyFilter_clauseContext() *Filter_clauseContext {
+ var p = new(Filter_clauseContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_filter_clause
+ return p
+}
+
+func InitEmptyFilter_clauseContext(p *Filter_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_filter_clause
+}
+
+func (*Filter_clauseContext) IsFilter_clauseContext() {}
+
+func NewFilter_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Filter_clauseContext {
+ var p = new(Filter_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_filter_clause
+
+ return p
+}
+
+func (s *Filter_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Filter_clauseContext) FILTER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFILTER_, 0)
+}
+
+func (s *Filter_clauseContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Filter_clauseContext) WHERE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, 0)
+}
+
+func (s *Filter_clauseContext) 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 *Filter_clauseContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Filter_clauseContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Filter_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Filter_clauseContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterFilter_clause(s)
+ }
+}
+
+func (s *Filter_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFilter_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Filter_clause() (localctx IFilter_clauseContext) {
+ localctx = NewFilter_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 118, SQLiteParserRULE_filter_clause)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1633)
+ p.Match(SQLiteParserFILTER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1634)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1635)
+ p.Match(SQLiteParserWHERE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1636)
+ p.expr(0)
+ }
+ {
+ p.SetState(1637)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IWindow_defnContext is an interface to support dynamic dispatch.
+type IWindow_defnContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ OPEN_PAR() antlr.TerminalNode
+ CLOSE_PAR() antlr.TerminalNode
+ ORDER_() antlr.TerminalNode
+ AllBY_() []antlr.TerminalNode
+ BY_(i int) antlr.TerminalNode
+ AllOrdering_term() []IOrdering_termContext
+ Ordering_term(i int) IOrdering_termContext
+ Base_window_name() IBase_window_nameContext
+ PARTITION_() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ Frame_spec() IFrame_specContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsWindow_defnContext differentiates from other interfaces.
+ IsWindow_defnContext()
+}
+
+type Window_defnContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyWindow_defnContext() *Window_defnContext {
+ var p = new(Window_defnContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_window_defn
+ return p
+}
+
+func InitEmptyWindow_defnContext(p *Window_defnContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_window_defn
+}
+
+func (*Window_defnContext) IsWindow_defnContext() {}
+
+func NewWindow_defnContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Window_defnContext {
+ var p = new(Window_defnContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_window_defn
+
+ return p
+}
+
+func (s *Window_defnContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Window_defnContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Window_defnContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Window_defnContext) ORDER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserORDER_, 0)
+}
+
+func (s *Window_defnContext) AllBY_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserBY_)
+}
+
+func (s *Window_defnContext) BY_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, i)
+}
+
+func (s *Window_defnContext) 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 *Window_defnContext) 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 *Window_defnContext) Base_window_name() IBase_window_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IBase_window_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IBase_window_nameContext)
+}
+
+func (s *Window_defnContext) PARTITION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPARTITION_, 0)
+}
+
+func (s *Window_defnContext) 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 *Window_defnContext) 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 *Window_defnContext) Frame_spec() IFrame_specContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFrame_specContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFrame_specContext)
+}
+
+func (s *Window_defnContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Window_defnContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Window_defnContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Window_defnContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Window_defnContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterWindow_defn(s)
+ }
+}
+
+func (s *Window_defnContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitWindow_defn(s)
+ }
+}
+
+func (p *SQLiteParser) Window_defn() (localctx IWindow_defnContext) {
+ localctx = NewWindow_defnContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 120, SQLiteParserRULE_window_defn)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1639)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1641)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 242, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1640)
+ p.Base_window_name()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(1653)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPARTITION_ {
+ {
+ p.SetState(1643)
+ p.Match(SQLiteParserPARTITION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1644)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1645)
+ p.expr(0)
+ }
+ p.SetState(1650)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1646)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1647)
+ p.expr(0)
+ }
+
+ p.SetState(1652)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ }
+
+ {
+ p.SetState(1655)
+ p.Match(SQLiteParserORDER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1656)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1657)
+ p.Ordering_term()
+ }
+ p.SetState(1662)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1658)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1659)
+ p.Ordering_term()
+ }
+
+ p.SetState(1664)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ p.SetState(1666)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if (int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&2251799880794113) != 0 {
+ {
+ p.SetState(1665)
+ p.Frame_spec()
+ }
+
+ }
+ {
+ p.SetState(1668)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IOver_clauseContext is an interface to support dynamic dispatch.
+type IOver_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ OVER_() antlr.TerminalNode
+ Window_name() IWindow_nameContext
+ OPEN_PAR() antlr.TerminalNode
+ CLOSE_PAR() antlr.TerminalNode
+ Base_window_name() IBase_window_nameContext
+ PARTITION_() antlr.TerminalNode
+ AllBY_() []antlr.TerminalNode
+ BY_(i int) antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ ORDER_() antlr.TerminalNode
+ AllOrdering_term() []IOrdering_termContext
+ Ordering_term(i int) IOrdering_termContext
+ Frame_spec() IFrame_specContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsOver_clauseContext differentiates from other interfaces.
+ IsOver_clauseContext()
+}
+
+type Over_clauseContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyOver_clauseContext() *Over_clauseContext {
+ var p = new(Over_clauseContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_over_clause
+ return p
+}
+
+func InitEmptyOver_clauseContext(p *Over_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_over_clause
+}
+
+func (*Over_clauseContext) IsOver_clauseContext() {}
+
+func NewOver_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Over_clauseContext {
+ var p = new(Over_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_over_clause
+
+ return p
+}
+
+func (s *Over_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Over_clauseContext) OVER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOVER_, 0)
+}
+
+func (s *Over_clauseContext) Window_name() IWindow_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IWindow_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IWindow_nameContext)
+}
+
+func (s *Over_clauseContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Over_clauseContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Over_clauseContext) Base_window_name() IBase_window_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IBase_window_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IBase_window_nameContext)
+}
+
+func (s *Over_clauseContext) PARTITION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPARTITION_, 0)
+}
+
+func (s *Over_clauseContext) AllBY_() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserBY_)
+}
+
+func (s *Over_clauseContext) BY_(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, i)
+}
+
+func (s *Over_clauseContext) 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 *Over_clauseContext) 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 *Over_clauseContext) ORDER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserORDER_, 0)
+}
+
+func (s *Over_clauseContext) 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 *Over_clauseContext) 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 *Over_clauseContext) Frame_spec() IFrame_specContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFrame_specContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFrame_specContext)
+}
+
+func (s *Over_clauseContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Over_clauseContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Over_clauseContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Over_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Over_clauseContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterOver_clause(s)
+ }
+}
+
+func (s *Over_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitOver_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Over_clause() (localctx IOver_clauseContext) {
+ localctx = NewOver_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 122, SQLiteParserRULE_over_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1670)
+ p.Match(SQLiteParserOVER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1704)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 253, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1671)
+ p.Window_name()
+ }
+
+ case 2:
+ {
+ p.SetState(1672)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1674)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 247, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1673)
+ p.Base_window_name()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(1686)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPARTITION_ {
+ {
+ p.SetState(1676)
+ p.Match(SQLiteParserPARTITION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1677)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1678)
+ p.expr(0)
+ }
+ p.SetState(1683)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1679)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1680)
+ p.expr(0)
+ }
+
+ p.SetState(1685)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ }
+ p.SetState(1698)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserORDER_ {
+ {
+ p.SetState(1688)
+ p.Match(SQLiteParserORDER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1689)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1690)
+ p.Ordering_term()
+ }
+ p.SetState(1695)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1691)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1692)
+ p.Ordering_term()
+ }
+
+ p.SetState(1697)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ }
+ p.SetState(1701)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if (int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&2251799880794113) != 0 {
+ {
+ p.SetState(1700)
+ p.Frame_spec()
+ }
+
+ }
+ {
+ p.SetState(1703)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFrame_specContext is an interface to support dynamic dispatch.
+type IFrame_specContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Frame_clause() IFrame_clauseContext
+ EXCLUDE_() antlr.TerminalNode
+ NO_() antlr.TerminalNode
+ OTHERS_() antlr.TerminalNode
+ CURRENT_() antlr.TerminalNode
+ ROW_() antlr.TerminalNode
+ GROUP_() antlr.TerminalNode
+ TIES_() antlr.TerminalNode
+
+ // IsFrame_specContext differentiates from other interfaces.
+ IsFrame_specContext()
+}
+
+type Frame_specContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyFrame_specContext() *Frame_specContext {
+ var p = new(Frame_specContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_spec
+ return p
+}
+
+func InitEmptyFrame_specContext(p *Frame_specContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_spec
+}
+
+func (*Frame_specContext) IsFrame_specContext() {}
+
+func NewFrame_specContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Frame_specContext {
+ var p = new(Frame_specContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_frame_spec
+
+ return p
+}
+
+func (s *Frame_specContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Frame_specContext) Frame_clause() IFrame_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFrame_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFrame_clauseContext)
+}
+
+func (s *Frame_specContext) EXCLUDE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXCLUDE_, 0)
+}
+
+func (s *Frame_specContext) NO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNO_, 0)
+}
+
+func (s *Frame_specContext) OTHERS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOTHERS_, 0)
+}
+
+func (s *Frame_specContext) CURRENT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_, 0)
+}
+
+func (s *Frame_specContext) ROW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROW_, 0)
+}
+
+func (s *Frame_specContext) GROUP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGROUP_, 0)
+}
+
+func (s *Frame_specContext) TIES_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTIES_, 0)
+}
+
+func (s *Frame_specContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Frame_specContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Frame_specContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterFrame_spec(s)
+ }
+}
+
+func (s *Frame_specContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFrame_spec(s)
+ }
+}
+
+func (p *SQLiteParser) Frame_spec() (localctx IFrame_specContext) {
+ localctx = NewFrame_specContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 124, SQLiteParserRULE_frame_spec)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1706)
+ p.Frame_clause()
+ }
+ p.SetState(1716)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserEXCLUDE_ {
+ {
+ p.SetState(1707)
+ p.Match(SQLiteParserEXCLUDE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1714)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserNO_:
+ {
+ p.SetState(1708)
+ p.Match(SQLiteParserNO_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1709)
+ p.Match(SQLiteParserOTHERS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserCURRENT_:
+ {
+ p.SetState(1710)
+ p.Match(SQLiteParserCURRENT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1711)
+ p.Match(SQLiteParserROW_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserGROUP_:
+ {
+ p.SetState(1712)
+ p.Match(SQLiteParserGROUP_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserTIES_:
+ {
+ p.SetState(1713)
+ p.Match(SQLiteParserTIES_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFrame_clauseContext is an interface to support dynamic dispatch.
+type IFrame_clauseContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ RANGE_() antlr.TerminalNode
+ ROWS_() antlr.TerminalNode
+ GROUPS_() antlr.TerminalNode
+ Frame_single() IFrame_singleContext
+ BETWEEN_() antlr.TerminalNode
+ Frame_left() IFrame_leftContext
+ AND_() antlr.TerminalNode
+ Frame_right() IFrame_rightContext
+
+ // IsFrame_clauseContext differentiates from other interfaces.
+ IsFrame_clauseContext()
+}
+
+type Frame_clauseContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyFrame_clauseContext() *Frame_clauseContext {
+ var p = new(Frame_clauseContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_clause
+ return p
+}
+
+func InitEmptyFrame_clauseContext(p *Frame_clauseContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_clause
+}
+
+func (*Frame_clauseContext) IsFrame_clauseContext() {}
+
+func NewFrame_clauseContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Frame_clauseContext {
+ var p = new(Frame_clauseContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_frame_clause
+
+ return p
+}
+
+func (s *Frame_clauseContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Frame_clauseContext) RANGE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRANGE_, 0)
+}
+
+func (s *Frame_clauseContext) ROWS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROWS_, 0)
+}
+
+func (s *Frame_clauseContext) GROUPS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGROUPS_, 0)
+}
+
+func (s *Frame_clauseContext) Frame_single() IFrame_singleContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFrame_singleContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFrame_singleContext)
+}
+
+func (s *Frame_clauseContext) BETWEEN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBETWEEN_, 0)
+}
+
+func (s *Frame_clauseContext) Frame_left() IFrame_leftContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFrame_leftContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFrame_leftContext)
+}
+
+func (s *Frame_clauseContext) AND_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAND_, 0)
+}
+
+func (s *Frame_clauseContext) Frame_right() IFrame_rightContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFrame_rightContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFrame_rightContext)
+}
+
+func (s *Frame_clauseContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Frame_clauseContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Frame_clauseContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterFrame_clause(s)
+ }
+}
+
+func (s *Frame_clauseContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFrame_clause(s)
+ }
+}
+
+func (p *SQLiteParser) Frame_clause() (localctx IFrame_clauseContext) {
+ localctx = NewFrame_clauseContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 126, SQLiteParserRULE_frame_clause)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1718)
+ _la = p.GetTokenStream().LA(1)
+
+ if !((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&2251799880794113) != 0) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ p.SetState(1725)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 256, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1719)
+ p.Frame_single()
+ }
+
+ case 2:
+ {
+ p.SetState(1720)
+ p.Match(SQLiteParserBETWEEN_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1721)
+ p.Frame_left()
+ }
+ {
+ p.SetState(1722)
+ p.Match(SQLiteParserAND_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1723)
+ p.Frame_right()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISimple_function_invocationContext is an interface to support dynamic dispatch.
+type ISimple_function_invocationContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Simple_func() ISimple_funcContext
+ OPEN_PAR() antlr.TerminalNode
+ CLOSE_PAR() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ STAR() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsSimple_function_invocationContext differentiates from other interfaces.
+ IsSimple_function_invocationContext()
+}
+
+type Simple_function_invocationContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptySimple_function_invocationContext() *Simple_function_invocationContext {
+ var p = new(Simple_function_invocationContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_simple_function_invocation
+ return p
+}
+
+func InitEmptySimple_function_invocationContext(p *Simple_function_invocationContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_simple_function_invocation
+}
+
+func (*Simple_function_invocationContext) IsSimple_function_invocationContext() {}
+
+func NewSimple_function_invocationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Simple_function_invocationContext {
+ var p = new(Simple_function_invocationContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_simple_function_invocation
+
+ return p
+}
+
+func (s *Simple_function_invocationContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Simple_function_invocationContext) Simple_func() ISimple_funcContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(ISimple_funcContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(ISimple_funcContext)
+}
+
+func (s *Simple_function_invocationContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Simple_function_invocationContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Simple_function_invocationContext) 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_function_invocationContext) 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_function_invocationContext) STAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTAR, 0)
+}
+
+func (s *Simple_function_invocationContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Simple_function_invocationContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Simple_function_invocationContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Simple_function_invocationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Simple_function_invocationContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterSimple_function_invocation(s)
+ }
+}
+
+func (s *Simple_function_invocationContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSimple_function_invocation(s)
+ }
+}
+
+func (p *SQLiteParser) Simple_function_invocation() (localctx ISimple_function_invocationContext) {
+ localctx = NewSimple_function_invocationContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 128, SQLiteParserRULE_simple_function_invocation)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1727)
+ p.Simple_func()
+ }
+ {
+ p.SetState(1728)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1738)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserOPEN_PAR, SQLiteParserPLUS, SQLiteParserMINUS, SQLiteParserTILDE, SQLiteParserABORT_, SQLiteParserACTION_, SQLiteParserADD_, SQLiteParserAFTER_, SQLiteParserALL_, SQLiteParserALTER_, SQLiteParserANALYZE_, SQLiteParserAND_, SQLiteParserAS_, SQLiteParserASC_, SQLiteParserATTACH_, SQLiteParserAUTOINCREMENT_, SQLiteParserBEFORE_, SQLiteParserBEGIN_, SQLiteParserBETWEEN_, SQLiteParserBY_, SQLiteParserCASCADE_, SQLiteParserCASE_, SQLiteParserCAST_, SQLiteParserCHECK_, SQLiteParserCOLLATE_, SQLiteParserCOLUMN_, SQLiteParserCOMMIT_, SQLiteParserCONFLICT_, SQLiteParserCONSTRAINT_, SQLiteParserCREATE_, SQLiteParserCROSS_, SQLiteParserCURRENT_DATE_, SQLiteParserCURRENT_TIME_, SQLiteParserCURRENT_TIMESTAMP_, SQLiteParserDATABASE_, SQLiteParserDEFAULT_, SQLiteParserDEFERRABLE_, SQLiteParserDEFERRED_, SQLiteParserDELETE_, SQLiteParserDESC_, SQLiteParserDETACH_, SQLiteParserDISTINCT_, SQLiteParserDROP_, SQLiteParserEACH_, SQLiteParserELSE_, SQLiteParserEND_, SQLiteParserESCAPE_, SQLiteParserEXCEPT_, SQLiteParserEXCLUSIVE_, SQLiteParserEXISTS_, SQLiteParserEXPLAIN_, SQLiteParserFAIL_, SQLiteParserFOR_, SQLiteParserFOREIGN_, SQLiteParserFROM_, SQLiteParserFULL_, SQLiteParserGLOB_, SQLiteParserGROUP_, SQLiteParserHAVING_, SQLiteParserIF_, SQLiteParserIGNORE_, SQLiteParserIMMEDIATE_, SQLiteParserIN_, SQLiteParserINDEX_, SQLiteParserINDEXED_, SQLiteParserINITIALLY_, SQLiteParserINNER_, SQLiteParserINSERT_, SQLiteParserINSTEAD_, SQLiteParserINTERSECT_, SQLiteParserINTO_, SQLiteParserIS_, SQLiteParserISNULL_, SQLiteParserJOIN_, SQLiteParserKEY_, SQLiteParserLEFT_, SQLiteParserLIKE_, SQLiteParserLIMIT_, SQLiteParserMATCH_, SQLiteParserNATURAL_, SQLiteParserNO_, SQLiteParserNOT_, SQLiteParserNOTNULL_, SQLiteParserNULL_, SQLiteParserOF_, SQLiteParserOFFSET_, SQLiteParserON_, SQLiteParserOR_, SQLiteParserORDER_, SQLiteParserOUTER_, SQLiteParserPLAN_, SQLiteParserPRAGMA_, SQLiteParserPRIMARY_, SQLiteParserQUERY_, SQLiteParserRAISE_, SQLiteParserRECURSIVE_, SQLiteParserREFERENCES_, SQLiteParserREGEXP_, SQLiteParserREINDEX_, SQLiteParserRELEASE_, SQLiteParserRENAME_, SQLiteParserREPLACE_, SQLiteParserRESTRICT_, SQLiteParserRIGHT_, SQLiteParserROLLBACK_, SQLiteParserROW_, SQLiteParserROWS_, SQLiteParserSAVEPOINT_, SQLiteParserSELECT_, SQLiteParserSET_, SQLiteParserTABLE_, SQLiteParserTEMP_, SQLiteParserTEMPORARY_, SQLiteParserTHEN_, SQLiteParserTO_, SQLiteParserTRANSACTION_, SQLiteParserTRIGGER_, SQLiteParserUNION_, SQLiteParserUNIQUE_, SQLiteParserUPDATE_, SQLiteParserUSING_, SQLiteParserVACUUM_, SQLiteParserVALUES_, SQLiteParserVIEW_, SQLiteParserVIRTUAL_, SQLiteParserWHEN_, SQLiteParserWHERE_, SQLiteParserWITH_, SQLiteParserWITHOUT_, SQLiteParserFIRST_VALUE_, SQLiteParserOVER_, SQLiteParserPARTITION_, SQLiteParserRANGE_, SQLiteParserPRECEDING_, SQLiteParserUNBOUNDED_, SQLiteParserCURRENT_, SQLiteParserFOLLOWING_, SQLiteParserCUME_DIST_, SQLiteParserDENSE_RANK_, SQLiteParserLAG_, SQLiteParserLAST_VALUE_, SQLiteParserLEAD_, SQLiteParserNTH_VALUE_, SQLiteParserNTILE_, SQLiteParserPERCENT_RANK_, SQLiteParserRANK_, SQLiteParserROW_NUMBER_, SQLiteParserGENERATED_, SQLiteParserALWAYS_, SQLiteParserSTORED_, SQLiteParserTRUE_, SQLiteParserFALSE_, SQLiteParserWINDOW_, SQLiteParserNULLS_, SQLiteParserFIRST_, SQLiteParserLAST_, SQLiteParserFILTER_, SQLiteParserGROUPS_, SQLiteParserEXCLUDE_, SQLiteParserIDENTIFIER, SQLiteParserNUMERIC_LITERAL, SQLiteParserBIND_PARAMETER, SQLiteParserSTRING_LITERAL, SQLiteParserBLOB_LITERAL:
+ {
+ p.SetState(1729)
+ p.expr(0)
+ }
+ p.SetState(1734)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1730)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1731)
+ p.expr(0)
+ }
+
+ p.SetState(1736)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ case SQLiteParserSTAR:
+ {
+ p.SetState(1737)
+ p.Match(SQLiteParserSTAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+ {
+ p.SetState(1740)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IAggregate_function_invocationContext is an interface to support dynamic dispatch.
+type IAggregate_function_invocationContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Aggregate_func() IAggregate_funcContext
+ OPEN_PAR() antlr.TerminalNode
+ CLOSE_PAR() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ STAR() antlr.TerminalNode
+ Filter_clause() IFilter_clauseContext
+ DISTINCT_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsAggregate_function_invocationContext differentiates from other interfaces.
+ IsAggregate_function_invocationContext()
+}
+
+type Aggregate_function_invocationContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyAggregate_function_invocationContext() *Aggregate_function_invocationContext {
+ var p = new(Aggregate_function_invocationContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_aggregate_function_invocation
+ return p
+}
+
+func InitEmptyAggregate_function_invocationContext(p *Aggregate_function_invocationContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_aggregate_function_invocation
+}
+
+func (*Aggregate_function_invocationContext) IsAggregate_function_invocationContext() {}
+
+func NewAggregate_function_invocationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Aggregate_function_invocationContext {
+ var p = new(Aggregate_function_invocationContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_aggregate_function_invocation
+
+ return p
+}
+
+func (s *Aggregate_function_invocationContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Aggregate_function_invocationContext) Aggregate_func() IAggregate_funcContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IAggregate_funcContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IAggregate_funcContext)
+}
+
+func (s *Aggregate_function_invocationContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Aggregate_function_invocationContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Aggregate_function_invocationContext) 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 *Aggregate_function_invocationContext) 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 *Aggregate_function_invocationContext) STAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTAR, 0)
+}
+
+func (s *Aggregate_function_invocationContext) Filter_clause() IFilter_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFilter_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFilter_clauseContext)
+}
+
+func (s *Aggregate_function_invocationContext) DISTINCT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDISTINCT_, 0)
+}
+
+func (s *Aggregate_function_invocationContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Aggregate_function_invocationContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Aggregate_function_invocationContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Aggregate_function_invocationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Aggregate_function_invocationContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterAggregate_function_invocation(s)
+ }
+}
+
+func (s *Aggregate_function_invocationContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitAggregate_function_invocation(s)
+ }
+}
+
+func (p *SQLiteParser) Aggregate_function_invocation() (localctx IAggregate_function_invocationContext) {
+ localctx = NewAggregate_function_invocationContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 130, SQLiteParserRULE_aggregate_function_invocation)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1742)
+ p.Aggregate_func()
+ }
+ {
+ p.SetState(1743)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1756)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserOPEN_PAR, SQLiteParserPLUS, SQLiteParserMINUS, SQLiteParserTILDE, SQLiteParserABORT_, SQLiteParserACTION_, SQLiteParserADD_, SQLiteParserAFTER_, SQLiteParserALL_, SQLiteParserALTER_, SQLiteParserANALYZE_, SQLiteParserAND_, SQLiteParserAS_, SQLiteParserASC_, SQLiteParserATTACH_, SQLiteParserAUTOINCREMENT_, SQLiteParserBEFORE_, SQLiteParserBEGIN_, SQLiteParserBETWEEN_, SQLiteParserBY_, SQLiteParserCASCADE_, SQLiteParserCASE_, SQLiteParserCAST_, SQLiteParserCHECK_, SQLiteParserCOLLATE_, SQLiteParserCOLUMN_, SQLiteParserCOMMIT_, SQLiteParserCONFLICT_, SQLiteParserCONSTRAINT_, SQLiteParserCREATE_, SQLiteParserCROSS_, SQLiteParserCURRENT_DATE_, SQLiteParserCURRENT_TIME_, SQLiteParserCURRENT_TIMESTAMP_, SQLiteParserDATABASE_, SQLiteParserDEFAULT_, SQLiteParserDEFERRABLE_, SQLiteParserDEFERRED_, SQLiteParserDELETE_, SQLiteParserDESC_, SQLiteParserDETACH_, SQLiteParserDISTINCT_, SQLiteParserDROP_, SQLiteParserEACH_, SQLiteParserELSE_, SQLiteParserEND_, SQLiteParserESCAPE_, SQLiteParserEXCEPT_, SQLiteParserEXCLUSIVE_, SQLiteParserEXISTS_, SQLiteParserEXPLAIN_, SQLiteParserFAIL_, SQLiteParserFOR_, SQLiteParserFOREIGN_, SQLiteParserFROM_, SQLiteParserFULL_, SQLiteParserGLOB_, SQLiteParserGROUP_, SQLiteParserHAVING_, SQLiteParserIF_, SQLiteParserIGNORE_, SQLiteParserIMMEDIATE_, SQLiteParserIN_, SQLiteParserINDEX_, SQLiteParserINDEXED_, SQLiteParserINITIALLY_, SQLiteParserINNER_, SQLiteParserINSERT_, SQLiteParserINSTEAD_, SQLiteParserINTERSECT_, SQLiteParserINTO_, SQLiteParserIS_, SQLiteParserISNULL_, SQLiteParserJOIN_, SQLiteParserKEY_, SQLiteParserLEFT_, SQLiteParserLIKE_, SQLiteParserLIMIT_, SQLiteParserMATCH_, SQLiteParserNATURAL_, SQLiteParserNO_, SQLiteParserNOT_, SQLiteParserNOTNULL_, SQLiteParserNULL_, SQLiteParserOF_, SQLiteParserOFFSET_, SQLiteParserON_, SQLiteParserOR_, SQLiteParserORDER_, SQLiteParserOUTER_, SQLiteParserPLAN_, SQLiteParserPRAGMA_, SQLiteParserPRIMARY_, SQLiteParserQUERY_, SQLiteParserRAISE_, SQLiteParserRECURSIVE_, SQLiteParserREFERENCES_, SQLiteParserREGEXP_, SQLiteParserREINDEX_, SQLiteParserRELEASE_, SQLiteParserRENAME_, SQLiteParserREPLACE_, SQLiteParserRESTRICT_, SQLiteParserRIGHT_, SQLiteParserROLLBACK_, SQLiteParserROW_, SQLiteParserROWS_, SQLiteParserSAVEPOINT_, SQLiteParserSELECT_, SQLiteParserSET_, SQLiteParserTABLE_, SQLiteParserTEMP_, SQLiteParserTEMPORARY_, SQLiteParserTHEN_, SQLiteParserTO_, SQLiteParserTRANSACTION_, SQLiteParserTRIGGER_, SQLiteParserUNION_, SQLiteParserUNIQUE_, SQLiteParserUPDATE_, SQLiteParserUSING_, SQLiteParserVACUUM_, SQLiteParserVALUES_, SQLiteParserVIEW_, SQLiteParserVIRTUAL_, SQLiteParserWHEN_, SQLiteParserWHERE_, SQLiteParserWITH_, SQLiteParserWITHOUT_, SQLiteParserFIRST_VALUE_, SQLiteParserOVER_, SQLiteParserPARTITION_, SQLiteParserRANGE_, SQLiteParserPRECEDING_, SQLiteParserUNBOUNDED_, SQLiteParserCURRENT_, SQLiteParserFOLLOWING_, SQLiteParserCUME_DIST_, SQLiteParserDENSE_RANK_, SQLiteParserLAG_, SQLiteParserLAST_VALUE_, SQLiteParserLEAD_, SQLiteParserNTH_VALUE_, SQLiteParserNTILE_, SQLiteParserPERCENT_RANK_, SQLiteParserRANK_, SQLiteParserROW_NUMBER_, SQLiteParserGENERATED_, SQLiteParserALWAYS_, SQLiteParserSTORED_, SQLiteParserTRUE_, SQLiteParserFALSE_, SQLiteParserWINDOW_, SQLiteParserNULLS_, SQLiteParserFIRST_, SQLiteParserLAST_, SQLiteParserFILTER_, SQLiteParserGROUPS_, SQLiteParserEXCLUDE_, SQLiteParserIDENTIFIER, SQLiteParserNUMERIC_LITERAL, SQLiteParserBIND_PARAMETER, SQLiteParserSTRING_LITERAL, SQLiteParserBLOB_LITERAL:
+ p.SetState(1745)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 259, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1744)
+ p.Match(SQLiteParserDISTINCT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1747)
+ p.expr(0)
+ }
+ p.SetState(1752)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1748)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1749)
+ p.expr(0)
+ }
+
+ p.SetState(1754)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ case SQLiteParserSTAR:
+ {
+ p.SetState(1755)
+ p.Match(SQLiteParserSTAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserCLOSE_PAR:
+
+ default:
+ }
+ {
+ p.SetState(1758)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1760)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserFILTER_ {
+ {
+ p.SetState(1759)
+ p.Filter_clause()
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IWindow_function_invocationContext is an interface to support dynamic dispatch.
+type IWindow_function_invocationContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Window_function() IWindow_functionContext
+ OPEN_PAR() antlr.TerminalNode
+ CLOSE_PAR() antlr.TerminalNode
+ OVER_() antlr.TerminalNode
+ Window_defn() IWindow_defnContext
+ Window_name() IWindow_nameContext
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ STAR() antlr.TerminalNode
+ Filter_clause() IFilter_clauseContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsWindow_function_invocationContext differentiates from other interfaces.
+ IsWindow_function_invocationContext()
+}
+
+type Window_function_invocationContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyWindow_function_invocationContext() *Window_function_invocationContext {
+ var p = new(Window_function_invocationContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_window_function_invocation
+ return p
+}
+
+func InitEmptyWindow_function_invocationContext(p *Window_function_invocationContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_window_function_invocation
+}
+
+func (*Window_function_invocationContext) IsWindow_function_invocationContext() {}
+
+func NewWindow_function_invocationContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Window_function_invocationContext {
+ var p = new(Window_function_invocationContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_window_function_invocation
+
+ return p
+}
+
+func (s *Window_function_invocationContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Window_function_invocationContext) Window_function() IWindow_functionContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IWindow_functionContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IWindow_functionContext)
+}
+
+func (s *Window_function_invocationContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, 0)
+}
+
+func (s *Window_function_invocationContext) CLOSE_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, 0)
+}
+
+func (s *Window_function_invocationContext) OVER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOVER_, 0)
+}
+
+func (s *Window_function_invocationContext) Window_defn() IWindow_defnContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IWindow_defnContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IWindow_defnContext)
+}
+
+func (s *Window_function_invocationContext) Window_name() IWindow_nameContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IWindow_nameContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IWindow_nameContext)
+}
+
+func (s *Window_function_invocationContext) 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 *Window_function_invocationContext) 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 *Window_function_invocationContext) STAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTAR, 0)
+}
+
+func (s *Window_function_invocationContext) Filter_clause() IFilter_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFilter_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFilter_clauseContext)
+}
+
+func (s *Window_function_invocationContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Window_function_invocationContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Window_function_invocationContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Window_function_invocationContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Window_function_invocationContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterWindow_function_invocation(s)
+ }
+}
+
+func (s *Window_function_invocationContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitWindow_function_invocation(s)
+ }
+}
+
+func (p *SQLiteParser) Window_function_invocation() (localctx IWindow_function_invocationContext) {
+ localctx = NewWindow_function_invocationContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 132, SQLiteParserRULE_window_function_invocation)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1762)
+ p.Window_function()
+ }
+ {
+ p.SetState(1763)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1773)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserOPEN_PAR, SQLiteParserPLUS, SQLiteParserMINUS, SQLiteParserTILDE, SQLiteParserABORT_, SQLiteParserACTION_, SQLiteParserADD_, SQLiteParserAFTER_, SQLiteParserALL_, SQLiteParserALTER_, SQLiteParserANALYZE_, SQLiteParserAND_, SQLiteParserAS_, SQLiteParserASC_, SQLiteParserATTACH_, SQLiteParserAUTOINCREMENT_, SQLiteParserBEFORE_, SQLiteParserBEGIN_, SQLiteParserBETWEEN_, SQLiteParserBY_, SQLiteParserCASCADE_, SQLiteParserCASE_, SQLiteParserCAST_, SQLiteParserCHECK_, SQLiteParserCOLLATE_, SQLiteParserCOLUMN_, SQLiteParserCOMMIT_, SQLiteParserCONFLICT_, SQLiteParserCONSTRAINT_, SQLiteParserCREATE_, SQLiteParserCROSS_, SQLiteParserCURRENT_DATE_, SQLiteParserCURRENT_TIME_, SQLiteParserCURRENT_TIMESTAMP_, SQLiteParserDATABASE_, SQLiteParserDEFAULT_, SQLiteParserDEFERRABLE_, SQLiteParserDEFERRED_, SQLiteParserDELETE_, SQLiteParserDESC_, SQLiteParserDETACH_, SQLiteParserDISTINCT_, SQLiteParserDROP_, SQLiteParserEACH_, SQLiteParserELSE_, SQLiteParserEND_, SQLiteParserESCAPE_, SQLiteParserEXCEPT_, SQLiteParserEXCLUSIVE_, SQLiteParserEXISTS_, SQLiteParserEXPLAIN_, SQLiteParserFAIL_, SQLiteParserFOR_, SQLiteParserFOREIGN_, SQLiteParserFROM_, SQLiteParserFULL_, SQLiteParserGLOB_, SQLiteParserGROUP_, SQLiteParserHAVING_, SQLiteParserIF_, SQLiteParserIGNORE_, SQLiteParserIMMEDIATE_, SQLiteParserIN_, SQLiteParserINDEX_, SQLiteParserINDEXED_, SQLiteParserINITIALLY_, SQLiteParserINNER_, SQLiteParserINSERT_, SQLiteParserINSTEAD_, SQLiteParserINTERSECT_, SQLiteParserINTO_, SQLiteParserIS_, SQLiteParserISNULL_, SQLiteParserJOIN_, SQLiteParserKEY_, SQLiteParserLEFT_, SQLiteParserLIKE_, SQLiteParserLIMIT_, SQLiteParserMATCH_, SQLiteParserNATURAL_, SQLiteParserNO_, SQLiteParserNOT_, SQLiteParserNOTNULL_, SQLiteParserNULL_, SQLiteParserOF_, SQLiteParserOFFSET_, SQLiteParserON_, SQLiteParserOR_, SQLiteParserORDER_, SQLiteParserOUTER_, SQLiteParserPLAN_, SQLiteParserPRAGMA_, SQLiteParserPRIMARY_, SQLiteParserQUERY_, SQLiteParserRAISE_, SQLiteParserRECURSIVE_, SQLiteParserREFERENCES_, SQLiteParserREGEXP_, SQLiteParserREINDEX_, SQLiteParserRELEASE_, SQLiteParserRENAME_, SQLiteParserREPLACE_, SQLiteParserRESTRICT_, SQLiteParserRIGHT_, SQLiteParserROLLBACK_, SQLiteParserROW_, SQLiteParserROWS_, SQLiteParserSAVEPOINT_, SQLiteParserSELECT_, SQLiteParserSET_, SQLiteParserTABLE_, SQLiteParserTEMP_, SQLiteParserTEMPORARY_, SQLiteParserTHEN_, SQLiteParserTO_, SQLiteParserTRANSACTION_, SQLiteParserTRIGGER_, SQLiteParserUNION_, SQLiteParserUNIQUE_, SQLiteParserUPDATE_, SQLiteParserUSING_, SQLiteParserVACUUM_, SQLiteParserVALUES_, SQLiteParserVIEW_, SQLiteParserVIRTUAL_, SQLiteParserWHEN_, SQLiteParserWHERE_, SQLiteParserWITH_, SQLiteParserWITHOUT_, SQLiteParserFIRST_VALUE_, SQLiteParserOVER_, SQLiteParserPARTITION_, SQLiteParserRANGE_, SQLiteParserPRECEDING_, SQLiteParserUNBOUNDED_, SQLiteParserCURRENT_, SQLiteParserFOLLOWING_, SQLiteParserCUME_DIST_, SQLiteParserDENSE_RANK_, SQLiteParserLAG_, SQLiteParserLAST_VALUE_, SQLiteParserLEAD_, SQLiteParserNTH_VALUE_, SQLiteParserNTILE_, SQLiteParserPERCENT_RANK_, SQLiteParserRANK_, SQLiteParserROW_NUMBER_, SQLiteParserGENERATED_, SQLiteParserALWAYS_, SQLiteParserSTORED_, SQLiteParserTRUE_, SQLiteParserFALSE_, SQLiteParserWINDOW_, SQLiteParserNULLS_, SQLiteParserFIRST_, SQLiteParserLAST_, SQLiteParserFILTER_, SQLiteParserGROUPS_, SQLiteParserEXCLUDE_, SQLiteParserIDENTIFIER, SQLiteParserNUMERIC_LITERAL, SQLiteParserBIND_PARAMETER, SQLiteParserSTRING_LITERAL, SQLiteParserBLOB_LITERAL:
+ {
+ p.SetState(1764)
+ p.expr(0)
+ }
+ p.SetState(1769)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1765)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1766)
+ p.expr(0)
+ }
+
+ p.SetState(1771)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+ case SQLiteParserSTAR:
+ {
+ p.SetState(1772)
+ p.Match(SQLiteParserSTAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserCLOSE_PAR:
+
+ default:
+ }
+ {
+ p.SetState(1775)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1777)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserFILTER_ {
+ {
+ p.SetState(1776)
+ p.Filter_clause()
+ }
+
+ }
+ {
+ p.SetState(1779)
+ p.Match(SQLiteParserOVER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1782)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 266, p.GetParserRuleContext()) {
+ case 1:
+ {
+ p.SetState(1780)
+ p.Window_defn()
+ }
+
+ case 2:
+ {
+ p.SetState(1781)
+ p.Window_name()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICommon_table_stmtContext is an interface to support dynamic dispatch.
+type ICommon_table_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ WITH_() antlr.TerminalNode
+ AllCommon_table_expression() []ICommon_table_expressionContext
+ Common_table_expression(i int) ICommon_table_expressionContext
+ RECURSIVE_() antlr.TerminalNode
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsCommon_table_stmtContext differentiates from other interfaces.
+ IsCommon_table_stmtContext()
+}
+
+type Common_table_stmtContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyCommon_table_stmtContext() *Common_table_stmtContext {
+ var p = new(Common_table_stmtContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_common_table_stmt
+ return p
+}
+
+func InitEmptyCommon_table_stmtContext(p *Common_table_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_common_table_stmt
+}
+
+func (*Common_table_stmtContext) IsCommon_table_stmtContext() {}
+
+func NewCommon_table_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Common_table_stmtContext {
+ var p = new(Common_table_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_common_table_stmt
+
+ return p
+}
+
+func (s *Common_table_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Common_table_stmtContext) WITH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWITH_, 0)
+}
+
+func (s *Common_table_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 *Common_table_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 *Common_table_stmtContext) RECURSIVE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRECURSIVE_, 0)
+}
+
+func (s *Common_table_stmtContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Common_table_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Common_table_stmtContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Common_table_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Common_table_stmtContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterCommon_table_stmt(s)
+ }
+}
+
+func (s *Common_table_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCommon_table_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Common_table_stmt() (localctx ICommon_table_stmtContext) {
+ localctx = NewCommon_table_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 134, SQLiteParserRULE_common_table_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1784)
+ p.Match(SQLiteParserWITH_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1786)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 267, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1785)
+ p.Match(SQLiteParserRECURSIVE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ {
+ p.SetState(1788)
+ p.Common_table_expression()
+ }
+ p.SetState(1793)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1789)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1790)
+ p.Common_table_expression()
+ }
+
+ p.SetState(1795)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IOrder_by_stmtContext is an interface to support dynamic dispatch.
+type IOrder_by_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ORDER_() antlr.TerminalNode
+ BY_() antlr.TerminalNode
+ AllOrdering_term() []IOrdering_termContext
+ Ordering_term(i int) IOrdering_termContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsOrder_by_stmtContext differentiates from other interfaces.
+ IsOrder_by_stmtContext()
+}
+
+type Order_by_stmtContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyOrder_by_stmtContext() *Order_by_stmtContext {
+ var p = new(Order_by_stmtContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_order_by_stmt
+ return p
+}
+
+func InitEmptyOrder_by_stmtContext(p *Order_by_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_order_by_stmt
+}
+
+func (*Order_by_stmtContext) IsOrder_by_stmtContext() {}
+
+func NewOrder_by_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Order_by_stmtContext {
+ var p = new(Order_by_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_order_by_stmt
+
+ return p
+}
+
+func (s *Order_by_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Order_by_stmtContext) ORDER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserORDER_, 0)
+}
+
+func (s *Order_by_stmtContext) BY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, 0)
+}
+
+func (s *Order_by_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 *Order_by_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 *Order_by_stmtContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Order_by_stmtContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Order_by_stmtContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Order_by_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Order_by_stmtContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterOrder_by_stmt(s)
+ }
+}
+
+func (s *Order_by_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitOrder_by_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Order_by_stmt() (localctx IOrder_by_stmtContext) {
+ localctx = NewOrder_by_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 136, SQLiteParserRULE_order_by_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1796)
+ p.Match(SQLiteParserORDER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1797)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1798)
+ p.Ordering_term()
+ }
+ p.SetState(1803)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1799)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1800)
+ p.Ordering_term()
+ }
+
+ p.SetState(1805)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ILimit_stmtContext is an interface to support dynamic dispatch.
+type ILimit_stmtContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ LIMIT_() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ OFFSET_() antlr.TerminalNode
+ COMMA() antlr.TerminalNode
+
+ // IsLimit_stmtContext differentiates from other interfaces.
+ IsLimit_stmtContext()
+}
+
+type Limit_stmtContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyLimit_stmtContext() *Limit_stmtContext {
+ var p = new(Limit_stmtContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_limit_stmt
+ return p
+}
+
+func InitEmptyLimit_stmtContext(p *Limit_stmtContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_limit_stmt
+}
+
+func (*Limit_stmtContext) IsLimit_stmtContext() {}
+
+func NewLimit_stmtContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Limit_stmtContext {
+ var p = new(Limit_stmtContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_limit_stmt
+
+ return p
+}
+
+func (s *Limit_stmtContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Limit_stmtContext) LIMIT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLIMIT_, 0)
+}
+
+func (s *Limit_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 *Limit_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 *Limit_stmtContext) OFFSET_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOFFSET_, 0)
+}
+
+func (s *Limit_stmtContext) COMMA() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 0)
+}
+
+func (s *Limit_stmtContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Limit_stmtContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Limit_stmtContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterLimit_stmt(s)
+ }
+}
+
+func (s *Limit_stmtContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitLimit_stmt(s)
+ }
+}
+
+func (p *SQLiteParser) Limit_stmt() (localctx ILimit_stmtContext) {
+ localctx = NewLimit_stmtContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 138, SQLiteParserRULE_limit_stmt)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1806)
+ p.Match(SQLiteParserLIMIT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1807)
+ p.expr(0)
+ }
+ p.SetState(1810)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserCOMMA || _la == SQLiteParserOFFSET_ {
+ {
+ p.SetState(1808)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserCOMMA || _la == SQLiteParserOFFSET_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(1809)
+ p.expr(0)
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IOrdering_termContext is an interface to support dynamic dispatch.
+type IOrdering_termContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Expr() IExprContext
+ COLLATE_() antlr.TerminalNode
+ Collation_name() ICollation_nameContext
+ Asc_desc() IAsc_descContext
+ NULLS_() antlr.TerminalNode
+ FIRST_() antlr.TerminalNode
+ LAST_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_ordering_term
+ return p
+}
+
+func InitEmptyOrdering_termContext(p *Ordering_termContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_ordering_term
+}
+
+func (*Ordering_termContext) IsOrdering_termContext() {}
+
+func NewOrdering_termContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Ordering_termContext {
+ var p = new(Ordering_termContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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) COLLATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOLLATE_, 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) Asc_desc() IAsc_descContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IAsc_descContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IAsc_descContext)
+}
+
+func (s *Ordering_termContext) NULLS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNULLS_, 0)
+}
+
+func (s *Ordering_termContext) FIRST_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFIRST_, 0)
+}
+
+func (s *Ordering_termContext) LAST_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLAST_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterOrdering_term(s)
+ }
+}
+
+func (s *Ordering_termContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitOrdering_term(s)
+ }
+}
+
+func (p *SQLiteParser) Ordering_term() (localctx IOrdering_termContext) {
+ localctx = NewOrdering_termContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 140, SQLiteParserRULE_ordering_term)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1812)
+ p.expr(0)
+ }
+ p.SetState(1815)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserCOLLATE_ {
+ {
+ p.SetState(1813)
+ p.Match(SQLiteParserCOLLATE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1814)
+ p.Collation_name()
+ }
+
+ }
+ p.SetState(1818)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserASC_ || _la == SQLiteParserDESC_ {
+ {
+ p.SetState(1817)
+ p.Asc_desc()
+ }
+
+ }
+ p.SetState(1822)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserNULLS_ {
+ {
+ p.SetState(1820)
+ p.Match(SQLiteParserNULLS_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1821)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserFIRST_ || _la == SQLiteParserLAST_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IAsc_descContext is an interface to support dynamic dispatch.
+type IAsc_descContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ASC_() antlr.TerminalNode
+ DESC_() antlr.TerminalNode
+
+ // IsAsc_descContext differentiates from other interfaces.
+ IsAsc_descContext()
+}
+
+type Asc_descContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyAsc_descContext() *Asc_descContext {
+ var p = new(Asc_descContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_asc_desc
+ return p
+}
+
+func InitEmptyAsc_descContext(p *Asc_descContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_asc_desc
+}
+
+func (*Asc_descContext) IsAsc_descContext() {}
+
+func NewAsc_descContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Asc_descContext {
+ var p = new(Asc_descContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_asc_desc
+
+ return p
+}
+
+func (s *Asc_descContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Asc_descContext) ASC_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserASC_, 0)
+}
+
+func (s *Asc_descContext) DESC_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDESC_, 0)
+}
+
+func (s *Asc_descContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Asc_descContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Asc_descContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterAsc_desc(s)
+ }
+}
+
+func (s *Asc_descContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitAsc_desc(s)
+ }
+}
+
+func (p *SQLiteParser) Asc_desc() (localctx IAsc_descContext) {
+ localctx = NewAsc_descContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 142, SQLiteParserRULE_asc_desc)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1824)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserASC_ || _la == SQLiteParserDESC_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFrame_leftContext is an interface to support dynamic dispatch.
+type IFrame_leftContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Expr() IExprContext
+ PRECEDING_() antlr.TerminalNode
+ FOLLOWING_() antlr.TerminalNode
+ CURRENT_() antlr.TerminalNode
+ ROW_() antlr.TerminalNode
+ UNBOUNDED_() antlr.TerminalNode
+
+ // IsFrame_leftContext differentiates from other interfaces.
+ IsFrame_leftContext()
+}
+
+type Frame_leftContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyFrame_leftContext() *Frame_leftContext {
+ var p = new(Frame_leftContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_left
+ return p
+}
+
+func InitEmptyFrame_leftContext(p *Frame_leftContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_left
+}
+
+func (*Frame_leftContext) IsFrame_leftContext() {}
+
+func NewFrame_leftContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Frame_leftContext {
+ var p = new(Frame_leftContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_frame_left
+
+ return p
+}
+
+func (s *Frame_leftContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Frame_leftContext) 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 *Frame_leftContext) PRECEDING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRECEDING_, 0)
+}
+
+func (s *Frame_leftContext) FOLLOWING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFOLLOWING_, 0)
+}
+
+func (s *Frame_leftContext) CURRENT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_, 0)
+}
+
+func (s *Frame_leftContext) ROW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROW_, 0)
+}
+
+func (s *Frame_leftContext) UNBOUNDED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNBOUNDED_, 0)
+}
+
+func (s *Frame_leftContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Frame_leftContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Frame_leftContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterFrame_left(s)
+ }
+}
+
+func (s *Frame_leftContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFrame_left(s)
+ }
+}
+
+func (p *SQLiteParser) Frame_left() (localctx IFrame_leftContext) {
+ localctx = NewFrame_leftContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 144, SQLiteParserRULE_frame_left)
+ p.SetState(1836)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 274, p.GetParserRuleContext()) {
+ case 1:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1826)
+ p.expr(0)
+ }
+ {
+ p.SetState(1827)
+ p.Match(SQLiteParserPRECEDING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 2:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1829)
+ p.expr(0)
+ }
+ {
+ p.SetState(1830)
+ p.Match(SQLiteParserFOLLOWING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 3:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(1832)
+ p.Match(SQLiteParserCURRENT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1833)
+ p.Match(SQLiteParserROW_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 4:
+ p.EnterOuterAlt(localctx, 4)
+ {
+ p.SetState(1834)
+ p.Match(SQLiteParserUNBOUNDED_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1835)
+ p.Match(SQLiteParserPRECEDING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFrame_rightContext is an interface to support dynamic dispatch.
+type IFrame_rightContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Expr() IExprContext
+ PRECEDING_() antlr.TerminalNode
+ FOLLOWING_() antlr.TerminalNode
+ CURRENT_() antlr.TerminalNode
+ ROW_() antlr.TerminalNode
+ UNBOUNDED_() antlr.TerminalNode
+
+ // IsFrame_rightContext differentiates from other interfaces.
+ IsFrame_rightContext()
+}
+
+type Frame_rightContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyFrame_rightContext() *Frame_rightContext {
+ var p = new(Frame_rightContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_right
+ return p
+}
+
+func InitEmptyFrame_rightContext(p *Frame_rightContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_right
+}
+
+func (*Frame_rightContext) IsFrame_rightContext() {}
+
+func NewFrame_rightContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Frame_rightContext {
+ var p = new(Frame_rightContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_frame_right
+
+ return p
+}
+
+func (s *Frame_rightContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Frame_rightContext) 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 *Frame_rightContext) PRECEDING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRECEDING_, 0)
+}
+
+func (s *Frame_rightContext) FOLLOWING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFOLLOWING_, 0)
+}
+
+func (s *Frame_rightContext) CURRENT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_, 0)
+}
+
+func (s *Frame_rightContext) ROW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROW_, 0)
+}
+
+func (s *Frame_rightContext) UNBOUNDED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNBOUNDED_, 0)
+}
+
+func (s *Frame_rightContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Frame_rightContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Frame_rightContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterFrame_right(s)
+ }
+}
+
+func (s *Frame_rightContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFrame_right(s)
+ }
+}
+
+func (p *SQLiteParser) Frame_right() (localctx IFrame_rightContext) {
+ localctx = NewFrame_rightContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 146, SQLiteParserRULE_frame_right)
+ p.SetState(1848)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 275, p.GetParserRuleContext()) {
+ case 1:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1838)
+ p.expr(0)
+ }
+ {
+ p.SetState(1839)
+ p.Match(SQLiteParserPRECEDING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 2:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1841)
+ p.expr(0)
+ }
+ {
+ p.SetState(1842)
+ p.Match(SQLiteParserFOLLOWING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 3:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(1844)
+ p.Match(SQLiteParserCURRENT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1845)
+ p.Match(SQLiteParserROW_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 4:
+ p.EnterOuterAlt(localctx, 4)
+ {
+ p.SetState(1846)
+ p.Match(SQLiteParserUNBOUNDED_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1847)
+ p.Match(SQLiteParserFOLLOWING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFrame_singleContext is an interface to support dynamic dispatch.
+type IFrame_singleContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Expr() IExprContext
+ PRECEDING_() antlr.TerminalNode
+ UNBOUNDED_() antlr.TerminalNode
+ CURRENT_() antlr.TerminalNode
+ ROW_() antlr.TerminalNode
+
+ // IsFrame_singleContext differentiates from other interfaces.
+ IsFrame_singleContext()
+}
+
+type Frame_singleContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyFrame_singleContext() *Frame_singleContext {
+ var p = new(Frame_singleContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_single
+ return p
+}
+
+func InitEmptyFrame_singleContext(p *Frame_singleContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_frame_single
+}
+
+func (*Frame_singleContext) IsFrame_singleContext() {}
+
+func NewFrame_singleContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Frame_singleContext {
+ var p = new(Frame_singleContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_frame_single
+
+ return p
+}
+
+func (s *Frame_singleContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Frame_singleContext) 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 *Frame_singleContext) PRECEDING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRECEDING_, 0)
+}
+
+func (s *Frame_singleContext) UNBOUNDED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNBOUNDED_, 0)
+}
+
+func (s *Frame_singleContext) CURRENT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_, 0)
+}
+
+func (s *Frame_singleContext) ROW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROW_, 0)
+}
+
+func (s *Frame_singleContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Frame_singleContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Frame_singleContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterFrame_single(s)
+ }
+}
+
+func (s *Frame_singleContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFrame_single(s)
+ }
+}
+
+func (p *SQLiteParser) Frame_single() (localctx IFrame_singleContext) {
+ localctx = NewFrame_singleContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 148, SQLiteParserRULE_frame_single)
+ p.SetState(1857)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 276, p.GetParserRuleContext()) {
+ case 1:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1850)
+ p.expr(0)
+ }
+ {
+ p.SetState(1851)
+ p.Match(SQLiteParserPRECEDING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 2:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1853)
+ p.Match(SQLiteParserUNBOUNDED_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1854)
+ p.Match(SQLiteParserPRECEDING_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case 3:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(1855)
+ p.Match(SQLiteParserCURRENT_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1856)
+ p.Match(SQLiteParserROW_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IWindow_functionContext is an interface to support dynamic dispatch.
+type IWindow_functionContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ AllOPEN_PAR() []antlr.TerminalNode
+ OPEN_PAR(i int) antlr.TerminalNode
+ Expr() IExprContext
+ AllCLOSE_PAR() []antlr.TerminalNode
+ CLOSE_PAR(i int) antlr.TerminalNode
+ OVER_() antlr.TerminalNode
+ Order_by_expr_asc_desc() IOrder_by_expr_asc_descContext
+ FIRST_VALUE_() antlr.TerminalNode
+ LAST_VALUE_() antlr.TerminalNode
+ Partition_by() IPartition_byContext
+ Frame_clause() IFrame_clauseContext
+ CUME_DIST_() antlr.TerminalNode
+ PERCENT_RANK_() antlr.TerminalNode
+ Order_by_expr() IOrder_by_exprContext
+ DENSE_RANK_() antlr.TerminalNode
+ RANK_() antlr.TerminalNode
+ ROW_NUMBER_() antlr.TerminalNode
+ LAG_() antlr.TerminalNode
+ LEAD_() antlr.TerminalNode
+ Offset() IOffsetContext
+ Default_value() IDefault_valueContext
+ NTH_VALUE_() antlr.TerminalNode
+ COMMA() antlr.TerminalNode
+ Signed_number() ISigned_numberContext
+ NTILE_() antlr.TerminalNode
+
+ // IsWindow_functionContext differentiates from other interfaces.
+ IsWindow_functionContext()
+}
+
+type Window_functionContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyWindow_functionContext() *Window_functionContext {
+ var p = new(Window_functionContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_window_function
+ return p
+}
+
+func InitEmptyWindow_functionContext(p *Window_functionContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_window_function
+}
+
+func (*Window_functionContext) IsWindow_functionContext() {}
+
+func NewWindow_functionContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Window_functionContext {
+ var p = new(Window_functionContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_window_function
+
+ return p
+}
+
+func (s *Window_functionContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Window_functionContext) AllOPEN_PAR() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserOPEN_PAR)
+}
+
+func (s *Window_functionContext) OPEN_PAR(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_PAR, i)
+}
+
+func (s *Window_functionContext) 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 *Window_functionContext) AllCLOSE_PAR() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCLOSE_PAR)
+}
+
+func (s *Window_functionContext) CLOSE_PAR(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCLOSE_PAR, i)
+}
+
+func (s *Window_functionContext) OVER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOVER_, 0)
+}
+
+func (s *Window_functionContext) Order_by_expr_asc_desc() IOrder_by_expr_asc_descContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOrder_by_expr_asc_descContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOrder_by_expr_asc_descContext)
+}
+
+func (s *Window_functionContext) FIRST_VALUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFIRST_VALUE_, 0)
+}
+
+func (s *Window_functionContext) LAST_VALUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLAST_VALUE_, 0)
+}
+
+func (s *Window_functionContext) Partition_by() IPartition_byContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IPartition_byContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IPartition_byContext)
+}
+
+func (s *Window_functionContext) Frame_clause() IFrame_clauseContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IFrame_clauseContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IFrame_clauseContext)
+}
+
+func (s *Window_functionContext) CUME_DIST_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCUME_DIST_, 0)
+}
+
+func (s *Window_functionContext) PERCENT_RANK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPERCENT_RANK_, 0)
+}
+
+func (s *Window_functionContext) Order_by_expr() IOrder_by_exprContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOrder_by_exprContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOrder_by_exprContext)
+}
+
+func (s *Window_functionContext) DENSE_RANK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDENSE_RANK_, 0)
+}
+
+func (s *Window_functionContext) RANK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRANK_, 0)
+}
+
+func (s *Window_functionContext) ROW_NUMBER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROW_NUMBER_, 0)
+}
+
+func (s *Window_functionContext) LAG_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLAG_, 0)
+}
+
+func (s *Window_functionContext) LEAD_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLEAD_, 0)
+}
+
+func (s *Window_functionContext) Offset() IOffsetContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IOffsetContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IOffsetContext)
+}
+
+func (s *Window_functionContext) Default_value() IDefault_valueContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IDefault_valueContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IDefault_valueContext)
+}
+
+func (s *Window_functionContext) NTH_VALUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNTH_VALUE_, 0)
+}
+
+func (s *Window_functionContext) COMMA() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 0)
+}
+
+func (s *Window_functionContext) 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 *Window_functionContext) NTILE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNTILE_, 0)
+}
+
+func (s *Window_functionContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Window_functionContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Window_functionContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterWindow_function(s)
+ }
+}
+
+func (s *Window_functionContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitWindow_function(s)
+ }
+}
+
+func (p *SQLiteParser) Window_function() (localctx IWindow_functionContext) {
+ localctx = NewWindow_functionContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 150, SQLiteParserRULE_window_function)
+ var _la int
+
+ p.SetState(1944)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserFIRST_VALUE_, SQLiteParserLAST_VALUE_:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1859)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserFIRST_VALUE_ || _la == SQLiteParserLAST_VALUE_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(1860)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1861)
+ p.expr(0)
+ }
+ {
+ p.SetState(1862)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1863)
+ p.Match(SQLiteParserOVER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1864)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1866)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPARTITION_ {
+ {
+ p.SetState(1865)
+ p.Partition_by()
+ }
+
+ }
+ {
+ p.SetState(1868)
+ p.Order_by_expr_asc_desc()
+ }
+ p.SetState(1870)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if (int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&2251799880794113) != 0 {
+ {
+ p.SetState(1869)
+ p.Frame_clause()
+ }
+
+ }
+ {
+ p.SetState(1872)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserCUME_DIST_, SQLiteParserPERCENT_RANK_:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1874)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserCUME_DIST_ || _la == SQLiteParserPERCENT_RANK_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(1875)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1876)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1877)
+ p.Match(SQLiteParserOVER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1878)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1880)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPARTITION_ {
+ {
+ p.SetState(1879)
+ p.Partition_by()
+ }
+
+ }
+ p.SetState(1883)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserORDER_ {
+ {
+ p.SetState(1882)
+ p.Order_by_expr()
+ }
+
+ }
+ {
+ p.SetState(1885)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserDENSE_RANK_, SQLiteParserRANK_, SQLiteParserROW_NUMBER_:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(1886)
+ _la = p.GetTokenStream().LA(1)
+
+ if !((int64((_la-160)) & ^0x3f) == 0 && ((int64(1)<<(_la-160))&385) != 0) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(1887)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1888)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1889)
+ p.Match(SQLiteParserOVER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1890)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1892)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPARTITION_ {
+ {
+ p.SetState(1891)
+ p.Partition_by()
+ }
+
+ }
+ {
+ p.SetState(1894)
+ p.Order_by_expr_asc_desc()
+ }
+ {
+ p.SetState(1895)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserLAG_, SQLiteParserLEAD_:
+ p.EnterOuterAlt(localctx, 4)
+ {
+ p.SetState(1897)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserLAG_ || _la == SQLiteParserLEAD_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+ {
+ p.SetState(1898)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1899)
+ p.expr(0)
+ }
+ p.SetState(1901)
+ p.GetErrorHandler().Sync(p)
+
+ if p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 282, p.GetParserRuleContext()) == 1 {
+ {
+ p.SetState(1900)
+ p.Offset()
+ }
+
+ } else if p.HasError() { // JIM
+ goto errorExit
+ }
+ p.SetState(1904)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1903)
+ p.Default_value()
+ }
+
+ }
+ {
+ p.SetState(1906)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1907)
+ p.Match(SQLiteParserOVER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1908)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1910)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPARTITION_ {
+ {
+ p.SetState(1909)
+ p.Partition_by()
+ }
+
+ }
+ {
+ p.SetState(1912)
+ p.Order_by_expr_asc_desc()
+ }
+ {
+ p.SetState(1913)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserNTH_VALUE_:
+ p.EnterOuterAlt(localctx, 5)
+ {
+ p.SetState(1915)
+ p.Match(SQLiteParserNTH_VALUE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1916)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1917)
+ p.expr(0)
+ }
+ {
+ p.SetState(1918)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1919)
+ p.Signed_number()
+ }
+ {
+ p.SetState(1920)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1921)
+ p.Match(SQLiteParserOVER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1922)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1924)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPARTITION_ {
+ {
+ p.SetState(1923)
+ p.Partition_by()
+ }
+
+ }
+ {
+ p.SetState(1926)
+ p.Order_by_expr_asc_desc()
+ }
+ p.SetState(1928)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if (int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&2251799880794113) != 0 {
+ {
+ p.SetState(1927)
+ p.Frame_clause()
+ }
+
+ }
+ {
+ p.SetState(1930)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserNTILE_:
+ p.EnterOuterAlt(localctx, 6)
+ {
+ p.SetState(1932)
+ p.Match(SQLiteParserNTILE_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1933)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1934)
+ p.expr(0)
+ }
+ {
+ p.SetState(1935)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1936)
+ p.Match(SQLiteParserOVER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1937)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1939)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserPARTITION_ {
+ {
+ p.SetState(1938)
+ p.Partition_by()
+ }
+
+ }
+ {
+ p.SetState(1941)
+ p.Order_by_expr_asc_desc()
+ }
+ {
+ p.SetState(1942)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IOffsetContext is an interface to support dynamic dispatch.
+type IOffsetContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ COMMA() antlr.TerminalNode
+ Signed_number() ISigned_numberContext
+
+ // IsOffsetContext differentiates from other interfaces.
+ IsOffsetContext()
+}
+
+type OffsetContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyOffsetContext() *OffsetContext {
+ var p = new(OffsetContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_offset
+ return p
+}
+
+func InitEmptyOffsetContext(p *OffsetContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_offset
+}
+
+func (*OffsetContext) IsOffsetContext() {}
+
+func NewOffsetContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *OffsetContext {
+ var p = new(OffsetContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_offset
+
+ return p
+}
+
+func (s *OffsetContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *OffsetContext) COMMA() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 0)
+}
+
+func (s *OffsetContext) 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 *OffsetContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *OffsetContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *OffsetContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterOffset(s)
+ }
+}
+
+func (s *OffsetContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitOffset(s)
+ }
+}
+
+func (p *SQLiteParser) Offset() (localctx IOffsetContext) {
+ localctx = NewOffsetContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 152, SQLiteParserRULE_offset)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1946)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1947)
+ p.Signed_number()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IDefault_valueContext is an interface to support dynamic dispatch.
+type IDefault_valueContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ COMMA() antlr.TerminalNode
+ Signed_number() ISigned_numberContext
+
+ // IsDefault_valueContext differentiates from other interfaces.
+ IsDefault_valueContext()
+}
+
+type Default_valueContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyDefault_valueContext() *Default_valueContext {
+ var p = new(Default_valueContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_default_value
+ return p
+}
+
+func InitEmptyDefault_valueContext(p *Default_valueContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_default_value
+}
+
+func (*Default_valueContext) IsDefault_valueContext() {}
+
+func NewDefault_valueContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Default_valueContext {
+ var p = new(Default_valueContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_default_value
+
+ return p
+}
+
+func (s *Default_valueContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Default_valueContext) COMMA() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, 0)
+}
+
+func (s *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 *Default_valueContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Default_valueContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Default_valueContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterDefault_value(s)
+ }
+}
+
+func (s *Default_valueContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitDefault_value(s)
+ }
+}
+
+func (p *SQLiteParser) Default_value() (localctx IDefault_valueContext) {
+ localctx = NewDefault_valueContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 154, SQLiteParserRULE_default_value)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1949)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1950)
+ p.Signed_number()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IPartition_byContext is an interface to support dynamic dispatch.
+type IPartition_byContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ PARTITION_() antlr.TerminalNode
+ BY_() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+
+ // IsPartition_byContext differentiates from other interfaces.
+ IsPartition_byContext()
+}
+
+type Partition_byContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyPartition_byContext() *Partition_byContext {
+ var p = new(Partition_byContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_partition_by
+ return p
+}
+
+func InitEmptyPartition_byContext(p *Partition_byContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_partition_by
+}
+
+func (*Partition_byContext) IsPartition_byContext() {}
+
+func NewPartition_byContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Partition_byContext {
+ var p = new(Partition_byContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_partition_by
+
+ return p
+}
+
+func (s *Partition_byContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Partition_byContext) PARTITION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPARTITION_, 0)
+}
+
+func (s *Partition_byContext) BY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, 0)
+}
+
+func (s *Partition_byContext) 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 *Partition_byContext) 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 *Partition_byContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Partition_byContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Partition_byContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterPartition_by(s)
+ }
+}
+
+func (s *Partition_byContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitPartition_by(s)
+ }
+}
+
+func (p *SQLiteParser) Partition_by() (localctx IPartition_byContext) {
+ localctx = NewPartition_byContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 156, SQLiteParserRULE_partition_by)
+ var _alt int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1952)
+ p.Match(SQLiteParserPARTITION_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1953)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1955)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _alt = 1
+ for ok := true; ok; ok = _alt != 2 && _alt != antlr.ATNInvalidAltNumber {
+ switch _alt {
+ case 1:
+ {
+ p.SetState(1954)
+ p.expr(0)
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+ p.SetState(1957)
+ p.GetErrorHandler().Sync(p)
+ _alt = p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 289, p.GetParserRuleContext())
+ if p.HasError() {
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IOrder_by_exprContext is an interface to support dynamic dispatch.
+type IOrder_by_exprContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ORDER_() antlr.TerminalNode
+ BY_() antlr.TerminalNode
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+
+ // IsOrder_by_exprContext differentiates from other interfaces.
+ IsOrder_by_exprContext()
+}
+
+type Order_by_exprContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyOrder_by_exprContext() *Order_by_exprContext {
+ var p = new(Order_by_exprContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_order_by_expr
+ return p
+}
+
+func InitEmptyOrder_by_exprContext(p *Order_by_exprContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_order_by_expr
+}
+
+func (*Order_by_exprContext) IsOrder_by_exprContext() {}
+
+func NewOrder_by_exprContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Order_by_exprContext {
+ var p = new(Order_by_exprContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_order_by_expr
+
+ return p
+}
+
+func (s *Order_by_exprContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Order_by_exprContext) ORDER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserORDER_, 0)
+}
+
+func (s *Order_by_exprContext) BY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, 0)
+}
+
+func (s *Order_by_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 *Order_by_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 *Order_by_exprContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Order_by_exprContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Order_by_exprContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterOrder_by_expr(s)
+ }
+}
+
+func (s *Order_by_exprContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitOrder_by_expr(s)
+ }
+}
+
+func (p *SQLiteParser) Order_by_expr() (localctx IOrder_by_exprContext) {
+ localctx = NewOrder_by_exprContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 158, SQLiteParserRULE_order_by_expr)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1959)
+ p.Match(SQLiteParserORDER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1960)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ p.SetState(1962)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for ok := true; ok; ok = ((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-33552632) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1152921504606846977) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&4476578029606273023) != 0) {
+ {
+ p.SetState(1961)
+ p.expr(0)
+ }
+
+ p.SetState(1964)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IOrder_by_expr_asc_descContext is an interface to support dynamic dispatch.
+type IOrder_by_expr_asc_descContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ORDER_() antlr.TerminalNode
+ BY_() antlr.TerminalNode
+ Expr_asc_desc() IExpr_asc_descContext
+
+ // IsOrder_by_expr_asc_descContext differentiates from other interfaces.
+ IsOrder_by_expr_asc_descContext()
+}
+
+type Order_by_expr_asc_descContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyOrder_by_expr_asc_descContext() *Order_by_expr_asc_descContext {
+ var p = new(Order_by_expr_asc_descContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_order_by_expr_asc_desc
+ return p
+}
+
+func InitEmptyOrder_by_expr_asc_descContext(p *Order_by_expr_asc_descContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_order_by_expr_asc_desc
+}
+
+func (*Order_by_expr_asc_descContext) IsOrder_by_expr_asc_descContext() {}
+
+func NewOrder_by_expr_asc_descContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Order_by_expr_asc_descContext {
+ var p = new(Order_by_expr_asc_descContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_order_by_expr_asc_desc
+
+ return p
+}
+
+func (s *Order_by_expr_asc_descContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Order_by_expr_asc_descContext) ORDER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserORDER_, 0)
+}
+
+func (s *Order_by_expr_asc_descContext) BY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, 0)
+}
+
+func (s *Order_by_expr_asc_descContext) Expr_asc_desc() IExpr_asc_descContext {
+ var t antlr.RuleContext
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IExpr_asc_descContext); ok {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IExpr_asc_descContext)
+}
+
+func (s *Order_by_expr_asc_descContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Order_by_expr_asc_descContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Order_by_expr_asc_descContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterOrder_by_expr_asc_desc(s)
+ }
+}
+
+func (s *Order_by_expr_asc_descContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitOrder_by_expr_asc_desc(s)
+ }
+}
+
+func (p *SQLiteParser) Order_by_expr_asc_desc() (localctx IOrder_by_expr_asc_descContext) {
+ localctx = NewOrder_by_expr_asc_descContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 160, SQLiteParserRULE_order_by_expr_asc_desc)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1966)
+ p.Match(SQLiteParserORDER_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1967)
+ p.Match(SQLiteParserBY_)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1968)
+ p.Expr_asc_desc()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IExpr_asc_descContext is an interface to support dynamic dispatch.
+type IExpr_asc_descContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ AllExpr() []IExprContext
+ Expr(i int) IExprContext
+ AllAsc_desc() []IAsc_descContext
+ Asc_desc(i int) IAsc_descContext
+ AllCOMMA() []antlr.TerminalNode
+ COMMA(i int) antlr.TerminalNode
+
+ // IsExpr_asc_descContext differentiates from other interfaces.
+ IsExpr_asc_descContext()
+}
+
+type Expr_asc_descContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyExpr_asc_descContext() *Expr_asc_descContext {
+ var p = new(Expr_asc_descContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_expr_asc_desc
+ return p
+}
+
+func InitEmptyExpr_asc_descContext(p *Expr_asc_descContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_expr_asc_desc
+}
+
+func (*Expr_asc_descContext) IsExpr_asc_descContext() {}
+
+func NewExpr_asc_descContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Expr_asc_descContext {
+ var p = new(Expr_asc_descContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_expr_asc_desc
+
+ return p
+}
+
+func (s *Expr_asc_descContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Expr_asc_descContext) 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 *Expr_asc_descContext) 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 *Expr_asc_descContext) AllAsc_desc() []IAsc_descContext {
+ children := s.GetChildren()
+ len := 0
+ for _, ctx := range children {
+ if _, ok := ctx.(IAsc_descContext); ok {
+ len++
+ }
+ }
+
+ tst := make([]IAsc_descContext, len)
+ i := 0
+ for _, ctx := range children {
+ if t, ok := ctx.(IAsc_descContext); ok {
+ tst[i] = t.(IAsc_descContext)
+ i++
+ }
+ }
+
+ return tst
+}
+
+func (s *Expr_asc_descContext) Asc_desc(i int) IAsc_descContext {
+ var t antlr.RuleContext
+ j := 0
+ for _, ctx := range s.GetChildren() {
+ if _, ok := ctx.(IAsc_descContext); ok {
+ if j == i {
+ t = ctx.(antlr.RuleContext)
+ break
+ }
+ j++
+ }
+ }
+
+ if t == nil {
+ return nil
+ }
+
+ return t.(IAsc_descContext)
+}
+
+func (s *Expr_asc_descContext) AllCOMMA() []antlr.TerminalNode {
+ return s.GetTokens(SQLiteParserCOMMA)
+}
+
+func (s *Expr_asc_descContext) COMMA(i int) antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMA, i)
+}
+
+func (s *Expr_asc_descContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Expr_asc_descContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Expr_asc_descContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterExpr_asc_desc(s)
+ }
+}
+
+func (s *Expr_asc_descContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitExpr_asc_desc(s)
+ }
+}
+
+func (p *SQLiteParser) Expr_asc_desc() (localctx IExpr_asc_descContext) {
+ localctx = NewExpr_asc_descContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 162, SQLiteParserRULE_expr_asc_desc)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1970)
+ p.expr(0)
+ }
+ p.SetState(1972)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserASC_ || _la == SQLiteParserDESC_ {
+ {
+ p.SetState(1971)
+ p.Asc_desc()
+ }
+
+ }
+ p.SetState(1981)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ for _la == SQLiteParserCOMMA {
+ {
+ p.SetState(1974)
+ p.Match(SQLiteParserCOMMA)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(1975)
+ p.expr(0)
+ }
+ p.SetState(1977)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+
+ if _la == SQLiteParserASC_ || _la == SQLiteParserDESC_ {
+ {
+ p.SetState(1976)
+ p.Asc_desc()
+ }
+
+ }
+
+ p.SetState(1983)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+ _la = p.GetTokenStream().LA(1)
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IInitial_selectContext is an interface to support dynamic dispatch.
+type IInitial_selectContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Select_stmt() ISelect_stmtContext
+
+ // IsInitial_selectContext differentiates from other interfaces.
+ IsInitial_selectContext()
+}
+
+type Initial_selectContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyInitial_selectContext() *Initial_selectContext {
+ var p = new(Initial_selectContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_initial_select
+ return p
+}
+
+func InitEmptyInitial_selectContext(p *Initial_selectContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_initial_select
+}
+
+func (*Initial_selectContext) IsInitial_selectContext() {}
+
+func NewInitial_selectContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Initial_selectContext {
+ var p = new(Initial_selectContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_initial_select
+
+ return p
+}
+
+func (s *Initial_selectContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Initial_selectContext) 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 *Initial_selectContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Initial_selectContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Initial_selectContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterInitial_select(s)
+ }
+}
+
+func (s *Initial_selectContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitInitial_select(s)
+ }
+}
+
+func (p *SQLiteParser) Initial_select() (localctx IInitial_selectContext) {
+ localctx = NewInitial_selectContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 164, SQLiteParserRULE_initial_select)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1984)
+ p.Select_stmt()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IRecursive_selectContext is an interface to support dynamic dispatch.
+type IRecursive_selectContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Select_stmt() ISelect_stmtContext
+
+ // IsRecursive_selectContext differentiates from other interfaces.
+ IsRecursive_selectContext()
+}
+
+type Recursive_selectContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyRecursive_selectContext() *Recursive_selectContext {
+ var p = new(Recursive_selectContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_recursive_select
+ return p
+}
+
+func InitEmptyRecursive_selectContext(p *Recursive_selectContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_recursive_select
+}
+
+func (*Recursive_selectContext) IsRecursive_selectContext() {}
+
+func NewRecursive_selectContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Recursive_selectContext {
+ var p = new(Recursive_selectContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_recursive_select
+
+ return p
+}
+
+func (s *Recursive_selectContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Recursive_selectContext) 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 *Recursive_selectContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Recursive_selectContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Recursive_selectContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterRecursive_select(s)
+ }
+}
+
+func (s *Recursive_selectContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitRecursive_select(s)
+ }
+}
+
+func (p *SQLiteParser) Recursive_select() (localctx IRecursive_selectContext) {
+ localctx = NewRecursive_selectContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 166, SQLiteParserRULE_recursive_select)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1986)
+ p.Select_stmt()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IUnary_operatorContext is an interface to support dynamic dispatch.
+type IUnary_operatorContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ MINUS() antlr.TerminalNode
+ PLUS() antlr.TerminalNode
+ TILDE() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_unary_operator
+ return p
+}
+
+func InitEmptyUnary_operatorContext(p *Unary_operatorContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_unary_operator
+}
+
+func (*Unary_operatorContext) IsUnary_operatorContext() {}
+
+func NewUnary_operatorContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Unary_operatorContext {
+ var p = new(Unary_operatorContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_unary_operator
+
+ return p
+}
+
+func (s *Unary_operatorContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Unary_operatorContext) MINUS() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserMINUS, 0)
+}
+
+func (s *Unary_operatorContext) PLUS() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPLUS, 0)
+}
+
+func (s *Unary_operatorContext) TILDE() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTILDE, 0)
+}
+
+func (s *Unary_operatorContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterUnary_operator(s)
+ }
+}
+
+func (s *Unary_operatorContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitUnary_operator(s)
+ }
+}
+
+func (p *SQLiteParser) Unary_operator() (localctx IUnary_operatorContext) {
+ localctx = NewUnary_operatorContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 168, SQLiteParserRULE_unary_operator)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1988)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&1792) != 0) || _la == SQLiteParserNOT_) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IError_messageContext is an interface to support dynamic dispatch.
+type IError_messageContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ STRING_LITERAL() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_error_message
+ return p
+}
+
+func InitEmptyError_messageContext(p *Error_messageContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_error_message
+}
+
+func (*Error_messageContext) IsError_messageContext() {}
+
+func NewError_messageContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Error_messageContext {
+ var p = new(Error_messageContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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(SQLiteParserSTRING_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.(SQLiteParserListener); ok {
+ listenerT.EnterError_message(s)
+ }
+}
+
+func (s *Error_messageContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitError_message(s)
+ }
+}
+
+func (p *SQLiteParser) Error_message() (localctx IError_messageContext) {
+ localctx = NewError_messageContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 170, SQLiteParserRULE_error_message)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1990)
+ p.Match(SQLiteParserSTRING_LITERAL)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IModule_argumentContext is an interface to support dynamic dispatch.
+type IModule_argumentContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Expr() IExprContext
+ Column_def() IColumn_defContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_module_argument
+ return p
+}
+
+func InitEmptyModule_argumentContext(p *Module_argumentContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_module_argument
+}
+
+func (*Module_argumentContext) IsModule_argumentContext() {}
+
+func NewModule_argumentContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_argumentContext {
+ var p = new(Module_argumentContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterModule_argument(s)
+ }
+}
+
+func (s *Module_argumentContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitModule_argument(s)
+ }
+}
+
+func (p *SQLiteParser) Module_argument() (localctx IModule_argumentContext) {
+ localctx = NewModule_argumentContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 172, SQLiteParserRULE_module_argument)
+ p.SetState(1994)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetInterpreter().AdaptivePredict(p.BaseParser, p.GetTokenStream(), 294, p.GetParserRuleContext()) {
+ case 1:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1992)
+ p.expr(0)
+ }
+
+ case 2:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(1993)
+ p.Column_def()
+ }
+
+ case antlr.ATNInvalidAltNumber:
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IColumn_aliasContext is an interface to support dynamic dispatch.
+type IColumn_aliasContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ IDENTIFIER() antlr.TerminalNode
+ STRING_LITERAL() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_alias
+ return p
+}
+
+func InitEmptyColumn_aliasContext(p *Column_aliasContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_alias
+}
+
+func (*Column_aliasContext) IsColumn_aliasContext() {}
+
+func NewColumn_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_aliasContext {
+ var p = new(Column_aliasContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_column_alias
+
+ return p
+}
+
+func (s *Column_aliasContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Column_aliasContext) IDENTIFIER() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIDENTIFIER, 0)
+}
+
+func (s *Column_aliasContext) STRING_LITERAL() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTRING_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.(SQLiteParserListener); ok {
+ listenerT.EnterColumn_alias(s)
+ }
+}
+
+func (s *Column_aliasContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitColumn_alias(s)
+ }
+}
+
+func (p *SQLiteParser) Column_alias() (localctx IColumn_aliasContext) {
+ localctx = NewColumn_aliasContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 174, SQLiteParserRULE_column_alias)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1996)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(_la == SQLiteParserIDENTIFIER || _la == SQLiteParserSTRING_LITERAL) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IKeywordContext is an interface to support dynamic dispatch.
+type IKeywordContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ ABORT_() antlr.TerminalNode
+ ACTION_() antlr.TerminalNode
+ ADD_() antlr.TerminalNode
+ AFTER_() antlr.TerminalNode
+ ALL_() antlr.TerminalNode
+ ALTER_() antlr.TerminalNode
+ ANALYZE_() antlr.TerminalNode
+ AND_() antlr.TerminalNode
+ AS_() antlr.TerminalNode
+ ASC_() antlr.TerminalNode
+ ATTACH_() antlr.TerminalNode
+ AUTOINCREMENT_() antlr.TerminalNode
+ BEFORE_() antlr.TerminalNode
+ BEGIN_() antlr.TerminalNode
+ BETWEEN_() antlr.TerminalNode
+ BY_() antlr.TerminalNode
+ CASCADE_() antlr.TerminalNode
+ CASE_() antlr.TerminalNode
+ CAST_() antlr.TerminalNode
+ CHECK_() antlr.TerminalNode
+ COLLATE_() antlr.TerminalNode
+ COLUMN_() antlr.TerminalNode
+ COMMIT_() antlr.TerminalNode
+ CONFLICT_() antlr.TerminalNode
+ CONSTRAINT_() antlr.TerminalNode
+ CREATE_() antlr.TerminalNode
+ CROSS_() antlr.TerminalNode
+ CURRENT_DATE_() antlr.TerminalNode
+ CURRENT_TIME_() antlr.TerminalNode
+ CURRENT_TIMESTAMP_() antlr.TerminalNode
+ DATABASE_() antlr.TerminalNode
+ DEFAULT_() antlr.TerminalNode
+ DEFERRABLE_() antlr.TerminalNode
+ DEFERRED_() antlr.TerminalNode
+ DELETE_() antlr.TerminalNode
+ DESC_() antlr.TerminalNode
+ DETACH_() antlr.TerminalNode
+ DISTINCT_() antlr.TerminalNode
+ DROP_() antlr.TerminalNode
+ EACH_() antlr.TerminalNode
+ ELSE_() antlr.TerminalNode
+ END_() antlr.TerminalNode
+ ESCAPE_() antlr.TerminalNode
+ EXCEPT_() antlr.TerminalNode
+ EXCLUSIVE_() antlr.TerminalNode
+ EXISTS_() antlr.TerminalNode
+ EXPLAIN_() antlr.TerminalNode
+ FAIL_() antlr.TerminalNode
+ FOR_() antlr.TerminalNode
+ FOREIGN_() antlr.TerminalNode
+ FROM_() antlr.TerminalNode
+ FULL_() antlr.TerminalNode
+ GLOB_() antlr.TerminalNode
+ GROUP_() antlr.TerminalNode
+ HAVING_() antlr.TerminalNode
+ IF_() antlr.TerminalNode
+ IGNORE_() antlr.TerminalNode
+ IMMEDIATE_() antlr.TerminalNode
+ IN_() antlr.TerminalNode
+ INDEX_() antlr.TerminalNode
+ INDEXED_() antlr.TerminalNode
+ INITIALLY_() antlr.TerminalNode
+ INNER_() antlr.TerminalNode
+ INSERT_() antlr.TerminalNode
+ INSTEAD_() antlr.TerminalNode
+ INTERSECT_() antlr.TerminalNode
+ INTO_() antlr.TerminalNode
+ IS_() antlr.TerminalNode
+ ISNULL_() antlr.TerminalNode
+ JOIN_() antlr.TerminalNode
+ KEY_() antlr.TerminalNode
+ LEFT_() antlr.TerminalNode
+ LIKE_() antlr.TerminalNode
+ LIMIT_() antlr.TerminalNode
+ MATCH_() antlr.TerminalNode
+ NATURAL_() antlr.TerminalNode
+ NO_() antlr.TerminalNode
+ NOT_() antlr.TerminalNode
+ NOTNULL_() antlr.TerminalNode
+ NULL_() antlr.TerminalNode
+ OF_() antlr.TerminalNode
+ OFFSET_() antlr.TerminalNode
+ ON_() antlr.TerminalNode
+ OR_() antlr.TerminalNode
+ ORDER_() antlr.TerminalNode
+ OUTER_() antlr.TerminalNode
+ PLAN_() antlr.TerminalNode
+ PRAGMA_() antlr.TerminalNode
+ PRIMARY_() antlr.TerminalNode
+ QUERY_() antlr.TerminalNode
+ RAISE_() antlr.TerminalNode
+ RECURSIVE_() antlr.TerminalNode
+ REFERENCES_() antlr.TerminalNode
+ REGEXP_() antlr.TerminalNode
+ REINDEX_() antlr.TerminalNode
+ RELEASE_() antlr.TerminalNode
+ RENAME_() antlr.TerminalNode
+ REPLACE_() antlr.TerminalNode
+ RESTRICT_() antlr.TerminalNode
+ RIGHT_() antlr.TerminalNode
+ ROLLBACK_() antlr.TerminalNode
+ ROW_() antlr.TerminalNode
+ ROWS_() antlr.TerminalNode
+ SAVEPOINT_() antlr.TerminalNode
+ SELECT_() antlr.TerminalNode
+ SET_() antlr.TerminalNode
+ TABLE_() antlr.TerminalNode
+ TEMP_() antlr.TerminalNode
+ TEMPORARY_() antlr.TerminalNode
+ THEN_() antlr.TerminalNode
+ TO_() antlr.TerminalNode
+ TRANSACTION_() antlr.TerminalNode
+ TRIGGER_() antlr.TerminalNode
+ UNION_() antlr.TerminalNode
+ UNIQUE_() antlr.TerminalNode
+ UPDATE_() antlr.TerminalNode
+ USING_() antlr.TerminalNode
+ VACUUM_() antlr.TerminalNode
+ VALUES_() antlr.TerminalNode
+ VIEW_() antlr.TerminalNode
+ VIRTUAL_() antlr.TerminalNode
+ WHEN_() antlr.TerminalNode
+ WHERE_() antlr.TerminalNode
+ WITH_() antlr.TerminalNode
+ WITHOUT_() antlr.TerminalNode
+ FIRST_VALUE_() antlr.TerminalNode
+ OVER_() antlr.TerminalNode
+ PARTITION_() antlr.TerminalNode
+ RANGE_() antlr.TerminalNode
+ PRECEDING_() antlr.TerminalNode
+ UNBOUNDED_() antlr.TerminalNode
+ CURRENT_() antlr.TerminalNode
+ FOLLOWING_() antlr.TerminalNode
+ CUME_DIST_() antlr.TerminalNode
+ DENSE_RANK_() antlr.TerminalNode
+ LAG_() antlr.TerminalNode
+ LAST_VALUE_() antlr.TerminalNode
+ LEAD_() antlr.TerminalNode
+ NTH_VALUE_() antlr.TerminalNode
+ NTILE_() antlr.TerminalNode
+ PERCENT_RANK_() antlr.TerminalNode
+ RANK_() antlr.TerminalNode
+ ROW_NUMBER_() antlr.TerminalNode
+ GENERATED_() antlr.TerminalNode
+ ALWAYS_() antlr.TerminalNode
+ STORED_() antlr.TerminalNode
+ TRUE_() antlr.TerminalNode
+ FALSE_() antlr.TerminalNode
+ WINDOW_() antlr.TerminalNode
+ NULLS_() antlr.TerminalNode
+ FIRST_() antlr.TerminalNode
+ LAST_() antlr.TerminalNode
+ FILTER_() antlr.TerminalNode
+ GROUPS_() antlr.TerminalNode
+ EXCLUDE_() antlr.TerminalNode
+
+ // IsKeywordContext differentiates from other interfaces.
+ IsKeywordContext()
+}
+
+type KeywordContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyKeywordContext() *KeywordContext {
+ var p = new(KeywordContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_keyword
+ return p
+}
+
+func InitEmptyKeywordContext(p *KeywordContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_keyword
+}
+
+func (*KeywordContext) IsKeywordContext() {}
+
+func NewKeywordContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *KeywordContext {
+ var p = new(KeywordContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_keyword
+
+ return p
+}
+
+func (s *KeywordContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *KeywordContext) ABORT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserABORT_, 0)
+}
+
+func (s *KeywordContext) ACTION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserACTION_, 0)
+}
+
+func (s *KeywordContext) ADD_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserADD_, 0)
+}
+
+func (s *KeywordContext) AFTER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAFTER_, 0)
+}
+
+func (s *KeywordContext) ALL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALL_, 0)
+}
+
+func (s *KeywordContext) ALTER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALTER_, 0)
+}
+
+func (s *KeywordContext) ANALYZE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserANALYZE_, 0)
+}
+
+func (s *KeywordContext) AND_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAND_, 0)
+}
+
+func (s *KeywordContext) AS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAS_, 0)
+}
+
+func (s *KeywordContext) ASC_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserASC_, 0)
+}
+
+func (s *KeywordContext) ATTACH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserATTACH_, 0)
+}
+
+func (s *KeywordContext) AUTOINCREMENT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserAUTOINCREMENT_, 0)
+}
+
+func (s *KeywordContext) BEFORE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBEFORE_, 0)
+}
+
+func (s *KeywordContext) BEGIN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBEGIN_, 0)
+}
+
+func (s *KeywordContext) BETWEEN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBETWEEN_, 0)
+}
+
+func (s *KeywordContext) BY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserBY_, 0)
+}
+
+func (s *KeywordContext) CASCADE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCASCADE_, 0)
+}
+
+func (s *KeywordContext) CASE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCASE_, 0)
+}
+
+func (s *KeywordContext) CAST_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCAST_, 0)
+}
+
+func (s *KeywordContext) CHECK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCHECK_, 0)
+}
+
+func (s *KeywordContext) COLLATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOLLATE_, 0)
+}
+
+func (s *KeywordContext) COLUMN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOLUMN_, 0)
+}
+
+func (s *KeywordContext) COMMIT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCOMMIT_, 0)
+}
+
+func (s *KeywordContext) CONFLICT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCONFLICT_, 0)
+}
+
+func (s *KeywordContext) CONSTRAINT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCONSTRAINT_, 0)
+}
+
+func (s *KeywordContext) CREATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCREATE_, 0)
+}
+
+func (s *KeywordContext) CROSS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCROSS_, 0)
+}
+
+func (s *KeywordContext) CURRENT_DATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_DATE_, 0)
+}
+
+func (s *KeywordContext) CURRENT_TIME_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_TIME_, 0)
+}
+
+func (s *KeywordContext) CURRENT_TIMESTAMP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_TIMESTAMP_, 0)
+}
+
+func (s *KeywordContext) DATABASE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDATABASE_, 0)
+}
+
+func (s *KeywordContext) DEFAULT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFAULT_, 0)
+}
+
+func (s *KeywordContext) DEFERRABLE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFERRABLE_, 0)
+}
+
+func (s *KeywordContext) DEFERRED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDEFERRED_, 0)
+}
+
+func (s *KeywordContext) DELETE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDELETE_, 0)
+}
+
+func (s *KeywordContext) DESC_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDESC_, 0)
+}
+
+func (s *KeywordContext) DETACH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDETACH_, 0)
+}
+
+func (s *KeywordContext) DISTINCT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDISTINCT_, 0)
+}
+
+func (s *KeywordContext) DROP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDROP_, 0)
+}
+
+func (s *KeywordContext) EACH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEACH_, 0)
+}
+
+func (s *KeywordContext) ELSE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserELSE_, 0)
+}
+
+func (s *KeywordContext) END_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEND_, 0)
+}
+
+func (s *KeywordContext) ESCAPE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserESCAPE_, 0)
+}
+
+func (s *KeywordContext) EXCEPT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXCEPT_, 0)
+}
+
+func (s *KeywordContext) EXCLUSIVE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXCLUSIVE_, 0)
+}
+
+func (s *KeywordContext) EXISTS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXISTS_, 0)
+}
+
+func (s *KeywordContext) EXPLAIN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXPLAIN_, 0)
+}
+
+func (s *KeywordContext) FAIL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFAIL_, 0)
+}
+
+func (s *KeywordContext) FOR_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFOR_, 0)
+}
+
+func (s *KeywordContext) FOREIGN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFOREIGN_, 0)
+}
+
+func (s *KeywordContext) FROM_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFROM_, 0)
+}
+
+func (s *KeywordContext) FULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFULL_, 0)
+}
+
+func (s *KeywordContext) GLOB_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGLOB_, 0)
+}
+
+func (s *KeywordContext) GROUP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGROUP_, 0)
+}
+
+func (s *KeywordContext) HAVING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserHAVING_, 0)
+}
+
+func (s *KeywordContext) IF_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIF_, 0)
+}
+
+func (s *KeywordContext) IGNORE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIGNORE_, 0)
+}
+
+func (s *KeywordContext) IMMEDIATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIMMEDIATE_, 0)
+}
+
+func (s *KeywordContext) IN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIN_, 0)
+}
+
+func (s *KeywordContext) INDEX_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINDEX_, 0)
+}
+
+func (s *KeywordContext) INDEXED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINDEXED_, 0)
+}
+
+func (s *KeywordContext) INITIALLY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINITIALLY_, 0)
+}
+
+func (s *KeywordContext) INNER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINNER_, 0)
+}
+
+func (s *KeywordContext) INSERT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINSERT_, 0)
+}
+
+func (s *KeywordContext) INSTEAD_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINSTEAD_, 0)
+}
+
+func (s *KeywordContext) INTERSECT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINTERSECT_, 0)
+}
+
+func (s *KeywordContext) INTO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserINTO_, 0)
+}
+
+func (s *KeywordContext) IS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIS_, 0)
+}
+
+func (s *KeywordContext) ISNULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserISNULL_, 0)
+}
+
+func (s *KeywordContext) JOIN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserJOIN_, 0)
+}
+
+func (s *KeywordContext) KEY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserKEY_, 0)
+}
+
+func (s *KeywordContext) LEFT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLEFT_, 0)
+}
+
+func (s *KeywordContext) LIKE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLIKE_, 0)
+}
+
+func (s *KeywordContext) LIMIT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLIMIT_, 0)
+}
+
+func (s *KeywordContext) MATCH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserMATCH_, 0)
+}
+
+func (s *KeywordContext) NATURAL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNATURAL_, 0)
+}
+
+func (s *KeywordContext) NO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNO_, 0)
+}
+
+func (s *KeywordContext) NOT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOT_, 0)
+}
+
+func (s *KeywordContext) NOTNULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNOTNULL_, 0)
+}
+
+func (s *KeywordContext) NULL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNULL_, 0)
+}
+
+func (s *KeywordContext) OF_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOF_, 0)
+}
+
+func (s *KeywordContext) OFFSET_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOFFSET_, 0)
+}
+
+func (s *KeywordContext) ON_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserON_, 0)
+}
+
+func (s *KeywordContext) OR_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOR_, 0)
+}
+
+func (s *KeywordContext) ORDER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserORDER_, 0)
+}
+
+func (s *KeywordContext) OUTER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOUTER_, 0)
+}
+
+func (s *KeywordContext) PLAN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPLAN_, 0)
+}
+
+func (s *KeywordContext) PRAGMA_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRAGMA_, 0)
+}
+
+func (s *KeywordContext) PRIMARY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRIMARY_, 0)
+}
+
+func (s *KeywordContext) QUERY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserQUERY_, 0)
+}
+
+func (s *KeywordContext) RAISE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRAISE_, 0)
+}
+
+func (s *KeywordContext) RECURSIVE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRECURSIVE_, 0)
+}
+
+func (s *KeywordContext) REFERENCES_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREFERENCES_, 0)
+}
+
+func (s *KeywordContext) REGEXP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREGEXP_, 0)
+}
+
+func (s *KeywordContext) REINDEX_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREINDEX_, 0)
+}
+
+func (s *KeywordContext) RELEASE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRELEASE_, 0)
+}
+
+func (s *KeywordContext) RENAME_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRENAME_, 0)
+}
+
+func (s *KeywordContext) REPLACE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserREPLACE_, 0)
+}
+
+func (s *KeywordContext) RESTRICT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRESTRICT_, 0)
+}
+
+func (s *KeywordContext) RIGHT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRIGHT_, 0)
+}
+
+func (s *KeywordContext) ROLLBACK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROLLBACK_, 0)
+}
+
+func (s *KeywordContext) ROW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROW_, 0)
+}
+
+func (s *KeywordContext) ROWS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROWS_, 0)
+}
+
+func (s *KeywordContext) SAVEPOINT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSAVEPOINT_, 0)
+}
+
+func (s *KeywordContext) SELECT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSELECT_, 0)
+}
+
+func (s *KeywordContext) SET_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSET_, 0)
+}
+
+func (s *KeywordContext) TABLE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTABLE_, 0)
+}
+
+func (s *KeywordContext) TEMP_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTEMP_, 0)
+}
+
+func (s *KeywordContext) TEMPORARY_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTEMPORARY_, 0)
+}
+
+func (s *KeywordContext) THEN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTHEN_, 0)
+}
+
+func (s *KeywordContext) TO_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTO_, 0)
+}
+
+func (s *KeywordContext) TRANSACTION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRANSACTION_, 0)
+}
+
+func (s *KeywordContext) TRIGGER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRIGGER_, 0)
+}
+
+func (s *KeywordContext) UNION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNION_, 0)
+}
+
+func (s *KeywordContext) UNIQUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNIQUE_, 0)
+}
+
+func (s *KeywordContext) UPDATE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUPDATE_, 0)
+}
+
+func (s *KeywordContext) USING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUSING_, 0)
+}
+
+func (s *KeywordContext) VACUUM_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVACUUM_, 0)
+}
+
+func (s *KeywordContext) VALUES_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVALUES_, 0)
+}
+
+func (s *KeywordContext) VIEW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVIEW_, 0)
+}
+
+func (s *KeywordContext) VIRTUAL_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserVIRTUAL_, 0)
+}
+
+func (s *KeywordContext) WHEN_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHEN_, 0)
+}
+
+func (s *KeywordContext) WHERE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWHERE_, 0)
+}
+
+func (s *KeywordContext) WITH_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWITH_, 0)
+}
+
+func (s *KeywordContext) WITHOUT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWITHOUT_, 0)
+}
+
+func (s *KeywordContext) FIRST_VALUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFIRST_VALUE_, 0)
+}
+
+func (s *KeywordContext) OVER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOVER_, 0)
+}
+
+func (s *KeywordContext) PARTITION_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPARTITION_, 0)
+}
+
+func (s *KeywordContext) RANGE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRANGE_, 0)
+}
+
+func (s *KeywordContext) PRECEDING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPRECEDING_, 0)
+}
+
+func (s *KeywordContext) UNBOUNDED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserUNBOUNDED_, 0)
+}
+
+func (s *KeywordContext) CURRENT_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCURRENT_, 0)
+}
+
+func (s *KeywordContext) FOLLOWING_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFOLLOWING_, 0)
+}
+
+func (s *KeywordContext) CUME_DIST_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserCUME_DIST_, 0)
+}
+
+func (s *KeywordContext) DENSE_RANK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserDENSE_RANK_, 0)
+}
+
+func (s *KeywordContext) LAG_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLAG_, 0)
+}
+
+func (s *KeywordContext) LAST_VALUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLAST_VALUE_, 0)
+}
+
+func (s *KeywordContext) LEAD_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLEAD_, 0)
+}
+
+func (s *KeywordContext) NTH_VALUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNTH_VALUE_, 0)
+}
+
+func (s *KeywordContext) NTILE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNTILE_, 0)
+}
+
+func (s *KeywordContext) PERCENT_RANK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserPERCENT_RANK_, 0)
+}
+
+func (s *KeywordContext) RANK_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserRANK_, 0)
+}
+
+func (s *KeywordContext) ROW_NUMBER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserROW_NUMBER_, 0)
+}
+
+func (s *KeywordContext) GENERATED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGENERATED_, 0)
+}
+
+func (s *KeywordContext) ALWAYS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserALWAYS_, 0)
+}
+
+func (s *KeywordContext) STORED_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserSTORED_, 0)
+}
+
+func (s *KeywordContext) TRUE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserTRUE_, 0)
+}
+
+func (s *KeywordContext) FALSE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFALSE_, 0)
+}
+
+func (s *KeywordContext) WINDOW_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserWINDOW_, 0)
+}
+
+func (s *KeywordContext) NULLS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserNULLS_, 0)
+}
+
+func (s *KeywordContext) FIRST_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFIRST_, 0)
+}
+
+func (s *KeywordContext) LAST_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserLAST_, 0)
+}
+
+func (s *KeywordContext) FILTER_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserFILTER_, 0)
+}
+
+func (s *KeywordContext) GROUPS_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserGROUPS_, 0)
+}
+
+func (s *KeywordContext) EXCLUDE_() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserEXCLUDE_, 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.(SQLiteParserListener); ok {
+ listenerT.EnterKeyword(s)
+ }
+}
+
+func (s *KeywordContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitKeyword(s)
+ }
+}
+
+func (p *SQLiteParser) Keyword() (localctx IKeywordContext) {
+ localctx = NewKeywordContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 176, SQLiteParserRULE_keyword)
+ var _la int
+
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(1998)
+ _la = p.GetTokenStream().LA(1)
+
+ if !(((int64(_la) & ^0x3f) == 0 && ((int64(1)<<_la)&-33554432) != 0) || ((int64((_la-64)) & ^0x3f) == 0 && ((int64(1)<<(_la-64))&-1152921504606846977) != 0) || ((int64((_la-128)) & ^0x3f) == 0 && ((int64(1)<<(_la-128))&9007199254740991) != 0)) {
+ p.GetErrorHandler().RecoverInline(p)
+ } else {
+ p.GetErrorHandler().ReportMatch(p)
+ p.Consume()
+ }
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// INameContext is an interface to support dynamic dispatch.
+type INameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsNameContext differentiates from other interfaces.
+ IsNameContext()
+}
+
+type NameContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyNameContext() *NameContext {
+ var p = new(NameContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_name
+ return p
+}
+
+func InitEmptyNameContext(p *NameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_name
+}
+
+func (*NameContext) IsNameContext() {}
+
+func NewNameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *NameContext {
+ var p = new(NameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterName(s)
+ }
+}
+
+func (s *NameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitName(s)
+ }
+}
+
+func (p *SQLiteParser) Name() (localctx INameContext) {
+ localctx = NewNameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 178, SQLiteParserRULE_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2000)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFunction_nameContext is an interface to support dynamic dispatch.
+type IFunction_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_function_name
+ return p
+}
+
+func InitEmptyFunction_nameContext(p *Function_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_function_name
+}
+
+func (*Function_nameContext) IsFunction_nameContext() {}
+
+func NewFunction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Function_nameContext {
+ var p = new(Function_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterFunction_name(s)
+ }
+}
+
+func (s *Function_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFunction_name(s)
+ }
+}
+
+func (p *SQLiteParser) Function_name() (localctx IFunction_nameContext) {
+ localctx = NewFunction_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 180, SQLiteParserRULE_function_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2002)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISchema_nameContext is an interface to support dynamic dispatch.
+type ISchema_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsSchema_nameContext differentiates from other interfaces.
+ IsSchema_nameContext()
+}
+
+type Schema_nameContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptySchema_nameContext() *Schema_nameContext {
+ var p = new(Schema_nameContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_schema_name
+ return p
+}
+
+func InitEmptySchema_nameContext(p *Schema_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_schema_name
+}
+
+func (*Schema_nameContext) IsSchema_nameContext() {}
+
+func NewSchema_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Schema_nameContext {
+ var p = new(Schema_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_schema_name
+
+ return p
+}
+
+func (s *Schema_nameContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Schema_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 *Schema_nameContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Schema_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Schema_nameContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterSchema_name(s)
+ }
+}
+
+func (s *Schema_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSchema_name(s)
+ }
+}
+
+func (p *SQLiteParser) Schema_name() (localctx ISchema_nameContext) {
+ localctx = NewSchema_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 182, SQLiteParserRULE_schema_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2004)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ITable_nameContext is an interface to support dynamic dispatch.
+type ITable_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_name
+ return p
+}
+
+func InitEmptyTable_nameContext(p *Table_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_name
+}
+
+func (*Table_nameContext) IsTable_nameContext() {}
+
+func NewTable_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_nameContext {
+ var p = new(Table_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterTable_name(s)
+ }
+}
+
+func (s *Table_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitTable_name(s)
+ }
+}
+
+func (p *SQLiteParser) Table_name() (localctx ITable_nameContext) {
+ localctx = NewTable_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 184, SQLiteParserRULE_table_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2006)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// 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
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_or_index_name
+ return p
+}
+
+func InitEmptyTable_or_index_nameContext(p *Table_or_index_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_or_index_name
+}
+
+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)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterTable_or_index_name(s)
+ }
+}
+
+func (s *Table_or_index_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitTable_or_index_name(s)
+ }
+}
+
+func (p *SQLiteParser) Table_or_index_name() (localctx ITable_or_index_nameContext) {
+ localctx = NewTable_or_index_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 186, SQLiteParserRULE_table_or_index_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2008)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IColumn_nameContext is an interface to support dynamic dispatch.
+type IColumn_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_name
+ return p
+}
+
+func InitEmptyColumn_nameContext(p *Column_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_column_name
+}
+
+func (*Column_nameContext) IsColumn_nameContext() {}
+
+func NewColumn_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Column_nameContext {
+ var p = new(Column_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterColumn_name(s)
+ }
+}
+
+func (s *Column_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitColumn_name(s)
+ }
+}
+
+func (p *SQLiteParser) Column_name() (localctx IColumn_nameContext) {
+ localctx = NewColumn_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 188, SQLiteParserRULE_column_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2010)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ICollation_nameContext is an interface to support dynamic dispatch.
+type ICollation_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_collation_name
+ return p
+}
+
+func InitEmptyCollation_nameContext(p *Collation_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_collation_name
+}
+
+func (*Collation_nameContext) IsCollation_nameContext() {}
+
+func NewCollation_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Collation_nameContext {
+ var p = new(Collation_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterCollation_name(s)
+ }
+}
+
+func (s *Collation_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitCollation_name(s)
+ }
+}
+
+func (p *SQLiteParser) Collation_name() (localctx ICollation_nameContext) {
+ localctx = NewCollation_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 190, SQLiteParserRULE_collation_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2012)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IForeign_tableContext is an interface to support dynamic dispatch.
+type IForeign_tableContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_foreign_table
+ return p
+}
+
+func InitEmptyForeign_tableContext(p *Foreign_tableContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_foreign_table
+}
+
+func (*Foreign_tableContext) IsForeign_tableContext() {}
+
+func NewForeign_tableContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Foreign_tableContext {
+ var p = new(Foreign_tableContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterForeign_table(s)
+ }
+}
+
+func (s *Foreign_tableContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitForeign_table(s)
+ }
+}
+
+func (p *SQLiteParser) Foreign_table() (localctx IForeign_tableContext) {
+ localctx = NewForeign_tableContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 192, SQLiteParserRULE_foreign_table)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2014)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IIndex_nameContext is an interface to support dynamic dispatch.
+type IIndex_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_index_name
+ return p
+}
+
+func InitEmptyIndex_nameContext(p *Index_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_index_name
+}
+
+func (*Index_nameContext) IsIndex_nameContext() {}
+
+func NewIndex_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Index_nameContext {
+ var p = new(Index_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterIndex_name(s)
+ }
+}
+
+func (s *Index_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitIndex_name(s)
+ }
+}
+
+func (p *SQLiteParser) Index_name() (localctx IIndex_nameContext) {
+ localctx = NewIndex_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 194, SQLiteParserRULE_index_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2016)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ITrigger_nameContext is an interface to support dynamic dispatch.
+type ITrigger_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_trigger_name
+ return p
+}
+
+func InitEmptyTrigger_nameContext(p *Trigger_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_trigger_name
+}
+
+func (*Trigger_nameContext) IsTrigger_nameContext() {}
+
+func NewTrigger_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Trigger_nameContext {
+ var p = new(Trigger_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterTrigger_name(s)
+ }
+}
+
+func (s *Trigger_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitTrigger_name(s)
+ }
+}
+
+func (p *SQLiteParser) Trigger_name() (localctx ITrigger_nameContext) {
+ localctx = NewTrigger_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 196, SQLiteParserRULE_trigger_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2018)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IView_nameContext is an interface to support dynamic dispatch.
+type IView_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_view_name
+ return p
+}
+
+func InitEmptyView_nameContext(p *View_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_view_name
+}
+
+func (*View_nameContext) IsView_nameContext() {}
+
+func NewView_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *View_nameContext {
+ var p = new(View_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterView_name(s)
+ }
+}
+
+func (s *View_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitView_name(s)
+ }
+}
+
+func (p *SQLiteParser) View_name() (localctx IView_nameContext) {
+ localctx = NewView_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 198, SQLiteParserRULE_view_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2020)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IModule_nameContext is an interface to support dynamic dispatch.
+type IModule_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_module_name
+ return p
+}
+
+func InitEmptyModule_nameContext(p *Module_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_module_name
+}
+
+func (*Module_nameContext) IsModule_nameContext() {}
+
+func NewModule_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Module_nameContext {
+ var p = new(Module_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterModule_name(s)
+ }
+}
+
+func (s *Module_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitModule_name(s)
+ }
+}
+
+func (p *SQLiteParser) Module_name() (localctx IModule_nameContext) {
+ localctx = NewModule_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 200, SQLiteParserRULE_module_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2022)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IPragma_nameContext is an interface to support dynamic dispatch.
+type IPragma_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_pragma_name
+ return p
+}
+
+func InitEmptyPragma_nameContext(p *Pragma_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_pragma_name
+}
+
+func (*Pragma_nameContext) IsPragma_nameContext() {}
+
+func NewPragma_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Pragma_nameContext {
+ var p = new(Pragma_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterPragma_name(s)
+ }
+}
+
+func (s *Pragma_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitPragma_name(s)
+ }
+}
+
+func (p *SQLiteParser) Pragma_name() (localctx IPragma_nameContext) {
+ localctx = NewPragma_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 202, SQLiteParserRULE_pragma_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2024)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISavepoint_nameContext is an interface to support dynamic dispatch.
+type ISavepoint_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_savepoint_name
+ return p
+}
+
+func InitEmptySavepoint_nameContext(p *Savepoint_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_savepoint_name
+}
+
+func (*Savepoint_nameContext) IsSavepoint_nameContext() {}
+
+func NewSavepoint_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Savepoint_nameContext {
+ var p = new(Savepoint_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterSavepoint_name(s)
+ }
+}
+
+func (s *Savepoint_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSavepoint_name(s)
+ }
+}
+
+func (p *SQLiteParser) Savepoint_name() (localctx ISavepoint_nameContext) {
+ localctx = NewSavepoint_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 204, SQLiteParserRULE_savepoint_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2026)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ITable_aliasContext is an interface to support dynamic dispatch.
+type ITable_aliasContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_alias
+ return p
+}
+
+func InitEmptyTable_aliasContext(p *Table_aliasContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_alias
+}
+
+func (*Table_aliasContext) IsTable_aliasContext() {}
+
+func NewTable_aliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_aliasContext {
+ var p = new(Table_aliasContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterTable_alias(s)
+ }
+}
+
+func (s *Table_aliasContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitTable_alias(s)
+ }
+}
+
+func (p *SQLiteParser) Table_alias() (localctx ITable_aliasContext) {
+ localctx = NewTable_aliasContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 206, SQLiteParserRULE_table_alias)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2028)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ITransaction_nameContext is an interface to support dynamic dispatch.
+type ITransaction_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_transaction_name
+ return p
+}
+
+func InitEmptyTransaction_nameContext(p *Transaction_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_transaction_name
+}
+
+func (*Transaction_nameContext) IsTransaction_nameContext() {}
+
+func NewTransaction_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Transaction_nameContext {
+ var p = new(Transaction_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_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.(SQLiteParserListener); ok {
+ listenerT.EnterTransaction_name(s)
+ }
+}
+
+func (s *Transaction_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitTransaction_name(s)
+ }
+}
+
+func (p *SQLiteParser) Transaction_name() (localctx ITransaction_nameContext) {
+ localctx = NewTransaction_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 208, SQLiteParserRULE_transaction_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2030)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IWindow_nameContext is an interface to support dynamic dispatch.
+type IWindow_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsWindow_nameContext differentiates from other interfaces.
+ IsWindow_nameContext()
+}
+
+type Window_nameContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyWindow_nameContext() *Window_nameContext {
+ var p = new(Window_nameContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_window_name
+ return p
+}
+
+func InitEmptyWindow_nameContext(p *Window_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_window_name
+}
+
+func (*Window_nameContext) IsWindow_nameContext() {}
+
+func NewWindow_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Window_nameContext {
+ var p = new(Window_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_window_name
+
+ return p
+}
+
+func (s *Window_nameContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Window_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 *Window_nameContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Window_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Window_nameContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterWindow_name(s)
+ }
+}
+
+func (s *Window_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitWindow_name(s)
+ }
+}
+
+func (p *SQLiteParser) Window_name() (localctx IWindow_nameContext) {
+ localctx = NewWindow_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 210, SQLiteParserRULE_window_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2032)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IAliasContext is an interface to support dynamic dispatch.
+type IAliasContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsAliasContext differentiates from other interfaces.
+ IsAliasContext()
+}
+
+type AliasContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyAliasContext() *AliasContext {
+ var p = new(AliasContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_alias
+ return p
+}
+
+func InitEmptyAliasContext(p *AliasContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_alias
+}
+
+func (*AliasContext) IsAliasContext() {}
+
+func NewAliasContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *AliasContext {
+ var p = new(AliasContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_alias
+
+ return p
+}
+
+func (s *AliasContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *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 *AliasContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *AliasContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *AliasContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterAlias(s)
+ }
+}
+
+func (s *AliasContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitAlias(s)
+ }
+}
+
+func (p *SQLiteParser) Alias() (localctx IAliasContext) {
+ localctx = NewAliasContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 212, SQLiteParserRULE_alias)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2034)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IFilenameContext is an interface to support dynamic dispatch.
+type IFilenameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsFilenameContext differentiates from other interfaces.
+ IsFilenameContext()
+}
+
+type FilenameContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyFilenameContext() *FilenameContext {
+ var p = new(FilenameContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_filename
+ return p
+}
+
+func InitEmptyFilenameContext(p *FilenameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_filename
+}
+
+func (*FilenameContext) IsFilenameContext() {}
+
+func NewFilenameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *FilenameContext {
+ var p = new(FilenameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_filename
+
+ return p
+}
+
+func (s *FilenameContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *FilenameContext) 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 *FilenameContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *FilenameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *FilenameContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterFilename(s)
+ }
+}
+
+func (s *FilenameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitFilename(s)
+ }
+}
+
+func (p *SQLiteParser) Filename() (localctx IFilenameContext) {
+ localctx = NewFilenameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 214, SQLiteParserRULE_filename)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2036)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IBase_window_nameContext is an interface to support dynamic dispatch.
+type IBase_window_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsBase_window_nameContext differentiates from other interfaces.
+ IsBase_window_nameContext()
+}
+
+type Base_window_nameContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyBase_window_nameContext() *Base_window_nameContext {
+ var p = new(Base_window_nameContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_base_window_name
+ return p
+}
+
+func InitEmptyBase_window_nameContext(p *Base_window_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_base_window_name
+}
+
+func (*Base_window_nameContext) IsBase_window_nameContext() {}
+
+func NewBase_window_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Base_window_nameContext {
+ var p = new(Base_window_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_base_window_name
+
+ return p
+}
+
+func (s *Base_window_nameContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Base_window_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 *Base_window_nameContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Base_window_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Base_window_nameContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterBase_window_name(s)
+ }
+}
+
+func (s *Base_window_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitBase_window_name(s)
+ }
+}
+
+func (p *SQLiteParser) Base_window_name() (localctx IBase_window_nameContext) {
+ localctx = NewBase_window_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 216, SQLiteParserRULE_base_window_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2038)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ISimple_funcContext is an interface to support dynamic dispatch.
+type ISimple_funcContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsSimple_funcContext differentiates from other interfaces.
+ IsSimple_funcContext()
+}
+
+type Simple_funcContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptySimple_funcContext() *Simple_funcContext {
+ var p = new(Simple_funcContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_simple_func
+ return p
+}
+
+func InitEmptySimple_funcContext(p *Simple_funcContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_simple_func
+}
+
+func (*Simple_funcContext) IsSimple_funcContext() {}
+
+func NewSimple_funcContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Simple_funcContext {
+ var p = new(Simple_funcContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_simple_func
+
+ return p
+}
+
+func (s *Simple_funcContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Simple_funcContext) 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 *Simple_funcContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Simple_funcContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Simple_funcContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterSimple_func(s)
+ }
+}
+
+func (s *Simple_funcContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitSimple_func(s)
+ }
+}
+
+func (p *SQLiteParser) Simple_func() (localctx ISimple_funcContext) {
+ localctx = NewSimple_funcContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 218, SQLiteParserRULE_simple_func)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2040)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IAggregate_funcContext is an interface to support dynamic dispatch.
+type IAggregate_funcContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsAggregate_funcContext differentiates from other interfaces.
+ IsAggregate_funcContext()
+}
+
+type Aggregate_funcContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyAggregate_funcContext() *Aggregate_funcContext {
+ var p = new(Aggregate_funcContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_aggregate_func
+ return p
+}
+
+func InitEmptyAggregate_funcContext(p *Aggregate_funcContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_aggregate_func
+}
+
+func (*Aggregate_funcContext) IsAggregate_funcContext() {}
+
+func NewAggregate_funcContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Aggregate_funcContext {
+ var p = new(Aggregate_funcContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_aggregate_func
+
+ return p
+}
+
+func (s *Aggregate_funcContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Aggregate_funcContext) 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 *Aggregate_funcContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Aggregate_funcContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Aggregate_funcContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterAggregate_func(s)
+ }
+}
+
+func (s *Aggregate_funcContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitAggregate_func(s)
+ }
+}
+
+func (p *SQLiteParser) Aggregate_func() (localctx IAggregate_funcContext) {
+ localctx = NewAggregate_funcContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 220, SQLiteParserRULE_aggregate_func)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2042)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// ITable_function_nameContext is an interface to support dynamic dispatch.
+type ITable_function_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ Any_name() IAny_nameContext
+
+ // IsTable_function_nameContext differentiates from other interfaces.
+ IsTable_function_nameContext()
+}
+
+type Table_function_nameContext struct {
+ antlr.BaseParserRuleContext
+ parser antlr.Parser
+}
+
+func NewEmptyTable_function_nameContext() *Table_function_nameContext {
+ var p = new(Table_function_nameContext)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_function_name
+ return p
+}
+
+func InitEmptyTable_function_nameContext(p *Table_function_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_table_function_name
+}
+
+func (*Table_function_nameContext) IsTable_function_nameContext() {}
+
+func NewTable_function_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Table_function_nameContext {
+ var p = new(Table_function_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_table_function_name
+
+ return p
+}
+
+func (s *Table_function_nameContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Table_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 *Table_function_nameContext) GetRuleContext() antlr.RuleContext {
+ return s
+}
+
+func (s *Table_function_nameContext) ToStringTree(ruleNames []string, recog antlr.Recognizer) string {
+ return antlr.TreesStringTree(s, ruleNames, recog)
+}
+
+func (s *Table_function_nameContext) EnterRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.EnterTable_function_name(s)
+ }
+}
+
+func (s *Table_function_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitTable_function_name(s)
+ }
+}
+
+func (p *SQLiteParser) Table_function_name() (localctx ITable_function_nameContext) {
+ localctx = NewTable_function_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 222, SQLiteParserRULE_table_function_name)
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2044)
+ p.Any_name()
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+// IAny_nameContext is an interface to support dynamic dispatch.
+type IAny_nameContext interface {
+ antlr.ParserRuleContext
+
+ // GetParser returns the parser.
+ GetParser() antlr.Parser
+
+ // Getter signatures
+ IDENTIFIER() antlr.TerminalNode
+ Keyword() IKeywordContext
+ STRING_LITERAL() antlr.TerminalNode
+ OPEN_PAR() antlr.TerminalNode
+ Any_name() IAny_nameContext
+ CLOSE_PAR() antlr.TerminalNode
+
+ // 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)
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_any_name
+ return p
+}
+
+func InitEmptyAny_nameContext(p *Any_nameContext) {
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, nil, -1)
+ p.RuleIndex = SQLiteParserRULE_any_name
+}
+
+func (*Any_nameContext) IsAny_nameContext() {}
+
+func NewAny_nameContext(parser antlr.Parser, parent antlr.ParserRuleContext, invokingState int) *Any_nameContext {
+ var p = new(Any_nameContext)
+
+ antlr.InitBaseParserRuleContext(&p.BaseParserRuleContext, parent, invokingState)
+
+ p.parser = parser
+ p.RuleIndex = SQLiteParserRULE_any_name
+
+ return p
+}
+
+func (s *Any_nameContext) GetParser() antlr.Parser { return s.parser }
+
+func (s *Any_nameContext) IDENTIFIER() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserIDENTIFIER, 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(SQLiteParserSTRING_LITERAL, 0)
+}
+
+func (s *Any_nameContext) OPEN_PAR() antlr.TerminalNode {
+ return s.GetToken(SQLiteParserOPEN_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(SQLiteParserCLOSE_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.(SQLiteParserListener); ok {
+ listenerT.EnterAny_name(s)
+ }
+}
+
+func (s *Any_nameContext) ExitRule(listener antlr.ParseTreeListener) {
+ if listenerT, ok := listener.(SQLiteParserListener); ok {
+ listenerT.ExitAny_name(s)
+ }
+}
+
+func (p *SQLiteParser) Any_name() (localctx IAny_nameContext) {
+ localctx = NewAny_nameContext(p, p.GetParserRuleContext(), p.GetState())
+ p.EnterRule(localctx, 224, SQLiteParserRULE_any_name)
+ p.SetState(2053)
+ p.GetErrorHandler().Sync(p)
+ if p.HasError() {
+ goto errorExit
+ }
+
+ switch p.GetTokenStream().LA(1) {
+ case SQLiteParserIDENTIFIER:
+ p.EnterOuterAlt(localctx, 1)
+ {
+ p.SetState(2046)
+ p.Match(SQLiteParserIDENTIFIER)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserABORT_, SQLiteParserACTION_, SQLiteParserADD_, SQLiteParserAFTER_, SQLiteParserALL_, SQLiteParserALTER_, SQLiteParserANALYZE_, SQLiteParserAND_, SQLiteParserAS_, SQLiteParserASC_, SQLiteParserATTACH_, SQLiteParserAUTOINCREMENT_, SQLiteParserBEFORE_, SQLiteParserBEGIN_, SQLiteParserBETWEEN_, SQLiteParserBY_, SQLiteParserCASCADE_, SQLiteParserCASE_, SQLiteParserCAST_, SQLiteParserCHECK_, SQLiteParserCOLLATE_, SQLiteParserCOLUMN_, SQLiteParserCOMMIT_, SQLiteParserCONFLICT_, SQLiteParserCONSTRAINT_, SQLiteParserCREATE_, SQLiteParserCROSS_, SQLiteParserCURRENT_DATE_, SQLiteParserCURRENT_TIME_, SQLiteParserCURRENT_TIMESTAMP_, SQLiteParserDATABASE_, SQLiteParserDEFAULT_, SQLiteParserDEFERRABLE_, SQLiteParserDEFERRED_, SQLiteParserDELETE_, SQLiteParserDESC_, SQLiteParserDETACH_, SQLiteParserDISTINCT_, SQLiteParserDROP_, SQLiteParserEACH_, SQLiteParserELSE_, SQLiteParserEND_, SQLiteParserESCAPE_, SQLiteParserEXCEPT_, SQLiteParserEXCLUSIVE_, SQLiteParserEXISTS_, SQLiteParserEXPLAIN_, SQLiteParserFAIL_, SQLiteParserFOR_, SQLiteParserFOREIGN_, SQLiteParserFROM_, SQLiteParserFULL_, SQLiteParserGLOB_, SQLiteParserGROUP_, SQLiteParserHAVING_, SQLiteParserIF_, SQLiteParserIGNORE_, SQLiteParserIMMEDIATE_, SQLiteParserIN_, SQLiteParserINDEX_, SQLiteParserINDEXED_, SQLiteParserINITIALLY_, SQLiteParserINNER_, SQLiteParserINSERT_, SQLiteParserINSTEAD_, SQLiteParserINTERSECT_, SQLiteParserINTO_, SQLiteParserIS_, SQLiteParserISNULL_, SQLiteParserJOIN_, SQLiteParserKEY_, SQLiteParserLEFT_, SQLiteParserLIKE_, SQLiteParserLIMIT_, SQLiteParserMATCH_, SQLiteParserNATURAL_, SQLiteParserNO_, SQLiteParserNOT_, SQLiteParserNOTNULL_, SQLiteParserNULL_, SQLiteParserOF_, SQLiteParserOFFSET_, SQLiteParserON_, SQLiteParserOR_, SQLiteParserORDER_, SQLiteParserOUTER_, SQLiteParserPLAN_, SQLiteParserPRAGMA_, SQLiteParserPRIMARY_, SQLiteParserQUERY_, SQLiteParserRAISE_, SQLiteParserRECURSIVE_, SQLiteParserREFERENCES_, SQLiteParserREGEXP_, SQLiteParserREINDEX_, SQLiteParserRELEASE_, SQLiteParserRENAME_, SQLiteParserREPLACE_, SQLiteParserRESTRICT_, SQLiteParserRIGHT_, SQLiteParserROLLBACK_, SQLiteParserROW_, SQLiteParserROWS_, SQLiteParserSAVEPOINT_, SQLiteParserSELECT_, SQLiteParserSET_, SQLiteParserTABLE_, SQLiteParserTEMP_, SQLiteParserTEMPORARY_, SQLiteParserTHEN_, SQLiteParserTO_, SQLiteParserTRANSACTION_, SQLiteParserTRIGGER_, SQLiteParserUNION_, SQLiteParserUNIQUE_, SQLiteParserUPDATE_, SQLiteParserUSING_, SQLiteParserVACUUM_, SQLiteParserVALUES_, SQLiteParserVIEW_, SQLiteParserVIRTUAL_, SQLiteParserWHEN_, SQLiteParserWHERE_, SQLiteParserWITH_, SQLiteParserWITHOUT_, SQLiteParserFIRST_VALUE_, SQLiteParserOVER_, SQLiteParserPARTITION_, SQLiteParserRANGE_, SQLiteParserPRECEDING_, SQLiteParserUNBOUNDED_, SQLiteParserCURRENT_, SQLiteParserFOLLOWING_, SQLiteParserCUME_DIST_, SQLiteParserDENSE_RANK_, SQLiteParserLAG_, SQLiteParserLAST_VALUE_, SQLiteParserLEAD_, SQLiteParserNTH_VALUE_, SQLiteParserNTILE_, SQLiteParserPERCENT_RANK_, SQLiteParserRANK_, SQLiteParserROW_NUMBER_, SQLiteParserGENERATED_, SQLiteParserALWAYS_, SQLiteParserSTORED_, SQLiteParserTRUE_, SQLiteParserFALSE_, SQLiteParserWINDOW_, SQLiteParserNULLS_, SQLiteParserFIRST_, SQLiteParserLAST_, SQLiteParserFILTER_, SQLiteParserGROUPS_, SQLiteParserEXCLUDE_:
+ p.EnterOuterAlt(localctx, 2)
+ {
+ p.SetState(2047)
+ p.Keyword()
+ }
+
+ case SQLiteParserSTRING_LITERAL:
+ p.EnterOuterAlt(localctx, 3)
+ {
+ p.SetState(2048)
+ p.Match(SQLiteParserSTRING_LITERAL)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ case SQLiteParserOPEN_PAR:
+ p.EnterOuterAlt(localctx, 4)
+ {
+ p.SetState(2049)
+ p.Match(SQLiteParserOPEN_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+ {
+ p.SetState(2050)
+ p.Any_name()
+ }
+ {
+ p.SetState(2051)
+ p.Match(SQLiteParserCLOSE_PAR)
+ if p.HasError() {
+ // Recognition error - abort rule
+ goto errorExit
+ }
+ }
+
+ default:
+ p.SetError(antlr.NewNoViableAltException(p, nil, nil, nil, nil, nil))
+ goto errorExit
+ }
+
+errorExit:
+ if p.HasError() {
+ v := p.GetError()
+ localctx.SetException(v)
+ p.GetErrorHandler().ReportError(p, v)
+ p.GetErrorHandler().Recover(p, v)
+ p.SetError(nil)
+ }
+ p.ExitRule()
+ return localctx
+ goto errorExit // Trick to prevent compiler error if the label is not used
+}
+
+func (p *SQLiteParser) Sempred(localctx antlr.RuleContext, ruleIndex, predIndex int) bool {
+ switch ruleIndex {
+ case 32:
+ 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 *SQLiteParser) Expr_Sempred(localctx antlr.RuleContext, predIndex int) bool {
+ 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))
+ }
+}
diff --git a/sqliteparser/sqliteparser_base_listener.go b/sqliteparser/sqliteparser_base_listener.go
new file mode 100644
index 0000000..fa0594a
--- /dev/null
+++ b/sqliteparser/sqliteparser_base_listener.go
@@ -0,0 +1,708 @@
+// Code generated from SQLiteParser.g4 by ANTLR 4.13.1. DO NOT EDIT.
+
+package sqliteparser // SQLiteParser
+import "github.com/antlr4-go/antlr/v4"
+
+// BaseSQLiteParserListener is a complete listener for a parse tree produced by SQLiteParser.
+type BaseSQLiteParserListener struct{}
+
+var _ SQLiteParserListener = &BaseSQLiteParserListener{}
+
+// VisitTerminal is called when a terminal node is visited.
+func (s *BaseSQLiteParserListener) VisitTerminal(node antlr.TerminalNode) {}
+
+// VisitErrorNode is called when an error node is visited.
+func (s *BaseSQLiteParserListener) VisitErrorNode(node antlr.ErrorNode) {}
+
+// EnterEveryRule is called when any rule is entered.
+func (s *BaseSQLiteParserListener) EnterEveryRule(ctx antlr.ParserRuleContext) {}
+
+// ExitEveryRule is called when any rule is exited.
+func (s *BaseSQLiteParserListener) ExitEveryRule(ctx antlr.ParserRuleContext) {}
+
+// EnterParse is called when production parse is entered.
+func (s *BaseSQLiteParserListener) EnterParse(ctx *ParseContext) {}
+
+// ExitParse is called when production parse is exited.
+func (s *BaseSQLiteParserListener) ExitParse(ctx *ParseContext) {}
+
+// EnterSql_stmt_list is called when production sql_stmt_list is entered.
+func (s *BaseSQLiteParserListener) EnterSql_stmt_list(ctx *Sql_stmt_listContext) {}
+
+// ExitSql_stmt_list is called when production sql_stmt_list is exited.
+func (s *BaseSQLiteParserListener) ExitSql_stmt_list(ctx *Sql_stmt_listContext) {}
+
+// EnterSql_stmt is called when production sql_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterSql_stmt(ctx *Sql_stmtContext) {}
+
+// ExitSql_stmt is called when production sql_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitSql_stmt(ctx *Sql_stmtContext) {}
+
+// EnterAlter_table_stmt is called when production alter_table_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterAlter_table_stmt(ctx *Alter_table_stmtContext) {}
+
+// ExitAlter_table_stmt is called when production alter_table_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitAlter_table_stmt(ctx *Alter_table_stmtContext) {}
+
+// EnterAnalyze_stmt is called when production analyze_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterAnalyze_stmt(ctx *Analyze_stmtContext) {}
+
+// ExitAnalyze_stmt is called when production analyze_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitAnalyze_stmt(ctx *Analyze_stmtContext) {}
+
+// EnterAttach_stmt is called when production attach_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterAttach_stmt(ctx *Attach_stmtContext) {}
+
+// ExitAttach_stmt is called when production attach_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitAttach_stmt(ctx *Attach_stmtContext) {}
+
+// EnterBegin_stmt is called when production begin_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterBegin_stmt(ctx *Begin_stmtContext) {}
+
+// ExitBegin_stmt is called when production begin_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitBegin_stmt(ctx *Begin_stmtContext) {}
+
+// EnterCommit_stmt is called when production commit_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterCommit_stmt(ctx *Commit_stmtContext) {}
+
+// ExitCommit_stmt is called when production commit_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitCommit_stmt(ctx *Commit_stmtContext) {}
+
+// EnterRollback_stmt is called when production rollback_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterRollback_stmt(ctx *Rollback_stmtContext) {}
+
+// ExitRollback_stmt is called when production rollback_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitRollback_stmt(ctx *Rollback_stmtContext) {}
+
+// EnterSavepoint_stmt is called when production savepoint_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterSavepoint_stmt(ctx *Savepoint_stmtContext) {}
+
+// ExitSavepoint_stmt is called when production savepoint_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitSavepoint_stmt(ctx *Savepoint_stmtContext) {}
+
+// EnterRelease_stmt is called when production release_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterRelease_stmt(ctx *Release_stmtContext) {}
+
+// ExitRelease_stmt is called when production release_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitRelease_stmt(ctx *Release_stmtContext) {}
+
+// EnterCreate_index_stmt is called when production create_index_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterCreate_index_stmt(ctx *Create_index_stmtContext) {}
+
+// ExitCreate_index_stmt is called when production create_index_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitCreate_index_stmt(ctx *Create_index_stmtContext) {}
+
+// EnterIndexed_column is called when production indexed_column is entered.
+func (s *BaseSQLiteParserListener) EnterIndexed_column(ctx *Indexed_columnContext) {}
+
+// ExitIndexed_column is called when production indexed_column is exited.
+func (s *BaseSQLiteParserListener) ExitIndexed_column(ctx *Indexed_columnContext) {}
+
+// EnterCreate_table_stmt is called when production create_table_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterCreate_table_stmt(ctx *Create_table_stmtContext) {}
+
+// ExitCreate_table_stmt is called when production create_table_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitCreate_table_stmt(ctx *Create_table_stmtContext) {}
+
+// EnterColumn_def is called when production column_def is entered.
+func (s *BaseSQLiteParserListener) EnterColumn_def(ctx *Column_defContext) {}
+
+// ExitColumn_def is called when production column_def is exited.
+func (s *BaseSQLiteParserListener) ExitColumn_def(ctx *Column_defContext) {}
+
+// EnterType_name is called when production type_name is entered.
+func (s *BaseSQLiteParserListener) EnterType_name(ctx *Type_nameContext) {}
+
+// ExitType_name is called when production type_name is exited.
+func (s *BaseSQLiteParserListener) ExitType_name(ctx *Type_nameContext) {}
+
+// EnterColumn_constraint is called when production column_constraint is entered.
+func (s *BaseSQLiteParserListener) EnterColumn_constraint(ctx *Column_constraintContext) {}
+
+// ExitColumn_constraint is called when production column_constraint is exited.
+func (s *BaseSQLiteParserListener) ExitColumn_constraint(ctx *Column_constraintContext) {}
+
+// EnterSigned_number is called when production signed_number is entered.
+func (s *BaseSQLiteParserListener) EnterSigned_number(ctx *Signed_numberContext) {}
+
+// ExitSigned_number is called when production signed_number is exited.
+func (s *BaseSQLiteParserListener) ExitSigned_number(ctx *Signed_numberContext) {}
+
+// EnterTable_constraint is called when production table_constraint is entered.
+func (s *BaseSQLiteParserListener) EnterTable_constraint(ctx *Table_constraintContext) {}
+
+// ExitTable_constraint is called when production table_constraint is exited.
+func (s *BaseSQLiteParserListener) ExitTable_constraint(ctx *Table_constraintContext) {}
+
+// EnterForeign_key_clause is called when production foreign_key_clause is entered.
+func (s *BaseSQLiteParserListener) EnterForeign_key_clause(ctx *Foreign_key_clauseContext) {}
+
+// ExitForeign_key_clause is called when production foreign_key_clause is exited.
+func (s *BaseSQLiteParserListener) ExitForeign_key_clause(ctx *Foreign_key_clauseContext) {}
+
+// EnterConflict_clause is called when production conflict_clause is entered.
+func (s *BaseSQLiteParserListener) EnterConflict_clause(ctx *Conflict_clauseContext) {}
+
+// ExitConflict_clause is called when production conflict_clause is exited.
+func (s *BaseSQLiteParserListener) ExitConflict_clause(ctx *Conflict_clauseContext) {}
+
+// EnterCreate_trigger_stmt is called when production create_trigger_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {}
+
+// ExitCreate_trigger_stmt is called when production create_trigger_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitCreate_trigger_stmt(ctx *Create_trigger_stmtContext) {}
+
+// EnterCreate_view_stmt is called when production create_view_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterCreate_view_stmt(ctx *Create_view_stmtContext) {}
+
+// ExitCreate_view_stmt is called when production create_view_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitCreate_view_stmt(ctx *Create_view_stmtContext) {}
+
+// EnterCreate_virtual_table_stmt is called when production create_virtual_table_stmt is entered.
+func (s *BaseSQLiteParserListener) 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 *BaseSQLiteParserListener) ExitCreate_virtual_table_stmt(ctx *Create_virtual_table_stmtContext) {
+}
+
+// EnterWith_clause is called when production with_clause is entered.
+func (s *BaseSQLiteParserListener) EnterWith_clause(ctx *With_clauseContext) {}
+
+// ExitWith_clause is called when production with_clause is exited.
+func (s *BaseSQLiteParserListener) ExitWith_clause(ctx *With_clauseContext) {}
+
+// EnterCte_table_name is called when production cte_table_name is entered.
+func (s *BaseSQLiteParserListener) EnterCte_table_name(ctx *Cte_table_nameContext) {}
+
+// ExitCte_table_name is called when production cte_table_name is exited.
+func (s *BaseSQLiteParserListener) ExitCte_table_name(ctx *Cte_table_nameContext) {}
+
+// EnterRecursive_cte is called when production recursive_cte is entered.
+func (s *BaseSQLiteParserListener) EnterRecursive_cte(ctx *Recursive_cteContext) {}
+
+// ExitRecursive_cte is called when production recursive_cte is exited.
+func (s *BaseSQLiteParserListener) ExitRecursive_cte(ctx *Recursive_cteContext) {}
+
+// EnterCommon_table_expression is called when production common_table_expression is entered.
+func (s *BaseSQLiteParserListener) EnterCommon_table_expression(ctx *Common_table_expressionContext) {
+}
+
+// ExitCommon_table_expression is called when production common_table_expression is exited.
+func (s *BaseSQLiteParserListener) ExitCommon_table_expression(ctx *Common_table_expressionContext) {}
+
+// EnterDelete_stmt is called when production delete_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterDelete_stmt(ctx *Delete_stmtContext) {}
+
+// ExitDelete_stmt is called when production delete_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitDelete_stmt(ctx *Delete_stmtContext) {}
+
+// EnterDelete_stmt_limited is called when production delete_stmt_limited is entered.
+func (s *BaseSQLiteParserListener) EnterDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {}
+
+// ExitDelete_stmt_limited is called when production delete_stmt_limited is exited.
+func (s *BaseSQLiteParserListener) ExitDelete_stmt_limited(ctx *Delete_stmt_limitedContext) {}
+
+// EnterDetach_stmt is called when production detach_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterDetach_stmt(ctx *Detach_stmtContext) {}
+
+// ExitDetach_stmt is called when production detach_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitDetach_stmt(ctx *Detach_stmtContext) {}
+
+// EnterDrop_stmt is called when production drop_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterDrop_stmt(ctx *Drop_stmtContext) {}
+
+// ExitDrop_stmt is called when production drop_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitDrop_stmt(ctx *Drop_stmtContext) {}
+
+// EnterExpr is called when production expr is entered.
+func (s *BaseSQLiteParserListener) EnterExpr(ctx *ExprContext) {}
+
+// ExitExpr is called when production expr is exited.
+func (s *BaseSQLiteParserListener) ExitExpr(ctx *ExprContext) {}
+
+// EnterRaise_function is called when production raise_function is entered.
+func (s *BaseSQLiteParserListener) EnterRaise_function(ctx *Raise_functionContext) {}
+
+// ExitRaise_function is called when production raise_function is exited.
+func (s *BaseSQLiteParserListener) ExitRaise_function(ctx *Raise_functionContext) {}
+
+// EnterLiteral_value is called when production literal_value is entered.
+func (s *BaseSQLiteParserListener) EnterLiteral_value(ctx *Literal_valueContext) {}
+
+// ExitLiteral_value is called when production literal_value is exited.
+func (s *BaseSQLiteParserListener) ExitLiteral_value(ctx *Literal_valueContext) {}
+
+// EnterValue_row is called when production value_row is entered.
+func (s *BaseSQLiteParserListener) EnterValue_row(ctx *Value_rowContext) {}
+
+// ExitValue_row is called when production value_row is exited.
+func (s *BaseSQLiteParserListener) ExitValue_row(ctx *Value_rowContext) {}
+
+// EnterValues_clause is called when production values_clause is entered.
+func (s *BaseSQLiteParserListener) EnterValues_clause(ctx *Values_clauseContext) {}
+
+// ExitValues_clause is called when production values_clause is exited.
+func (s *BaseSQLiteParserListener) ExitValues_clause(ctx *Values_clauseContext) {}
+
+// EnterInsert_stmt is called when production insert_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterInsert_stmt(ctx *Insert_stmtContext) {}
+
+// ExitInsert_stmt is called when production insert_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitInsert_stmt(ctx *Insert_stmtContext) {}
+
+// EnterReturning_clause is called when production returning_clause is entered.
+func (s *BaseSQLiteParserListener) EnterReturning_clause(ctx *Returning_clauseContext) {}
+
+// ExitReturning_clause is called when production returning_clause is exited.
+func (s *BaseSQLiteParserListener) ExitReturning_clause(ctx *Returning_clauseContext) {}
+
+// EnterUpsert_clause is called when production upsert_clause is entered.
+func (s *BaseSQLiteParserListener) EnterUpsert_clause(ctx *Upsert_clauseContext) {}
+
+// ExitUpsert_clause is called when production upsert_clause is exited.
+func (s *BaseSQLiteParserListener) ExitUpsert_clause(ctx *Upsert_clauseContext) {}
+
+// EnterPragma_stmt is called when production pragma_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterPragma_stmt(ctx *Pragma_stmtContext) {}
+
+// ExitPragma_stmt is called when production pragma_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitPragma_stmt(ctx *Pragma_stmtContext) {}
+
+// EnterPragma_value is called when production pragma_value is entered.
+func (s *BaseSQLiteParserListener) EnterPragma_value(ctx *Pragma_valueContext) {}
+
+// ExitPragma_value is called when production pragma_value is exited.
+func (s *BaseSQLiteParserListener) ExitPragma_value(ctx *Pragma_valueContext) {}
+
+// EnterReindex_stmt is called when production reindex_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterReindex_stmt(ctx *Reindex_stmtContext) {}
+
+// ExitReindex_stmt is called when production reindex_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitReindex_stmt(ctx *Reindex_stmtContext) {}
+
+// EnterSelect_stmt is called when production select_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterSelect_stmt(ctx *Select_stmtContext) {}
+
+// ExitSelect_stmt is called when production select_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitSelect_stmt(ctx *Select_stmtContext) {}
+
+// EnterJoin_clause is called when production join_clause is entered.
+func (s *BaseSQLiteParserListener) EnterJoin_clause(ctx *Join_clauseContext) {}
+
+// ExitJoin_clause is called when production join_clause is exited.
+func (s *BaseSQLiteParserListener) ExitJoin_clause(ctx *Join_clauseContext) {}
+
+// EnterSelect_core is called when production select_core is entered.
+func (s *BaseSQLiteParserListener) EnterSelect_core(ctx *Select_coreContext) {}
+
+// ExitSelect_core is called when production select_core is exited.
+func (s *BaseSQLiteParserListener) ExitSelect_core(ctx *Select_coreContext) {}
+
+// EnterFactored_select_stmt is called when production factored_select_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterFactored_select_stmt(ctx *Factored_select_stmtContext) {}
+
+// ExitFactored_select_stmt is called when production factored_select_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitFactored_select_stmt(ctx *Factored_select_stmtContext) {}
+
+// EnterSimple_select_stmt is called when production simple_select_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterSimple_select_stmt(ctx *Simple_select_stmtContext) {}
+
+// ExitSimple_select_stmt is called when production simple_select_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitSimple_select_stmt(ctx *Simple_select_stmtContext) {}
+
+// EnterCompound_select_stmt is called when production compound_select_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterCompound_select_stmt(ctx *Compound_select_stmtContext) {}
+
+// ExitCompound_select_stmt is called when production compound_select_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitCompound_select_stmt(ctx *Compound_select_stmtContext) {}
+
+// EnterTable_or_subquery is called when production table_or_subquery is entered.
+func (s *BaseSQLiteParserListener) EnterTable_or_subquery(ctx *Table_or_subqueryContext) {}
+
+// ExitTable_or_subquery is called when production table_or_subquery is exited.
+func (s *BaseSQLiteParserListener) ExitTable_or_subquery(ctx *Table_or_subqueryContext) {}
+
+// EnterResult_column is called when production result_column is entered.
+func (s *BaseSQLiteParserListener) EnterResult_column(ctx *Result_columnContext) {}
+
+// ExitResult_column is called when production result_column is exited.
+func (s *BaseSQLiteParserListener) ExitResult_column(ctx *Result_columnContext) {}
+
+// EnterJoin_operator is called when production join_operator is entered.
+func (s *BaseSQLiteParserListener) EnterJoin_operator(ctx *Join_operatorContext) {}
+
+// ExitJoin_operator is called when production join_operator is exited.
+func (s *BaseSQLiteParserListener) ExitJoin_operator(ctx *Join_operatorContext) {}
+
+// EnterJoin_constraint is called when production join_constraint is entered.
+func (s *BaseSQLiteParserListener) EnterJoin_constraint(ctx *Join_constraintContext) {}
+
+// ExitJoin_constraint is called when production join_constraint is exited.
+func (s *BaseSQLiteParserListener) ExitJoin_constraint(ctx *Join_constraintContext) {}
+
+// EnterCompound_operator is called when production compound_operator is entered.
+func (s *BaseSQLiteParserListener) EnterCompound_operator(ctx *Compound_operatorContext) {}
+
+// ExitCompound_operator is called when production compound_operator is exited.
+func (s *BaseSQLiteParserListener) ExitCompound_operator(ctx *Compound_operatorContext) {}
+
+// EnterUpdate_stmt is called when production update_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterUpdate_stmt(ctx *Update_stmtContext) {}
+
+// ExitUpdate_stmt is called when production update_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitUpdate_stmt(ctx *Update_stmtContext) {}
+
+// EnterColumn_name_list is called when production column_name_list is entered.
+func (s *BaseSQLiteParserListener) EnterColumn_name_list(ctx *Column_name_listContext) {}
+
+// ExitColumn_name_list is called when production column_name_list is exited.
+func (s *BaseSQLiteParserListener) ExitColumn_name_list(ctx *Column_name_listContext) {}
+
+// EnterUpdate_stmt_limited is called when production update_stmt_limited is entered.
+func (s *BaseSQLiteParserListener) EnterUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {}
+
+// ExitUpdate_stmt_limited is called when production update_stmt_limited is exited.
+func (s *BaseSQLiteParserListener) ExitUpdate_stmt_limited(ctx *Update_stmt_limitedContext) {}
+
+// EnterQualified_table_name is called when production qualified_table_name is entered.
+func (s *BaseSQLiteParserListener) EnterQualified_table_name(ctx *Qualified_table_nameContext) {}
+
+// ExitQualified_table_name is called when production qualified_table_name is exited.
+func (s *BaseSQLiteParserListener) ExitQualified_table_name(ctx *Qualified_table_nameContext) {}
+
+// EnterVacuum_stmt is called when production vacuum_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterVacuum_stmt(ctx *Vacuum_stmtContext) {}
+
+// ExitVacuum_stmt is called when production vacuum_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitVacuum_stmt(ctx *Vacuum_stmtContext) {}
+
+// EnterFilter_clause is called when production filter_clause is entered.
+func (s *BaseSQLiteParserListener) EnterFilter_clause(ctx *Filter_clauseContext) {}
+
+// ExitFilter_clause is called when production filter_clause is exited.
+func (s *BaseSQLiteParserListener) ExitFilter_clause(ctx *Filter_clauseContext) {}
+
+// EnterWindow_defn is called when production window_defn is entered.
+func (s *BaseSQLiteParserListener) EnterWindow_defn(ctx *Window_defnContext) {}
+
+// ExitWindow_defn is called when production window_defn is exited.
+func (s *BaseSQLiteParserListener) ExitWindow_defn(ctx *Window_defnContext) {}
+
+// EnterOver_clause is called when production over_clause is entered.
+func (s *BaseSQLiteParserListener) EnterOver_clause(ctx *Over_clauseContext) {}
+
+// ExitOver_clause is called when production over_clause is exited.
+func (s *BaseSQLiteParserListener) ExitOver_clause(ctx *Over_clauseContext) {}
+
+// EnterFrame_spec is called when production frame_spec is entered.
+func (s *BaseSQLiteParserListener) EnterFrame_spec(ctx *Frame_specContext) {}
+
+// ExitFrame_spec is called when production frame_spec is exited.
+func (s *BaseSQLiteParserListener) ExitFrame_spec(ctx *Frame_specContext) {}
+
+// EnterFrame_clause is called when production frame_clause is entered.
+func (s *BaseSQLiteParserListener) EnterFrame_clause(ctx *Frame_clauseContext) {}
+
+// ExitFrame_clause is called when production frame_clause is exited.
+func (s *BaseSQLiteParserListener) ExitFrame_clause(ctx *Frame_clauseContext) {}
+
+// EnterSimple_function_invocation is called when production simple_function_invocation is entered.
+func (s *BaseSQLiteParserListener) EnterSimple_function_invocation(ctx *Simple_function_invocationContext) {
+}
+
+// ExitSimple_function_invocation is called when production simple_function_invocation is exited.
+func (s *BaseSQLiteParserListener) ExitSimple_function_invocation(ctx *Simple_function_invocationContext) {
+}
+
+// EnterAggregate_function_invocation is called when production aggregate_function_invocation is entered.
+func (s *BaseSQLiteParserListener) EnterAggregate_function_invocation(ctx *Aggregate_function_invocationContext) {
+}
+
+// ExitAggregate_function_invocation is called when production aggregate_function_invocation is exited.
+func (s *BaseSQLiteParserListener) ExitAggregate_function_invocation(ctx *Aggregate_function_invocationContext) {
+}
+
+// EnterWindow_function_invocation is called when production window_function_invocation is entered.
+func (s *BaseSQLiteParserListener) EnterWindow_function_invocation(ctx *Window_function_invocationContext) {
+}
+
+// ExitWindow_function_invocation is called when production window_function_invocation is exited.
+func (s *BaseSQLiteParserListener) ExitWindow_function_invocation(ctx *Window_function_invocationContext) {
+}
+
+// EnterCommon_table_stmt is called when production common_table_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterCommon_table_stmt(ctx *Common_table_stmtContext) {}
+
+// ExitCommon_table_stmt is called when production common_table_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitCommon_table_stmt(ctx *Common_table_stmtContext) {}
+
+// EnterOrder_by_stmt is called when production order_by_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterOrder_by_stmt(ctx *Order_by_stmtContext) {}
+
+// ExitOrder_by_stmt is called when production order_by_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitOrder_by_stmt(ctx *Order_by_stmtContext) {}
+
+// EnterLimit_stmt is called when production limit_stmt is entered.
+func (s *BaseSQLiteParserListener) EnterLimit_stmt(ctx *Limit_stmtContext) {}
+
+// ExitLimit_stmt is called when production limit_stmt is exited.
+func (s *BaseSQLiteParserListener) ExitLimit_stmt(ctx *Limit_stmtContext) {}
+
+// EnterOrdering_term is called when production ordering_term is entered.
+func (s *BaseSQLiteParserListener) EnterOrdering_term(ctx *Ordering_termContext) {}
+
+// ExitOrdering_term is called when production ordering_term is exited.
+func (s *BaseSQLiteParserListener) ExitOrdering_term(ctx *Ordering_termContext) {}
+
+// EnterAsc_desc is called when production asc_desc is entered.
+func (s *BaseSQLiteParserListener) EnterAsc_desc(ctx *Asc_descContext) {}
+
+// ExitAsc_desc is called when production asc_desc is exited.
+func (s *BaseSQLiteParserListener) ExitAsc_desc(ctx *Asc_descContext) {}
+
+// EnterFrame_left is called when production frame_left is entered.
+func (s *BaseSQLiteParserListener) EnterFrame_left(ctx *Frame_leftContext) {}
+
+// ExitFrame_left is called when production frame_left is exited.
+func (s *BaseSQLiteParserListener) ExitFrame_left(ctx *Frame_leftContext) {}
+
+// EnterFrame_right is called when production frame_right is entered.
+func (s *BaseSQLiteParserListener) EnterFrame_right(ctx *Frame_rightContext) {}
+
+// ExitFrame_right is called when production frame_right is exited.
+func (s *BaseSQLiteParserListener) ExitFrame_right(ctx *Frame_rightContext) {}
+
+// EnterFrame_single is called when production frame_single is entered.
+func (s *BaseSQLiteParserListener) EnterFrame_single(ctx *Frame_singleContext) {}
+
+// ExitFrame_single is called when production frame_single is exited.
+func (s *BaseSQLiteParserListener) ExitFrame_single(ctx *Frame_singleContext) {}
+
+// EnterWindow_function is called when production window_function is entered.
+func (s *BaseSQLiteParserListener) EnterWindow_function(ctx *Window_functionContext) {}
+
+// ExitWindow_function is called when production window_function is exited.
+func (s *BaseSQLiteParserListener) ExitWindow_function(ctx *Window_functionContext) {}
+
+// EnterOffset is called when production offset is entered.
+func (s *BaseSQLiteParserListener) EnterOffset(ctx *OffsetContext) {}
+
+// ExitOffset is called when production offset is exited.
+func (s *BaseSQLiteParserListener) ExitOffset(ctx *OffsetContext) {}
+
+// EnterDefault_value is called when production default_value is entered.
+func (s *BaseSQLiteParserListener) EnterDefault_value(ctx *Default_valueContext) {}
+
+// ExitDefault_value is called when production default_value is exited.
+func (s *BaseSQLiteParserListener) ExitDefault_value(ctx *Default_valueContext) {}
+
+// EnterPartition_by is called when production partition_by is entered.
+func (s *BaseSQLiteParserListener) EnterPartition_by(ctx *Partition_byContext) {}
+
+// ExitPartition_by is called when production partition_by is exited.
+func (s *BaseSQLiteParserListener) ExitPartition_by(ctx *Partition_byContext) {}
+
+// EnterOrder_by_expr is called when production order_by_expr is entered.
+func (s *BaseSQLiteParserListener) EnterOrder_by_expr(ctx *Order_by_exprContext) {}
+
+// ExitOrder_by_expr is called when production order_by_expr is exited.
+func (s *BaseSQLiteParserListener) ExitOrder_by_expr(ctx *Order_by_exprContext) {}
+
+// EnterOrder_by_expr_asc_desc is called when production order_by_expr_asc_desc is entered.
+func (s *BaseSQLiteParserListener) EnterOrder_by_expr_asc_desc(ctx *Order_by_expr_asc_descContext) {}
+
+// ExitOrder_by_expr_asc_desc is called when production order_by_expr_asc_desc is exited.
+func (s *BaseSQLiteParserListener) ExitOrder_by_expr_asc_desc(ctx *Order_by_expr_asc_descContext) {}
+
+// EnterExpr_asc_desc is called when production expr_asc_desc is entered.
+func (s *BaseSQLiteParserListener) EnterExpr_asc_desc(ctx *Expr_asc_descContext) {}
+
+// ExitExpr_asc_desc is called when production expr_asc_desc is exited.
+func (s *BaseSQLiteParserListener) ExitExpr_asc_desc(ctx *Expr_asc_descContext) {}
+
+// EnterInitial_select is called when production initial_select is entered.
+func (s *BaseSQLiteParserListener) EnterInitial_select(ctx *Initial_selectContext) {}
+
+// ExitInitial_select is called when production initial_select is exited.
+func (s *BaseSQLiteParserListener) ExitInitial_select(ctx *Initial_selectContext) {}
+
+// EnterRecursive_select is called when production recursive_select is entered.
+func (s *BaseSQLiteParserListener) EnterRecursive_select(ctx *Recursive_selectContext) {}
+
+// ExitRecursive_select is called when production recursive_select is exited.
+func (s *BaseSQLiteParserListener) ExitRecursive_select(ctx *Recursive_selectContext) {}
+
+// EnterUnary_operator is called when production unary_operator is entered.
+func (s *BaseSQLiteParserListener) EnterUnary_operator(ctx *Unary_operatorContext) {}
+
+// ExitUnary_operator is called when production unary_operator is exited.
+func (s *BaseSQLiteParserListener) ExitUnary_operator(ctx *Unary_operatorContext) {}
+
+// EnterError_message is called when production error_message is entered.
+func (s *BaseSQLiteParserListener) EnterError_message(ctx *Error_messageContext) {}
+
+// ExitError_message is called when production error_message is exited.
+func (s *BaseSQLiteParserListener) ExitError_message(ctx *Error_messageContext) {}
+
+// EnterModule_argument is called when production module_argument is entered.
+func (s *BaseSQLiteParserListener) EnterModule_argument(ctx *Module_argumentContext) {}
+
+// ExitModule_argument is called when production module_argument is exited.
+func (s *BaseSQLiteParserListener) ExitModule_argument(ctx *Module_argumentContext) {}
+
+// EnterColumn_alias is called when production column_alias is entered.
+func (s *BaseSQLiteParserListener) EnterColumn_alias(ctx *Column_aliasContext) {}
+
+// ExitColumn_alias is called when production column_alias is exited.
+func (s *BaseSQLiteParserListener) ExitColumn_alias(ctx *Column_aliasContext) {}
+
+// EnterKeyword is called when production keyword is entered.
+func (s *BaseSQLiteParserListener) EnterKeyword(ctx *KeywordContext) {}
+
+// ExitKeyword is called when production keyword is exited.
+func (s *BaseSQLiteParserListener) ExitKeyword(ctx *KeywordContext) {}
+
+// EnterName is called when production name is entered.
+func (s *BaseSQLiteParserListener) EnterName(ctx *NameContext) {}
+
+// ExitName is called when production name is exited.
+func (s *BaseSQLiteParserListener) ExitName(ctx *NameContext) {}
+
+// EnterFunction_name is called when production function_name is entered.
+func (s *BaseSQLiteParserListener) EnterFunction_name(ctx *Function_nameContext) {}
+
+// ExitFunction_name is called when production function_name is exited.
+func (s *BaseSQLiteParserListener) ExitFunction_name(ctx *Function_nameContext) {}
+
+// EnterSchema_name is called when production schema_name is entered.
+func (s *BaseSQLiteParserListener) EnterSchema_name(ctx *Schema_nameContext) {}
+
+// ExitSchema_name is called when production schema_name is exited.
+func (s *BaseSQLiteParserListener) ExitSchema_name(ctx *Schema_nameContext) {}
+
+// EnterTable_name is called when production table_name is entered.
+func (s *BaseSQLiteParserListener) EnterTable_name(ctx *Table_nameContext) {}
+
+// ExitTable_name is called when production table_name is exited.
+func (s *BaseSQLiteParserListener) ExitTable_name(ctx *Table_nameContext) {}
+
+// EnterTable_or_index_name is called when production table_or_index_name is entered.
+func (s *BaseSQLiteParserListener) 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 *BaseSQLiteParserListener) ExitTable_or_index_name(ctx *Table_or_index_nameContext) {}
+
+// EnterColumn_name is called when production column_name is entered.
+func (s *BaseSQLiteParserListener) EnterColumn_name(ctx *Column_nameContext) {}
+
+// ExitColumn_name is called when production column_name is exited.
+func (s *BaseSQLiteParserListener) ExitColumn_name(ctx *Column_nameContext) {}
+
+// EnterCollation_name is called when production collation_name is entered.
+func (s *BaseSQLiteParserListener) EnterCollation_name(ctx *Collation_nameContext) {}
+
+// ExitCollation_name is called when production collation_name is exited.
+func (s *BaseSQLiteParserListener) ExitCollation_name(ctx *Collation_nameContext) {}
+
+// EnterForeign_table is called when production foreign_table is entered.
+func (s *BaseSQLiteParserListener) EnterForeign_table(ctx *Foreign_tableContext) {}
+
+// ExitForeign_table is called when production foreign_table is exited.
+func (s *BaseSQLiteParserListener) ExitForeign_table(ctx *Foreign_tableContext) {}
+
+// EnterIndex_name is called when production index_name is entered.
+func (s *BaseSQLiteParserListener) EnterIndex_name(ctx *Index_nameContext) {}
+
+// ExitIndex_name is called when production index_name is exited.
+func (s *BaseSQLiteParserListener) ExitIndex_name(ctx *Index_nameContext) {}
+
+// EnterTrigger_name is called when production trigger_name is entered.
+func (s *BaseSQLiteParserListener) EnterTrigger_name(ctx *Trigger_nameContext) {}
+
+// ExitTrigger_name is called when production trigger_name is exited.
+func (s *BaseSQLiteParserListener) ExitTrigger_name(ctx *Trigger_nameContext) {}
+
+// EnterView_name is called when production view_name is entered.
+func (s *BaseSQLiteParserListener) EnterView_name(ctx *View_nameContext) {}
+
+// ExitView_name is called when production view_name is exited.
+func (s *BaseSQLiteParserListener) ExitView_name(ctx *View_nameContext) {}
+
+// EnterModule_name is called when production module_name is entered.
+func (s *BaseSQLiteParserListener) EnterModule_name(ctx *Module_nameContext) {}
+
+// ExitModule_name is called when production module_name is exited.
+func (s *BaseSQLiteParserListener) ExitModule_name(ctx *Module_nameContext) {}
+
+// EnterPragma_name is called when production pragma_name is entered.
+func (s *BaseSQLiteParserListener) EnterPragma_name(ctx *Pragma_nameContext) {}
+
+// ExitPragma_name is called when production pragma_name is exited.
+func (s *BaseSQLiteParserListener) ExitPragma_name(ctx *Pragma_nameContext) {}
+
+// EnterSavepoint_name is called when production savepoint_name is entered.
+func (s *BaseSQLiteParserListener) EnterSavepoint_name(ctx *Savepoint_nameContext) {}
+
+// ExitSavepoint_name is called when production savepoint_name is exited.
+func (s *BaseSQLiteParserListener) ExitSavepoint_name(ctx *Savepoint_nameContext) {}
+
+// EnterTable_alias is called when production table_alias is entered.
+func (s *BaseSQLiteParserListener) EnterTable_alias(ctx *Table_aliasContext) {}
+
+// ExitTable_alias is called when production table_alias is exited.
+func (s *BaseSQLiteParserListener) ExitTable_alias(ctx *Table_aliasContext) {}
+
+// EnterTransaction_name is called when production transaction_name is entered.
+func (s *BaseSQLiteParserListener) EnterTransaction_name(ctx *Transaction_nameContext) {}
+
+// ExitTransaction_name is called when production transaction_name is exited.
+func (s *BaseSQLiteParserListener) ExitTransaction_name(ctx *Transaction_nameContext) {}
+
+// EnterWindow_name is called when production window_name is entered.
+func (s *BaseSQLiteParserListener) EnterWindow_name(ctx *Window_nameContext) {}
+
+// ExitWindow_name is called when production window_name is exited.
+func (s *BaseSQLiteParserListener) ExitWindow_name(ctx *Window_nameContext) {}
+
+// EnterAlias is called when production alias is entered.
+func (s *BaseSQLiteParserListener) EnterAlias(ctx *AliasContext) {}
+
+// ExitAlias is called when production alias is exited.
+func (s *BaseSQLiteParserListener) ExitAlias(ctx *AliasContext) {}
+
+// EnterFilename is called when production filename is entered.
+func (s *BaseSQLiteParserListener) EnterFilename(ctx *FilenameContext) {}
+
+// ExitFilename is called when production filename is exited.
+func (s *BaseSQLiteParserListener) ExitFilename(ctx *FilenameContext) {}
+
+// EnterBase_window_name is called when production base_window_name is entered.
+func (s *BaseSQLiteParserListener) EnterBase_window_name(ctx *Base_window_nameContext) {}
+
+// ExitBase_window_name is called when production base_window_name is exited.
+func (s *BaseSQLiteParserListener) ExitBase_window_name(ctx *Base_window_nameContext) {}
+
+// EnterSimple_func is called when production simple_func is entered.
+func (s *BaseSQLiteParserListener) EnterSimple_func(ctx *Simple_funcContext) {}
+
+// ExitSimple_func is called when production simple_func is exited.
+func (s *BaseSQLiteParserListener) ExitSimple_func(ctx *Simple_funcContext) {}
+
+// EnterAggregate_func is called when production aggregate_func is entered.
+func (s *BaseSQLiteParserListener) EnterAggregate_func(ctx *Aggregate_funcContext) {}
+
+// ExitAggregate_func is called when production aggregate_func is exited.
+func (s *BaseSQLiteParserListener) ExitAggregate_func(ctx *Aggregate_funcContext) {}
+
+// EnterTable_function_name is called when production table_function_name is entered.
+func (s *BaseSQLiteParserListener) EnterTable_function_name(ctx *Table_function_nameContext) {}
+
+// ExitTable_function_name is called when production table_function_name is exited.
+func (s *BaseSQLiteParserListener) ExitTable_function_name(ctx *Table_function_nameContext) {}
+
+// EnterAny_name is called when production any_name is entered.
+func (s *BaseSQLiteParserListener) EnterAny_name(ctx *Any_nameContext) {}
+
+// ExitAny_name is called when production any_name is exited.
+func (s *BaseSQLiteParserListener) ExitAny_name(ctx *Any_nameContext) {}
diff --git a/sqliteparser/sqliteparser_listener.go b/sqliteparser/sqliteparser_listener.go
new file mode 100644
index 0000000..4bf779c
--- /dev/null
+++ b/sqliteparser/sqliteparser_listener.go
@@ -0,0 +1,687 @@
+// Code generated from SQLiteParser.g4 by ANTLR 4.13.1. DO NOT EDIT.
+
+package sqliteparser // SQLiteParser
+import "github.com/antlr4-go/antlr/v4"
+
+// SQLiteParserListener is a complete listener for a parse tree produced by SQLiteParser.
+type SQLiteParserListener interface {
+ antlr.ParseTreeListener
+
+ // EnterParse is called when entering the parse production.
+ EnterParse(c *ParseContext)
+
+ // 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)
+
+ // 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)
+
+ // 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)
+
+ // EnterRelease_stmt is called when entering the release_stmt production.
+ EnterRelease_stmt(c *Release_stmtContext)
+
+ // EnterCreate_index_stmt is called when entering the create_index_stmt production.
+ EnterCreate_index_stmt(c *Create_index_stmtContext)
+
+ // EnterIndexed_column is called when entering the indexed_column production.
+ EnterIndexed_column(c *Indexed_columnContext)
+
+ // EnterCreate_table_stmt is called when entering the create_table_stmt production.
+ EnterCreate_table_stmt(c *Create_table_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)
+
+ // EnterSigned_number is called when entering the signed_number production.
+ EnterSigned_number(c *Signed_numberContext)
+
+ // EnterTable_constraint is called when entering the table_constraint production.
+ EnterTable_constraint(c *Table_constraintContext)
+
+ // EnterForeign_key_clause is called when entering the foreign_key_clause production.
+ EnterForeign_key_clause(c *Foreign_key_clauseContext)
+
+ // EnterConflict_clause is called when entering the conflict_clause production.
+ EnterConflict_clause(c *Conflict_clauseContext)
+
+ // 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)
+
+ // EnterWith_clause is called when entering the with_clause production.
+ EnterWith_clause(c *With_clauseContext)
+
+ // EnterCte_table_name is called when entering the cte_table_name production.
+ EnterCte_table_name(c *Cte_table_nameContext)
+
+ // EnterRecursive_cte is called when entering the recursive_cte production.
+ EnterRecursive_cte(c *Recursive_cteContext)
+
+ // EnterCommon_table_expression is called when entering the common_table_expression production.
+ EnterCommon_table_expression(c *Common_table_expressionContext)
+
+ // 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_stmt is called when entering the drop_stmt production.
+ EnterDrop_stmt(c *Drop_stmtContext)
+
+ // EnterExpr is called when entering the expr production.
+ EnterExpr(c *ExprContext)
+
+ // EnterRaise_function is called when entering the raise_function production.
+ EnterRaise_function(c *Raise_functionContext)
+
+ // EnterLiteral_value is called when entering the literal_value production.
+ EnterLiteral_value(c *Literal_valueContext)
+
+ // EnterValue_row is called when entering the value_row production.
+ EnterValue_row(c *Value_rowContext)
+
+ // EnterValues_clause is called when entering the values_clause production.
+ EnterValues_clause(c *Values_clauseContext)
+
+ // EnterInsert_stmt is called when entering the insert_stmt production.
+ EnterInsert_stmt(c *Insert_stmtContext)
+
+ // EnterReturning_clause is called when entering the returning_clause production.
+ EnterReturning_clause(c *Returning_clauseContext)
+
+ // EnterUpsert_clause is called when entering the upsert_clause production.
+ EnterUpsert_clause(c *Upsert_clauseContext)
+
+ // EnterPragma_stmt is called when entering the pragma_stmt production.
+ EnterPragma_stmt(c *Pragma_stmtContext)
+
+ // EnterPragma_value is called when entering the pragma_value production.
+ EnterPragma_value(c *Pragma_valueContext)
+
+ // EnterReindex_stmt is called when entering the reindex_stmt production.
+ EnterReindex_stmt(c *Reindex_stmtContext)
+
+ // EnterSelect_stmt is called when entering the select_stmt production.
+ EnterSelect_stmt(c *Select_stmtContext)
+
+ // EnterJoin_clause is called when entering the join_clause production.
+ EnterJoin_clause(c *Join_clauseContext)
+
+ // EnterSelect_core is called when entering the select_core production.
+ EnterSelect_core(c *Select_coreContext)
+
+ // EnterFactored_select_stmt is called when entering the factored_select_stmt production.
+ EnterFactored_select_stmt(c *Factored_select_stmtContext)
+
+ // EnterSimple_select_stmt is called when entering the simple_select_stmt production.
+ EnterSimple_select_stmt(c *Simple_select_stmtContext)
+
+ // EnterCompound_select_stmt is called when entering the compound_select_stmt production.
+ EnterCompound_select_stmt(c *Compound_select_stmtContext)
+
+ // EnterTable_or_subquery is called when entering the table_or_subquery production.
+ EnterTable_or_subquery(c *Table_or_subqueryContext)
+
+ // EnterResult_column is called when entering the result_column production.
+ EnterResult_column(c *Result_columnContext)
+
+ // 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)
+
+ // EnterCompound_operator is called when entering the compound_operator production.
+ EnterCompound_operator(c *Compound_operatorContext)
+
+ // EnterUpdate_stmt is called when entering the update_stmt production.
+ EnterUpdate_stmt(c *Update_stmtContext)
+
+ // EnterColumn_name_list is called when entering the column_name_list production.
+ EnterColumn_name_list(c *Column_name_listContext)
+
+ // EnterUpdate_stmt_limited is called when entering the update_stmt_limited production.
+ EnterUpdate_stmt_limited(c *Update_stmt_limitedContext)
+
+ // EnterQualified_table_name is called when entering the qualified_table_name production.
+ EnterQualified_table_name(c *Qualified_table_nameContext)
+
+ // EnterVacuum_stmt is called when entering the vacuum_stmt production.
+ EnterVacuum_stmt(c *Vacuum_stmtContext)
+
+ // EnterFilter_clause is called when entering the filter_clause production.
+ EnterFilter_clause(c *Filter_clauseContext)
+
+ // EnterWindow_defn is called when entering the window_defn production.
+ EnterWindow_defn(c *Window_defnContext)
+
+ // EnterOver_clause is called when entering the over_clause production.
+ EnterOver_clause(c *Over_clauseContext)
+
+ // EnterFrame_spec is called when entering the frame_spec production.
+ EnterFrame_spec(c *Frame_specContext)
+
+ // EnterFrame_clause is called when entering the frame_clause production.
+ EnterFrame_clause(c *Frame_clauseContext)
+
+ // EnterSimple_function_invocation is called when entering the simple_function_invocation production.
+ EnterSimple_function_invocation(c *Simple_function_invocationContext)
+
+ // EnterAggregate_function_invocation is called when entering the aggregate_function_invocation production.
+ EnterAggregate_function_invocation(c *Aggregate_function_invocationContext)
+
+ // EnterWindow_function_invocation is called when entering the window_function_invocation production.
+ EnterWindow_function_invocation(c *Window_function_invocationContext)
+
+ // EnterCommon_table_stmt is called when entering the common_table_stmt production.
+ EnterCommon_table_stmt(c *Common_table_stmtContext)
+
+ // EnterOrder_by_stmt is called when entering the order_by_stmt production.
+ EnterOrder_by_stmt(c *Order_by_stmtContext)
+
+ // EnterLimit_stmt is called when entering the limit_stmt production.
+ EnterLimit_stmt(c *Limit_stmtContext)
+
+ // EnterOrdering_term is called when entering the ordering_term production.
+ EnterOrdering_term(c *Ordering_termContext)
+
+ // EnterAsc_desc is called when entering the asc_desc production.
+ EnterAsc_desc(c *Asc_descContext)
+
+ // EnterFrame_left is called when entering the frame_left production.
+ EnterFrame_left(c *Frame_leftContext)
+
+ // EnterFrame_right is called when entering the frame_right production.
+ EnterFrame_right(c *Frame_rightContext)
+
+ // EnterFrame_single is called when entering the frame_single production.
+ EnterFrame_single(c *Frame_singleContext)
+
+ // EnterWindow_function is called when entering the window_function production.
+ EnterWindow_function(c *Window_functionContext)
+
+ // EnterOffset is called when entering the offset production.
+ EnterOffset(c *OffsetContext)
+
+ // EnterDefault_value is called when entering the default_value production.
+ EnterDefault_value(c *Default_valueContext)
+
+ // EnterPartition_by is called when entering the partition_by production.
+ EnterPartition_by(c *Partition_byContext)
+
+ // EnterOrder_by_expr is called when entering the order_by_expr production.
+ EnterOrder_by_expr(c *Order_by_exprContext)
+
+ // EnterOrder_by_expr_asc_desc is called when entering the order_by_expr_asc_desc production.
+ EnterOrder_by_expr_asc_desc(c *Order_by_expr_asc_descContext)
+
+ // EnterExpr_asc_desc is called when entering the expr_asc_desc production.
+ EnterExpr_asc_desc(c *Expr_asc_descContext)
+
+ // EnterInitial_select is called when entering the initial_select production.
+ EnterInitial_select(c *Initial_selectContext)
+
+ // EnterRecursive_select is called when entering the recursive_select production.
+ EnterRecursive_select(c *Recursive_selectContext)
+
+ // 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)
+
+ // 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)
+
+ // EnterSchema_name is called when entering the schema_name production.
+ EnterSchema_name(c *Schema_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)
+
+ // 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)
+
+ // EnterWindow_name is called when entering the window_name production.
+ EnterWindow_name(c *Window_nameContext)
+
+ // EnterAlias is called when entering the alias production.
+ EnterAlias(c *AliasContext)
+
+ // EnterFilename is called when entering the filename production.
+ EnterFilename(c *FilenameContext)
+
+ // EnterBase_window_name is called when entering the base_window_name production.
+ EnterBase_window_name(c *Base_window_nameContext)
+
+ // EnterSimple_func is called when entering the simple_func production.
+ EnterSimple_func(c *Simple_funcContext)
+
+ // EnterAggregate_func is called when entering the aggregate_func production.
+ EnterAggregate_func(c *Aggregate_funcContext)
+
+ // EnterTable_function_name is called when entering the table_function_name production.
+ EnterTable_function_name(c *Table_function_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)
+
+ // 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)
+
+ // 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)
+
+ // 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)
+
+ // ExitRelease_stmt is called when exiting the release_stmt production.
+ ExitRelease_stmt(c *Release_stmtContext)
+
+ // ExitCreate_index_stmt is called when exiting the create_index_stmt production.
+ ExitCreate_index_stmt(c *Create_index_stmtContext)
+
+ // ExitIndexed_column is called when exiting the indexed_column production.
+ ExitIndexed_column(c *Indexed_columnContext)
+
+ // ExitCreate_table_stmt is called when exiting the create_table_stmt production.
+ ExitCreate_table_stmt(c *Create_table_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)
+
+ // ExitSigned_number is called when exiting the signed_number production.
+ ExitSigned_number(c *Signed_numberContext)
+
+ // ExitTable_constraint is called when exiting the table_constraint production.
+ ExitTable_constraint(c *Table_constraintContext)
+
+ // ExitForeign_key_clause is called when exiting the foreign_key_clause production.
+ ExitForeign_key_clause(c *Foreign_key_clauseContext)
+
+ // ExitConflict_clause is called when exiting the conflict_clause production.
+ ExitConflict_clause(c *Conflict_clauseContext)
+
+ // 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)
+
+ // ExitWith_clause is called when exiting the with_clause production.
+ ExitWith_clause(c *With_clauseContext)
+
+ // ExitCte_table_name is called when exiting the cte_table_name production.
+ ExitCte_table_name(c *Cte_table_nameContext)
+
+ // ExitRecursive_cte is called when exiting the recursive_cte production.
+ ExitRecursive_cte(c *Recursive_cteContext)
+
+ // ExitCommon_table_expression is called when exiting the common_table_expression production.
+ ExitCommon_table_expression(c *Common_table_expressionContext)
+
+ // 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_stmt is called when exiting the drop_stmt production.
+ ExitDrop_stmt(c *Drop_stmtContext)
+
+ // ExitExpr is called when exiting the expr production.
+ ExitExpr(c *ExprContext)
+
+ // ExitRaise_function is called when exiting the raise_function production.
+ ExitRaise_function(c *Raise_functionContext)
+
+ // ExitLiteral_value is called when exiting the literal_value production.
+ ExitLiteral_value(c *Literal_valueContext)
+
+ // ExitValue_row is called when exiting the value_row production.
+ ExitValue_row(c *Value_rowContext)
+
+ // ExitValues_clause is called when exiting the values_clause production.
+ ExitValues_clause(c *Values_clauseContext)
+
+ // ExitInsert_stmt is called when exiting the insert_stmt production.
+ ExitInsert_stmt(c *Insert_stmtContext)
+
+ // ExitReturning_clause is called when exiting the returning_clause production.
+ ExitReturning_clause(c *Returning_clauseContext)
+
+ // ExitUpsert_clause is called when exiting the upsert_clause production.
+ ExitUpsert_clause(c *Upsert_clauseContext)
+
+ // ExitPragma_stmt is called when exiting the pragma_stmt production.
+ ExitPragma_stmt(c *Pragma_stmtContext)
+
+ // ExitPragma_value is called when exiting the pragma_value production.
+ ExitPragma_value(c *Pragma_valueContext)
+
+ // ExitReindex_stmt is called when exiting the reindex_stmt production.
+ ExitReindex_stmt(c *Reindex_stmtContext)
+
+ // ExitSelect_stmt is called when exiting the select_stmt production.
+ ExitSelect_stmt(c *Select_stmtContext)
+
+ // ExitJoin_clause is called when exiting the join_clause production.
+ ExitJoin_clause(c *Join_clauseContext)
+
+ // ExitSelect_core is called when exiting the select_core production.
+ ExitSelect_core(c *Select_coreContext)
+
+ // ExitFactored_select_stmt is called when exiting the factored_select_stmt production.
+ ExitFactored_select_stmt(c *Factored_select_stmtContext)
+
+ // ExitSimple_select_stmt is called when exiting the simple_select_stmt production.
+ ExitSimple_select_stmt(c *Simple_select_stmtContext)
+
+ // ExitCompound_select_stmt is called when exiting the compound_select_stmt production.
+ ExitCompound_select_stmt(c *Compound_select_stmtContext)
+
+ // ExitTable_or_subquery is called when exiting the table_or_subquery production.
+ ExitTable_or_subquery(c *Table_or_subqueryContext)
+
+ // ExitResult_column is called when exiting the result_column production.
+ ExitResult_column(c *Result_columnContext)
+
+ // 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)
+
+ // ExitCompound_operator is called when exiting the compound_operator production.
+ ExitCompound_operator(c *Compound_operatorContext)
+
+ // ExitUpdate_stmt is called when exiting the update_stmt production.
+ ExitUpdate_stmt(c *Update_stmtContext)
+
+ // ExitColumn_name_list is called when exiting the column_name_list production.
+ ExitColumn_name_list(c *Column_name_listContext)
+
+ // ExitUpdate_stmt_limited is called when exiting the update_stmt_limited production.
+ ExitUpdate_stmt_limited(c *Update_stmt_limitedContext)
+
+ // ExitQualified_table_name is called when exiting the qualified_table_name production.
+ ExitQualified_table_name(c *Qualified_table_nameContext)
+
+ // ExitVacuum_stmt is called when exiting the vacuum_stmt production.
+ ExitVacuum_stmt(c *Vacuum_stmtContext)
+
+ // ExitFilter_clause is called when exiting the filter_clause production.
+ ExitFilter_clause(c *Filter_clauseContext)
+
+ // ExitWindow_defn is called when exiting the window_defn production.
+ ExitWindow_defn(c *Window_defnContext)
+
+ // ExitOver_clause is called when exiting the over_clause production.
+ ExitOver_clause(c *Over_clauseContext)
+
+ // ExitFrame_spec is called when exiting the frame_spec production.
+ ExitFrame_spec(c *Frame_specContext)
+
+ // ExitFrame_clause is called when exiting the frame_clause production.
+ ExitFrame_clause(c *Frame_clauseContext)
+
+ // ExitSimple_function_invocation is called when exiting the simple_function_invocation production.
+ ExitSimple_function_invocation(c *Simple_function_invocationContext)
+
+ // ExitAggregate_function_invocation is called when exiting the aggregate_function_invocation production.
+ ExitAggregate_function_invocation(c *Aggregate_function_invocationContext)
+
+ // ExitWindow_function_invocation is called when exiting the window_function_invocation production.
+ ExitWindow_function_invocation(c *Window_function_invocationContext)
+
+ // ExitCommon_table_stmt is called when exiting the common_table_stmt production.
+ ExitCommon_table_stmt(c *Common_table_stmtContext)
+
+ // ExitOrder_by_stmt is called when exiting the order_by_stmt production.
+ ExitOrder_by_stmt(c *Order_by_stmtContext)
+
+ // ExitLimit_stmt is called when exiting the limit_stmt production.
+ ExitLimit_stmt(c *Limit_stmtContext)
+
+ // ExitOrdering_term is called when exiting the ordering_term production.
+ ExitOrdering_term(c *Ordering_termContext)
+
+ // ExitAsc_desc is called when exiting the asc_desc production.
+ ExitAsc_desc(c *Asc_descContext)
+
+ // ExitFrame_left is called when exiting the frame_left production.
+ ExitFrame_left(c *Frame_leftContext)
+
+ // ExitFrame_right is called when exiting the frame_right production.
+ ExitFrame_right(c *Frame_rightContext)
+
+ // ExitFrame_single is called when exiting the frame_single production.
+ ExitFrame_single(c *Frame_singleContext)
+
+ // ExitWindow_function is called when exiting the window_function production.
+ ExitWindow_function(c *Window_functionContext)
+
+ // ExitOffset is called when exiting the offset production.
+ ExitOffset(c *OffsetContext)
+
+ // ExitDefault_value is called when exiting the default_value production.
+ ExitDefault_value(c *Default_valueContext)
+
+ // ExitPartition_by is called when exiting the partition_by production.
+ ExitPartition_by(c *Partition_byContext)
+
+ // ExitOrder_by_expr is called when exiting the order_by_expr production.
+ ExitOrder_by_expr(c *Order_by_exprContext)
+
+ // ExitOrder_by_expr_asc_desc is called when exiting the order_by_expr_asc_desc production.
+ ExitOrder_by_expr_asc_desc(c *Order_by_expr_asc_descContext)
+
+ // ExitExpr_asc_desc is called when exiting the expr_asc_desc production.
+ ExitExpr_asc_desc(c *Expr_asc_descContext)
+
+ // ExitInitial_select is called when exiting the initial_select production.
+ ExitInitial_select(c *Initial_selectContext)
+
+ // ExitRecursive_select is called when exiting the recursive_select production.
+ ExitRecursive_select(c *Recursive_selectContext)
+
+ // 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)
+
+ // 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)
+
+ // ExitSchema_name is called when exiting the schema_name production.
+ ExitSchema_name(c *Schema_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)
+
+ // 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)
+
+ // ExitWindow_name is called when exiting the window_name production.
+ ExitWindow_name(c *Window_nameContext)
+
+ // ExitAlias is called when exiting the alias production.
+ ExitAlias(c *AliasContext)
+
+ // ExitFilename is called when exiting the filename production.
+ ExitFilename(c *FilenameContext)
+
+ // ExitBase_window_name is called when exiting the base_window_name production.
+ ExitBase_window_name(c *Base_window_nameContext)
+
+ // ExitSimple_func is called when exiting the simple_func production.
+ ExitSimple_func(c *Simple_funcContext)
+
+ // ExitAggregate_func is called when exiting the aggregate_func production.
+ ExitAggregate_func(c *Aggregate_funcContext)
+
+ // ExitTable_function_name is called when exiting the table_function_name production.
+ ExitTable_function_name(c *Table_function_nameContext)
+
+ // ExitAny_name is called when exiting the any_name production.
+ ExitAny_name(c *Any_nameContext)
+}
diff --git a/sqliteparserutils/buffered_tokenizer.go b/sqliteparserutils/buffered_tokenizer.go
new file mode 100644
index 0000000..f25ae4c
--- /dev/null
+++ b/sqliteparserutils/buffered_tokenizer.go
@@ -0,0 +1,51 @@
+package sqliteparserutils
+
+import (
+ "fmt"
+
+ "github.com/antlr4-go/antlr/v4"
+)
+
+// bufferedTokenizer preload few next tokens and put them in the tokens buffer to support look-ahead access with limited distance
+// Tokenizer maintains loaded tokens in ring buffer and use constant memory to support all requests (which is important for streaming mode)
+type bufferedTokenizer struct {
+ source antlr.TokenSource
+ tokens []antlr.Token
+ index int
+}
+
+// createBufferedTokenizer initialize tokenizer which will store current token and bufferSize-1 next tokens for look-ahead accesses
+func createBufferedTokenizer(source antlr.TokenSource, bufferSize int) *bufferedTokenizer {
+ tokens := make([]antlr.Token, bufferSize)
+ stream := bufferedTokenizer{source: source, tokens: tokens, index: 0}
+ stream.load(bufferSize)
+ return &stream
+}
+
+func (stream *bufferedTokenizer) load(n int) {
+ i := 0
+ for i < n {
+ token := stream.source.NextToken()
+ if token.GetChannel() != antlr.TokenDefaultChannel {
+ continue
+ }
+ stream.tokens[(stream.index+i)%len(stream.tokens)] = token
+ i += 1
+ }
+ stream.index = (stream.index + i) % len(stream.tokens)
+}
+
+func (stream *bufferedTokenizer) Consume() {
+ stream.load(1)
+}
+
+func (stream *bufferedTokenizer) Get(k int) antlr.Token {
+ if k >= len(stream.tokens) {
+ panic(fmt.Errorf("out of buffer read attempts: %d >= %d", k, len(stream.tokens)))
+ }
+ return stream.tokens[(stream.index+k)%len(stream.tokens)]
+}
+
+func (stream *bufferedTokenizer) IsEOF() bool {
+ return stream.Get(0).GetTokenType() == antlr.TokenEOF
+}
diff --git a/sqliteparserutils/utils.go b/sqliteparserutils/utils.go
new file mode 100644
index 0000000..b6192c5
--- /dev/null
+++ b/sqliteparserutils/utils.go
@@ -0,0 +1,123 @@
+package sqliteparserutils
+
+import (
+ "github.com/antlr4-go/antlr/v4"
+
+ "github.com/tursodatabase/libsql-client-go/sqliteparser"
+)
+
+// TODO: Shell test begin transaction on shell
+
+type SplitStatementExtraInfo struct {
+ IncompleteCreateTriggerStatement bool
+ IncompleteMultilineComment bool
+ LastTokenType int
+}
+
+type StatementIterator struct {
+ tokenizer *bufferedTokenizer
+ currentToken antlr.Token
+}
+
+// keep createStatementIterator here for the future uses but do not expose it for now as we will not use it immediately
+func createStatementIterator(statement string) *StatementIterator {
+ return &StatementIterator{tokenizer: createStringTokenizer(statement)}
+}
+
+func (iterator *StatementIterator) Next() (statement string, extraInfo SplitStatementExtraInfo, isEOF bool) {
+ var (
+ insideCreateTriggerStmt = false
+ insideMultilineComment = false
+ startPosition = -1
+ previousToken = iterator.currentToken
+ )
+ for !iterator.tokenizer.IsEOF() {
+ // We break loop here because we're sure multiline comment didn't finished, otherwise lexer would have just ignored it
+ if atIncompleteMultilineCommentStart(iterator.tokenizer) {
+ insideMultilineComment = true
+ break
+ }
+ iterator.currentToken = iterator.tokenizer.Get(0)
+ // skip empty statements (e.g. ... ; /* some comment */ ; ... )
+ if startPosition == -1 && iterator.currentToken.GetTokenType() == sqliteparser.SQLiteLexerSCOL {
+ iterator.tokenizer.Consume()
+ continue
+ }
+ if startPosition == -1 {
+ // initialize current statement start position
+ insideCreateTriggerStmt = atCreateTriggerStart(iterator.tokenizer)
+ startPosition = iterator.currentToken.GetStart()
+ } else if insideCreateTriggerStmt {
+ // extend trigger creation statement to include END token after last semicolon
+ if iterator.currentToken.GetTokenType() == sqliteparser.SQLiteLexerEND_ {
+ insideCreateTriggerStmt = false
+ }
+ } else if iterator.currentToken.GetTokenType() == sqliteparser.SQLiteLexerSCOL {
+ // finish current statement (don't forget to consume as we are breaking here)
+ iterator.tokenizer.Consume()
+ break
+ }
+ previousToken = iterator.currentToken
+ iterator.tokenizer.Consume()
+ }
+ lastTokenType := antlr.TokenInvalidType
+ if iterator.currentToken != nil {
+ lastTokenType = iterator.currentToken.GetTokenType()
+ }
+ extraInfo = SplitStatementExtraInfo{
+ IncompleteCreateTriggerStatement: insideCreateTriggerStmt,
+ IncompleteMultilineComment: insideMultilineComment,
+ LastTokenType: lastTokenType,
+ }
+ statement = ""
+ if startPosition != -1 {
+ statement = iterator.tokenizer.source.GetInputStream().GetText(startPosition, previousToken.GetStop())
+ }
+ return statement, extraInfo, iterator.tokenizer.IsEOF() || insideMultilineComment
+}
+
+func SplitStatement(statement string) (statements []string, extraInfo SplitStatementExtraInfo) {
+ iterator := createStatementIterator(statement)
+
+ statements = make([]string, 0)
+ for {
+ statement, extraInfo, isEOF := iterator.Next()
+ if statement != "" {
+ statements = append(statements, statement)
+ }
+ if isEOF {
+ return statements, extraInfo
+ }
+ }
+}
+
+func atCreateTriggerStart(tokenStream *bufferedTokenizer) bool {
+ token1 := tokenStream.Get(0).GetTokenType()
+ token2 := tokenStream.Get(1).GetTokenType()
+ token3 := tokenStream.Get(2).GetTokenType()
+
+ if token1 == sqliteparser.SQLiteLexerCREATE_ && token2 == sqliteparser.SQLiteLexerTRIGGER_ {
+ return true
+ }
+ if token1 == sqliteparser.SQLiteLexerCREATE_ &&
+ (token2 == sqliteparser.SQLiteLexerTEMP_ || token2 == sqliteparser.SQLiteLexerTEMPORARY_) &&
+ token3 == sqliteparser.SQLiteLexerTRIGGER_ {
+ return true
+ }
+ return false
+}
+
+// Note: Only starts for incomplete multiline comments will be detected cause lexer automatically ignores complete
+// multiline comments
+func atIncompleteMultilineCommentStart(stream *bufferedTokenizer) bool {
+ token1 := stream.Get(0).GetTokenType()
+ token2 := stream.Get(1).GetTokenType()
+ return token1 == sqliteparser.SQLiteLexerDIV && token2 == sqliteparser.SQLiteLexerSTAR
+}
+
+func createStringTokenizer(statement string) *bufferedTokenizer {
+ statementStream := antlr.NewInputStream(statement)
+
+ lexer := sqliteparser.NewSQLiteLexer(statementStream)
+ return createBufferedTokenizer(lexer, 3)
+}
diff --git a/sqliteparserutils/utils_bench_test.go b/sqliteparserutils/utils_bench_test.go
new file mode 100644
index 0000000..b205638
--- /dev/null
+++ b/sqliteparserutils/utils_bench_test.go
@@ -0,0 +1,25 @@
+package sqliteparserutils
+
+import (
+ "runtime"
+ "strings"
+ "testing"
+)
+
+func BenchmarkSplitStatement(b *testing.B) {
+ var (
+ mem runtime.MemStats
+ count = 8192
+ )
+
+ hugeStatement := strings.Repeat("INSERT INTO t VALUES (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);", count)
+ for i := 0; i < b.N; i++ {
+ statements, _ := SplitStatement(hugeStatement)
+ if len(statements) != count {
+ b.Fail()
+ }
+ // these intermediate logs can help to estimate memory working set (instead of total allocations)
+ runtime.ReadMemStats(&mem)
+ b.Logf("heap in use: %v", mem.HeapInuse)
+ }
+}
diff --git a/sqliteparserutils/utils_test.go b/sqliteparserutils/utils_test.go
new file mode 100644
index 0000000..ed21edf
--- /dev/null
+++ b/sqliteparserutils/utils_test.go
@@ -0,0 +1,209 @@
+package sqliteparserutils_test
+
+import (
+ "reflect"
+ "testing"
+
+ "github.com/antlr4-go/antlr/v4"
+
+ "github.com/tursodatabase/libsql-client-go/sqliteparser"
+ "github.com/tursodatabase/libsql-client-go/sqliteparserutils"
+)
+
+func generateSplitStatementExtraInfo(lastTokenType int, incompleteCreateTriggerStatement bool, incompleteMultilineComment bool) sqliteparserutils.SplitStatementExtraInfo {
+ return sqliteparserutils.SplitStatementExtraInfo{
+ IncompleteCreateTriggerStatement: incompleteCreateTriggerStatement,
+ IncompleteMultilineComment: incompleteMultilineComment,
+ LastTokenType: lastTokenType,
+ }
+}
+
+func generateSimpleSplitStatementExtraInfo(lastTokenType int) sqliteparserutils.SplitStatementExtraInfo {
+ return sqliteparserutils.SplitStatementExtraInfo{
+ LastTokenType: lastTokenType,
+ }
+}
+
+func TestSplitStatement(t *testing.T) {
+ tests := []struct {
+ name string
+ value string
+ stmts []string
+ extraInfo sqliteparserutils.SplitStatementExtraInfo
+ }{
+ {
+ name: "EmptyStatement",
+ value: "",
+ stmts: []string{},
+ extraInfo: generateSimpleSplitStatementExtraInfo(antlr.TokenInvalidType),
+ },
+ {
+ name: "OnlySemicolon",
+ value: ";;;;",
+ stmts: []string{},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "SingleStatementWithoutSemicolon",
+ value: "select 1",
+ stmts: []string{"select 1"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerNUMERIC_LITERAL),
+ },
+ {
+ name: "SingleStatementWithSemicolon",
+ value: "select 1;",
+ stmts: []string{"select 1"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "SingleStatementEndingWithWhitespaceAndSemicolon",
+ value: "select 1 ;",
+ stmts: []string{"select 1"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "OnlyWithSingleLineComment",
+ value: "-- a simple comment",
+ stmts: []string{},
+ extraInfo: generateSimpleSplitStatementExtraInfo(antlr.TokenInvalidType),
+ },
+ {
+ name: "SingleStatementWithSingleLineCommentWithoutSemicolon",
+ value: "select 1; -- a simple comment",
+ stmts: []string{"select 1"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "SingleStatementWithSingleLineCommentWithSemicolon",
+ value: "select 1; -- ops; a comment with semicolon",
+ stmts: []string{"select 1"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "OnlyMultilineComment",
+ value: "/* a simple comment \n*/",
+ stmts: []string{},
+ extraInfo: generateSimpleSplitStatementExtraInfo(antlr.TokenInvalidType),
+ },
+ {
+ name: "SingleStatementWithCompleteMultilineCommentWithoutSemicolon",
+ value: "select 1; /* \na simple comment \n*/",
+ stmts: []string{"select 1"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "SingleStatementWithCompleteMultilineCommentWithSemicolon",
+ value: "select 1; /* \nops;\n a comment with semicolon \n*/",
+ stmts: []string{"select 1"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "OnlyWithIncompleteMultilineComment",
+ value: "/* a simple comment\n",
+ stmts: []string{},
+ extraInfo: generateSplitStatementExtraInfo(antlr.TokenInvalidType, false, true),
+ },
+ {
+ name: "SingleStatementWithIncompleteMultilineCommentWithoutSemicolon",
+ value: "select 1; /* \na simple comment\n",
+ stmts: []string{"select 1"},
+ extraInfo: generateSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL, false, true),
+ },
+ {
+ name: "SingleStatementWithoutSemicolonWithIncompleteMultilineCommentWithoutSemicolon",
+ value: "select 1 /* \na simple comment\n",
+ stmts: []string{"select 1"},
+ extraInfo: generateSplitStatementExtraInfo(sqliteparser.SQLiteLexerNUMERIC_LITERAL, false, true),
+ },
+ {
+ name: "SingleStatementWithIncompleteMultilineCommentWithSemicolon",
+ value: "select 1; /* \na simple comment\n",
+ stmts: []string{"select 1"},
+ extraInfo: generateSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL, false, true),
+ },
+ {
+ name: "MultipleStatementsWithMultilineCommentBetween",
+ value: "select 1; /* \na simple comment;\n*/ select 2;",
+ stmts: []string{"select 1", "select 2"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "MultipleCorrectStatements",
+ value: "select 1; INSERT INTO counter(country, city, value) VALUES(?, ?, 1) ON CONFLICT DO UPDATE SET value = IFNULL(value, 0) + 1 WHERE country = ? AND city = ?; select 2",
+ stmts: []string{"select 1", "INSERT INTO counter(country, city, value) VALUES(?, ?, 1) ON CONFLICT DO UPDATE SET value = IFNULL(value, 0) + 1 WHERE country = ? AND city = ?", "select 2"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerNUMERIC_LITERAL),
+ },
+ {
+ name: "MultipleWrongStatements",
+ value: "select from table; INSERT counter(country, city, value) VALUES(?, ?, 1) ON CONFLICT DO UPDATE SET value = IFNULL(value, 0) + 1 WHERE country = ? AND city = ?; create something",
+ stmts: []string{"select from table", "INSERT counter(country, city, value) VALUES(?, ?, 1) ON CONFLICT DO UPDATE SET value = IFNULL(value, 0) + 1 WHERE country = ? AND city = ?", "create something"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerIDENTIFIER),
+ },
+ {
+ name: "MultipleWrongTokens",
+ value: "sdfasdfigosdfg sadfgsd ggsadgf; sdfasdfasd; 1230kfvcasd; 213 dsf s 0 fs229dt",
+ stmts: []string{"sdfasdfigosdfg sadfgsd ggsadgf", "sdfasdfasd", "1230kfvcasd", "213 dsf s 0 fs229dt"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerIDENTIFIER),
+ },
+ {
+ name: "MultipleSemicolonsBetweenStatements",
+ value: "select 1;;;;;; ;;; ; ; ; ; select 2",
+ stmts: []string{"select 1", "select 2"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerNUMERIC_LITERAL),
+ },
+ {
+ name: "CompleteCreateTriggerStatement",
+ value: "CREATE TRIGGER update_updated_at AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET updated_at = 0 WHERE id = NEW.id; END",
+ stmts: []string{"CREATE TRIGGER update_updated_at AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET updated_at = 0 WHERE id = NEW.id; END"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerEND_),
+ },
+ {
+ name: "CompleteCreateTempTriggerStatement",
+ value: "CREATE TEMP TRIGGER update_updated_at AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET updated_at = 0 WHERE id = NEW.id; END",
+ stmts: []string{"CREATE TEMP TRIGGER update_updated_at AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET updated_at = 0 WHERE id = NEW.id; END"},
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerEND_),
+ },
+ {
+ name: "IncompleteCreateTriggerStatement",
+ value: "CREATE TRIGGER update_updated_at AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET updated_at = 0 WHERE id = NEW.id;",
+ stmts: []string{"CREATE TRIGGER update_updated_at AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET updated_at = 0 WHERE id = NEW.id;"},
+ extraInfo: generateSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL, true, false),
+ },
+ {
+ name: "IncompleteCreateTriggerStatementWithIncompleteMultilineComment",
+ value: "CREATE TRIGGER update_updated_at AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET updated_at = 0 WHERE id = NEW.id; /* this is the trigger;",
+ stmts: []string{"CREATE TRIGGER update_updated_at AFTER UPDATE ON users FOR EACH ROW BEGIN UPDATE users SET updated_at = 0 WHERE id = NEW.id;"},
+ extraInfo: generateSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL, true, true),
+ },
+ {
+ name: "CompleteTransactionStatement",
+ value: "BEGIN TRANSACTION; CREATE TABLE test_table (id INTEGER PRIMARY KEY, value TEXT); INSERT INTO test_table (value) VALUES ('Value 1'); COMMIT;",
+ stmts: []string{"BEGIN TRANSACTION",
+ "CREATE TABLE test_table (id INTEGER PRIMARY KEY, value TEXT)",
+ "INSERT INTO test_table (value) VALUES ('Value 1')",
+ "COMMIT",
+ },
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ {
+ name: "IncompleteTransactionStatement",
+ value: "BEGIN TRANSACTION; CREATE TABLE test_table (id INTEGER PRIMARY KEY, value TEXT); INSERT INTO test_table (value) VALUES ('Value 1');",
+ stmts: []string{"BEGIN TRANSACTION",
+ "CREATE TABLE test_table (id INTEGER PRIMARY KEY, value TEXT)",
+ "INSERT INTO test_table (value) VALUES ('Value 1')",
+ },
+ extraInfo: generateSimpleSplitStatementExtraInfo(sqliteparser.SQLiteLexerSCOL),
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ gotStmts, gotExtraInfo := sqliteparserutils.SplitStatement(tt.value)
+ if !reflect.DeepEqual(gotStmts, tt.stmts) {
+ t.Errorf("got %#v, want %#v", gotStmts, tt.stmts)
+ }
+ if !reflect.DeepEqual(gotExtraInfo, tt.extraInfo) {
+ t.Errorf("got %#v, want %#v", gotExtraInfo, tt.extraInfo)
+ }
+ })
+ }
+}