fix: 将 libsql-client-go 作为普通目录提交,而非 gitlink

This commit is contained in:
2026-04-27 07:04:46 +08:00
parent 2359d6c9fa
commit f6332fbaaf
52 changed files with 42333 additions and 1 deletions

View File

@@ -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];

View File

@@ -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

View File

@@ -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
;

View File

@@ -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

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<desc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../_scripts/desc.xsd">
<targets>CSharp;Cpp;Dart;Go;Java;JavaScript;PHP;Python3</targets>
</desc>

View File

@@ -0,0 +1,56 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>sqlite</artifactId>
<packaging>jar</packaging>
<name>SQLite grammar</name>
<parent>
<groupId>org.antlr.grammars</groupId>
<artifactId>sqlparent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>${antlr.version}</version>
<configuration>
<sourceDirectory>${basedir}</sourceDirectory>
<includes>
<include>SQLiteLexer.g4</include>
<include>SQLiteParser.g4</include>
</includes>
<visitor>true</visitor>
<listener>true</listener>
</configuration>
<executions>
<execution>
<goals>
<goal>antlr4</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.khubla.antlr</groupId>
<artifactId>antlr4test-maven-plugin</artifactId>
<version>${antlr4test-maven-plugin.version}</version>
<configuration>
<verbose>false</verbose>
<showTree>false</showTree>
<entryPoint>parse</entryPoint>
<grammarName>SQLite</grammarName>
<packageName></packageName>
<exampleFiles>examples/</exampleFiles>
</configuration>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>