@plurnk/plurnk-mimetypes-text-sqlite 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,935 @@
1
+ /*
2
+ * The MIT License (MIT)
3
+ *
4
+ * Copyright (c) 2014 by Bart Kiers
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
7
+ * associated documentation files (the "Software"), to deal in the Software without restriction,
8
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute,
9
+ * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all copies or
13
+ * substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
16
+ * NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ *
21
+ * Project : sqlite-parser; an ANTLR4 grammar for SQLite https://github.com/bkiers/sqlite-parser
22
+ * Developed by:
23
+ * Bart Kiers, bart@big-o.nl
24
+ * Martin Mirchev, marti_2203@abv.bg
25
+ * Mike Lische, mike@lischke-online.de
26
+ */
27
+
28
+ // $antlr-format alignTrailingComments on, columnLimit 130, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments off
29
+ // $antlr-format useTab off, allowShortRulesOnASingleLine off, allowShortBlocksOnASingleLine on, alignSemicolons ownLine
30
+ // $antlr-format alignColons hanging
31
+
32
+ parser grammar SQLiteParser;
33
+
34
+ options {
35
+ tokenVocab = SQLiteLexer;
36
+ }
37
+
38
+ parse
39
+ : sql_stmt_list EOF
40
+ ;
41
+
42
+ sql_stmt_list
43
+ : sql_stmt? (SCOL sql_stmt?)*
44
+ ;
45
+
46
+ sql_stmt
47
+ : (EXPLAIN_ (QUERY_ PLAN_)?)? (
48
+ alter_table_stmt
49
+ | analyze_stmt
50
+ | attach_stmt
51
+ | begin_stmt
52
+ | commit_stmt
53
+ | create_index_stmt
54
+ | create_table_stmt
55
+ | create_trigger_stmt
56
+ | create_view_stmt
57
+ | create_virtual_table_stmt
58
+ | delete_stmt
59
+ | detach_stmt
60
+ | drop_stmt
61
+ | insert_stmt
62
+ | pragma_stmt
63
+ | reindex_stmt
64
+ | release_stmt
65
+ | rollback_stmt
66
+ | savepoint_stmt
67
+ | select_stmt
68
+ | update_stmt
69
+ | vacuum_stmt
70
+ )
71
+ ;
72
+
73
+ alter_table_stmt
74
+ : ALTER_ TABLE_ (schema_name DOT)? table_name (
75
+ RENAME_ (
76
+ TO_ new_table_name = table_name
77
+ | COLUMN_? old_column_name = column_name TO_ new_column_name = column_name
78
+ )
79
+ | ADD_ COLUMN_? column_def
80
+ | DROP_ COLUMN_? column_name
81
+ )
82
+ ;
83
+
84
+ analyze_stmt
85
+ : ANALYZE_ (schema_name | (schema_name DOT)? table_or_index_name)?
86
+ ;
87
+
88
+ attach_stmt
89
+ : ATTACH_ DATABASE_? expr AS_ schema_name
90
+ ;
91
+
92
+ begin_stmt
93
+ : BEGIN_ (DEFERRED_ | IMMEDIATE_ | EXCLUSIVE_)? TRANSACTION_?
94
+ ;
95
+
96
+ commit_stmt
97
+ : (COMMIT_ | END_) TRANSACTION_?
98
+ ;
99
+
100
+ rollback_stmt
101
+ : ROLLBACK_ TRANSACTION_? (TO_ SAVEPOINT_? savepoint_name)?
102
+ ;
103
+
104
+ savepoint_stmt
105
+ : SAVEPOINT_ savepoint_name
106
+ ;
107
+
108
+ release_stmt
109
+ : RELEASE_ SAVEPOINT_? savepoint_name
110
+ ;
111
+
112
+ create_index_stmt
113
+ : CREATE_ UNIQUE_? INDEX_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? index_name ON_ table_name OPEN_PAR indexed_column (
114
+ COMMA indexed_column
115
+ )* CLOSE_PAR (WHERE_ expr)?
116
+ ;
117
+
118
+ // Differs from syntax diagram because column_name is already a subset of expr
119
+ indexed_column
120
+ : expr (COLLATE_ collation_name)? asc_desc?
121
+ ;
122
+
123
+ create_table_stmt
124
+ : CREATE_ (TEMP_ | TEMPORARY_)? TABLE_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? table_name (
125
+ OPEN_PAR column_def (COMMA column_def)*? (COMMA table_constraint)* CLOSE_PAR table_options?
126
+ | AS_ select_stmt
127
+ )
128
+ ;
129
+
130
+ table_options
131
+ : (WITHOUT_ ROWID_ | STRICT_) (COMMA (WITHOUT_ ROWID_ | STRICT_))*
132
+ ;
133
+
134
+ column_def
135
+ : column_name type_name? column_constraint*
136
+ ;
137
+
138
+ type_name
139
+ : name+? (
140
+ OPEN_PAR signed_number CLOSE_PAR
141
+ | OPEN_PAR signed_number COMMA signed_number CLOSE_PAR
142
+ )?
143
+ ;
144
+
145
+ column_constraint
146
+ : (CONSTRAINT_ name)? (
147
+ PRIMARY_ KEY_ asc_desc? conflict_clause? AUTOINCREMENT_?
148
+ | (NOT_? NULL_ | UNIQUE_) conflict_clause?
149
+ | CHECK_ OPEN_PAR expr CLOSE_PAR
150
+ | DEFAULT_ (signed_number | literal_value | OPEN_PAR expr CLOSE_PAR)
151
+ | COLLATE_ collation_name
152
+ | foreign_key_clause
153
+ | (GENERATED_ ALWAYS_)? AS_ OPEN_PAR expr CLOSE_PAR (STORED_ | VIRTUAL_)?
154
+ )
155
+ ;
156
+
157
+ signed_number
158
+ : (PLUS | MINUS)? NUMERIC_LITERAL
159
+ ;
160
+
161
+ table_constraint
162
+ : (CONSTRAINT_ name)? (
163
+ (PRIMARY_ KEY_ | UNIQUE_) OPEN_PAR indexed_column (COMMA indexed_column)* CLOSE_PAR conflict_clause?
164
+ | CHECK_ OPEN_PAR expr CLOSE_PAR
165
+ | FOREIGN_ KEY_ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR foreign_key_clause
166
+ )
167
+ ;
168
+
169
+ foreign_key_clause
170
+ : REFERENCES_ foreign_table (OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR)? (
171
+ ON_ (DELETE_ | UPDATE_) (
172
+ SET_ (NULL_ | DEFAULT_)
173
+ | CASCADE_
174
+ | RESTRICT_
175
+ | NO_ ACTION_
176
+ )
177
+ | MATCH_ name
178
+ )* (NOT_? DEFERRABLE_ (INITIALLY_ (DEFERRED_ | IMMEDIATE_))?)?
179
+ ;
180
+
181
+ conflict_clause
182
+ : ON_ CONFLICT_ (ROLLBACK_ | ABORT_ | FAIL_ | IGNORE_ | REPLACE_)
183
+ ;
184
+
185
+ create_trigger_stmt
186
+ : CREATE_ (TEMP_ | TEMPORARY_)? TRIGGER_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? trigger_name (
187
+ BEFORE_
188
+ | AFTER_
189
+ | INSTEAD_ OF_
190
+ )? (DELETE_ | INSERT_ | UPDATE_ (OF_ column_name (COMMA column_name)*)?) ON_ table_name (
191
+ FOR_ EACH_ ROW_
192
+ )? (WHEN_ expr)? BEGIN_ (
193
+ (update_stmt | insert_stmt | delete_stmt | select_stmt) SCOL
194
+ )+ END_
195
+ ;
196
+
197
+ create_view_stmt
198
+ : CREATE_ (TEMP_ | TEMPORARY_)? VIEW_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? view_name (
199
+ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
200
+ )? AS_ select_stmt
201
+ ;
202
+
203
+ create_virtual_table_stmt
204
+ : CREATE_ VIRTUAL_ TABLE_ (IF_ NOT_ EXISTS_)? (schema_name DOT)? table_name USING_ module_name (
205
+ OPEN_PAR module_argument (COMMA module_argument)* CLOSE_PAR
206
+ )?
207
+ ;
208
+
209
+ with_clause
210
+ : WITH_ RECURSIVE_? common_table_expression (COMMA common_table_expression)*
211
+ ;
212
+
213
+ common_table_expression
214
+ : cte_table_name AS_ (NOT_? MATERIALIZED_)? OPEN_PAR select_stmt CLOSE_PAR
215
+ ;
216
+
217
+ cte_table_name
218
+ : table_name (OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR)?
219
+ ;
220
+
221
+ // Merged with delete_stmt_limited, which is an optional extension of delete_stmt
222
+ delete_stmt
223
+ : with_clause? DELETE_ FROM_ qualified_table_name (WHERE_ expr)? returning_clause? order_clause? limit_clause?
224
+ ;
225
+
226
+ detach_stmt
227
+ : DETACH_ DATABASE_? schema_name
228
+ ;
229
+
230
+ drop_stmt
231
+ : DROP_ object = (INDEX_ | TABLE_ | TRIGGER_ | VIEW_) (IF_ EXISTS_)? (
232
+ schema_name DOT
233
+ )? any_name
234
+ ;
235
+
236
+ // expr has been split into multiple levels to ensure precedence
237
+ /*
238
+ expr
239
+ : literal_value
240
+ | BIND_PARAMETER
241
+ | (schema_name DOT)? table_name DOT column_name
242
+ | column_name_excluding_string
243
+ | (MINUS | PLUS | TILDE) expr
244
+ | expr COLLATE_ collation_name
245
+ | expr (PIPE2 | JPTR | JPTR2) expr
246
+ | expr (STAR | DIV | MOD) expr
247
+ | expr (PLUS | MINUS) expr
248
+ | expr (LT2 | GT2 | AMP | PIPE) expr
249
+ | expr (LT | LT_EQ | GT | GT_EQ) expr
250
+ | expr (ASSIGN | EQ | NOT_EQ1 | NOT_EQ2) expr
251
+ | expr IS_ NOT_? (DISTINCT_ FROM_)? expr
252
+ | expr NOT_? BETWEEN_ expr AND_ expr
253
+ | expr NOT_? IN_ (
254
+ OPEN_PAR (select_stmt | expr (COMMA expr)*)? CLOSE_PAR
255
+ | (schema_name DOT)? table_name
256
+ | (schema_name DOT)? table_function_name OPEN_PAR (expr (COMMA expr)*)? CLOSE_PAR
257
+ )
258
+ | expr NOT_? (LIKE_ expr (ESCAPE_ expr)? | (GLOB_ | REGEXP_ | MATCH_) expr)
259
+ | expr (ISNULL_ | NOTNULL_ | NOT_ NULL_)
260
+ | NOT_ expr
261
+ | expr AND_ expr
262
+ | expr OR_ expr
263
+ | function_name OPEN_PAR (DISTINCT_? expr (COMMA expr)* order_clause? | STAR)? CLOSE_PAR percentile_clause? filter_clause? over_clause?
264
+ | OPEN_PAR expr (COMMA expr)* CLOSE_PAR
265
+ | CAST_ OPEN_PAR expr AS_ type_name CLOSE_PAR
266
+ | (NOT_? EXISTS_)? OPEN_PAR select_stmt CLOSE_PAR
267
+ | CASE_ expr? (WHEN_ expr THEN_ expr)+ (ELSE_ expr)? END_
268
+ | raise_function
269
+ ;
270
+ */
271
+
272
+ expr
273
+ : expr_or
274
+ ;
275
+
276
+ expr_or
277
+ : expr_and (OR_ expr_and)*
278
+ ;
279
+
280
+ expr_and
281
+ : expr_not (AND_ expr_not)*
282
+ ;
283
+
284
+ expr_not
285
+ : NOT_* expr_binary
286
+ ;
287
+
288
+ expr_binary
289
+ : expr_comparison (
290
+ (ASSIGN | EQ | NOT_EQ1 | NOT_EQ2) expr_comparison
291
+ | IS_ NOT_? (DISTINCT_ FROM_)? expr_comparison
292
+ | NOT_? BETWEEN_ expr_comparison AND_ expr_comparison
293
+ | NOT_? IN_ (
294
+ OPEN_PAR (select_stmt | expr_comparison (COMMA expr_comparison)*)? CLOSE_PAR
295
+ | (schema_name DOT)? table_name
296
+ | (schema_name DOT)? table_function_name OPEN_PAR (
297
+ expr_comparison (COMMA expr_comparison)*
298
+ )? CLOSE_PAR
299
+ )
300
+ | NOT_? (
301
+ LIKE_ expr_comparison (ESCAPE_ expr_comparison)?
302
+ | (GLOB_ | REGEXP_ | MATCH_) expr_comparison
303
+ )
304
+ | ISNULL_
305
+ | NOTNULL_
306
+ | NOT_ NULL_
307
+ )*
308
+ ;
309
+
310
+ expr_comparison
311
+ : expr_bitwise ((LT | LT_EQ | GT | GT_EQ) expr_bitwise)*
312
+ ;
313
+
314
+ expr_bitwise
315
+ : expr_addition ((LT2 | GT2 | AMP | PIPE) expr_addition)*
316
+ ;
317
+
318
+ expr_addition
319
+ : expr_multiplication ((PLUS | MINUS) expr_multiplication)*
320
+ ;
321
+
322
+ expr_multiplication
323
+ : expr_string ((STAR | DIV | MOD) expr_string)*
324
+ ;
325
+
326
+ expr_string
327
+ : expr_collate ((PIPE2 | JPTR | JPTR2) expr_collate)*
328
+ ;
329
+
330
+ expr_collate
331
+ : expr_unary (COLLATE_ collation_name)*
332
+ ;
333
+
334
+ expr_unary
335
+ : (MINUS | PLUS | TILDE)* expr_base
336
+ ;
337
+
338
+ expr_base
339
+ : literal_value
340
+ | BIND_PARAMETER
341
+ | (schema_name DOT)? table_name DOT column_name
342
+ | column_name_excluding_string
343
+ | (NOT_? EXISTS_)? OPEN_PAR select_stmt CLOSE_PAR
344
+ | raise_function
345
+ | expr_recursive
346
+ ;
347
+
348
+ expr_recursive
349
+ : function_name OPEN_PAR (DISTINCT_? expr (COMMA expr)* order_clause? | STAR)? CLOSE_PAR percentile_clause? filter_clause?
350
+ over_clause?
351
+ | OPEN_PAR expr (COMMA expr)* CLOSE_PAR
352
+ | CAST_ OPEN_PAR expr AS_ type_name CLOSE_PAR
353
+ | CASE_ expr? (WHEN_ expr THEN_ expr)+ (ELSE_ expr)? END_
354
+ ;
355
+
356
+ raise_function
357
+ : RAISE_ OPEN_PAR (IGNORE_ | (ROLLBACK_ | ABORT_ | FAIL_) COMMA error_message) CLOSE_PAR
358
+ ;
359
+
360
+ literal_value
361
+ : NUMERIC_LITERAL
362
+ | STRING_LITERAL
363
+ | BLOB_LITERAL
364
+ | NULL_
365
+ | TRUE_
366
+ | FALSE_
367
+ | CURRENT_TIME_
368
+ | CURRENT_DATE_
369
+ | CURRENT_TIMESTAMP_
370
+ ;
371
+
372
+ percentile_clause
373
+ : WITHIN_ GROUP_ OPEN_PAR ORDER_ BY_ expr CLOSE_PAR
374
+ ;
375
+
376
+ value_row
377
+ : OPEN_PAR expr (COMMA expr)* CLOSE_PAR
378
+ ;
379
+
380
+ values_clause
381
+ : VALUES_ value_row (COMMA value_row)*
382
+ ;
383
+
384
+ // Differs from syntax diagram because values_clause is already a subset of select_stmt
385
+ insert_stmt
386
+ : with_clause? (
387
+ INSERT_
388
+ | REPLACE_
389
+ | INSERT_ OR_ (REPLACE_ | ROLLBACK_ | ABORT_ | FAIL_ | IGNORE_)
390
+ ) INTO_ (schema_name DOT)? table_name (AS_ table_alias)? (
391
+ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
392
+ )? (select_stmt upsert_clause* | DEFAULT_ VALUES_) returning_clause?
393
+ ;
394
+
395
+ returning_clause
396
+ : RETURNING_ (STAR | expr (AS_? column_alias)?) (
397
+ COMMA (STAR | expr (AS_? column_alias)?)
398
+ )*
399
+ ;
400
+
401
+ upsert_clause
402
+ : ON_ CONFLICT_ (
403
+ OPEN_PAR indexed_column (COMMA indexed_column)* CLOSE_PAR (WHERE_ expr)?
404
+ )? DO_ (
405
+ NOTHING_
406
+ | UPDATE_ SET_ (column_name | column_name_list) ASSIGN expr (
407
+ COMMA (column_name | column_name_list) ASSIGN expr
408
+ )* (WHERE_ expr)?
409
+ )
410
+ ;
411
+
412
+ pragma_stmt
413
+ : PRAGMA_ (schema_name DOT)? pragma_name (
414
+ ASSIGN pragma_value
415
+ | OPEN_PAR pragma_value CLOSE_PAR
416
+ )?
417
+ ;
418
+
419
+ pragma_value
420
+ : signed_number
421
+ | name
422
+ | STRING_LITERAL
423
+ ;
424
+
425
+ reindex_stmt
426
+ : REINDEX_ (collation_name | (schema_name DOT)? (table_name | index_name))?
427
+ ;
428
+
429
+ select_stmt
430
+ : with_clause? select_core (compound_operator select_core)* order_clause? limit_clause?
431
+ ;
432
+
433
+ join_clause
434
+ : table_or_subquery (join_operator table_or_subquery join_constraint?)*
435
+ ;
436
+
437
+ // Differs from syntax diagram because comma-separated table_or_subquery is already a subset of join_clause
438
+ select_core
439
+ : SELECT_ (DISTINCT_ | ALL_)? result_column (COMMA result_column)* (
440
+ FROM_ join_clause
441
+ )? (WHERE_ where_expr = expr)? (
442
+ GROUP_ BY_ group_by_expr += expr (COMMA group_by_expr += expr)* (
443
+ HAVING_ having_expr = expr
444
+ )?
445
+ )? (WINDOW_ window_name AS_ window_defn (COMMA window_name AS_ window_defn)*)?
446
+ | values_clause
447
+ ;
448
+
449
+ // Differs from syntax diagram because comma-separated table_or_subquery is already a subset of join_clause
450
+ table_or_subquery
451
+ : (schema_name DOT)? table_name (AS_ table_alias | table_alias_excluding_joins)? (
452
+ INDEXED_ BY_ index_name
453
+ | NOT_ INDEXED_
454
+ )?
455
+ | (schema_name DOT)? table_function_name OPEN_PAR expr (COMMA expr)* CLOSE_PAR (
456
+ AS_? table_alias
457
+ )?
458
+ | OPEN_PAR join_clause CLOSE_PAR
459
+ | OPEN_PAR select_stmt CLOSE_PAR (AS_? table_alias)?
460
+ ;
461
+
462
+ result_column
463
+ : STAR
464
+ | table_name DOT STAR
465
+ | expr (AS_? column_alias)?
466
+ ;
467
+
468
+ join_operator
469
+ : COMMA
470
+ | NATURAL_? ((LEFT_ | RIGHT_ | FULL_) OUTER_? | INNER_ | CROSS_)? JOIN_
471
+ ;
472
+
473
+ join_constraint
474
+ : ON_ expr
475
+ | USING_ OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
476
+ ;
477
+
478
+ compound_operator
479
+ : UNION_ ALL_?
480
+ | INTERSECT_
481
+ | EXCEPT_
482
+ ;
483
+
484
+ // Differs from syntax diagram because comma-separated table_or_subquery is already a subset of join_clause
485
+ // Merged with update_stmt_limited, which is an optional extension of update_stmt
486
+ update_stmt
487
+ : with_clause? UPDATE_ (OR_ (ROLLBACK_ | ABORT_ | REPLACE_ | FAIL_ | IGNORE_))? qualified_table_name SET_ (
488
+ column_name
489
+ | column_name_list
490
+ ) ASSIGN expr (COMMA (column_name | column_name_list) ASSIGN expr)* (
491
+ FROM_ join_clause
492
+ )? (WHERE_ expr)? returning_clause? order_clause? limit_clause?
493
+ ;
494
+
495
+ column_name_list
496
+ : OPEN_PAR column_name (COMMA column_name)* CLOSE_PAR
497
+ ;
498
+
499
+ qualified_table_name
500
+ : (schema_name DOT)? table_name (AS_ alias)? (
501
+ INDEXED_ BY_ index_name
502
+ | NOT_ INDEXED_
503
+ )?
504
+ ;
505
+
506
+ vacuum_stmt
507
+ : VACUUM_ schema_name? (INTO_ filename)?
508
+ ;
509
+
510
+ filter_clause
511
+ : FILTER_ OPEN_PAR WHERE_ expr CLOSE_PAR
512
+ ;
513
+
514
+ window_defn
515
+ : OPEN_PAR base_window_name? (PARTITION_ BY_ expr (COMMA expr)*)? order_clause? frame_spec? CLOSE_PAR
516
+ ;
517
+
518
+ over_clause
519
+ : OVER_ (
520
+ window_name
521
+ | OPEN_PAR base_window_name? (PARTITION_ BY_ expr (COMMA expr)*)? order_clause? frame_spec? CLOSE_PAR
522
+ )
523
+ ;
524
+
525
+ frame_spec
526
+ : frame_clause (EXCLUDE_ (NO_ OTHERS_ | CURRENT_ ROW_ | GROUP_ | TIES_))?
527
+ ;
528
+
529
+ frame_clause
530
+ : (RANGE_ | ROWS_ | GROUPS_) (
531
+ frame_single
532
+ | BETWEEN_ frame_left AND_ frame_right
533
+ )
534
+ ;
535
+
536
+ order_clause
537
+ : ORDER_ BY_ ordering_term (COMMA ordering_term)*
538
+ ;
539
+
540
+ limit_clause
541
+ : LIMIT_ expr ((OFFSET_ | COMMA) expr)?
542
+ ;
543
+
544
+ ordering_term
545
+ : expr (COLLATE_ collation_name)? asc_desc? (NULLS_ (FIRST_ | LAST_))?
546
+ ;
547
+
548
+ asc_desc
549
+ : ASC_
550
+ | DESC_
551
+ ;
552
+
553
+ frame_left
554
+ : expr PRECEDING_
555
+ | expr FOLLOWING_
556
+ | CURRENT_ ROW_
557
+ // | UNBOUNDED_ PRECEDING_ // Special case of expr PRECEDING_
558
+ ;
559
+
560
+ frame_right
561
+ : expr PRECEDING_
562
+ | expr FOLLOWING_
563
+ | CURRENT_ ROW_
564
+ // | UNBOUNDED_ FOLLOWING_ // Special case of expr FOLLOWING_
565
+ ;
566
+
567
+ frame_single
568
+ : expr PRECEDING_
569
+ | CURRENT_ ROW_
570
+ // | UNBOUNDED_ PRECEDING_ // Special case of expr PRECEDING_
571
+ ;
572
+
573
+ error_message
574
+ : expr
575
+ ;
576
+
577
+ filename
578
+ : expr
579
+ ;
580
+
581
+ module_argument
582
+ : module_argument_outer*
583
+ ;
584
+
585
+ module_argument_outer
586
+ : ~(OPEN_PAR | CLOSE_PAR | UNEXPECTED_CHAR | COMMA)
587
+ | OPEN_PAR module_argument_inner* CLOSE_PAR
588
+ ;
589
+
590
+ module_argument_inner
591
+ : ~(OPEN_PAR | CLOSE_PAR | UNEXPECTED_CHAR)
592
+ | OPEN_PAR module_argument_inner* CLOSE_PAR
593
+ ;
594
+
595
+ // Only some keywords are allowed as identifiers.
596
+ fallback_excluding_conflicts
597
+ : ABORT_
598
+ | ACTION_
599
+ // | ADD_
600
+ | AFTER_
601
+ // | ALL_
602
+ // | ALTER_
603
+ | ALWAYS_
604
+ | ANALYZE_
605
+ // | AND_
606
+ // | AS_
607
+ | ASC_
608
+ | ATTACH_
609
+ // | AUTOINCREMENT_
610
+ | BEFORE_
611
+ | BEGIN_
612
+ // | BETWEEN_
613
+ | BY_
614
+ | CASCADE_
615
+ // | CASE_
616
+ | CAST_
617
+ // | CHECK_
618
+ // | COLLATE_
619
+ | COLUMN_
620
+ // | COMMIT_
621
+ | CONFLICT_
622
+ // | CONSTRAINT_
623
+ // | CREATE_
624
+ // | CROSS_
625
+ | CURRENT_
626
+ | CURRENT_DATE_
627
+ | CURRENT_TIME_
628
+ | CURRENT_TIMESTAMP_
629
+ | DATABASE_
630
+ // | DEFAULT_
631
+ // | DEFERRABLE_
632
+ | DEFERRED_
633
+ // | DELETE_
634
+ | DESC_
635
+ | DETACH_
636
+ // | DISTINCT_
637
+ | DO_
638
+ // | DROP_
639
+ | EACH_
640
+ // | ELSE_
641
+ | END_
642
+ // | ESCAPE_
643
+ | EXCEPT_
644
+ | EXCLUDE_
645
+ | EXCLUSIVE_
646
+ // | EXISTS_
647
+ | EXPLAIN_
648
+ | FAIL_
649
+ | FALSE_ // FALSE is handled as a special-case indentifier
650
+ // | FILTER_
651
+ | FIRST_
652
+ | FOLLOWING_
653
+ | FOR_
654
+ // | FOREIGN_
655
+ // | FROM_
656
+ // | FULL_
657
+ | GENERATED_
658
+ | GLOB_
659
+ // | GROUP_
660
+ | GROUPS_
661
+ // | HAVING_
662
+ | IF_
663
+ | IGNORE_
664
+ | IMMEDIATE_
665
+ // | IN_
666
+ // | INDEX_
667
+ // | INDEXED_
668
+ | INITIALLY_
669
+ // | INNER_
670
+ // | INSERT_
671
+ | INSTEAD_
672
+ | INTERSECT_
673
+ // | INTO_
674
+ // | IS_
675
+ // | ISNULL_
676
+ // | JOIN_
677
+ | KEY_
678
+ | LAST_
679
+ // | LEFT_
680
+ | LIKE_
681
+ // | LIMIT_
682
+ | MATCH_
683
+ | MATERIALIZED_
684
+ // | NATURAL_
685
+ | NO_
686
+ // | NOT_
687
+ // | NOTHING_
688
+ // | NOTNULL_
689
+ // | NULL_
690
+ | NULLS_
691
+ | OF_
692
+ | OFFSET_
693
+ // | ON_
694
+ // | OR_
695
+ // | ORDER_
696
+ | OTHERS_
697
+ // | OUTER_
698
+ // | OVER_
699
+ | PARTITION_
700
+ | PLAN_
701
+ | PRAGMA_
702
+ | PRECEDING_
703
+ // | PRIMARY_
704
+ | QUERY_
705
+ // | RAISE_
706
+ | RANGE_
707
+ | RECURSIVE_
708
+ // | REFERENCES_
709
+ | REGEXP_
710
+ | REINDEX_
711
+ | RELEASE_
712
+ | RENAME_
713
+ | REPLACE_
714
+ | RESTRICT_
715
+ // | RETURNING_
716
+ // | RIGHT_
717
+ | ROLLBACK_
718
+ | ROW_
719
+ | ROWID_ // ROWID is handled as a special-case indentifier
720
+ | ROWS_
721
+ | SAVEPOINT_
722
+ // | SELECT_
723
+ // | SET_
724
+ | STORED_ // STORED is handled as a special-case indentifier
725
+ | STRICT_ // STRICT is handled as a special-case indentifier
726
+ // | TABLE_
727
+ | TEMP_
728
+ | TEMPORARY_
729
+ // | THEN_
730
+ | TIES_
731
+ // | TO_
732
+ // | TRANSACTION_
733
+ | TRIGGER_
734
+ | TRUE_ // TRUE is handled as a special-case indentifier
735
+ | UNBOUNDED_
736
+ | UNION_
737
+ // | UNIQUE_
738
+ // | UPDATE_
739
+ // | USING_
740
+ | VACUUM_
741
+ // | VALUES_
742
+ | VIEW_
743
+ | VIRTUAL_
744
+ // | WHEN_
745
+ // | WHERE_
746
+ // | WINDOW_
747
+ | WITH_
748
+ | WITHIN_
749
+ | WITHOUT_
750
+ ;
751
+
752
+ join_keyword
753
+ : CROSS_
754
+ | FULL_
755
+ | INDEXED_
756
+ | INNER_
757
+ | LEFT_
758
+ | NATURAL_
759
+ | OUTER_
760
+ | RIGHT_
761
+ ;
762
+
763
+ fallback
764
+ : fallback_excluding_conflicts
765
+ | join_keyword
766
+ | RAISE_
767
+ ;
768
+
769
+ name
770
+ : any_name
771
+ ;
772
+
773
+ function_name
774
+ : any_name_excluding_raise
775
+ ;
776
+
777
+ schema_name
778
+ : any_name
779
+ ;
780
+
781
+ table_name
782
+ : any_name
783
+ ;
784
+
785
+ table_or_index_name
786
+ : any_name
787
+ ;
788
+
789
+ column_name
790
+ : any_name
791
+ ;
792
+
793
+ column_name_excluding_string
794
+ : any_name_excluding_string
795
+ ;
796
+
797
+ column_alias
798
+ : any_name
799
+ ;
800
+
801
+ collation_name
802
+ : any_name
803
+ ;
804
+
805
+ foreign_table
806
+ : any_name
807
+ ;
808
+
809
+ index_name
810
+ : any_name
811
+ ;
812
+
813
+ trigger_name
814
+ : any_name
815
+ ;
816
+
817
+ view_name
818
+ : any_name
819
+ ;
820
+
821
+ module_name
822
+ : any_name
823
+ ;
824
+
825
+ pragma_name
826
+ : any_name
827
+ ;
828
+
829
+ savepoint_name
830
+ : any_name
831
+ ;
832
+
833
+ table_alias
834
+ : any_name
835
+ ;
836
+
837
+ table_alias_excluding_joins
838
+ : any_name_excluding_joins
839
+ ;
840
+
841
+ window_name
842
+ : any_name
843
+ ;
844
+
845
+ alias
846
+ : any_name
847
+ ;
848
+
849
+ base_window_name
850
+ : any_name
851
+ ;
852
+
853
+ table_function_name
854
+ : any_name
855
+ ;
856
+
857
+ any_name_excluding_raise
858
+ : IDENTIFIER
859
+ | fallback_excluding_conflicts
860
+ | join_keyword
861
+ | STRING_LITERAL
862
+ ;
863
+
864
+ any_name_excluding_joins
865
+ : IDENTIFIER
866
+ | fallback_excluding_conflicts
867
+ | RAISE_
868
+ | STRING_LITERAL
869
+ ;
870
+
871
+ any_name_excluding_string
872
+ : IDENTIFIER
873
+ | fallback
874
+ ;
875
+
876
+ any_name
877
+ : IDENTIFIER
878
+ | fallback
879
+ | STRING_LITERAL
880
+ ;
881
+
882
+ // Orphans (Not ever parsed, merely provided by https://sqlite.org/syntaxdiagrams.html as partial descriptions of other rules)
883
+
884
+ /*
885
+ factored_select_stmt
886
+ : select_stmt
887
+ ;
888
+
889
+ simple_select_stmt
890
+ : with_clause? select_core order_clause? limit_clause?
891
+ ;
892
+
893
+ compound_select_stmt
894
+ : with_clause? select_core ((UNION_ ALL_? | INTERSECT_ | EXCEPT_) select_core)+ order_clause? limit_clause?
895
+ ;
896
+
897
+ recursive_cte
898
+ : cte_table_name AS_ OPEN_PAR initial_select UNION_ ALL_? recursive_select CLOSE_PAR
899
+ ;
900
+
901
+ initial_select
902
+ : select_stmt
903
+ ;
904
+
905
+ recursive_select
906
+ : select_stmt
907
+ ;
908
+
909
+ simple_function_invocation
910
+ : simple_func OPEN_PAR (expr (COMMA expr)* | STAR) CLOSE_PAR
911
+ ;
912
+
913
+ aggregate_function_invocation
914
+ : aggregate_func OPEN_PAR (DISTINCT_? expr (COMMA expr)* order_clause? | STAR)? CLOSE_PAR filter_clause?
915
+ ;
916
+
917
+ window_function_invocation
918
+ : window_func OPEN_PAR (expr (COMMA expr)* | STAR)? CLOSE_PAR filter_clause? OVER_ (
919
+ window_defn
920
+ | window_name
921
+ )
922
+ ;
923
+
924
+ simple_func
925
+ : any_name
926
+ ;
927
+
928
+ aggregate_func
929
+ : any_name
930
+ ;
931
+
932
+ window_func
933
+ : any_name
934
+ ;
935
+ */