1
- // originally generated pegjs, from tmp/rules.rb and bubble-to-pegjs_ex.rb
2
-
1
+ // originally generated by pegjs, from tmp/rules.rb and bubble-to-pegjs_ex.rb
2
+ // and manually edited for pegjs suitability.
3
+ //
3
4
start = sql_stmt_list
4
5
5
6
sql_stmt_list =
@@ -9,15 +10,19 @@ sql_stmt =
9
10
( ( EXPLAIN ( QUERY PLAN )? )? (
10
11
// alter_table_stmt
11
12
// / analyze_stmt
12
- // / attach_stmt / begin_stmt / commit_stmt
13
- // / create_index_stmt / create_table_stmt / create_trigger_stmt
14
- // / create_view_stmt / create_virtual_table_stmt
15
- // / delete_stmt / delete_stmt_limited
13
+ // / attach_stmt
14
+ // / begin_stmt / commit_stmt
15
+ // / create_index_stmt
16
+ create_table_stmt
17
+ // / create_trigger_stmt
18
+ // / create_view_stmt
19
+ // / create_virtual_table_stmt
20
+ / delete_stmt / delete_stmt_limited
16
21
// / detach_stmt / drop_index_stmt / drop_table_stmt / drop_trigger_stmt / drop_view_stmt
17
- // / insert_stmt
22
+ / insert_stmt
18
23
// / pragma_stmt / reindex_stmt / release_stmt / rollback_stmt / savepoint_stmt
19
- select_stmt
20
- // / update_stmt / update_stmt_limited
24
+ / select_stmt
25
+ / update_stmt / update_stmt_limited
21
26
// / vacuum_stmt
22
27
) )
23
28
@@ -53,7 +58,9 @@ indexed_column =
53
58
54
59
create_table_stmt =
55
60
( ( CREATE ( TEMP / TEMPORARY )? TABLE ( IF NOT EXISTS )? )
56
- ( ( database_name dot )? table_name ( lparen ( column_def comma )+ ( nil ( comma table_constraint ) )+ rparen ) ( AS select_stmt ) ) )
61
+ ( ( database_name dot )? table_name
62
+ ( lparen ( column_def comma )+ ( comma table_constraint )+ rparen )
63
+ ( AS select_stmt ) ) )
57
64
58
65
column_def =
59
66
( column_name ( type_name )? ( column_constraint )+ )
@@ -78,7 +85,15 @@ table_constraint =
78
85
( ( CONSTRAINT name )? ( ( ( ( PRIMARY KEY ) / UNIQUE ) lparen ( indexed_column comma )+ rparen conflict_clause ) / ( CHECK lparen expr rparen ) / ( FOREIGN KEY lparen ( column_name comma )+ rparen foreign_key_clause ) ) )
79
86
80
87
foreign_key_clause =
81
- ( ( REFERENCES foreign_table ( lparen ( column_name comma )+ rparen )? ) ( ( ( ( ON ( DELETE / UPDATE ) ( ( SET NULL ) / ( SET DEFAULT ) / CASCADE / RESTRICT / ( NO ACTION ) ) ) / ( MATCH name ) ) nil )+ )? ( ( ( NOT )? DEFERRABLE ( ( INITIALLY DEFERRED ) / ( INITIALLY IMMEDIATE ) / nil ) ) nil )? )
88
+ ( ( REFERENCES foreign_table ( lparen ( column_name comma )+ rparen )? )
89
+ ( ( ( ON ( DELETE / UPDATE )
90
+ ( ( SET NULL )
91
+ / ( SET DEFAULT )
92
+ / CASCADE
93
+ / RESTRICT
94
+ / ( NO ACTION ) ) )
95
+ / ( MATCH name ) )+ )?
96
+ ( ( NOT )? DEFERRABLE ( ( INITIALLY DEFERRED ) / ( INITIALLY IMMEDIATE ) )? )? )
82
97
83
98
conflict_clause =
84
99
( ( ON CONFLICT ( ROLLBACK / ABORT / FAIL / IGNORE / REPLACE ) ) )?
@@ -88,7 +103,7 @@ create_trigger_stmt =
88
103
( ( database_name dot )? trigger_name ( BEFORE / AFTER / ( INSTEAD OF ) )? )
89
104
( ( DELETE / INSERT / ( UPDATE ( OF ( column_name comma )+ )? ) ) ON table_name )
90
105
( ( FOR EACH ROW )? ( WHEN expr )? )
91
- ( BEGIN ( ( ( update_stmt / insert_stmt / delete_stmt / select_stmt ) semicolon ) nil )+ END ) )
106
+ ( BEGIN ( ( update_stmt / insert_stmt / delete_stmt / select_stmt ) semicolon )+ END ) )
92
107
93
108
create_view_stmt =
94
109
( ( CREATE ( TEMP / TEMPORARY )? VIEW ( IF NOT EXISTS )? )
@@ -145,19 +160,20 @@ literal_value =
145
160
( numeric_literal / string_literal / blob_literal / NULL / CURRENT_TIME / CURRENT_DATE / CURRENT_TIMESTAMP )
146
161
147
162
numeric_literal =
148
- ( ( ( ( digit nil )+ ( decimal_point ( nil digit )+ )? ) / ( decimal_point ( digit nil )+ ) ) ( E ( nil / plus / minus ) ( digit nil )+ )? )
163
+ ( ( ( ( digit )+ ( decimal_point ( digit )+ )? )
164
+ / ( decimal_point ( digit )+ ) ) ( E ( plus / minus )? ( digit )+ )? )
149
165
150
166
insert_stmt =
151
167
( ( ( ( INSERT ( OR ( ROLLBACK / ABORT / REPLACE / FAIL / IGNORE ) )? ) / REPLACE ) INTO ( database_name dot )? table_name ) ( ( lparen ( column_name comma )+ rparen )? ( VALUES lparen ( expr comma )+ rparen ) select_stmt ) ( DEFAULT VALUES ) )
152
168
153
169
pragma_stmt =
154
- ( PRAGMA ( database_name dot )? pragma_name ( nil / ( equal pragma_value ) / ( lparen pragma_value rparen ) ) )
170
+ ( PRAGMA ( database_name dot )? pragma_name ( ( equal pragma_value ) / ( lparen pragma_value rparen ) )? )
155
171
156
172
pragma_value =
157
173
( signed_number / name / string_literal )
158
174
159
175
reindex_stmt =
160
- ( REINDEX nil collation_name ( ( database_name dot )? table_name index_name ) )
176
+ ( REINDEX collation_name ( ( database_name dot )? table_name index_name ) )
161
177
162
178
select_stmt =
163
179
( select_core compound_operator )+
@@ -199,7 +215,7 @@ join_constraint =
199
215
/ ( USING lparen ( column_name comma )+ rparen ) )?
200
216
201
217
ordering_term =
202
- ( expr ( COLLATE collation_name )? ( nil / ASC / DESC ) )
218
+ ( expr ( COLLATE collation_name )? ( ASC / DESC )? )
203
219
204
220
compound_operator =
205
221
( ( UNION ( ALL )? ) / INTERSECT / EXCEPT )
@@ -211,13 +227,14 @@ update_stmt_limited =
211
227
( ( UPDATE ( OR ( ROLLBACK / ABORT / REPLACE / FAIL / IGNORE ) )? qualified_table_name ) ( SET ( ( column_name equal expr ) comma )+ ( WHERE expr )? ) ( ( ( ORDER BY ( ordering_term comma )+ )? ( LIMIT expr ( ( OFFSET / comma ) expr )? ) ) )? )
212
228
213
229
qualified_table_name =
214
- ( ( database_name dot )? table_name ( nil / ( INDEXED BY index_name ) / ( NOT INDEXED ) ) )
230
+ ( ( database_name dot )? table_name ( ( INDEXED BY index_name ) / ( NOT INDEXED ) )? )
215
231
216
232
vacuum_stmt =
217
233
VACUUM
218
234
219
235
comment_syntax =
220
- ( ( minusminus ( nil anything_except_newline )+ ( newline / end_of_input ) ) / ( comment_beg ( nil anything_except_comment_end )+ ( comment_end / end_of_input ) ) )
236
+ ( ( minusminus ( anything_except_newline )+ ( newline / end_of_input ) )
237
+ / ( comment_beg ( anything_except_comment_end )+ ( comment_end / end_of_input ) ) )
221
238
222
239
dot = '.'
223
240
comma = ','
@@ -322,7 +339,8 @@ DESC = whitespace1 "DESC"
322
339
DETACH = whitespace1 "DETACH"
323
340
DISTINCT = whitespace1 "DISTINCT"
324
341
DROP = whitespace1 "DROP"
325
- E = whitespace1 "E"
342
+ E =
343
+ "E"
326
344
EACH = whitespace1 "EACH"
327
345
ELSE = whitespace1 "ELSE"
328
346
END = whitespace1 "END"
0 commit comments