sql-parser2 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 06a9cb5ad0df400571804c27cd88293effa7dd07
4
+ data.tar.gz: 64a2c37b254d69ee03d0db9a685ab4c09d441f7b
5
+ SHA512:
6
+ metadata.gz: 1e38306ce1c81f0efa2052b6d3e482903865ab62c69247ed5a571aca1937dffff901058806ec9e81036723ec4d36102560dd336551a1211469cd61d042fe9b21
7
+ data.tar.gz: 5b6cfb91828c02ebfd0af23b4b5985f8f56e5c78ac46e56bd4e7565b6b3d1b7adb03c791a4da70e0f30e660d6bd354e17ea0c1d24bd8b6de48d26b86e2033588
@@ -0,0 +1,13 @@
1
+ module SQLParser
2
+
3
+ require 'strscan'
4
+ require 'date'
5
+
6
+ require 'racc/parser'
7
+
8
+ require_relative 'sql-parser/version'
9
+ require_relative 'sql-parser/statement'
10
+ require_relative 'sql-parser/sql_visitor'
11
+ require_relative 'sql-parser/parser.racc.rb'
12
+
13
+ end
@@ -0,0 +1,350 @@
1
+ class SQLParser::Parser
2
+
3
+ rule
4
+ # dynamic sql
5
+
6
+ direct_sql_statement
7
+ : direct_sql_data_statement
8
+
9
+ direct_sql_data_statement
10
+ : direct_select_statement_multiple_rows
11
+ | insert_specification
12
+ | update_specification
13
+ | delete_specification
14
+
15
+ direct_select_statement_multiple_rows
16
+ : query_expression order_by_clause { result = SQLParser::Statement::DirectSelect.new(val[0], val[1]) }
17
+
18
+ # module contents
19
+ order_by_clause
20
+ : # no action
21
+ | ORDER BY sort_specification_list { result = SQLParser::Statement::OrderBy.new(val[2]) }
22
+
23
+ sort_specification_list
24
+ : sort_specification_list comma sort_specification { result = Array(val[0]) + Array(val[2]) }
25
+ | sort_specification
26
+
27
+ sort_specification
28
+ : sort_key ordering_specification { result = val[1].new(val[0]) }
29
+
30
+ sort_key
31
+ : column_name
32
+ | unsigned_integer { result = SQLParser::Statement::Integer.new(val[0]) }
33
+
34
+ ordering_specification
35
+ : { result = SQLParser::Statement::Ascending } # default
36
+ | ASC { result = SQLParser::Statement::Ascending }
37
+ | DESC { result = SQLParser::Statement::Descending }
38
+
39
+ # queries
40
+ subquery
41
+ # FIXME: shortcut
42
+ : left_paren query_expression right_paren { result = SQLParser::Statement::Subquery.new(val[1]) }
43
+
44
+ query_expression
45
+ : query_specification
46
+
47
+ insert_specification
48
+ : INSERT INTO table_reference value_list { result = SQLParser::Statement::Insert.new(val[2], nil, val[3]) }
49
+ | INSERT INTO table_reference column_list value_list { result = SQLParser::Statement::Insert.new(val[2], val[3], val[4]) }
50
+
51
+ update_specification
52
+ : UPDATE table_reference SET update_column_list where_clause { result = SQLParser::Statement::Update.new(val[1], val[3], val[4]) }
53
+
54
+ update_column
55
+ : column_name equals_operator value_expression { result = SQLParser::Statement::UpdateColumn.new(val[0], val[2]) }
56
+
57
+ update_column_sublist
58
+ : update_column comma update_column_sublist { result = Array(val[0]) + Array(val[2]) }
59
+ | update_column
60
+
61
+ update_column_list
62
+ : update_column_sublist { result = SQLParser::Statement::UpdateColumnList.new(val[0]) }
63
+
64
+ delete_specification
65
+ : DELETE from_clause where_clause { result = SQLParser::Statement::Delete.new(val[1], val[2]) }
66
+
67
+ column_list
68
+ : left_paren in_column_list right_paren { result = SQLParser::Statement::InColumnList.new(val[1]) }
69
+
70
+ in_column_list
71
+ : value_expression comma in_column_list { result = Array(val[0]) + Array(val[2]) }
72
+ | value_expression
73
+
74
+ value_list
75
+ : VALUES left_paren in_value_list right_paren { result = SQLParser::Statement::InValueList.new(val[2]) }
76
+
77
+ query_specification
78
+ : SELECT select_list table_expression { result = SQLParser::Statement::Select.new(val[1], val[2]) }
79
+ | SELECT select_list { result = SQLParser::Statement::Select.new(val[1]) }
80
+
81
+ select_list
82
+ : asterisk { result = SQLParser::Statement::All.new }
83
+ | select_sublist { result = SQLParser::Statement::SelectList.new(val[0]) }
84
+
85
+ select_sublist
86
+ : derived_column comma select_sublist { result = Array(val[0]) + Array(val[2]) }
87
+ | derived_column
88
+
89
+ derived_column
90
+ : value_expression AS column_name { result = SQLParser::Statement::As.new(val[0], val[2]) }
91
+ | value_expression column_name { result = SQLParser::Statement::As.new(val[0], val[1]) }
92
+ | value_expression
93
+
94
+ table_expression
95
+ : from_clause where_clause group_by_clause having_clause { result = SQLParser::Statement::TableExpression.new(val[0], val[1], val[2], val[3]) }
96
+
97
+ from_clause
98
+ : FROM table_reference { result = SQLParser::Statement::FromClause.new(val[1]) }
99
+
100
+ table_reference
101
+ : table_name AS column_name { result = SQLParser::Statement::As.new(val[0], val[2]) }
102
+ | table_name column_name { result = SQLParser::Statement::As.new(val[0], val[1]) }
103
+ | table_name
104
+ | joined_table
105
+
106
+ table_subquery
107
+ : subquery
108
+
109
+ joined_table
110
+ : cross_join
111
+ | qualified_join
112
+
113
+ cross_join
114
+ : table_reference comma table_name { result = SQLParser::Statement::CrossJoin.new(val[0], val[2]) }
115
+ | table_reference CROSS JOIN table_name { result = SQLParser::Statement::CrossJoin.new(val[0], val[3]) }
116
+
117
+ qualified_join
118
+ : table_reference join_type JOIN table_reference join_specification { result = val[1].new(val[0], val[3], val[4]) }
119
+
120
+ join_type
121
+ : INNER { result = SQLParser::Statement::InnerJoin }
122
+ | LEFT OUTER { result = SQLParser::Statement::LeftOuterJoin }
123
+ | LEFT { result = SQLParser::Statement::LeftJoin }
124
+ | RIGHT OUTER { result = SQLParser::Statement::RightOuterJoin }
125
+ | RIGHT { result = SQLParser::Statement::RightJoin }
126
+ | FULL { result = SQLParser::Statement::FullJoin }
127
+ | FULL OUTER { result = SQLParser::Statement::FullOuterJoin }
128
+
129
+ join_specification
130
+ : join_condition
131
+ | named_columns_join
132
+
133
+ join_condition
134
+ : ON search_condition { result = SQLParser::Statement::On.new(val[1]) }
135
+
136
+ named_columns_join
137
+ : USING left_paren join_column_list right_paren { result = SQLParser::Statement::Using.new(val[2]) }
138
+
139
+ join_column_list
140
+ : column_name_list
141
+
142
+ where_clause
143
+ : # no action
144
+ | WHERE search_condition { result = SQLParser::Statement::WhereClause.new(val[1]) }
145
+
146
+ group_by_clause
147
+ : # no action
148
+ | GROUP BY grouping_column_reference_list { result = SQLParser::Statement::GroupByClause.new(val[2]) }
149
+
150
+ grouping_column_reference_list
151
+ : grouping_column_reference_list comma grouping_column_reference { result = Array(val[0]) + Array(val[2]) }
152
+ | grouping_column_reference
153
+
154
+ grouping_column_reference
155
+ : column_reference
156
+
157
+ having_clause
158
+ : # no action
159
+ | HAVING search_condition { result = SQLParser::Statement::HavingClause.new(val[1]) }
160
+
161
+ # query expression components
162
+ row_subquery
163
+ : subquery
164
+
165
+ between_predicate
166
+ : row_value_constructor NOT BETWEEN row_value_constructor AND row_value_constructor { result = SQLParser::Statement::Not.new(SQLParser::Statement::Between.new(val[0], val[3], val[5])) }
167
+ | row_value_constructor BETWEEN row_value_constructor AND row_value_constructor { result = SQLParser::Statement::Between.new(val[0], val[2], val[4]) }
168
+
169
+ in_predicate
170
+ : row_value_constructor NOT IN in_predicate_value { result = SQLParser::Statement::Not.new(SQLParser::Statement::In.new(val[0], val[3])) }
171
+ | row_value_constructor IN in_predicate_value { result = SQLParser::Statement::In.new(val[0], val[2]) }
172
+
173
+ in_predicate_value
174
+ : table_subquery
175
+ | left_paren in_value_list right_paren { result = SQLParser::Statement::InValueList.new(val[1]) }
176
+
177
+ in_value_list
178
+ : value_expression comma in_value_list { result = Array(val[0]) + Array(val[2]) }
179
+ | value_expression
180
+
181
+ like_predicate
182
+ # FIXME: the SQL-92 grammar indicates these should be
183
+ # character_value_expression nodes, but changing them causes reduce/reduce
184
+ # conflicts.
185
+ : row_value_constructor NOT LIKE row_value_constructor { result = SQLParser::Statement::Not.new(SQLParser::Statement::Like.new(val[0], val[3])) }
186
+ | row_value_constructor LIKE row_value_constructor { result = SQLParser::Statement::Like.new(val[0], val[2]) }
187
+
188
+ null_predicate
189
+ : row_value_constructor IS NOT NULL { result = SQLParser::Statement::Not.new(SQLParser::Statement::Is.new(val[0], SQLParser::Statement::Null.new)) }
190
+ | row_value_constructor IS NULL { result = SQLParser::Statement::Is.new(val[0], SQLParser::Statement::Null.new) }
191
+
192
+ exists_predicate
193
+ : EXISTS table_subquery { result = SQLParser::Statement::Exists.new(val[1]) }
194
+
195
+ # constraints
196
+ table_name
197
+ : identifier { result = SQLParser::Statement::Table.new(val[0]) }
198
+
199
+ column_name_list
200
+ : column_name_list comma column_name { result = Array(val[0]) + Array(val[2]) }
201
+ | column_name
202
+
203
+ # search condition
204
+ search_condition
205
+ : boolean_term
206
+ | search_condition OR boolean_term { result = SQLParser::Statement::Or.new(val[0], val[2]) }
207
+
208
+ boolean_term
209
+ : boolean_factor
210
+ | boolean_term AND boolean_factor { result = SQLParser::Statement::And.new(val[0], val[2]) }
211
+
212
+ boolean_factor:
213
+ : NOT boolean_test { result = SQLParser::Statement::Not.new(val[1]) }
214
+ | boolean_test
215
+
216
+ boolean_test
217
+ : boolean_primary
218
+
219
+ boolean_primary
220
+ : predicate
221
+ | left_paren search_condition right_paren { result = val[1] }
222
+
223
+ predicate
224
+ : comparison_predicate
225
+ | between_predicate
226
+ | in_predicate
227
+ | like_predicate
228
+ | null_predicate
229
+ | exists_predicate
230
+
231
+ comparison_predicate
232
+ : row_value_constructor equals_operator row_value_constructor { result = SQLParser::Statement::Equals.new(val[0], val[2]) }
233
+ | row_value_constructor not_equals_operator row_value_constructor { result = SQLParser::Statement::Not.new(SQLParser::Statement::Equals.new(val[0], val[2])) }
234
+ | row_value_constructor less_than_operator row_value_constructor { result = SQLParser::Statement::Less.new(val[0], val[2]) }
235
+ | row_value_constructor greater_than_operator row_value_constructor { result = SQLParser::Statement::Greater.new(val[0], val[2]) }
236
+ | row_value_constructor less_than_or_equals_operator row_value_constructor { result = SQLParser::Statement::LessOrEquals.new(val[0], val[2]) }
237
+ | row_value_constructor greater_than_or_equals_operator row_value_constructor { result = SQLParser::Statement::GreaterOrEquals.new(val[0], val[2]) }
238
+
239
+ row_value_constructor
240
+ : row_value_constructor_element
241
+ | row_subquery
242
+
243
+ row_value_constructor_element
244
+ : value_expression
245
+
246
+ value_expression
247
+ : numeric_value_expression
248
+ | general_literal
249
+
250
+ numeric_value_expression
251
+ : term plus_sign numeric_value_expression { result = SQLParser::Statement::Add.new(val[0], val[2]) }
252
+ | term minus_sign numeric_value_expression { result = SQLParser::Statement::Subtract.new(val[0], val[2]) }
253
+ | term
254
+
255
+ term
256
+ : factor asterisk term { result = SQLParser::Statement::Multiply.new(val[0], val[2]) }
257
+ | factor solidus term { result = SQLParser::Statement::Divide.new(val[0], val[2]) }
258
+ | factor
259
+
260
+ factor
261
+ : sign value_expression_primary { result = val[0].new(val[1]) }
262
+ | value_expression_primary
263
+
264
+ value_expression_primary
265
+ : unsigned_value_specification
266
+ | column_reference
267
+ | set_function_specification
268
+ | left_paren value_expression right_paren { result = val[1] }
269
+
270
+ unsigned_value_specification
271
+ : unsigned_literal
272
+ | general_value_specification
273
+
274
+ unsigned_literal
275
+ : unsigned_numeric_literal
276
+ | general_literal
277
+
278
+ general_value_specification
279
+ : CURRENT_USER { result = SQLParser::Statement::CurrentUser.new }
280
+
281
+ column_reference
282
+ : qualifier period column_name { result = SQLParser::Statement::QualifiedColumn.new(val[0], val[2]) }
283
+ | column_name
284
+
285
+ qualifier
286
+ : table_name
287
+
288
+ set_function_specification
289
+ : COUNT left_paren asterisk right_paren { result = SQLParser::Statement::Count.new(SQLParser::Statement::All.new) }
290
+ | general_set_function
291
+
292
+ general_set_function
293
+ : COUNT left_paren value_expression right_paren { result = SQLParser::Statement::Count.new(val[2]) }
294
+ | AVG left_paren value_expression right_paren { result = SQLParser::Statement::Average.new(val[2]) }
295
+ | MAX left_paren value_expression right_paren { result = SQLParser::Statement::Maximum.new(val[2]) }
296
+ | MIN left_paren value_expression right_paren { result = SQLParser::Statement::Minimum.new(val[2]) }
297
+ | SUM left_paren value_expression right_paren { result = SQLParser::Statement::Sum.new(val[2]) }
298
+
299
+ # literal numbers, strings, dates and times
300
+ unsigned_numeric_literal
301
+ : exact_numeric_literal
302
+ | approximate_numeric_literal
303
+
304
+ exact_numeric_literal
305
+ : unsigned_integer period unsigned_integer { result = SQLParser::Statement::Float.new("#{val[0]}.#{val[2]}".to_f) }
306
+ | unsigned_integer period { result = SQLParser::Statement::Float.new(val[0]) }
307
+ | period unsigned_integer { result = SQLParser::Statement::Float.new("0.#{val[1]}".to_f) }
308
+ | unsigned_integer { result = SQLParser::Statement::Integer.new(val[0]) }
309
+
310
+ approximate_numeric_literal
311
+ : mantissa E exponent { result = SQLParser::Statement::ApproximateFloat.new(val[0], val[2]) }
312
+
313
+ mantissa
314
+ : exact_numeric_literal
315
+
316
+ exponent
317
+ : signed_integer
318
+
319
+ signed_integer
320
+ : sign unsigned_integer { result = val[0].new(SQLParser::Statement::Integer.new(val[1])) }
321
+ | unsigned_integer { result = SQLParser::Statement::Integer.new(val[0]) }
322
+
323
+ sign
324
+ : plus_sign { result = SQLParser::Statement::UnaryPlus }
325
+ | minus_sign { result = SQLParser::Statement::UnaryMinus }
326
+
327
+ # sql module
328
+ column_name
329
+ : identifier { result = SQLParser::Statement::Column.new(val[0]) }
330
+
331
+ # literals
332
+ general_literal
333
+ : quote character_string_literal quote { result = SQLParser::Statement::String.new(val[1]) }
334
+ | quote quote { result = SQLParser::Statement::String.new('') }
335
+ | datetime_literal
336
+
337
+ datetime_literal
338
+ : date_literal
339
+
340
+ date_literal
341
+ : DATE date_string { result = SQLParser::Statement::Date.new(val[1]) }
342
+
343
+ ---- header ----
344
+ require File.dirname(__FILE__) + '/parser.rex.rb'
345
+
346
+ ---- inner ----
347
+
348
+ def self.parse(sql)
349
+ new.scan_str(sql)
350
+ end
@@ -0,0 +1,1560 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.4.12
4
+ # from Racc grammer file "".
5
+ #
6
+
7
+ require 'racc/parser.rb'
8
+
9
+ require File.dirname(__FILE__) + '/parser.rex.rb'
10
+
11
+ module SQLParser
12
+ class Parser < Racc::Parser
13
+
14
+ module_eval(<<'...end parser.racc/module_eval...', 'parser.racc', 347)
15
+
16
+ def self.parse(sql)
17
+ new.scan_str(sql)
18
+ end
19
+ ...end parser.racc/module_eval...
20
+ ##### State transition tables begin ###
21
+
22
+ racc_action_table = [
23
+ 56, 89, 110, 40, 110, 69, 222, 9, 198, 10,
24
+ 76, 122, 11, 85, 12, 233, 224, 56, 225, 226,
25
+ 227, 234, 70, 121, 72, 73, 161, 74, 75, 219,
26
+ 220, 165, 78, 90, 56, 78, 30, 227, 78, 183,
27
+ 78, 169, 170, 59, 60, 120, 44, 57, 48, 50,
28
+ 51, 52, 53, 30, 61, 56, 64, 166, 40, 167,
29
+ 59, 60, 80, 44, 57, 48, 50, 51, 52, 53,
30
+ 30, 61, 114, 64, 59, 60, 22, 59, 60, 174,
31
+ 44, 57, 48, 50, 51, 52, 53, 80, 61, 56,
32
+ 64, 30, 126, 87, 88, 176, -131, 177, 59, 60,
33
+ 22, 44, 57, 48, 50, 51, 52, 53, 22, 61,
34
+ 56, 64, 78, 40, 104, 103, 183, 133, 78, 195,
35
+ 198, 105, 12, 201, 130, 30, -131, -131, -131, 202,
36
+ 203, 56, 59, 60, 40, 44, 57, 48, 50, 51,
37
+ 52, 53, 204, 61, 26, 64, 30, 205, 206, 207,
38
+ 208, 124, 210, 59, 60, 211, 44, 57, 48, 50,
39
+ 51, 52, 53, 102, 61, 56, 64, 30, 227, 101,
40
+ 78, 69, 100, 221, 59, 60, -150, 44, 57, 48,
41
+ 50, 51, 52, 53, 153, 61, 56, 64, 70, 40,
42
+ 72, 73, 99, 74, 75, 78, 98, 229, 12, 97,
43
+ 78, 30, 96, 56, 95, 94, 227, 153, 59, 60,
44
+ -87, 44, 57, 48, 50, 51, 52, 53, 84, 61,
45
+ 56, 64, 30, 40, 12, 24, 243, 244, 22, 59,
46
+ 60, 246, 44, 57, 48, 50, 51, 52, 53, 30,
47
+ 61, 56, 64, 247, 40, 80, 59, 60, 249, 44,
48
+ 57, 48, 50, 51, 52, 53, 30, 61, 123, 64,
49
+ 22, 229, 66, 59, 60, 65, 44, 57, 48, 50,
50
+ 51, 52, 53, 253, 61, 56, 64, 30, 126, 24,
51
+ 255, 22, 30, 16, 59, 60, 183, 44, 57, 48,
52
+ 50, 51, 52, 53, 78, 61, 56, 64, 264, 40,
53
+ 15, 266, 183, 133, 267, 268, 269, 13, 30, 78,
54
+ 130, 30, nil, nil, nil, nil, nil, nil, 59, 60,
55
+ nil, 44, 57, 48, 50, 51, 52, 53, nil, 61,
56
+ 56, 64, 30, 126, nil, nil, nil, nil, nil, 59,
57
+ 60, nil, 44, 57, 48, 50, 51, 52, 53, nil,
58
+ 61, 56, 64, nil, 227, nil, nil, nil, 133, nil,
59
+ nil, nil, nil, nil, nil, 130, 30, nil, 56, nil,
60
+ nil, 40, nil, 59, 60, nil, 44, 57, 48, 50,
61
+ 51, 52, 53, nil, 61, 56, 64, 30, 227, nil,
62
+ nil, nil, nil, nil, 59, 60, nil, 44, 57, 48,
63
+ 50, 51, 52, 53, 30, 61, 56, 64, nil, 40,
64
+ nil, 59, 60, nil, 44, 57, 48, 50, 51, 52,
65
+ 53, 30, 61, 56, 64, nil, 227, nil, 59, 60,
66
+ nil, 44, 57, 48, 50, 51, 52, 53, nil, 61,
67
+ nil, 64, 30, nil, nil, nil, nil, nil, 56, 59,
68
+ 60, 126, 44, 57, 48, 50, 51, 52, 53, 30,
69
+ 61, nil, 64, nil, nil, 56, 59, 60, 40, 44,
70
+ 57, 48, 50, 51, 52, 53, 133, 61, nil, 64,
71
+ nil, nil, 56, 130, 30, 40, nil, nil, nil, nil,
72
+ nil, 59, 60, nil, 44, 57, 48, 50, 51, 52,
73
+ 53, 30, 61, 56, 64, nil, 227, nil, nil, nil,
74
+ nil, 44, 57, 48, 50, 51, 52, 53, 30, 61,
75
+ 56, 64, nil, 227, nil, 59, 60, nil, 44, 57,
76
+ 48, 50, 51, 52, 53, nil, 61, 56, 64, 30,
77
+ 227, nil, nil, nil, nil, nil, 59, 60, nil, 44,
78
+ 57, 48, 50, 51, 52, 53, 30, 61, 56, 64,
79
+ nil, 40, nil, 59, 60, nil, 44, 57, 48, 50,
80
+ 51, 52, 53, 30, 61, 56, 64, nil, 227, nil,
81
+ 59, 60, nil, 44, 57, 48, 50, 51, 52, 53,
82
+ nil, 61, nil, 64, 30, nil, nil, nil, nil, nil,
83
+ 56, 59, 60, 126, 44, 57, 48, 50, 51, 52,
84
+ 53, 30, 61, nil, 64, nil, nil, 56, 59, 60,
85
+ 40, 44, 57, 48, 50, 51, 52, 53, 133, 61,
86
+ 155, 64, nil, nil, 56, 130, 30, 40, nil, nil,
87
+ nil, nil, nil, 59, 60, nil, 44, 57, 48, 50,
88
+ 51, 52, 53, 30, 61, 56, 64, nil, 40, nil,
89
+ 59, 60, nil, 44, 57, 48, 50, 51, 52, 53,
90
+ 30, 61, 56, 64, nil, 40, nil, 59, 60, nil,
91
+ 44, 57, 48, 50, 51, 52, 53, nil, 61, 56,
92
+ 64, 30, 40, nil, nil, nil, nil, nil, 59, 60,
93
+ nil, 44, 57, 48, 50, 51, 52, 53, 30, 61,
94
+ nil, 64, nil, nil, 56, 59, 60, 126, 44, 57,
95
+ 48, 50, 51, 52, 53, 30, 61, nil, 64, nil,
96
+ nil, 56, 59, 60, 40, 44, 57, 48, 50, 51,
97
+ 52, 53, nil, 61, nil, 64, nil, nil, 56, 130,
98
+ 30, 40, nil, nil, nil, nil, nil, 59, 60, nil,
99
+ 44, 57, 48, 50, 51, 52, 53, 30, 61, nil,
100
+ 64, nil, nil, 56, 59, 60, 227, 44, 57, 48,
101
+ 50, 51, 52, 53, 30, 61, nil, 64, nil, nil,
102
+ nil, 59, 60, nil, 44, 57, 48, 50, 51, 52,
103
+ 53, nil, 61, 56, 64, nil, 126, nil, nil, 30,
104
+ nil, nil, nil, nil, nil, 12, 59, 60, nil, 44,
105
+ 57, 48, 50, 51, 52, 53, nil, 61, nil, 64,
106
+ nil, 133, nil, nil, nil, nil, nil, nil, 130, 30,
107
+ nil, 189, nil, nil, nil, nil, 59, 60, nil, 44,
108
+ 57, 48, 50, 51, 52, 53, nil, 61, 69, 64,
109
+ 184, 185, nil, 186, 187, 188, nil, 68, nil, nil,
110
+ 190, 191, 192, 193, 194, 70, nil, 72, 73, 69,
111
+ 74, 75, nil, 113, nil, nil, nil, nil, nil, nil,
112
+ nil, 114, nil, nil, nil, nil, 70, nil, 72, 73,
113
+ nil, 74, 75 ]
114
+
115
+ racc_action_check = [
116
+ 88, 34, 167, 88, 66, 179, 181, 0, 223, 0,
117
+ 18, 73, 0, 29, 0, 188, 184, 264, 184, 184,
118
+ 264, 188, 179, 71, 179, 179, 100, 179, 179, 179,
119
+ 179, 102, 18, 34, 253, 29, 88, 253, 167, 181,
120
+ 66, 108, 108, 88, 88, 70, 88, 88, 88, 88,
121
+ 88, 88, 88, 264, 88, 247, 88, 103, 247, 106,
122
+ 264, 264, 83, 264, 264, 264, 264, 264, 264, 264,
123
+ 253, 264, 112, 264, 102, 102, 69, 253, 253, 114,
124
+ 253, 253, 253, 253, 253, 253, 253, 115, 253, 243,
125
+ 253, 247, 243, 33, 33, 116, 32, 117, 247, 247,
126
+ 120, 247, 247, 247, 247, 247, 247, 247, 121, 247,
127
+ 229, 247, 68, 229, 61, 61, 127, 243, 85, 130,
128
+ 131, 64, 229, 146, 243, 243, 32, 32, 32, 155,
129
+ 156, 12, 243, 243, 12, 243, 243, 243, 243, 243,
130
+ 243, 243, 157, 243, 12, 243, 229, 158, 159, 160,
131
+ 164, 75, 172, 229, 229, 173, 229, 229, 229, 229,
132
+ 229, 229, 229, 58, 229, 226, 229, 12, 226, 57,
133
+ 177, 81, 56, 180, 12, 12, 54, 12, 12, 12,
134
+ 12, 12, 12, 12, 182, 12, 227, 12, 81, 227,
135
+ 81, 81, 53, 81, 81, 76, 52, 186, 227, 51,
136
+ 94, 226, 50, 224, 48, 45, 224, 93, 226, 226,
137
+ 30, 226, 226, 226, 226, 226, 226, 226, 28, 226,
138
+ 87, 226, 227, 87, 195, 25, 200, 201, 24, 227,
139
+ 227, 212, 227, 227, 227, 227, 227, 227, 227, 224,
140
+ 227, 89, 227, 213, 89, 23, 224, 224, 220, 224,
141
+ 224, 224, 224, 224, 224, 224, 87, 224, 74, 224,
142
+ 16, 225, 15, 87, 87, 13, 87, 87, 87, 87,
143
+ 87, 87, 87, 228, 87, 219, 87, 89, 219, 11,
144
+ 233, 10, 244, 9, 89, 89, 248, 89, 89, 89,
145
+ 89, 89, 89, 89, 249, 89, 211, 89, 250, 211,
146
+ 7, 254, 256, 219, 257, 261, 262, 1, 267, 269,
147
+ 219, 219, nil, nil, nil, nil, nil, nil, 219, 219,
148
+ nil, 219, 219, 219, 219, 219, 219, 219, nil, 219,
149
+ 198, 219, 211, 198, nil, nil, nil, nil, nil, 211,
150
+ 211, nil, 211, 211, 211, 211, 211, 211, 211, nil,
151
+ 211, 194, 211, nil, 194, nil, nil, nil, 198, nil,
152
+ nil, nil, nil, nil, nil, 198, 198, nil, 84, nil,
153
+ nil, 84, nil, 198, 198, nil, 198, 198, 198, 198,
154
+ 198, 198, 198, nil, 198, 193, 198, 194, 193, nil,
155
+ nil, nil, nil, nil, 194, 194, nil, 194, 194, 194,
156
+ 194, 194, 194, 194, 84, 194, 90, 194, nil, 90,
157
+ nil, 84, 84, nil, 84, 84, 84, 84, 84, 84,
158
+ 84, 193, 84, 192, 84, nil, 192, nil, 193, 193,
159
+ nil, 193, 193, 193, 193, 193, 193, 193, nil, 193,
160
+ nil, 193, 90, nil, nil, nil, nil, nil, 80, 90,
161
+ 90, 80, 90, 90, 90, 90, 90, 90, 90, 192,
162
+ 90, nil, 90, nil, nil, 35, 192, 192, 35, 192,
163
+ 192, 192, 192, 192, 192, 192, 80, 192, nil, 192,
164
+ nil, nil, 40, 80, 80, 40, nil, nil, nil, nil,
165
+ nil, 80, 80, nil, 80, 80, 80, 80, 80, 80,
166
+ 80, 35, 80, 191, 80, nil, 191, nil, nil, nil,
167
+ nil, 35, 35, 35, 35, 35, 35, 35, 40, 35,
168
+ 190, 35, nil, 190, nil, 40, 40, nil, 40, 40,
169
+ 40, 40, 40, 40, 40, nil, 40, 189, 40, 191,
170
+ 189, nil, nil, nil, nil, nil, 191, 191, nil, 191,
171
+ 191, 191, 191, 191, 191, 191, 190, 191, 113, 191,
172
+ nil, 113, nil, 190, 190, nil, 190, 190, 190, 190,
173
+ 190, 190, 190, 189, 190, 185, 190, nil, 185, nil,
174
+ 189, 189, nil, 189, 189, 189, 189, 189, 189, 189,
175
+ nil, 189, nil, 189, 113, nil, nil, nil, nil, nil,
176
+ 183, 113, 113, 183, 113, 113, 113, 113, 113, 113,
177
+ 113, 185, 113, nil, 113, nil, nil, 95, 185, 185,
178
+ 95, 185, 185, 185, 185, 185, 185, 185, 183, 185,
179
+ 95, 185, nil, nil, 96, 183, 183, 96, nil, nil,
180
+ nil, nil, nil, 183, 183, nil, 183, 183, 183, 183,
181
+ 183, 183, 183, 95, 183, 176, 183, nil, 176, nil,
182
+ 95, 95, nil, 95, 95, 95, 95, 95, 95, 95,
183
+ 96, 95, 174, 95, nil, 174, nil, 96, 96, nil,
184
+ 96, 96, 96, 96, 96, 96, 96, nil, 96, 97,
185
+ 96, 176, 97, nil, nil, nil, nil, nil, 176, 176,
186
+ nil, 176, 176, 176, 176, 176, 176, 176, 174, 176,
187
+ nil, 176, nil, nil, 133, 174, 174, 133, 174, 174,
188
+ 174, 174, 174, 174, 174, 97, 174, nil, 174, nil,
189
+ nil, 98, 97, 97, 98, 97, 97, 97, 97, 97,
190
+ 97, 97, nil, 97, nil, 97, nil, nil, 99, 133,
191
+ 133, 99, nil, nil, nil, nil, nil, 133, 133, nil,
192
+ 133, 133, 133, 133, 133, 133, 133, 98, 133, nil,
193
+ 133, nil, nil, 187, 98, 98, 187, 98, 98, 98,
194
+ 98, 98, 98, 98, 99, 98, nil, 98, nil, nil,
195
+ nil, 99, 99, nil, 99, 99, 99, 99, 99, 99,
196
+ 99, nil, 99, 126, 99, nil, 126, nil, nil, 187,
197
+ nil, nil, nil, nil, nil, 126, 187, 187, nil, 187,
198
+ 187, 187, 187, 187, 187, 187, nil, 187, nil, 187,
199
+ nil, 126, nil, nil, nil, nil, nil, nil, 126, 126,
200
+ nil, 129, nil, nil, nil, nil, 126, 126, nil, 126,
201
+ 126, 126, 126, 126, 126, 126, nil, 126, 17, 126,
202
+ 129, 129, nil, 129, 129, 129, nil, 17, nil, nil,
203
+ 129, 129, 129, 129, 129, 17, nil, 17, 17, 67,
204
+ 17, 17, nil, 67, nil, nil, nil, nil, nil, nil,
205
+ nil, 67, nil, nil, nil, nil, 67, nil, 67, 67,
206
+ nil, 67, 67 ]
207
+
208
+ racc_action_pointer = [
209
+ -3, 307, nil, nil, nil, nil, nil, 298, nil, 272,
210
+ 240, 259, 126, 265, nil, 259, 219, 854, -9, nil,
211
+ nil, nil, nil, 215, 187, 205, nil, nil, 214, -6,
212
+ 158, nil, 78, 45, -17, 460, nil, nil, nil, nil,
213
+ 477, nil, nil, nil, nil, 153, nil, nil, 196, nil,
214
+ 194, 191, 188, 184, 118, nil, 120, 164, 105, nil,
215
+ nil, 55, nil, nil, 59, nil, -1, 875, 71, 35,
216
+ 23, 1, nil, -14, 233, 126, 154, nil, nil, nil,
217
+ 443, 167, nil, 32, 363, 77, nil, 215, -5, 236,
218
+ 401, nil, nil, 198, 159, 612, 629, 684, 726, 743,
219
+ 21, nil, 26, -2, nil, nil, 55, nil, 35, nil,
220
+ nil, nil, 56, 553, 71, 57, 81, 93, nil, nil,
221
+ 59, 67, nil, nil, nil, nil, 798, 74, nil, 827,
222
+ 111, 85, nil, 709, nil, nil, nil, nil, nil, nil,
223
+ nil, nil, nil, nil, nil, nil, 92, nil, nil, nil,
224
+ nil, nil, nil, nil, nil, 120, 121, 133, 138, 139,
225
+ 140, nil, nil, nil, 145, nil, nil, -3, nil, nil,
226
+ nil, nil, 143, 151, 667, nil, 650, 129, nil, 1,
227
+ 164, -3, 175, 595, -18, 570, 189, 768, -18, 532,
228
+ 515, 498, 418, 380, 346, 207, nil, nil, 325, nil,
229
+ 194, 224, nil, nil, nil, nil, nil, nil, nil, nil,
230
+ nil, 291, 222, 239, nil, nil, nil, nil, nil, 270,
231
+ 240, nil, nil, -27, 198, 253, 160, 181, 238, 105,
232
+ nil, nil, nil, 241, nil, nil, nil, nil, nil, nil,
233
+ nil, nil, nil, 84, 241, nil, nil, 50, 244, 253,
234
+ 263, nil, nil, 29, 292, nil, 260, 300, nil, nil,
235
+ nil, 296, 302, nil, 12, nil, nil, 267, nil, 268,
236
+ nil, nil, nil ]
237
+
238
+ racc_action_default = [
239
+ -162, -162, -1, -2, -3, -4, -5, -7, -18, -162,
240
+ -162, -162, -162, -162, -6, -162, -162, -162, -44, -45,
241
+ -47, -48, -87, -64, -162, -32, -33, -34, -36, -39,
242
+ -156, -114, -115, -118, -121, -162, -123, -124, -125, -126,
243
+ -162, -128, -129, -130, -132, -162, -134, -135, -162, -137,
244
+ -162, -162, -162, -162, -143, -144, -148, -162, -162, -154,
245
+ -155, -162, -159, -160, -162, 273, -162, -162, -162, -162,
246
+ -162, -162, -52, -54, -56, -57, -162, -43, -156, -26,
247
+ -162, -41, -31, -64, -162, -162, -38, -162, -162, -162,
248
+ -162, -122, -131, -162, -162, -162, -162, -162, -162, -162,
249
+ -146, -147, -162, -162, -158, -161, -8, -10, -14, -12,
250
+ -13, -19, -162, -162, -162, -64, -162, -24, -25, -49,
251
+ -162, -162, -53, -55, -58, -42, -162, -65, -73, -162,
252
+ -162, -90, -92, -162, -95, -96, -97, -99, -100, -101,
253
+ -102, -103, -104, -111, -112, -113, -66, -35, -37, -116,
254
+ -117, -119, -120, -127, -133, -162, -162, -162, -162, -162,
255
+ -162, -145, -149, -151, -162, -153, -157, -162, -11, -15,
256
+ -16, -20, -162, -29, -162, -21, -162, -162, -50, -162,
257
+ -162, -162, -113, -162, -162, -162, -162, -162, -162, -162,
258
+ -162, -162, -162, -162, -162, -162, -46, -86, -162, -94,
259
+ -71, -162, -136, -138, -139, -140, -141, -142, -152, -9,
260
+ -27, -162, -162, -81, -22, -23, -51, -59, -60, -162,
261
+ -162, -17, -98, -91, -162, -162, -162, -162, -162, -162,
262
+ -77, -78, -83, -162, -85, -105, -106, -107, -108, -109,
263
+ -110, -93, -40, -162, -162, -28, -30, -162, -61, -162,
264
+ -162, -76, -82, -162, -162, -84, -72, -67, -69, -70,
265
+ -80, -162, -63, -89, -162, -75, -79, -162, -62, -162,
266
+ -74, -68, -88 ]
267
+
268
+ racc_goto_table = [
269
+ 77, 29, 17, 127, 107, 118, 18, 212, 67, 172,
270
+ 27, 86, 18, 196, 79, 111, 81, 230, 23, 259,
271
+ 18, 258, 151, 152, 149, 150, 1, 112, 25, 93,
272
+ 82, 228, 83, 232, 115, 235, 236, 237, 238, 239,
273
+ 240, 92, 259, 200, 271, 242, 168, 197, 109, 181,
274
+ 116, 216, 217, 218, 106, 261, 251, 262, 125, 257,
275
+ 171, 14, 254, 7, 6, 119, 5, 148, 223, 196,
276
+ 250, 241, 252, 29, 146, 199, 154, 4, 3, 2,
277
+ 260, 164, 147, 91, 156, 157, 158, 159, 160, 162,
278
+ 163, nil, nil, 92, 92, 92, 92, nil, nil, 265,
279
+ nil, nil, 173, nil, nil, 209, 175, 245, 196, nil,
280
+ 270, nil, nil, 179, 215, 182, 178, 18, nil, nil,
281
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
282
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
283
+ nil, nil, 248, nil, nil, nil, nil, nil, nil, 109,
284
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 116,
285
+ nil, nil, nil, 213, nil, 214, 256, nil, nil, nil,
286
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
287
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
288
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
289
+ 173, nil, nil, nil, nil, nil, nil, nil, nil, nil,
290
+ nil, nil, nil, nil, nil, nil, 93, nil, 213, nil,
291
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
292
+ nil, 263, nil, nil, nil, nil, 213, nil, nil, nil,
293
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
294
+ nil, 272 ]
295
+
296
+ racc_goto_check = [
297
+ 13, 22, 16, 42, 10, 23, 33, 26, 16, 25,
298
+ 29, 13, 33, 14, 20, 17, 16, 52, 24, 47,
299
+ 33, 46, 65, 65, 63, 63, 1, 18, 27, 22,
300
+ 28, 50, 24, 50, 19, 50, 50, 50, 50, 50,
301
+ 50, 64, 47, 31, 46, 32, 12, 35, 13, 42,
302
+ 13, 39, 40, 41, 9, 43, 52, 44, 13, 45,
303
+ 17, 8, 26, 7, 6, 33, 5, 13, 56, 14,
304
+ 50, 57, 50, 22, 20, 58, 13, 4, 3, 2,
305
+ 26, 67, 29, 68, 22, 22, 22, 22, 22, 79,
306
+ 80, nil, nil, 64, 64, 64, 64, nil, nil, 50,
307
+ nil, nil, 22, nil, nil, 10, 20, 25, 14, nil,
308
+ 50, nil, nil, 16, 23, 22, 33, 33, nil, nil,
309
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
310
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
311
+ nil, nil, 42, nil, nil, nil, nil, nil, nil, 13,
312
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 13,
313
+ nil, nil, nil, 22, nil, 22, 42, nil, nil, nil,
314
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
315
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
316
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
317
+ 22, nil, nil, nil, nil, nil, nil, nil, nil, nil,
318
+ nil, nil, nil, nil, nil, nil, 22, nil, 22, nil,
319
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
320
+ nil, 13, nil, nil, nil, nil, 22, nil, nil, nil,
321
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
322
+ nil, 13 ]
323
+
324
+ racc_goto_pointer = [
325
+ nil, 26, 79, 78, 77, 66, 64, 63, 54, -12,
326
+ -62, nil, -62, -18, -117, nil, -8, -52, -40, -34,
327
+ -9, nil, -11, -63, 7, -104, -167, 16, 5, -2,
328
+ nil, -103, -155, -4, nil, -83, nil, nil, nil, -128,
329
+ -127, -126, -77, -194, -192, -185, -223, -225, nil, nil,
330
+ -154, nil, -169, nil, nil, nil, -115, -127, -58, nil,
331
+ nil, nil, nil, -63, 6, -67, nil, -21, 48, nil,
332
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, -13,
333
+ -12, nil, nil ]
334
+
335
+ racc_goto_default = [
336
+ nil, nil, nil, nil, nil, nil, nil, 180, nil, nil,
337
+ nil, 108, nil, 46, 128, 8, nil, nil, nil, nil,
338
+ nil, 117, 145, nil, nil, nil, nil, nil, nil, nil,
339
+ 28, nil, nil, 47, 19, 231, 20, 21, 71, nil,
340
+ nil, nil, nil, nil, nil, nil, nil, 38, 144, 138,
341
+ 129, 139, nil, 140, 141, 142, 131, 132, 134, 135,
342
+ 136, 137, 143, 31, 32, 33, 34, 35, 36, 37,
343
+ 39, 41, 42, 43, 45, 49, 54, 55, 58, nil,
344
+ nil, 62, 63 ]
345
+
346
+ racc_reduce_table = [
347
+ 0, 0, :racc_error,
348
+ 1, 64, :_reduce_none,
349
+ 1, 65, :_reduce_none,
350
+ 1, 65, :_reduce_none,
351
+ 1, 65, :_reduce_none,
352
+ 1, 65, :_reduce_none,
353
+ 2, 66, :_reduce_6,
354
+ 0, 71, :_reduce_none,
355
+ 3, 71, :_reduce_8,
356
+ 3, 72, :_reduce_9,
357
+ 1, 72, :_reduce_none,
358
+ 2, 73, :_reduce_11,
359
+ 1, 74, :_reduce_none,
360
+ 1, 74, :_reduce_13,
361
+ 0, 75, :_reduce_14,
362
+ 1, 75, :_reduce_15,
363
+ 1, 75, :_reduce_16,
364
+ 3, 77, :_reduce_17,
365
+ 1, 70, :_reduce_none,
366
+ 4, 67, :_reduce_19,
367
+ 5, 67, :_reduce_20,
368
+ 5, 68, :_reduce_21,
369
+ 3, 84, :_reduce_22,
370
+ 3, 86, :_reduce_23,
371
+ 1, 86, :_reduce_none,
372
+ 1, 82, :_reduce_25,
373
+ 3, 69, :_reduce_26,
374
+ 3, 81, :_reduce_27,
375
+ 3, 88, :_reduce_28,
376
+ 1, 88, :_reduce_none,
377
+ 4, 80, :_reduce_30,
378
+ 3, 78, :_reduce_31,
379
+ 2, 78, :_reduce_32,
380
+ 1, 90, :_reduce_33,
381
+ 1, 90, :_reduce_34,
382
+ 3, 92, :_reduce_35,
383
+ 1, 92, :_reduce_none,
384
+ 3, 93, :_reduce_37,
385
+ 2, 93, :_reduce_38,
386
+ 1, 93, :_reduce_none,
387
+ 4, 91, :_reduce_40,
388
+ 2, 87, :_reduce_41,
389
+ 3, 79, :_reduce_42,
390
+ 2, 79, :_reduce_43,
391
+ 1, 79, :_reduce_none,
392
+ 1, 79, :_reduce_none,
393
+ 1, 98, :_reduce_none,
394
+ 1, 97, :_reduce_none,
395
+ 1, 97, :_reduce_none,
396
+ 3, 99, :_reduce_49,
397
+ 4, 99, :_reduce_50,
398
+ 5, 100, :_reduce_51,
399
+ 1, 101, :_reduce_52,
400
+ 2, 101, :_reduce_53,
401
+ 1, 101, :_reduce_54,
402
+ 2, 101, :_reduce_55,
403
+ 1, 101, :_reduce_56,
404
+ 1, 101, :_reduce_57,
405
+ 2, 101, :_reduce_58,
406
+ 1, 102, :_reduce_none,
407
+ 1, 102, :_reduce_none,
408
+ 2, 103, :_reduce_61,
409
+ 4, 104, :_reduce_62,
410
+ 1, 106, :_reduce_none,
411
+ 0, 83, :_reduce_none,
412
+ 2, 83, :_reduce_65,
413
+ 0, 94, :_reduce_none,
414
+ 3, 94, :_reduce_67,
415
+ 3, 108, :_reduce_68,
416
+ 1, 108, :_reduce_none,
417
+ 1, 109, :_reduce_none,
418
+ 0, 95, :_reduce_none,
419
+ 2, 95, :_reduce_72,
420
+ 1, 111, :_reduce_none,
421
+ 6, 112, :_reduce_74,
422
+ 5, 112, :_reduce_75,
423
+ 4, 114, :_reduce_76,
424
+ 3, 114, :_reduce_77,
425
+ 1, 115, :_reduce_none,
426
+ 3, 115, :_reduce_79,
427
+ 3, 89, :_reduce_80,
428
+ 1, 89, :_reduce_none,
429
+ 4, 116, :_reduce_82,
430
+ 3, 116, :_reduce_83,
431
+ 4, 117, :_reduce_84,
432
+ 3, 117, :_reduce_85,
433
+ 2, 118, :_reduce_86,
434
+ 1, 96, :_reduce_87,
435
+ 3, 107, :_reduce_88,
436
+ 1, 107, :_reduce_none,
437
+ 1, 105, :_reduce_none,
438
+ 3, 105, :_reduce_91,
439
+ 1, 119, :_reduce_none,
440
+ 3, 119, :_reduce_93,
441
+ 2, 120, :_reduce_94,
442
+ 1, 120, :_reduce_none,
443
+ 1, 121, :_reduce_none,
444
+ 1, 122, :_reduce_none,
445
+ 3, 122, :_reduce_98,
446
+ 1, 123, :_reduce_none,
447
+ 1, 123, :_reduce_none,
448
+ 1, 123, :_reduce_none,
449
+ 1, 123, :_reduce_none,
450
+ 1, 123, :_reduce_none,
451
+ 1, 123, :_reduce_none,
452
+ 3, 124, :_reduce_105,
453
+ 3, 124, :_reduce_106,
454
+ 3, 124, :_reduce_107,
455
+ 3, 124, :_reduce_108,
456
+ 3, 124, :_reduce_109,
457
+ 3, 124, :_reduce_110,
458
+ 1, 113, :_reduce_none,
459
+ 1, 113, :_reduce_none,
460
+ 1, 125, :_reduce_none,
461
+ 1, 85, :_reduce_none,
462
+ 1, 85, :_reduce_none,
463
+ 3, 126, :_reduce_116,
464
+ 3, 126, :_reduce_117,
465
+ 1, 126, :_reduce_none,
466
+ 3, 128, :_reduce_119,
467
+ 3, 128, :_reduce_120,
468
+ 1, 128, :_reduce_none,
469
+ 2, 129, :_reduce_122,
470
+ 1, 129, :_reduce_none,
471
+ 1, 131, :_reduce_none,
472
+ 1, 131, :_reduce_none,
473
+ 1, 131, :_reduce_none,
474
+ 3, 131, :_reduce_127,
475
+ 1, 132, :_reduce_none,
476
+ 1, 132, :_reduce_none,
477
+ 1, 134, :_reduce_none,
478
+ 1, 134, :_reduce_none,
479
+ 1, 135, :_reduce_132,
480
+ 3, 110, :_reduce_133,
481
+ 1, 110, :_reduce_none,
482
+ 1, 137, :_reduce_none,
483
+ 4, 133, :_reduce_136,
484
+ 1, 133, :_reduce_none,
485
+ 4, 138, :_reduce_138,
486
+ 4, 138, :_reduce_139,
487
+ 4, 138, :_reduce_140,
488
+ 4, 138, :_reduce_141,
489
+ 4, 138, :_reduce_142,
490
+ 1, 136, :_reduce_none,
491
+ 1, 136, :_reduce_none,
492
+ 3, 139, :_reduce_145,
493
+ 2, 139, :_reduce_146,
494
+ 2, 139, :_reduce_147,
495
+ 1, 139, :_reduce_148,
496
+ 3, 140, :_reduce_149,
497
+ 1, 141, :_reduce_none,
498
+ 1, 142, :_reduce_none,
499
+ 2, 143, :_reduce_152,
500
+ 1, 143, :_reduce_153,
501
+ 1, 130, :_reduce_154,
502
+ 1, 130, :_reduce_155,
503
+ 1, 76, :_reduce_156,
504
+ 3, 127, :_reduce_157,
505
+ 2, 127, :_reduce_158,
506
+ 1, 127, :_reduce_none,
507
+ 1, 144, :_reduce_none,
508
+ 2, 145, :_reduce_161 ]
509
+
510
+ racc_reduce_n = 162
511
+
512
+ racc_shift_n = 273
513
+
514
+ racc_token_table = {
515
+ false => 0,
516
+ :error => 1,
517
+ :ORDER => 2,
518
+ :BY => 3,
519
+ :comma => 4,
520
+ :unsigned_integer => 5,
521
+ :ASC => 6,
522
+ :DESC => 7,
523
+ :left_paren => 8,
524
+ :right_paren => 9,
525
+ :INSERT => 10,
526
+ :INTO => 11,
527
+ :UPDATE => 12,
528
+ :SET => 13,
529
+ :equals_operator => 14,
530
+ :DELETE => 15,
531
+ :VALUES => 16,
532
+ :SELECT => 17,
533
+ :asterisk => 18,
534
+ :AS => 19,
535
+ :FROM => 20,
536
+ :CROSS => 21,
537
+ :JOIN => 22,
538
+ :INNER => 23,
539
+ :LEFT => 24,
540
+ :OUTER => 25,
541
+ :RIGHT => 26,
542
+ :FULL => 27,
543
+ :ON => 28,
544
+ :USING => 29,
545
+ :WHERE => 30,
546
+ :GROUP => 31,
547
+ :HAVING => 32,
548
+ :NOT => 33,
549
+ :BETWEEN => 34,
550
+ :AND => 35,
551
+ :IN => 36,
552
+ :LIKE => 37,
553
+ :IS => 38,
554
+ :NULL => 39,
555
+ :EXISTS => 40,
556
+ :identifier => 41,
557
+ :OR => 42,
558
+ :not_equals_operator => 43,
559
+ :less_than_operator => 44,
560
+ :greater_than_operator => 45,
561
+ :less_than_or_equals_operator => 46,
562
+ :greater_than_or_equals_operator => 47,
563
+ :plus_sign => 48,
564
+ :minus_sign => 49,
565
+ :solidus => 50,
566
+ :CURRENT_USER => 51,
567
+ :period => 52,
568
+ :COUNT => 53,
569
+ :AVG => 54,
570
+ :MAX => 55,
571
+ :MIN => 56,
572
+ :SUM => 57,
573
+ :E => 58,
574
+ :quote => 59,
575
+ :character_string_literal => 60,
576
+ :DATE => 61,
577
+ :date_string => 62 }
578
+
579
+ racc_nt_base = 63
580
+
581
+ racc_use_result_var = true
582
+
583
+ Racc_arg = [
584
+ racc_action_table,
585
+ racc_action_check,
586
+ racc_action_default,
587
+ racc_action_pointer,
588
+ racc_goto_table,
589
+ racc_goto_check,
590
+ racc_goto_default,
591
+ racc_goto_pointer,
592
+ racc_nt_base,
593
+ racc_reduce_table,
594
+ racc_token_table,
595
+ racc_shift_n,
596
+ racc_reduce_n,
597
+ racc_use_result_var ]
598
+
599
+ Racc_token_to_s_table = [
600
+ "$end",
601
+ "error",
602
+ "ORDER",
603
+ "BY",
604
+ "comma",
605
+ "unsigned_integer",
606
+ "ASC",
607
+ "DESC",
608
+ "left_paren",
609
+ "right_paren",
610
+ "INSERT",
611
+ "INTO",
612
+ "UPDATE",
613
+ "SET",
614
+ "equals_operator",
615
+ "DELETE",
616
+ "VALUES",
617
+ "SELECT",
618
+ "asterisk",
619
+ "AS",
620
+ "FROM",
621
+ "CROSS",
622
+ "JOIN",
623
+ "INNER",
624
+ "LEFT",
625
+ "OUTER",
626
+ "RIGHT",
627
+ "FULL",
628
+ "ON",
629
+ "USING",
630
+ "WHERE",
631
+ "GROUP",
632
+ "HAVING",
633
+ "NOT",
634
+ "BETWEEN",
635
+ "AND",
636
+ "IN",
637
+ "LIKE",
638
+ "IS",
639
+ "NULL",
640
+ "EXISTS",
641
+ "identifier",
642
+ "OR",
643
+ "not_equals_operator",
644
+ "less_than_operator",
645
+ "greater_than_operator",
646
+ "less_than_or_equals_operator",
647
+ "greater_than_or_equals_operator",
648
+ "plus_sign",
649
+ "minus_sign",
650
+ "solidus",
651
+ "CURRENT_USER",
652
+ "period",
653
+ "COUNT",
654
+ "AVG",
655
+ "MAX",
656
+ "MIN",
657
+ "SUM",
658
+ "E",
659
+ "quote",
660
+ "character_string_literal",
661
+ "DATE",
662
+ "date_string",
663
+ "$start",
664
+ "direct_sql_statement",
665
+ "direct_sql_data_statement",
666
+ "direct_select_statement_multiple_rows",
667
+ "insert_specification",
668
+ "update_specification",
669
+ "delete_specification",
670
+ "query_expression",
671
+ "order_by_clause",
672
+ "sort_specification_list",
673
+ "sort_specification",
674
+ "sort_key",
675
+ "ordering_specification",
676
+ "column_name",
677
+ "subquery",
678
+ "query_specification",
679
+ "table_reference",
680
+ "value_list",
681
+ "column_list",
682
+ "update_column_list",
683
+ "where_clause",
684
+ "update_column",
685
+ "value_expression",
686
+ "update_column_sublist",
687
+ "from_clause",
688
+ "in_column_list",
689
+ "in_value_list",
690
+ "select_list",
691
+ "table_expression",
692
+ "select_sublist",
693
+ "derived_column",
694
+ "group_by_clause",
695
+ "having_clause",
696
+ "table_name",
697
+ "joined_table",
698
+ "table_subquery",
699
+ "cross_join",
700
+ "qualified_join",
701
+ "join_type",
702
+ "join_specification",
703
+ "join_condition",
704
+ "named_columns_join",
705
+ "search_condition",
706
+ "join_column_list",
707
+ "column_name_list",
708
+ "grouping_column_reference_list",
709
+ "grouping_column_reference",
710
+ "column_reference",
711
+ "row_subquery",
712
+ "between_predicate",
713
+ "row_value_constructor",
714
+ "in_predicate",
715
+ "in_predicate_value",
716
+ "like_predicate",
717
+ "null_predicate",
718
+ "exists_predicate",
719
+ "boolean_term",
720
+ "boolean_factor",
721
+ "boolean_test",
722
+ "boolean_primary",
723
+ "predicate",
724
+ "comparison_predicate",
725
+ "row_value_constructor_element",
726
+ "numeric_value_expression",
727
+ "general_literal",
728
+ "term",
729
+ "factor",
730
+ "sign",
731
+ "value_expression_primary",
732
+ "unsigned_value_specification",
733
+ "set_function_specification",
734
+ "unsigned_literal",
735
+ "general_value_specification",
736
+ "unsigned_numeric_literal",
737
+ "qualifier",
738
+ "general_set_function",
739
+ "exact_numeric_literal",
740
+ "approximate_numeric_literal",
741
+ "mantissa",
742
+ "exponent",
743
+ "signed_integer",
744
+ "datetime_literal",
745
+ "date_literal" ]
746
+
747
+ Racc_debug_parser = false
748
+
749
+ ##### State transition tables end #####
750
+
751
+ # reduce 0 omitted
752
+
753
+ # reduce 1 omitted
754
+
755
+ # reduce 2 omitted
756
+
757
+ # reduce 3 omitted
758
+
759
+ # reduce 4 omitted
760
+
761
+ # reduce 5 omitted
762
+
763
+ module_eval(<<'.,.,', 'parser.racc', 15)
764
+ def _reduce_6(val, _values, result)
765
+ result = SQLParser::Statement::DirectSelect.new(val[0], val[1])
766
+ result
767
+ end
768
+ .,.,
769
+
770
+ # reduce 7 omitted
771
+
772
+ module_eval(<<'.,.,', 'parser.racc', 20)
773
+ def _reduce_8(val, _values, result)
774
+ result = SQLParser::Statement::OrderBy.new(val[2])
775
+ result
776
+ end
777
+ .,.,
778
+
779
+ module_eval(<<'.,.,', 'parser.racc', 23)
780
+ def _reduce_9(val, _values, result)
781
+ result = Array(val[0]) + Array(val[2])
782
+ result
783
+ end
784
+ .,.,
785
+
786
+ # reduce 10 omitted
787
+
788
+ module_eval(<<'.,.,', 'parser.racc', 27)
789
+ def _reduce_11(val, _values, result)
790
+ result = val[1].new(val[0])
791
+ result
792
+ end
793
+ .,.,
794
+
795
+ # reduce 12 omitted
796
+
797
+ module_eval(<<'.,.,', 'parser.racc', 31)
798
+ def _reduce_13(val, _values, result)
799
+ result = SQLParser::Statement::Integer.new(val[0])
800
+ result
801
+ end
802
+ .,.,
803
+
804
+ module_eval(<<'.,.,', 'parser.racc', 34)
805
+ def _reduce_14(val, _values, result)
806
+ result = SQLParser::Statement::Ascending
807
+ result
808
+ end
809
+ .,.,
810
+
811
+ module_eval(<<'.,.,', 'parser.racc', 35)
812
+ def _reduce_15(val, _values, result)
813
+ result = SQLParser::Statement::Ascending
814
+ result
815
+ end
816
+ .,.,
817
+
818
+ module_eval(<<'.,.,', 'parser.racc', 36)
819
+ def _reduce_16(val, _values, result)
820
+ result = SQLParser::Statement::Descending
821
+ result
822
+ end
823
+ .,.,
824
+
825
+ module_eval(<<'.,.,', 'parser.racc', 41)
826
+ def _reduce_17(val, _values, result)
827
+ result = SQLParser::Statement::Subquery.new(val[1])
828
+ result
829
+ end
830
+ .,.,
831
+
832
+ # reduce 18 omitted
833
+
834
+ module_eval(<<'.,.,', 'parser.racc', 47)
835
+ def _reduce_19(val, _values, result)
836
+ result = SQLParser::Statement::Insert.new(val[2], nil, val[3])
837
+ result
838
+ end
839
+ .,.,
840
+
841
+ module_eval(<<'.,.,', 'parser.racc', 48)
842
+ def _reduce_20(val, _values, result)
843
+ result = SQLParser::Statement::Insert.new(val[2], val[3], val[4])
844
+ result
845
+ end
846
+ .,.,
847
+
848
+ module_eval(<<'.,.,', 'parser.racc', 51)
849
+ def _reduce_21(val, _values, result)
850
+ result = SQLParser::Statement::Update.new(val[1], val[3], val[4])
851
+ result
852
+ end
853
+ .,.,
854
+
855
+ module_eval(<<'.,.,', 'parser.racc', 54)
856
+ def _reduce_22(val, _values, result)
857
+ result = SQLParser::Statement::UpdateColumn.new(val[0], val[2])
858
+ result
859
+ end
860
+ .,.,
861
+
862
+ module_eval(<<'.,.,', 'parser.racc', 57)
863
+ def _reduce_23(val, _values, result)
864
+ result = Array(val[0]) + Array(val[2])
865
+ result
866
+ end
867
+ .,.,
868
+
869
+ # reduce 24 omitted
870
+
871
+ module_eval(<<'.,.,', 'parser.racc', 61)
872
+ def _reduce_25(val, _values, result)
873
+ result = SQLParser::Statement::UpdateColumnList.new(val[0])
874
+ result
875
+ end
876
+ .,.,
877
+
878
+ module_eval(<<'.,.,', 'parser.racc', 64)
879
+ def _reduce_26(val, _values, result)
880
+ result = SQLParser::Statement::Delete.new(val[1], val[2])
881
+ result
882
+ end
883
+ .,.,
884
+
885
+ module_eval(<<'.,.,', 'parser.racc', 67)
886
+ def _reduce_27(val, _values, result)
887
+ result = SQLParser::Statement::InColumnList.new(val[1])
888
+ result
889
+ end
890
+ .,.,
891
+
892
+ module_eval(<<'.,.,', 'parser.racc', 70)
893
+ def _reduce_28(val, _values, result)
894
+ result = Array(val[0]) + Array(val[2])
895
+ result
896
+ end
897
+ .,.,
898
+
899
+ # reduce 29 omitted
900
+
901
+ module_eval(<<'.,.,', 'parser.racc', 74)
902
+ def _reduce_30(val, _values, result)
903
+ result = SQLParser::Statement::InValueList.new(val[2])
904
+ result
905
+ end
906
+ .,.,
907
+
908
+ module_eval(<<'.,.,', 'parser.racc', 77)
909
+ def _reduce_31(val, _values, result)
910
+ result = SQLParser::Statement::Select.new(val[1], val[2])
911
+ result
912
+ end
913
+ .,.,
914
+
915
+ module_eval(<<'.,.,', 'parser.racc', 78)
916
+ def _reduce_32(val, _values, result)
917
+ result = SQLParser::Statement::Select.new(val[1])
918
+ result
919
+ end
920
+ .,.,
921
+
922
+ module_eval(<<'.,.,', 'parser.racc', 81)
923
+ def _reduce_33(val, _values, result)
924
+ result = SQLParser::Statement::All.new
925
+ result
926
+ end
927
+ .,.,
928
+
929
+ module_eval(<<'.,.,', 'parser.racc', 82)
930
+ def _reduce_34(val, _values, result)
931
+ result = SQLParser::Statement::SelectList.new(val[0])
932
+ result
933
+ end
934
+ .,.,
935
+
936
+ module_eval(<<'.,.,', 'parser.racc', 85)
937
+ def _reduce_35(val, _values, result)
938
+ result = Array(val[0]) + Array(val[2])
939
+ result
940
+ end
941
+ .,.,
942
+
943
+ # reduce 36 omitted
944
+
945
+ module_eval(<<'.,.,', 'parser.racc', 89)
946
+ def _reduce_37(val, _values, result)
947
+ result = SQLParser::Statement::As.new(val[0], val[2])
948
+ result
949
+ end
950
+ .,.,
951
+
952
+ module_eval(<<'.,.,', 'parser.racc', 90)
953
+ def _reduce_38(val, _values, result)
954
+ result = SQLParser::Statement::As.new(val[0], val[1])
955
+ result
956
+ end
957
+ .,.,
958
+
959
+ # reduce 39 omitted
960
+
961
+ module_eval(<<'.,.,', 'parser.racc', 94)
962
+ def _reduce_40(val, _values, result)
963
+ result = SQLParser::Statement::TableExpression.new(val[0], val[1], val[2], val[3])
964
+ result
965
+ end
966
+ .,.,
967
+
968
+ module_eval(<<'.,.,', 'parser.racc', 97)
969
+ def _reduce_41(val, _values, result)
970
+ result = SQLParser::Statement::FromClause.new(val[1])
971
+ result
972
+ end
973
+ .,.,
974
+
975
+ module_eval(<<'.,.,', 'parser.racc', 100)
976
+ def _reduce_42(val, _values, result)
977
+ result = SQLParser::Statement::As.new(val[0], val[2])
978
+ result
979
+ end
980
+ .,.,
981
+
982
+ module_eval(<<'.,.,', 'parser.racc', 101)
983
+ def _reduce_43(val, _values, result)
984
+ result = SQLParser::Statement::As.new(val[0], val[1])
985
+ result
986
+ end
987
+ .,.,
988
+
989
+ # reduce 44 omitted
990
+
991
+ # reduce 45 omitted
992
+
993
+ # reduce 46 omitted
994
+
995
+ # reduce 47 omitted
996
+
997
+ # reduce 48 omitted
998
+
999
+ module_eval(<<'.,.,', 'parser.racc', 113)
1000
+ def _reduce_49(val, _values, result)
1001
+ result = SQLParser::Statement::CrossJoin.new(val[0], val[2])
1002
+ result
1003
+ end
1004
+ .,.,
1005
+
1006
+ module_eval(<<'.,.,', 'parser.racc', 114)
1007
+ def _reduce_50(val, _values, result)
1008
+ result = SQLParser::Statement::CrossJoin.new(val[0], val[3])
1009
+ result
1010
+ end
1011
+ .,.,
1012
+
1013
+ module_eval(<<'.,.,', 'parser.racc', 117)
1014
+ def _reduce_51(val, _values, result)
1015
+ result = val[1].new(val[0], val[3], val[4])
1016
+ result
1017
+ end
1018
+ .,.,
1019
+
1020
+ module_eval(<<'.,.,', 'parser.racc', 120)
1021
+ def _reduce_52(val, _values, result)
1022
+ result = SQLParser::Statement::InnerJoin
1023
+ result
1024
+ end
1025
+ .,.,
1026
+
1027
+ module_eval(<<'.,.,', 'parser.racc', 121)
1028
+ def _reduce_53(val, _values, result)
1029
+ result = SQLParser::Statement::LeftOuterJoin
1030
+ result
1031
+ end
1032
+ .,.,
1033
+
1034
+ module_eval(<<'.,.,', 'parser.racc', 122)
1035
+ def _reduce_54(val, _values, result)
1036
+ result = SQLParser::Statement::LeftJoin
1037
+ result
1038
+ end
1039
+ .,.,
1040
+
1041
+ module_eval(<<'.,.,', 'parser.racc', 123)
1042
+ def _reduce_55(val, _values, result)
1043
+ result = SQLParser::Statement::RightOuterJoin
1044
+ result
1045
+ end
1046
+ .,.,
1047
+
1048
+ module_eval(<<'.,.,', 'parser.racc', 124)
1049
+ def _reduce_56(val, _values, result)
1050
+ result = SQLParser::Statement::RightJoin
1051
+ result
1052
+ end
1053
+ .,.,
1054
+
1055
+ module_eval(<<'.,.,', 'parser.racc', 125)
1056
+ def _reduce_57(val, _values, result)
1057
+ result = SQLParser::Statement::FullJoin
1058
+ result
1059
+ end
1060
+ .,.,
1061
+
1062
+ module_eval(<<'.,.,', 'parser.racc', 126)
1063
+ def _reduce_58(val, _values, result)
1064
+ result = SQLParser::Statement::FullOuterJoin
1065
+ result
1066
+ end
1067
+ .,.,
1068
+
1069
+ # reduce 59 omitted
1070
+
1071
+ # reduce 60 omitted
1072
+
1073
+ module_eval(<<'.,.,', 'parser.racc', 133)
1074
+ def _reduce_61(val, _values, result)
1075
+ result = SQLParser::Statement::On.new(val[1])
1076
+ result
1077
+ end
1078
+ .,.,
1079
+
1080
+ module_eval(<<'.,.,', 'parser.racc', 136)
1081
+ def _reduce_62(val, _values, result)
1082
+ result = SQLParser::Statement::Using.new(val[2])
1083
+ result
1084
+ end
1085
+ .,.,
1086
+
1087
+ # reduce 63 omitted
1088
+
1089
+ # reduce 64 omitted
1090
+
1091
+ module_eval(<<'.,.,', 'parser.racc', 143)
1092
+ def _reduce_65(val, _values, result)
1093
+ result = SQLParser::Statement::WhereClause.new(val[1])
1094
+ result
1095
+ end
1096
+ .,.,
1097
+
1098
+ # reduce 66 omitted
1099
+
1100
+ module_eval(<<'.,.,', 'parser.racc', 147)
1101
+ def _reduce_67(val, _values, result)
1102
+ result = SQLParser::Statement::GroupByClause.new(val[2])
1103
+ result
1104
+ end
1105
+ .,.,
1106
+
1107
+ module_eval(<<'.,.,', 'parser.racc', 150)
1108
+ def _reduce_68(val, _values, result)
1109
+ result = Array(val[0]) + Array(val[2])
1110
+ result
1111
+ end
1112
+ .,.,
1113
+
1114
+ # reduce 69 omitted
1115
+
1116
+ # reduce 70 omitted
1117
+
1118
+ # reduce 71 omitted
1119
+
1120
+ module_eval(<<'.,.,', 'parser.racc', 158)
1121
+ def _reduce_72(val, _values, result)
1122
+ result = SQLParser::Statement::HavingClause.new(val[1])
1123
+ result
1124
+ end
1125
+ .,.,
1126
+
1127
+ # reduce 73 omitted
1128
+
1129
+ module_eval(<<'.,.,', 'parser.racc', 165)
1130
+ def _reduce_74(val, _values, result)
1131
+ result = SQLParser::Statement::Not.new(SQLParser::Statement::Between.new(val[0], val[3], val[5]))
1132
+ result
1133
+ end
1134
+ .,.,
1135
+
1136
+ module_eval(<<'.,.,', 'parser.racc', 166)
1137
+ def _reduce_75(val, _values, result)
1138
+ result = SQLParser::Statement::Between.new(val[0], val[2], val[4])
1139
+ result
1140
+ end
1141
+ .,.,
1142
+
1143
+ module_eval(<<'.,.,', 'parser.racc', 169)
1144
+ def _reduce_76(val, _values, result)
1145
+ result = SQLParser::Statement::Not.new(SQLParser::Statement::In.new(val[0], val[3]))
1146
+ result
1147
+ end
1148
+ .,.,
1149
+
1150
+ module_eval(<<'.,.,', 'parser.racc', 170)
1151
+ def _reduce_77(val, _values, result)
1152
+ result = SQLParser::Statement::In.new(val[0], val[2])
1153
+ result
1154
+ end
1155
+ .,.,
1156
+
1157
+ # reduce 78 omitted
1158
+
1159
+ module_eval(<<'.,.,', 'parser.racc', 174)
1160
+ def _reduce_79(val, _values, result)
1161
+ result = SQLParser::Statement::InValueList.new(val[1])
1162
+ result
1163
+ end
1164
+ .,.,
1165
+
1166
+ module_eval(<<'.,.,', 'parser.racc', 177)
1167
+ def _reduce_80(val, _values, result)
1168
+ result = Array(val[0]) + Array(val[2])
1169
+ result
1170
+ end
1171
+ .,.,
1172
+
1173
+ # reduce 81 omitted
1174
+
1175
+ module_eval(<<'.,.,', 'parser.racc', 184)
1176
+ def _reduce_82(val, _values, result)
1177
+ result = SQLParser::Statement::Not.new(SQLParser::Statement::Like.new(val[0], val[3]))
1178
+ result
1179
+ end
1180
+ .,.,
1181
+
1182
+ module_eval(<<'.,.,', 'parser.racc', 185)
1183
+ def _reduce_83(val, _values, result)
1184
+ result = SQLParser::Statement::Like.new(val[0], val[2])
1185
+ result
1186
+ end
1187
+ .,.,
1188
+
1189
+ module_eval(<<'.,.,', 'parser.racc', 188)
1190
+ def _reduce_84(val, _values, result)
1191
+ result = SQLParser::Statement::Not.new(SQLParser::Statement::Is.new(val[0], SQLParser::Statement::Null.new))
1192
+ result
1193
+ end
1194
+ .,.,
1195
+
1196
+ module_eval(<<'.,.,', 'parser.racc', 189)
1197
+ def _reduce_85(val, _values, result)
1198
+ result = SQLParser::Statement::Is.new(val[0], SQLParser::Statement::Null.new)
1199
+ result
1200
+ end
1201
+ .,.,
1202
+
1203
+ module_eval(<<'.,.,', 'parser.racc', 192)
1204
+ def _reduce_86(val, _values, result)
1205
+ result = SQLParser::Statement::Exists.new(val[1])
1206
+ result
1207
+ end
1208
+ .,.,
1209
+
1210
+ module_eval(<<'.,.,', 'parser.racc', 196)
1211
+ def _reduce_87(val, _values, result)
1212
+ result = SQLParser::Statement::Table.new(val[0])
1213
+ result
1214
+ end
1215
+ .,.,
1216
+
1217
+ module_eval(<<'.,.,', 'parser.racc', 199)
1218
+ def _reduce_88(val, _values, result)
1219
+ result = Array(val[0]) + Array(val[2])
1220
+ result
1221
+ end
1222
+ .,.,
1223
+
1224
+ # reduce 89 omitted
1225
+
1226
+ # reduce 90 omitted
1227
+
1228
+ module_eval(<<'.,.,', 'parser.racc', 205)
1229
+ def _reduce_91(val, _values, result)
1230
+ result = SQLParser::Statement::Or.new(val[0], val[2])
1231
+ result
1232
+ end
1233
+ .,.,
1234
+
1235
+ # reduce 92 omitted
1236
+
1237
+ module_eval(<<'.,.,', 'parser.racc', 209)
1238
+ def _reduce_93(val, _values, result)
1239
+ result = SQLParser::Statement::And.new(val[0], val[2])
1240
+ result
1241
+ end
1242
+ .,.,
1243
+
1244
+ module_eval(<<'.,.,', 'parser.racc', 212)
1245
+ def _reduce_94(val, _values, result)
1246
+ result = SQLParser::Statement::Not.new(val[1])
1247
+ result
1248
+ end
1249
+ .,.,
1250
+
1251
+ # reduce 95 omitted
1252
+
1253
+ # reduce 96 omitted
1254
+
1255
+ # reduce 97 omitted
1256
+
1257
+ module_eval(<<'.,.,', 'parser.racc', 220)
1258
+ def _reduce_98(val, _values, result)
1259
+ result = val[1]
1260
+ result
1261
+ end
1262
+ .,.,
1263
+
1264
+ # reduce 99 omitted
1265
+
1266
+ # reduce 100 omitted
1267
+
1268
+ # reduce 101 omitted
1269
+
1270
+ # reduce 102 omitted
1271
+
1272
+ # reduce 103 omitted
1273
+
1274
+ # reduce 104 omitted
1275
+
1276
+ module_eval(<<'.,.,', 'parser.racc', 231)
1277
+ def _reduce_105(val, _values, result)
1278
+ result = SQLParser::Statement::Equals.new(val[0], val[2])
1279
+ result
1280
+ end
1281
+ .,.,
1282
+
1283
+ module_eval(<<'.,.,', 'parser.racc', 232)
1284
+ def _reduce_106(val, _values, result)
1285
+ result = SQLParser::Statement::Not.new(SQLParser::Statement::Equals.new(val[0], val[2]))
1286
+ result
1287
+ end
1288
+ .,.,
1289
+
1290
+ module_eval(<<'.,.,', 'parser.racc', 233)
1291
+ def _reduce_107(val, _values, result)
1292
+ result = SQLParser::Statement::Less.new(val[0], val[2])
1293
+ result
1294
+ end
1295
+ .,.,
1296
+
1297
+ module_eval(<<'.,.,', 'parser.racc', 234)
1298
+ def _reduce_108(val, _values, result)
1299
+ result = SQLParser::Statement::Greater.new(val[0], val[2])
1300
+ result
1301
+ end
1302
+ .,.,
1303
+
1304
+ module_eval(<<'.,.,', 'parser.racc', 235)
1305
+ def _reduce_109(val, _values, result)
1306
+ result = SQLParser::Statement::LessOrEquals.new(val[0], val[2])
1307
+ result
1308
+ end
1309
+ .,.,
1310
+
1311
+ module_eval(<<'.,.,', 'parser.racc', 236)
1312
+ def _reduce_110(val, _values, result)
1313
+ result = SQLParser::Statement::GreaterOrEquals.new(val[0], val[2])
1314
+ result
1315
+ end
1316
+ .,.,
1317
+
1318
+ # reduce 111 omitted
1319
+
1320
+ # reduce 112 omitted
1321
+
1322
+ # reduce 113 omitted
1323
+
1324
+ # reduce 114 omitted
1325
+
1326
+ # reduce 115 omitted
1327
+
1328
+ module_eval(<<'.,.,', 'parser.racc', 250)
1329
+ def _reduce_116(val, _values, result)
1330
+ result = SQLParser::Statement::Add.new(val[0], val[2])
1331
+ result
1332
+ end
1333
+ .,.,
1334
+
1335
+ module_eval(<<'.,.,', 'parser.racc', 251)
1336
+ def _reduce_117(val, _values, result)
1337
+ result = SQLParser::Statement::Subtract.new(val[0], val[2])
1338
+ result
1339
+ end
1340
+ .,.,
1341
+
1342
+ # reduce 118 omitted
1343
+
1344
+ module_eval(<<'.,.,', 'parser.racc', 255)
1345
+ def _reduce_119(val, _values, result)
1346
+ result = SQLParser::Statement::Multiply.new(val[0], val[2])
1347
+ result
1348
+ end
1349
+ .,.,
1350
+
1351
+ module_eval(<<'.,.,', 'parser.racc', 256)
1352
+ def _reduce_120(val, _values, result)
1353
+ result = SQLParser::Statement::Divide.new(val[0], val[2])
1354
+ result
1355
+ end
1356
+ .,.,
1357
+
1358
+ # reduce 121 omitted
1359
+
1360
+ module_eval(<<'.,.,', 'parser.racc', 260)
1361
+ def _reduce_122(val, _values, result)
1362
+ result = val[0].new(val[1])
1363
+ result
1364
+ end
1365
+ .,.,
1366
+
1367
+ # reduce 123 omitted
1368
+
1369
+ # reduce 124 omitted
1370
+
1371
+ # reduce 125 omitted
1372
+
1373
+ # reduce 126 omitted
1374
+
1375
+ module_eval(<<'.,.,', 'parser.racc', 267)
1376
+ def _reduce_127(val, _values, result)
1377
+ result = val[1]
1378
+ result
1379
+ end
1380
+ .,.,
1381
+
1382
+ # reduce 128 omitted
1383
+
1384
+ # reduce 129 omitted
1385
+
1386
+ # reduce 130 omitted
1387
+
1388
+ # reduce 131 omitted
1389
+
1390
+ module_eval(<<'.,.,', 'parser.racc', 278)
1391
+ def _reduce_132(val, _values, result)
1392
+ result = SQLParser::Statement::CurrentUser.new
1393
+ result
1394
+ end
1395
+ .,.,
1396
+
1397
+ module_eval(<<'.,.,', 'parser.racc', 281)
1398
+ def _reduce_133(val, _values, result)
1399
+ result = SQLParser::Statement::QualifiedColumn.new(val[0], val[2])
1400
+ result
1401
+ end
1402
+ .,.,
1403
+
1404
+ # reduce 134 omitted
1405
+
1406
+ # reduce 135 omitted
1407
+
1408
+ module_eval(<<'.,.,', 'parser.racc', 288)
1409
+ def _reduce_136(val, _values, result)
1410
+ result = SQLParser::Statement::Count.new(SQLParser::Statement::All.new)
1411
+ result
1412
+ end
1413
+ .,.,
1414
+
1415
+ # reduce 137 omitted
1416
+
1417
+ module_eval(<<'.,.,', 'parser.racc', 292)
1418
+ def _reduce_138(val, _values, result)
1419
+ result = SQLParser::Statement::Count.new(val[2])
1420
+ result
1421
+ end
1422
+ .,.,
1423
+
1424
+ module_eval(<<'.,.,', 'parser.racc', 293)
1425
+ def _reduce_139(val, _values, result)
1426
+ result = SQLParser::Statement::Average.new(val[2])
1427
+ result
1428
+ end
1429
+ .,.,
1430
+
1431
+ module_eval(<<'.,.,', 'parser.racc', 294)
1432
+ def _reduce_140(val, _values, result)
1433
+ result = SQLParser::Statement::Maximum.new(val[2])
1434
+ result
1435
+ end
1436
+ .,.,
1437
+
1438
+ module_eval(<<'.,.,', 'parser.racc', 295)
1439
+ def _reduce_141(val, _values, result)
1440
+ result = SQLParser::Statement::Minimum.new(val[2])
1441
+ result
1442
+ end
1443
+ .,.,
1444
+
1445
+ module_eval(<<'.,.,', 'parser.racc', 296)
1446
+ def _reduce_142(val, _values, result)
1447
+ result = SQLParser::Statement::Sum.new(val[2])
1448
+ result
1449
+ end
1450
+ .,.,
1451
+
1452
+ # reduce 143 omitted
1453
+
1454
+ # reduce 144 omitted
1455
+
1456
+ module_eval(<<'.,.,', 'parser.racc', 304)
1457
+ def _reduce_145(val, _values, result)
1458
+ result = SQLParser::Statement::Float.new("#{val[0]}.#{val[2]}".to_f)
1459
+ result
1460
+ end
1461
+ .,.,
1462
+
1463
+ module_eval(<<'.,.,', 'parser.racc', 305)
1464
+ def _reduce_146(val, _values, result)
1465
+ result = SQLParser::Statement::Float.new(val[0])
1466
+ result
1467
+ end
1468
+ .,.,
1469
+
1470
+ module_eval(<<'.,.,', 'parser.racc', 306)
1471
+ def _reduce_147(val, _values, result)
1472
+ result = SQLParser::Statement::Float.new("0.#{val[1]}".to_f)
1473
+ result
1474
+ end
1475
+ .,.,
1476
+
1477
+ module_eval(<<'.,.,', 'parser.racc', 307)
1478
+ def _reduce_148(val, _values, result)
1479
+ result = SQLParser::Statement::Integer.new(val[0])
1480
+ result
1481
+ end
1482
+ .,.,
1483
+
1484
+ module_eval(<<'.,.,', 'parser.racc', 310)
1485
+ def _reduce_149(val, _values, result)
1486
+ result = SQLParser::Statement::ApproximateFloat.new(val[0], val[2])
1487
+ result
1488
+ end
1489
+ .,.,
1490
+
1491
+ # reduce 150 omitted
1492
+
1493
+ # reduce 151 omitted
1494
+
1495
+ module_eval(<<'.,.,', 'parser.racc', 319)
1496
+ def _reduce_152(val, _values, result)
1497
+ result = val[0].new(SQLParser::Statement::Integer.new(val[1]))
1498
+ result
1499
+ end
1500
+ .,.,
1501
+
1502
+ module_eval(<<'.,.,', 'parser.racc', 320)
1503
+ def _reduce_153(val, _values, result)
1504
+ result = SQLParser::Statement::Integer.new(val[0])
1505
+ result
1506
+ end
1507
+ .,.,
1508
+
1509
+ module_eval(<<'.,.,', 'parser.racc', 323)
1510
+ def _reduce_154(val, _values, result)
1511
+ result = SQLParser::Statement::UnaryPlus
1512
+ result
1513
+ end
1514
+ .,.,
1515
+
1516
+ module_eval(<<'.,.,', 'parser.racc', 324)
1517
+ def _reduce_155(val, _values, result)
1518
+ result = SQLParser::Statement::UnaryMinus
1519
+ result
1520
+ end
1521
+ .,.,
1522
+
1523
+ module_eval(<<'.,.,', 'parser.racc', 328)
1524
+ def _reduce_156(val, _values, result)
1525
+ result = SQLParser::Statement::Column.new(val[0])
1526
+ result
1527
+ end
1528
+ .,.,
1529
+
1530
+ module_eval(<<'.,.,', 'parser.racc', 332)
1531
+ def _reduce_157(val, _values, result)
1532
+ result = SQLParser::Statement::String.new(val[1])
1533
+ result
1534
+ end
1535
+ .,.,
1536
+
1537
+ module_eval(<<'.,.,', 'parser.racc', 333)
1538
+ def _reduce_158(val, _values, result)
1539
+ result = SQLParser::Statement::String.new('')
1540
+ result
1541
+ end
1542
+ .,.,
1543
+
1544
+ # reduce 159 omitted
1545
+
1546
+ # reduce 160 omitted
1547
+
1548
+ module_eval(<<'.,.,', 'parser.racc', 340)
1549
+ def _reduce_161(val, _values, result)
1550
+ result = SQLParser::Statement::Date.new(val[1])
1551
+ result
1552
+ end
1553
+ .,.,
1554
+
1555
+ def _reduce_none(val, _values, result)
1556
+ val[0]
1557
+ end
1558
+
1559
+ end # class Parser
1560
+ end # module SQLParser