1 /* Driver template for the LEMON parser generator.
2 ** The author disclaims copyright to this source code.
3 */
4 /* First off, code is include which follows the "include" declaration
5 ** in the input file. */
6 #include <stdio.h>
7 #line 30 "parser.php7.lemon"
8
9 #include "parser.php7.inc.h"
10
11 #line 12 "parser.php7.c"
12 /* Next is all token values, in a form suitable for use by makeheaders.
13 ** This section will be null unless lemon is run with the -m switch.
14 */
15 /*
16 ** These constants (all generated automatically by the parser generator)
17 ** specify the various kinds of tokens (terminals) that the parser
18 ** understands.
19 **
20 ** Each symbol here is a terminal symbol in the grammar.
21 */
22 /* Make sure the INTERFACE macro is defined.
23 */
24 #ifndef INTERFACE
25 # define INTERFACE 1
26 #endif
27 /* The next thing included is series of defines which control
28 ** various aspects of the generated parser.
29 ** YYCODETYPE is the data type used for storing terminal
30 ** and nonterminal numbers. "unsigned char" is
31 ** used if there are fewer than 250 terminals
32 ** and nonterminals. "int" is used otherwise.
33 ** YYNOCODE is a number of type YYCODETYPE which corresponds
34 ** to no legal terminal or nonterminal number. This
35 ** number is used to fill in empty slots of the hash
36 ** table.
37 ** YYFALLBACK If defined, this indicates that one or more tokens
38 ** have fall-back values which should be used if the
39 ** original value of the token will not parse.
40 ** YYACTIONTYPE is the data type used for storing terminal
41 ** and nonterminal numbers. "unsigned char" is
42 ** used if there are fewer than 250 rules and
43 ** states combined. "int" is used otherwise.
44 ** phql_TOKENTYPE is the data type used for minor tokens given
45 ** directly to the parser from the tokenizer.
46 ** YYMINORTYPE is the data type used for all minor tokens.
47 ** This is typically a union of many types, one of
48 ** which is phql_TOKENTYPE. The entry in the union
49 ** for base tokens is called "yy0".
50 ** YYSTACKDEPTH is the maximum depth of the parser's stack.
51 ** phql_ARG_SDECL A static variable declaration for the %extra_argument
52 ** phql_ARG_PDECL A parameter declaration for the %extra_argument
53 ** phql_ARG_STORE Code to store %extra_argument into yypParser
54 ** phql_ARG_FETCH Code to extract %extra_argument from yypParser
55 ** YYNSTATE the combined number of states.
56 ** YYNRULE the number of rules in the grammar
57 ** YYERRORSYMBOL is the code number of the error symbol. If not
58 ** defined, then do no error processing.
59 */
60 #define YYCODETYPE unsigned char
61 #define YYNOCODE 135
62 #define YYACTIONTYPE unsigned short int
63 #define phql_TOKENTYPE phql_parser_token*
64 typedef union {
65 phql_TOKENTYPE yy0;
66 zval yy202;
67 int yy269;
68 } YYMINORTYPE;
69 #define YYSTACKDEPTH 100
70 #define phql_ARG_SDECL phql_parser_status *status;
71 #define phql_ARG_PDECL ,phql_parser_status *status
72 #define phql_ARG_FETCH phql_parser_status *status = yypParser->status
73 #define phql_ARG_STORE yypParser->status = status
74 #define YYNSTATE 295
75 #define YYNRULE 162
76 #define YYERRORSYMBOL 80
77 #define YYERRSYMDT yy269
78 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2)
79 #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1)
80 #define YY_ERROR_ACTION (YYNSTATE+YYNRULE)
81
82 /* Next are that tables used to determine what action to take based on the
83 ** current state and lookahead token. These tables are used to implement
84 ** functions that take a state number and lookahead value and return an
85 ** action integer.
86 **
87 ** Suppose the action integer is N. Then the action is determined as
88 ** follows
89 **
90 ** 0 <= N < YYNSTATE Shift N. That is, push the lookahead
91 ** token onto the stack and goto state N.
92 **
93 ** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE.
94 **
95 ** N == YYNSTATE+YYNRULE A syntax error has occurred.
96 **
97 ** N == YYNSTATE+YYNRULE+1 The parser accepts its input.
98 **
99 ** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused
100 ** slots in the yy_action[] table.
101 **
102 ** The action table is constructed as a single large table named yy_action[].
103 ** Given state S and lookahead X, the action is computed as
104 **
105 ** yy_action[ yy_shift_ofst[S] + X ]
106 **
107 ** If the index value yy_shift_ofst[S]+X is out of range or if the value
108 ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
109 ** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
110 ** and that yy_default[S] should be used instead.
111 **
112 ** The formula above is for computing the action when the lookahead is
113 ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
114 ** a reduce action) then the yy_reduce_ofst[] array is used in place of
115 ** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
116 ** YY_SHIFT_USE_DFLT.
117 **
118 ** The following are the tables generated in this section:
119 **
120 ** yy_action[] A single table containing all actions.
121 ** yy_lookahead[] A table containing the lookahead for each entry in
122 ** yy_action. Used to detect hash collisions.
123 ** yy_shift_ofst[] For each state, the offset into yy_action for
124 ** shifting terminals.
125 ** yy_reduce_ofst[] For each state, the offset into yy_action for
126 ** shifting non-terminals after a reduce.
127 ** yy_default[] Default action for each state.
128 */
129 static YYACTIONTYPE yy_action[] = {
130 /* 0 */ 120, 126, 128, 55, 57, 59, 61, 63, 65, 45,
131 /* 10 */ 47, 67, 72, 49, 51, 53, 41, 39, 43, 37,
132 /* 20 */ 34, 122, 74, 69, 120, 126, 128, 55, 57, 59,
133 /* 30 */ 61, 63, 65, 45, 47, 67, 72, 49, 51, 53,
134 /* 40 */ 41, 39, 43, 37, 34, 122, 74, 69, 19, 20,
135 /* 50 */ 21, 22, 23, 32, 33, 120, 126, 128, 55, 57,
136 /* 60 */ 59, 61, 63, 65, 45, 47, 67, 72, 49, 51,
137 /* 70 */ 53, 41, 39, 43, 37, 34, 122, 74, 69, 37,
138 /* 80 */ 34, 122, 74, 69, 94, 222, 81, 220, 95, 90,
139 /* 90 */ 111, 211, 113, 114, 213, 156, 79, 188, 89, 120,
140 /* 100 */ 126, 128, 55, 57, 59, 61, 63, 65, 45, 47,
141 /* 110 */ 67, 72, 49, 51, 53, 41, 39, 43, 37, 34,
142 /* 120 */ 122, 74, 69, 55, 57, 59, 61, 63, 65, 45,
143 /* 130 */ 47, 67, 72, 49, 51, 53, 41, 39, 43, 37,
144 /* 140 */ 34, 122, 74, 69, 132, 249, 120, 126, 128, 55,
145 /* 150 */ 57, 59, 61, 63, 65, 45, 47, 67, 72, 49,
146 /* 160 */ 51, 53, 41, 39, 43, 37, 34, 122, 74, 69,
147 /* 170 */ 41, 39, 43, 37, 34, 122, 74, 69, 142, 7,
148 /* 180 */ 120, 126, 128, 55, 57, 59, 61, 63, 65, 45,
149 /* 190 */ 47, 67, 72, 49, 51, 53, 41, 39, 43, 37,
150 /* 200 */ 34, 122, 74, 69, 120, 126, 128, 55, 57, 59,
151 /* 210 */ 61, 63, 65, 45, 47, 67, 72, 49, 51, 53,
152 /* 220 */ 41, 39, 43, 37, 34, 122, 74, 69, 45, 47,
153 /* 230 */ 67, 72, 49, 51, 53, 41, 39, 43, 37, 34,
154 /* 240 */ 122, 74, 69, 122, 74, 69, 154, 156, 148, 188,
155 /* 250 */ 120, 126, 128, 55, 57, 59, 61, 63, 65, 45,
156 /* 260 */ 47, 67, 72, 49, 51, 53, 41, 39, 43, 37,
157 /* 270 */ 34, 122, 74, 69, 170, 242, 158, 35, 95, 99,
158 /* 280 */ 171, 173, 8, 76, 112, 113, 114, 161, 49, 51,
159 /* 290 */ 53, 41, 39, 43, 37, 34, 122, 74, 69, 83,
160 /* 300 */ 170, 130, 295, 35, 84, 92, 171, 173, 296, 194,
161 /* 310 */ 210, 196, 198, 161, 202, 206, 107, 176, 177, 183,
162 /* 320 */ 184, 185, 135, 139, 145, 100, 151, 130, 432, 124,
163 /* 330 */ 17, 180, 178, 179, 181, 182, 297, 228, 236, 224,
164 /* 340 */ 225, 6, 6, 176, 177, 183, 184, 185, 135, 139,
165 /* 350 */ 145, 115, 151, 164, 164, 298, 94, 180, 178, 179,
166 /* 360 */ 181, 182, 215, 107, 24, 35, 70, 230, 171, 173,
167 /* 370 */ 98, 175, 175, 95, 104, 216, 92, 232, 76, 299,
168 /* 380 */ 123, 226, 234, 92, 160, 160, 119, 186, 186, 130,
169 /* 390 */ 193, 35, 191, 251, 171, 173, 91, 76, 278, 94,
170 /* 400 */ 292, 161, 240, 105, 175, 176, 177, 183, 184, 185,
171 /* 410 */ 135, 139, 145, 103, 151, 130, 82, 160, 9, 180,
172 /* 420 */ 178, 179, 181, 182, 194, 210, 196, 198, 26, 202,
173 /* 430 */ 206, 176, 177, 183, 184, 185, 135, 139, 145, 10,
174 /* 440 */ 151, 164, 31, 153, 190, 180, 178, 179, 181, 182,
175 /* 450 */ 170, 218, 96, 35, 85, 109, 171, 173, 137, 175,
176 /* 460 */ 175, 168, 6, 161, 110, 28, 239, 15, 162, 167,
177 /* 470 */ 168, 102, 160, 160, 165, 186, 11, 130, 217, 35,
178 /* 480 */ 13, 431, 171, 173, 12, 201, 121, 247, 199, 161,
179 /* 490 */ 227, 162, 14, 176, 177, 183, 184, 185, 135, 139,
180 /* 500 */ 145, 27, 151, 130, 175, 175, 16, 180, 178, 179,
181 /* 510 */ 181, 182, 244, 248, 281, 288, 284, 160, 160, 176,
182 /* 520 */ 177, 183, 184, 185, 135, 139, 145, 18, 151, 205,
183 /* 530 */ 254, 262, 203, 180, 178, 179, 181, 182, 67, 72,
184 /* 540 */ 49, 51, 53, 41, 39, 43, 37, 34, 122, 74,
185 /* 550 */ 69, 209, 78, 25, 207, 223, 219, 253, 258, 458,
186 /* 560 */ 1, 2, 3, 4, 5, 6, 133, 29, 168, 107,
187 /* 570 */ 6, 77, 260, 263, 175, 31, 272, 69, 257, 283,
188 /* 580 */ 284, 256, 131, 260, 261, 75, 127, 160, 235, 108,
189 /* 590 */ 175, 273, 267, 175, 86, 261, 109, 289, 94, 30,
190 /* 600 */ 175, 175, 164, 160, 175, 279, 160, 80, 214, 219,
191 /* 610 */ 84, 212, 247, 160, 160, 87, 84, 160, 88, 260,
192 /* 620 */ 175, 238, 107, 287, 93, 97, 36, 175, 107, 101,
193 /* 630 */ 175, 259, 106, 160, 110, 38, 169, 175, 246, 175,
194 /* 640 */ 160, 175, 286, 160, 175, 40, 42, 44, 269, 46,
195 /* 650 */ 160, 386, 160, 175, 160, 48, 50, 160, 116, 125,
196 /* 660 */ 118, 52, 117, 175, 175, 175, 160, 175, 264, 258,
197 /* 670 */ 54, 134, 56, 175, 175, 58, 160, 160, 160, 175,
198 /* 680 */ 160, 60, 62, 136, 64, 76, 160, 160, 175, 268,
199 /* 690 */ 175, 66, 160, 175, 138, 140, 143, 149, 144, 175,
200 /* 700 */ 175, 160, 175, 160, 146, 187, 160, 68, 71, 175,
201 /* 710 */ 276, 73, 160, 160, 129, 160, 141, 147, 150, 152,
202 /* 720 */ 155, 163, 160, 157, 166, 175, 175, 192, 159, 175,
203 /* 730 */ 195, 172, 175, 174, 175, 175, 323, 175, 160, 160,
204 /* 740 */ 189, 175, 160, 231, 197, 160, 175, 160, 160, 175,
205 /* 750 */ 160, 175, 241, 324, 160, 250, 200, 325, 175, 160,
206 /* 760 */ 326, 175, 160, 204, 160, 327, 328, 294, 208, 329,
207 /* 770 */ 175, 160, 84, 175, 160, 330, 331, 221, 229, 245,
208 /* 780 */ 243, 233, 255, 160, 107, 237, 160, 334, 271, 335,
209 /* 790 */ 252, 270, 265, 342, 266, 274, 275, 277, 385, 280,
210 /* 800 */ 282, 285, 290, 291, 348, 293,
211 };
212 static YYCODETYPE yy_lookahead[] = {
213 /* 0 */ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
214 /* 10 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
215 /* 20 */ 21, 22, 23, 24, 1, 2, 3, 4, 5, 6,
216 /* 30 */ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
217 /* 40 */ 17, 18, 19, 20, 21, 22, 23, 24, 61, 62,
218 /* 50 */ 63, 64, 65, 54, 55, 1, 2, 3, 4, 5,
219 /* 60 */ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
220 /* 70 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 20,
221 /* 80 */ 21, 22, 23, 24, 31, 31, 97, 33, 120, 121,
222 /* 90 */ 101, 102, 103, 104, 26, 72, 28, 74, 45, 1,
223 /* 100 */ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
224 /* 110 */ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
225 /* 120 */ 22, 23, 24, 4, 5, 6, 7, 8, 9, 10,
226 /* 130 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
227 /* 140 */ 21, 22, 23, 24, 46, 51, 1, 2, 3, 4,
228 /* 150 */ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
229 /* 160 */ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
230 /* 170 */ 17, 18, 19, 20, 21, 22, 23, 24, 33, 88,
231 /* 180 */ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
232 /* 190 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
233 /* 200 */ 21, 22, 23, 24, 1, 2, 3, 4, 5, 6,
234 /* 210 */ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
235 /* 220 */ 17, 18, 19, 20, 21, 22, 23, 24, 10, 11,
236 /* 230 */ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
237 /* 240 */ 22, 23, 24, 22, 23, 24, 71, 72, 69, 74,
238 /* 250 */ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
239 /* 260 */ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
240 /* 270 */ 21, 22, 23, 24, 18, 56, 73, 21, 120, 121,
241 /* 280 */ 24, 25, 89, 27, 102, 103, 104, 31, 14, 15,
242 /* 290 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 100,
243 /* 300 */ 18, 45, 0, 21, 105, 26, 24, 25, 0, 34,
244 /* 310 */ 35, 36, 37, 31, 39, 40, 117, 61, 62, 63,
245 /* 320 */ 64, 65, 66, 67, 68, 46, 70, 45, 46, 24,
246 /* 330 */ 26, 75, 76, 77, 78, 79, 0, 83, 83, 29,
247 /* 340 */ 30, 87, 87, 61, 62, 63, 64, 65, 66, 67,
248 /* 350 */ 68, 105, 70, 99, 99, 0, 31, 75, 76, 77,
249 /* 360 */ 78, 79, 18, 117, 60, 21, 12, 13, 24, 25,
250 /* 370 */ 45, 117, 117, 120, 121, 31, 26, 23, 27, 0,
251 /* 380 */ 75, 127, 127, 26, 130, 130, 99, 133, 133, 45,
252 /* 390 */ 31, 21, 33, 42, 24, 25, 46, 27, 47, 31,
253 /* 400 */ 49, 31, 57, 46, 117, 61, 62, 63, 64, 65,
254 /* 410 */ 66, 67, 68, 45, 70, 45, 26, 130, 90, 75,
255 /* 420 */ 76, 77, 78, 79, 34, 35, 36, 37, 52, 39,
256 /* 430 */ 40, 61, 62, 63, 64, 65, 66, 67, 68, 91,
257 /* 440 */ 70, 99, 99, 128, 129, 75, 76, 77, 78, 79,
258 /* 450 */ 18, 18, 31, 21, 33, 32, 24, 25, 83, 117,
259 /* 460 */ 117, 26, 87, 31, 31, 122, 123, 59, 45, 127,
260 /* 470 */ 26, 50, 130, 130, 132, 133, 92, 45, 32, 21,
261 /* 480 */ 58, 46, 24, 25, 93, 35, 99, 99, 38, 31,
262 /* 490 */ 46, 45, 47, 61, 62, 63, 64, 65, 66, 67,
263 /* 500 */ 68, 53, 70, 45, 117, 117, 126, 75, 76, 77,
264 /* 510 */ 78, 79, 124, 125, 115, 116, 117, 130, 130, 61,
265 /* 520 */ 62, 63, 64, 65, 66, 67, 68, 126, 70, 35,
266 /* 530 */ 44, 45, 38, 75, 76, 77, 78, 79, 12, 13,
267 /* 540 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
268 /* 550 */ 24, 35, 95, 126, 38, 98, 99, 105, 26, 81,
269 /* 560 */ 82, 83, 84, 85, 86, 87, 83, 26, 26, 117,
270 /* 570 */ 87, 94, 99, 109, 117, 99, 112, 24, 46, 116,
271 /* 580 */ 117, 108, 99, 99, 111, 45, 99, 130, 46, 31,
272 /* 590 */ 117, 113, 108, 117, 31, 111, 32, 119, 31, 123,
273 /* 600 */ 117, 117, 99, 130, 117, 100, 130, 96, 98, 99,
274 /* 610 */ 105, 100, 99, 130, 130, 50, 105, 130, 120, 99,
275 /* 620 */ 117, 99, 117, 99, 120, 50, 99, 117, 117, 120,
276 /* 630 */ 117, 111, 120, 130, 31, 99, 133, 117, 125, 117,
277 /* 640 */ 130, 117, 118, 130, 117, 99, 99, 99, 26, 99,
278 /* 650 */ 130, 0, 130, 117, 130, 99, 99, 130, 106, 75,
279 /* 660 */ 41, 99, 107, 117, 117, 117, 130, 117, 46, 26,
280 /* 670 */ 99, 46, 99, 117, 117, 99, 130, 130, 130, 117,
281 /* 680 */ 130, 99, 99, 45, 99, 27, 130, 130, 117, 46,
282 /* 690 */ 117, 99, 130, 117, 46, 45, 31, 31, 46, 117,
283 /* 700 */ 117, 130, 117, 130, 45, 29, 130, 99, 99, 117,
284 /* 710 */ 59, 99, 130, 130, 99, 130, 99, 99, 46, 99,
285 /* 720 */ 129, 131, 130, 99, 46, 117, 117, 31, 99, 117,
286 /* 730 */ 35, 99, 117, 99, 117, 117, 31, 117, 130, 130,
287 /* 740 */ 99, 117, 130, 99, 35, 130, 117, 130, 130, 117,
288 /* 750 */ 130, 117, 99, 31, 130, 99, 35, 31, 117, 130,
289 /* 760 */ 31, 117, 130, 35, 130, 31, 31, 100, 35, 31,
290 /* 770 */ 117, 130, 105, 117, 130, 31, 31, 31, 46, 26,
291 /* 780 */ 53, 45, 45, 130, 117, 46, 130, 0, 31, 0,
292 /* 790 */ 43, 112, 44, 0, 45, 88, 114, 126, 0, 48,
293 /* 800 */ 26, 4, 88, 114, 0, 28,
294 };
295 #define YY_SHIFT_USE_DFLT (-14)
296 static short yy_shift_ofst[] = {
297 /* 0 */ 351, 302, 308, 336, 355, 379, 94, 219, 345, 376,
298 /* 10 */ 408, 422, -14, 445, -14, -13, 304, -13, -14, -14,
299 /* 20 */ -14, -14, -14, -14, -13, -14, 448, 458, 541, 458,
300 /* 30 */ -14, -1, -14, -14, 458, 458, 221, 458, 221, 458,
301 /* 40 */ 59, 458, 59, 458, 59, 458, 526, 458, 526, 458,
302 /* 50 */ 153, 458, 153, 458, 153, 458, 218, 458, 218, 458,
303 /* 60 */ 218, 458, 218, 458, 218, 458, 218, 458, 274, 354,
304 /* 70 */ 458, 553, 458, 274, 540, 256, 310, 344, 68, 558,
305 /* 80 */ 390, -14, 558, -14, 421, 563, 565, 53, -14, 567,
306 /* 90 */ 350, -14, 567, -14, -14, -14, 575, 325, 567, 279,
307 /* 100 */ -14, -14, 368, 567, 357, -14, -14, -14, 564, 603,
308 /* 110 */ -14, 275, -14, -14, 558, 359, 619, -14, 458, 249,
309 /* 120 */ 458, 249, 305, -14, 584, -14, 458, 119, 458, 119,
310 /* 130 */ 370, 98, -14, 625, -14, 638, 658, 648, -14, 650,
311 /* 140 */ 458, 145, 665, 652, -14, 659, 458, 179, 666, 672,
312 /* 150 */ -14, 458, 23, 175, -14, -14, 458, 203, 458, 249,
313 /* 160 */ -14, 423, 676, 282, 249, 678, -14, 435, 432, -14,
314 /* 170 */ -14, 458, 553, 458, 553, -14, -14, -14, -14, -14,
315 /* 180 */ -14, -14, -14, -14, -14, -14, -14, -14, 458, 249,
316 /* 190 */ -14, 696, -14, -14, 695, 705, 709, 722, 450, 721,
317 /* 200 */ 726, 729, 494, 728, 734, 735, 516, 733, 738, 744,
318 /* 210 */ 745, -14, -14, 344, -14, -14, 446, 433, -14, 54,
319 /* 220 */ 746, -14, -14, -14, -14, -14, 444, -14, 732, -14,
320 /* 230 */ 458, 553, 736, 256, 542, -14, 739, -14, 221, -14,
321 /* 240 */ 458, 249, 727, 458, 753, 458, -14, 249, -14, 458,
322 /* 250 */ 249, 747, 558, 486, 737, 458, 532, 787, 458, -14,
323 /* 260 */ 249, -14, 757, 622, 748, 749, 458, 643, 789, 757,
324 /* 270 */ -14, -14, -14, 94, 651, 793, -13, 798, 558, 751,
325 /* 280 */ 558, 774, 558, -14, 797, 458, -14, 249, -14, 94,
326 /* 290 */ 651, 804, 777, 558, -14,
327 };
328 #define YY_REDUCE_USE_DFLT (-33)
329 static short yy_reduce_ofst[] = {
330 /* 0 */ 478, -33, -33, -33, -33, -33, 91, 193, 328, 348,
331 /* 10 */ 384, 391, -33, -33, -33, 380, -33, 401, -33, -33,
332 /* 20 */ -33, -33, -33, -33, 427, -33, -33, 343, -33, 476,
333 /* 30 */ -33, -33, -33, -33, 522, 527, -33, 536, -33, 546,
334 /* 40 */ -33, 547, -33, 548, -33, 550, -33, 556, -33, 557,
335 /* 50 */ -33, 562, -33, 571, -33, 573, -33, 576, -33, 582,
336 /* 60 */ -33, 583, -33, 585, -33, 592, -33, 608, -33, -33,
337 /* 70 */ 609, -33, 612, -33, -33, 254, 477, 457, -33, 511,
338 /* 80 */ -11, -33, 199, -33, -33, -33, -33, 498, -33, -32,
339 /* 90 */ -33, -33, 504, -33, -33, -33, -33, 509, 158, -33,
340 /* 100 */ -33, -33, 512, 253, -33, -33, -33, -33, -33, -33,
341 /* 110 */ -33, 182, -33, -33, 246, 552, 555, -33, 287, -33,
342 /* 120 */ 387, -33, -33, -33, -33, -33, 487, -33, 615, -33,
343 /* 130 */ 483, -33, -33, -33, -33, -33, 375, -33, -33, -33,
344 /* 140 */ 617, -33, -33, -33, -33, -33, 618, -33, -33, -33,
345 /* 150 */ -33, 620, 315, 591, -33, -33, 624, -33, 629, -33,
346 /* 160 */ -33, -33, 590, 342, -33, -33, -33, -33, 503, -33,
347 /* 170 */ -33, 632, -33, 634, -33, -33, -33, -33, -33, -33,
348 /* 180 */ -33, -33, -33, -33, -33, -33, -33, -33, 641, -33,
349 /* 190 */ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
350 /* 200 */ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
351 /* 210 */ -33, -33, -33, 510, -33, -33, -33, -33, -33, -33,
352 /* 220 */ -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
353 /* 230 */ 644, -33, -33, 255, -33, -33, -33, -33, -33, -33,
354 /* 240 */ 653, -33, -33, 388, -33, 513, -33, -33, -33, 656,
355 /* 250 */ -33, -33, 452, -33, -33, 473, -33, -33, 520, -33,
356 /* 260 */ -33, -33, 464, -33, -33, -33, 484, -33, -33, 679,
357 /* 270 */ -33, -33, -33, 707, 682, -33, 671, -33, 505, -33,
358 /* 280 */ 399, -33, 463, -33, -33, 524, -33, -33, -33, 714,
359 /* 290 */ 689, -33, -33, 667, -33,
360 };
361 static YYACTIONTYPE yy_default[] = {
362 /* 0 */ 457, 457, 457, 457, 457, 457, 364, 373, 378, 366,
363 /* 10 */ 384, 380, 300, 457, 379, 457, 381, 457, 382, 387,
364 /* 20 */ 388, 389, 390, 391, 457, 383, 457, 457, 365, 457,
365 /* 30 */ 367, 369, 370, 371, 457, 457, 392, 457, 394, 457,
366 /* 40 */ 395, 457, 396, 457, 397, 457, 398, 457, 399, 457,
367 /* 50 */ 400, 457, 401, 457, 402, 457, 403, 457, 404, 457,
368 /* 60 */ 405, 457, 406, 457, 407, 457, 408, 457, 409, 457,
369 /* 70 */ 457, 410, 457, 411, 457, 457, 304, 457, 457, 457,
370 /* 80 */ 315, 301, 457, 312, 352, 457, 350, 457, 353, 457,
371 /* 90 */ 457, 354, 457, 359, 361, 360, 351, 457, 457, 457,
372 /* 100 */ 355, 356, 457, 457, 457, 357, 358, 362, 456, 457,
373 /* 110 */ 455, 314, 316, 318, 457, 322, 333, 319, 457, 332,
374 /* 120 */ 457, 419, 457, 437, 457, 438, 457, 439, 457, 440,
375 /* 130 */ 457, 457, 443, 457, 415, 457, 457, 457, 418, 457,
376 /* 140 */ 457, 457, 457, 457, 420, 457, 457, 457, 457, 457,
377 /* 150 */ 421, 457, 457, 457, 422, 423, 457, 457, 457, 425,
378 /* 160 */ 427, 456, 430, 457, 436, 457, 428, 457, 457, 433,
379 /* 170 */ 435, 457, 441, 457, 442, 444, 445, 446, 447, 448,
380 /* 180 */ 449, 450, 451, 452, 453, 454, 434, 429, 457, 426,
381 /* 190 */ 424, 457, 320, 321, 457, 457, 457, 457, 457, 457,
382 /* 200 */ 457, 457, 457, 457, 457, 457, 457, 457, 457, 457,
383 /* 210 */ 457, 317, 313, 457, 305, 307, 456, 457, 308, 311,
384 /* 220 */ 457, 309, 310, 306, 302, 303, 457, 413, 457, 416,
385 /* 230 */ 457, 412, 457, 457, 457, 414, 457, 417, 393, 368,
386 /* 240 */ 457, 377, 457, 457, 372, 457, 374, 376, 375, 457,
387 /* 250 */ 363, 457, 457, 457, 457, 457, 457, 457, 457, 336,
388 /* 260 */ 338, 337, 457, 457, 457, 457, 457, 457, 457, 457,
389 /* 270 */ 339, 341, 340, 364, 457, 457, 457, 457, 457, 457,
390 /* 280 */ 457, 343, 457, 344, 457, 457, 346, 347, 345, 364,
391 /* 290 */ 457, 457, 457, 457, 349,
392 };
393 #define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0]))
394
395 /* The next table maps tokens into fallback tokens. If a construct
396 ** like the following:
397 **
398 ** %fallback ID X Y Z.
399 **
400 ** appears in the grammer, then ID becomes a fallback token for X, Y,
401 ** and Z. Whenever one of the tokens X, Y, or Z is input to the parser
402 ** but it does not parse, the type of the token is changed to ID and
403 ** the parse is retried before an error is thrown.
404 */
405 #ifdef YYFALLBACK
406 static const YYCODETYPE yyFallback[] = {
407 };
408 #endif /* YYFALLBACK */
409
410 /* The following structure represents a single element of the
411 ** parser's stack. Information stored includes:
412 **
413 ** + The state number for the parser at this level of the stack.
414 **
415 ** + The value of the token stored at this level of the stack.
416 ** (In other words, the "major" token.)
417 **
418 ** + The semantic value stored at this level of the stack. This is
419 ** the information used by the action routines in the grammar.
420 ** It is sometimes called the "minor" token.
421 */
422 struct yyStackEntry {
423 int stateno; /* The state-number */
424 int major; /* The major token value. This is the code
425 ** number for the token at this stack level */
426 YYMINORTYPE minor; /* The user-supplied minor token value. This
427 ** is the value of the token */
428 };
429 typedef struct yyStackEntry yyStackEntry;
430
431 /* The state of the parser is completely contained in an instance of
432 ** the following structure */
433 struct yyParser {
434 int yyidx; /* Index of top element in stack */
435 int yyerrcnt; /* Shifts left before out of the error */
436 phql_ARG_SDECL /* A place to hold %extra_argument */
437 yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
438 };
439 typedef struct yyParser yyParser;
440
441 #ifndef NDEBUG
442 #include <stdio.h>
443 static FILE *yyTraceFILE = 0;
444 static char *yyTracePrompt = 0;
445 #endif /* NDEBUG */
446
447 #ifndef NDEBUG
448 /*
449 ** Turn parser tracing on by giving a stream to which to write the trace
450 ** and a prompt to preface each trace message. Tracing is turned off
451 ** by making either argument NULL
452 **
453 ** Inputs:
454 ** <ul>
455 ** <li> A FILE* to which trace output should be written.
456 ** If NULL, then tracing is turned off.
457 ** <li> A prefix string written at the beginning of every
458 ** line of trace output. If NULL, then tracing is
459 ** turned off.
460 ** </ul>
461 **
462 ** Outputs:
463 ** None.
464 */
phql_Trace(FILE * TraceFILE,char * zTracePrompt)465 void phql_Trace(FILE *TraceFILE, char *zTracePrompt){
466 yyTraceFILE = TraceFILE;
467 yyTracePrompt = zTracePrompt;
468 if( yyTraceFILE==0 ) yyTracePrompt = 0;
469 else if( yyTracePrompt==0 ) yyTraceFILE = 0;
470 }
471 #endif /* NDEBUG */
472
473 #ifndef NDEBUG
474 /* For tracing shifts, the names of all terminals and nonterminals
475 ** are required. The following table supplies these names */
476 static const char *yyTokenName[] = {
477 "$", "AGAINST", "BETWEEN", "BETWEEN_NOT",
478 "EQUALS", "NOTEQUALS", "LESS", "GREATER",
479 "GREATEREQUAL", "LESSEQUAL", "AND", "OR",
480 "LIKE", "ILIKE", "BITWISE_AND", "BITWISE_OR",
481 "BITWISE_XOR", "DIVIDE", "TIMES", "MOD",
482 "PLUS", "MINUS", "IS", "IN",
483 "NOT", "BITWISE_NOT", "COMMA", "SELECT",
484 "FROM", "DISTINCT", "ALL", "IDENTIFIER",
485 "DOT", "AS", "INNER", "JOIN",
486 "CROSS", "LEFT", "OUTER", "RIGHT",
487 "FULL", "ON", "INSERT", "INTO",
488 "VALUES", "PARENTHESES_OPEN", "PARENTHESES_CLOSE", "UPDATE",
489 "SET", "DELETE", "WITH", "WHERE",
490 "ORDER", "BY", "ASC", "DESC",
491 "GROUP", "HAVING", "FOR", "LIMIT",
492 "OFFSET", "INTEGER", "HINTEGER", "NPLACEHOLDER",
493 "SPLACEHOLDER", "BPLACEHOLDER", "EXISTS", "CAST",
494 "CONVERT", "USING", "CASE", "END",
495 "WHEN", "THEN", "ELSE", "NULL",
496 "STRING", "DOUBLE", "TRUE", "FALSE",
497 "error", "program", "query_language", "select_statement",
498 "insert_statement", "update_statement", "delete_statement", "select_clause",
499 "where_clause", "group_clause", "having_clause", "order_clause",
500 "select_limit_clause", "for_update_clause", "distinct_all", "column_list",
501 "associated_name_list", "join_list_or_null", "column_item", "expr",
502 "associated_name", "join_list", "join_item", "join_clause",
503 "join_type", "aliased_or_qualified_name", "join_associated_name", "join_conditions",
504 "values_list", "field_list", "value_list", "value_item",
505 "field_item", "update_clause", "limit_clause", "update_item_list",
506 "update_item", "qualified_name", "new_value", "delete_clause",
507 "with_item", "with_list", "order_list", "order_item",
508 "group_list", "group_item", "integer_or_placeholder", "argument_list",
509 "when_clauses", "when_clause", "function_call", "distinct_or_null",
510 "argument_list_or_null", "argument_item",
511 };
512 #endif /* NDEBUG */
513
514 #ifndef NDEBUG
515 /* For tracing reduce actions, the names of all rules are required.
516 */
517 static const char *yyRuleName[] = {
518 /* 0 */ "program ::= query_language",
519 /* 1 */ "query_language ::= select_statement",
520 /* 2 */ "query_language ::= insert_statement",
521 /* 3 */ "query_language ::= update_statement",
522 /* 4 */ "query_language ::= delete_statement",
523 /* 5 */ "select_statement ::= select_clause where_clause group_clause having_clause order_clause select_limit_clause for_update_clause",
524 /* 6 */ "select_clause ::= SELECT distinct_all column_list FROM associated_name_list join_list_or_null",
525 /* 7 */ "distinct_all ::= DISTINCT",
526 /* 8 */ "distinct_all ::= ALL",
527 /* 9 */ "distinct_all ::=",
528 /* 10 */ "column_list ::= column_list COMMA column_item",
529 /* 11 */ "column_list ::= column_item",
530 /* 12 */ "column_item ::= TIMES",
531 /* 13 */ "column_item ::= IDENTIFIER DOT TIMES",
532 /* 14 */ "column_item ::= expr AS IDENTIFIER",
533 /* 15 */ "column_item ::= expr IDENTIFIER",
534 /* 16 */ "column_item ::= expr",
535 /* 17 */ "associated_name_list ::= associated_name_list COMMA associated_name",
536 /* 18 */ "associated_name_list ::= associated_name",
537 /* 19 */ "join_list_or_null ::= join_list",
538 /* 20 */ "join_list_or_null ::=",
539 /* 21 */ "join_list ::= join_list join_item",
540 /* 22 */ "join_list ::= join_item",
541 /* 23 */ "join_item ::= join_clause",
542 /* 24 */ "join_clause ::= join_type aliased_or_qualified_name join_associated_name join_conditions",
543 /* 25 */ "join_associated_name ::= AS IDENTIFIER",
544 /* 26 */ "join_associated_name ::= IDENTIFIER",
545 /* 27 */ "join_associated_name ::=",
546 /* 28 */ "join_type ::= INNER JOIN",
547 /* 29 */ "join_type ::= CROSS JOIN",
548 /* 30 */ "join_type ::= LEFT OUTER JOIN",
549 /* 31 */ "join_type ::= LEFT JOIN",
550 /* 32 */ "join_type ::= RIGHT OUTER JOIN",
551 /* 33 */ "join_type ::= RIGHT JOIN",
552 /* 34 */ "join_type ::= FULL OUTER JOIN",
553 /* 35 */ "join_type ::= FULL JOIN",
554 /* 36 */ "join_type ::= JOIN",
555 /* 37 */ "join_conditions ::= ON expr",
556 /* 38 */ "join_conditions ::=",
557 /* 39 */ "insert_statement ::= INSERT INTO aliased_or_qualified_name VALUES PARENTHESES_OPEN values_list PARENTHESES_CLOSE",
558 /* 40 */ "insert_statement ::= INSERT INTO aliased_or_qualified_name PARENTHESES_OPEN field_list PARENTHESES_CLOSE VALUES PARENTHESES_OPEN values_list PARENTHESES_CLOSE",
559 /* 41 */ "values_list ::= values_list COMMA value_item",
560 /* 42 */ "values_list ::= value_item",
561 /* 43 */ "value_item ::= expr",
562 /* 44 */ "field_list ::= field_list COMMA field_item",
563 /* 45 */ "field_list ::= field_item",
564 /* 46 */ "field_item ::= IDENTIFIER",
565 /* 47 */ "update_statement ::= update_clause where_clause limit_clause",
566 /* 48 */ "update_clause ::= UPDATE associated_name SET update_item_list",
567 /* 49 */ "update_item_list ::= update_item_list COMMA update_item",
568 /* 50 */ "update_item_list ::= update_item",
569 /* 51 */ "update_item ::= qualified_name EQUALS new_value",
570 /* 52 */ "new_value ::= expr",
571 /* 53 */ "delete_statement ::= delete_clause where_clause limit_clause",
572 /* 54 */ "delete_clause ::= DELETE FROM associated_name",
573 /* 55 */ "associated_name ::= aliased_or_qualified_name AS IDENTIFIER",
574 /* 56 */ "associated_name ::= aliased_or_qualified_name IDENTIFIER",
575 /* 57 */ "associated_name ::= aliased_or_qualified_name",
576 /* 58 */ "associated_name ::= aliased_or_qualified_name AS IDENTIFIER WITH with_item",
577 /* 59 */ "associated_name ::= aliased_or_qualified_name AS IDENTIFIER WITH PARENTHESES_OPEN with_list PARENTHESES_CLOSE",
578 /* 60 */ "associated_name ::= aliased_or_qualified_name IDENTIFIER WITH PARENTHESES_OPEN with_list PARENTHESES_CLOSE",
579 /* 61 */ "associated_name ::= aliased_or_qualified_name IDENTIFIER WITH with_item",
580 /* 62 */ "associated_name ::= aliased_or_qualified_name WITH PARENTHESES_OPEN with_list PARENTHESES_CLOSE",
581 /* 63 */ "associated_name ::= aliased_or_qualified_name WITH with_item",
582 /* 64 */ "with_list ::= with_list COMMA with_item",
583 /* 65 */ "with_list ::= with_item",
584 /* 66 */ "with_item ::= IDENTIFIER",
585 /* 67 */ "aliased_or_qualified_name ::= qualified_name",
586 /* 68 */ "where_clause ::= WHERE expr",
587 /* 69 */ "where_clause ::=",
588 /* 70 */ "order_clause ::= ORDER BY order_list",
589 /* 71 */ "order_clause ::=",
590 /* 72 */ "order_list ::= order_list COMMA order_item",
591 /* 73 */ "order_list ::= order_item",
592 /* 74 */ "order_item ::= expr",
593 /* 75 */ "order_item ::= expr ASC",
594 /* 76 */ "order_item ::= expr DESC",
595 /* 77 */ "group_clause ::= GROUP BY group_list",
596 /* 78 */ "group_clause ::=",
597 /* 79 */ "group_list ::= group_list COMMA group_item",
598 /* 80 */ "group_list ::= group_item",
599 /* 81 */ "group_item ::= expr",
600 /* 82 */ "having_clause ::= HAVING expr",
601 /* 83 */ "having_clause ::=",
602 /* 84 */ "for_update_clause ::= FOR UPDATE",
603 /* 85 */ "for_update_clause ::=",
604 /* 86 */ "select_limit_clause ::= LIMIT integer_or_placeholder",
605 /* 87 */ "select_limit_clause ::= LIMIT integer_or_placeholder COMMA integer_or_placeholder",
606 /* 88 */ "select_limit_clause ::= LIMIT integer_or_placeholder OFFSET integer_or_placeholder",
607 /* 89 */ "select_limit_clause ::=",
608 /* 90 */ "limit_clause ::= LIMIT integer_or_placeholder",
609 /* 91 */ "limit_clause ::=",
610 /* 92 */ "integer_or_placeholder ::= INTEGER",
611 /* 93 */ "integer_or_placeholder ::= HINTEGER",
612 /* 94 */ "integer_or_placeholder ::= NPLACEHOLDER",
613 /* 95 */ "integer_or_placeholder ::= SPLACEHOLDER",
614 /* 96 */ "integer_or_placeholder ::= BPLACEHOLDER",
615 /* 97 */ "expr ::= MINUS expr",
616 /* 98 */ "expr ::= expr MINUS expr",
617 /* 99 */ "expr ::= expr PLUS expr",
618 /* 100 */ "expr ::= expr TIMES expr",
619 /* 101 */ "expr ::= expr DIVIDE expr",
620 /* 102 */ "expr ::= expr MOD expr",
621 /* 103 */ "expr ::= expr AND expr",
622 /* 104 */ "expr ::= expr OR expr",
623 /* 105 */ "expr ::= expr BITWISE_AND expr",
624 /* 106 */ "expr ::= expr BITWISE_OR expr",
625 /* 107 */ "expr ::= expr BITWISE_XOR expr",
626 /* 108 */ "expr ::= expr EQUALS expr",
627 /* 109 */ "expr ::= expr NOTEQUALS expr",
628 /* 110 */ "expr ::= expr LESS expr",
629 /* 111 */ "expr ::= expr GREATER expr",
630 /* 112 */ "expr ::= expr GREATEREQUAL expr",
631 /* 113 */ "expr ::= expr LESSEQUAL expr",
632 /* 114 */ "expr ::= expr LIKE expr",
633 /* 115 */ "expr ::= expr NOT LIKE expr",
634 /* 116 */ "expr ::= expr ILIKE expr",
635 /* 117 */ "expr ::= expr NOT ILIKE expr",
636 /* 118 */ "expr ::= expr IN PARENTHESES_OPEN argument_list PARENTHESES_CLOSE",
637 /* 119 */ "expr ::= expr NOT IN PARENTHESES_OPEN argument_list PARENTHESES_CLOSE",
638 /* 120 */ "expr ::= PARENTHESES_OPEN select_statement PARENTHESES_CLOSE",
639 /* 121 */ "expr ::= expr IN PARENTHESES_OPEN select_statement PARENTHESES_CLOSE",
640 /* 122 */ "expr ::= expr NOT IN PARENTHESES_OPEN select_statement PARENTHESES_CLOSE",
641 /* 123 */ "expr ::= EXISTS PARENTHESES_OPEN select_statement PARENTHESES_CLOSE",
642 /* 124 */ "expr ::= expr AGAINST expr",
643 /* 125 */ "expr ::= CAST PARENTHESES_OPEN expr AS IDENTIFIER PARENTHESES_CLOSE",
644 /* 126 */ "expr ::= CONVERT PARENTHESES_OPEN expr USING IDENTIFIER PARENTHESES_CLOSE",
645 /* 127 */ "expr ::= CASE expr when_clauses END",
646 /* 128 */ "when_clauses ::= when_clauses when_clause",
647 /* 129 */ "when_clauses ::= when_clause",
648 /* 130 */ "when_clause ::= WHEN expr THEN expr",
649 /* 131 */ "when_clause ::= ELSE expr",
650 /* 132 */ "expr ::= function_call",
651 /* 133 */ "function_call ::= IDENTIFIER PARENTHESES_OPEN distinct_or_null argument_list_or_null PARENTHESES_CLOSE",
652 /* 134 */ "distinct_or_null ::= DISTINCT",
653 /* 135 */ "distinct_or_null ::=",
654 /* 136 */ "argument_list_or_null ::= argument_list",
655 /* 137 */ "argument_list_or_null ::=",
656 /* 138 */ "argument_list ::= argument_list COMMA argument_item",
657 /* 139 */ "argument_list ::= argument_item",
658 /* 140 */ "argument_item ::= TIMES",
659 /* 141 */ "argument_item ::= expr",
660 /* 142 */ "expr ::= expr IS NULL",
661 /* 143 */ "expr ::= expr IS NOT NULL",
662 /* 144 */ "expr ::= expr BETWEEN expr",
663 /* 145 */ "expr ::= expr BETWEEN_NOT expr",
664 /* 146 */ "expr ::= NOT expr",
665 /* 147 */ "expr ::= BITWISE_NOT expr",
666 /* 148 */ "expr ::= PARENTHESES_OPEN expr PARENTHESES_CLOSE",
667 /* 149 */ "expr ::= qualified_name",
668 /* 150 */ "expr ::= INTEGER",
669 /* 151 */ "expr ::= HINTEGER",
670 /* 152 */ "expr ::= STRING",
671 /* 153 */ "expr ::= DOUBLE",
672 /* 154 */ "expr ::= NULL",
673 /* 155 */ "expr ::= TRUE",
674 /* 156 */ "expr ::= FALSE",
675 /* 157 */ "expr ::= NPLACEHOLDER",
676 /* 158 */ "expr ::= SPLACEHOLDER",
677 /* 159 */ "expr ::= BPLACEHOLDER",
678 /* 160 */ "qualified_name ::= IDENTIFIER DOT IDENTIFIER",
679 /* 161 */ "qualified_name ::= IDENTIFIER",
680 };
681 #endif /* NDEBUG */
682
683 /*
684 ** This function returns the symbolic name associated with a token
685 ** value.
686 */
phql_TokenName(int tokenType)687 const char *phql_TokenName(int tokenType){
688 #ifndef NDEBUG
689 if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){
690 return yyTokenName[tokenType];
691 }else{
692 return "Unknown";
693 }
694 #else
695 return "";
696 #endif
697 }
698
699 /*
700 ** This function allocates a new parser.
701 ** The only argument is a pointer to a function which works like
702 ** malloc.
703 **
704 ** Inputs:
705 ** A pointer to the function used to allocate memory.
706 **
707 ** Outputs:
708 ** A pointer to a parser. This pointer is used in subsequent calls
709 ** to phql_ and phql_Free.
710 */
phql_Alloc(void * (* mallocProc)(size_t))711 void *phql_Alloc(void *(*mallocProc)(size_t)){
712 yyParser *pParser;
713 pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
714 if( pParser ){
715 pParser->yyidx = -1;
716 }
717 return pParser;
718 }
719
720 /* The following function deletes the value associated with a
721 ** symbol. The symbol can be either a terminal or nonterminal.
722 ** "yymajor" is the symbol code, and "yypminor" is a pointer to
723 ** the value.
724 */
yy_destructor(YYCODETYPE yymajor,YYMINORTYPE * yypminor)725 static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
726 switch( yymajor ){
727 /* Here is inserted the actions which take place when a
728 ** terminal or non-terminal is destroyed. This can happen
729 ** when the symbol is popped from the stack during a
730 ** reduce or during error processing or when a parser is
731 ** being destroyed before it is finished parsing.
732 **
733 ** Note: during a reduce, the only symbols destroyed are those
734 ** which appear on the RHS of the rule, but which are not used
735 ** inside the C code.
736 */
737 case 1:
738 case 2:
739 case 3:
740 case 4:
741 case 5:
742 case 6:
743 case 7:
744 case 8:
745 case 9:
746 case 10:
747 case 11:
748 case 12:
749 case 13:
750 case 14:
751 case 15:
752 case 16:
753 case 17:
754 case 18:
755 case 19:
756 case 20:
757 case 21:
758 case 22:
759 case 23:
760 case 24:
761 case 25:
762 case 26:
763 case 27:
764 case 28:
765 case 29:
766 case 30:
767 case 31:
768 case 32:
769 case 33:
770 case 34:
771 case 35:
772 case 36:
773 case 37:
774 case 38:
775 case 39:
776 case 40:
777 case 41:
778 case 42:
779 case 43:
780 case 44:
781 case 45:
782 case 46:
783 case 47:
784 case 48:
785 case 49:
786 case 50:
787 case 51:
788 case 52:
789 case 53:
790 case 54:
791 case 55:
792 case 56:
793 case 57:
794 case 58:
795 case 59:
796 case 60:
797 case 61:
798 case 62:
799 case 63:
800 case 64:
801 case 65:
802 case 66:
803 case 67:
804 case 68:
805 case 69:
806 case 70:
807 case 71:
808 case 72:
809 case 73:
810 case 74:
811 case 75:
812 case 76:
813 case 77:
814 case 78:
815 case 79:
816 #line 101 "parser.php7.lemon"
817 {
818 if ((yypminor->yy0)) {
819 if ((yypminor->yy0)->free_flag) {
820 efree((yypminor->yy0)->token);
821 }
822 efree((yypminor->yy0));
823 }
824 }
825 #line 826 "parser.php7.c"
826 break;
827 case 82:
828 case 83:
829 case 84:
830 case 85:
831 case 86:
832 case 87:
833 case 89:
834 case 95:
835 case 96:
836 case 98:
837 case 99:
838 case 100:
839 case 101:
840 case 102:
841 case 103:
842 case 104:
843 case 105:
844 case 109:
845 case 110:
846 case 112:
847 case 113:
848 case 115:
849 case 116:
850 case 117:
851 case 119:
852 case 120:
853 case 121:
854 case 122:
855 case 123:
856 case 124:
857 case 125:
858 case 127:
859 case 130:
860 case 133:
861 #line 114 "parser.php7.lemon"
862 {
863 zval_ptr_dtor(&(yypminor->yy202));
864 }
865 #line 866 "parser.php7.c"
866 break;
867 case 88:
868 case 90:
869 case 91:
870 case 92:
871 case 93:
872 case 94:
873 case 106:
874 case 107:
875 case 114:
876 case 131:
877 case 132:
878 #line 496 "parser.php7.lemon"
879 {
880 zephir_safe_zval_ptr_dtor((yypminor->yy202));
881 }
882 #line 883 "parser.php7.c"
883 break;
884 default: break; /* If no destructor action specified: do nothing */
885 }
886 }
887
888 /*
889 ** Pop the parser's stack once.
890 **
891 ** If there is a destructor routine associated with the token which
892 ** is popped from the stack, then call it.
893 **
894 ** Return the major token number for the symbol popped.
895 */
yy_pop_parser_stack(yyParser * pParser)896 static int yy_pop_parser_stack(yyParser *pParser){
897 YYCODETYPE yymajor;
898 yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
899
900 if( pParser->yyidx<0 ) return 0;
901 #ifndef NDEBUG
902 if( yyTraceFILE && pParser->yyidx>=0 ){
903 fprintf(yyTraceFILE,"%sPopping %s\n",
904 yyTracePrompt,
905 yyTokenName[yytos->major]);
906 }
907 #endif
908 yymajor = yytos->major;
909 yy_destructor( yymajor, &yytos->minor);
910 pParser->yyidx--;
911 return yymajor;
912 }
913
914 /*
915 ** Deallocate and destroy a parser. Destructors are all called for
916 ** all stack elements before shutting the parser down.
917 **
918 ** Inputs:
919 ** <ul>
920 ** <li> A pointer to the parser. This should be a pointer
921 ** obtained from phql_Alloc.
922 ** <li> A pointer to a function used to reclaim memory obtained
923 ** from malloc.
924 ** </ul>
925 */
phql_Free(void * p,void (* freeProc)(void *))926 void phql_Free(
927 void *p, /* The parser to be deleted */
928 void (*freeProc)(void*) /* Function used to reclaim memory */
929 ){
930 yyParser *pParser = (yyParser*)p;
931 if( pParser==0 ) return;
932 while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
933 (*freeProc)((void*)pParser);
934 }
935
936 /*
937 ** Find the appropriate action for a parser given the terminal
938 ** look-ahead token iLookAhead.
939 **
940 ** If the look-ahead token is YYNOCODE, then check to see if the action is
941 ** independent of the look-ahead. If it is, return the action, otherwise
942 ** return YY_NO_ACTION.
943 */
yy_find_shift_action(yyParser * pParser,int iLookAhead)944 static int yy_find_shift_action(
945 yyParser *pParser, /* The parser */
946 int iLookAhead /* The look-ahead token */
947 ){
948 int i;
949 int stateno = pParser->yystack[pParser->yyidx].stateno;
950
951 /* if( pParser->yyidx<0 ) return YY_NO_ACTION; */
952 i = yy_shift_ofst[stateno];
953 if( i==YY_SHIFT_USE_DFLT ){
954 return yy_default[stateno];
955 }
956 if( iLookAhead==YYNOCODE ){
957 return YY_NO_ACTION;
958 }
959 i += iLookAhead;
960 if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
961 #ifdef YYFALLBACK
962 int iFallback; /* Fallback token */
963 if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
964 && (iFallback = yyFallback[iLookAhead])!=0 ){
965 #ifndef NDEBUG
966 if( yyTraceFILE ){
967 fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
968 yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
969 }
970 #endif
971 return yy_find_shift_action(pParser, iFallback);
972 }
973 #endif
974 return yy_default[stateno];
975 }else{
976 return yy_action[i];
977 }
978 }
979
980 /*
981 ** Find the appropriate action for a parser given the non-terminal
982 ** look-ahead token iLookAhead.
983 **
984 ** If the look-ahead token is YYNOCODE, then check to see if the action is
985 ** independent of the look-ahead. If it is, return the action, otherwise
986 ** return YY_NO_ACTION.
987 */
yy_find_reduce_action(yyParser * pParser,int iLookAhead)988 static int yy_find_reduce_action(
989 yyParser *pParser, /* The parser */
990 int iLookAhead /* The look-ahead token */
991 ){
992 int i;
993 int stateno = pParser->yystack[pParser->yyidx].stateno;
994
995 i = yy_reduce_ofst[stateno];
996 if( i==YY_REDUCE_USE_DFLT ){
997 return yy_default[stateno];
998 }
999 if( iLookAhead==YYNOCODE ){
1000 return YY_NO_ACTION;
1001 }
1002 i += iLookAhead;
1003 if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1004 return yy_default[stateno];
1005 }else{
1006 return yy_action[i];
1007 }
1008 }
1009
1010 /*
1011 ** Perform a shift action.
1012 */
yy_shift(yyParser * yypParser,int yyNewState,int yyMajor,YYMINORTYPE * yypMinor)1013 static void yy_shift(
1014 yyParser *yypParser, /* The parser to be shifted */
1015 int yyNewState, /* The new state to shift in */
1016 int yyMajor, /* The major token to shift in */
1017 YYMINORTYPE *yypMinor /* Pointer ot the minor token to shift in */
1018 ){
1019 yyStackEntry *yytos;
1020 yypParser->yyidx++;
1021 if( yypParser->yyidx>=YYSTACKDEPTH ){
1022 phql_ARG_FETCH;
1023 yypParser->yyidx--;
1024 #ifndef NDEBUG
1025 if( yyTraceFILE ){
1026 fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
1027 }
1028 #endif
1029 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
1030 /* Here code is inserted which will execute if the parser
1031 ** stack every overflows */
1032 phql_ARG_STORE; /* Suppress warning about unused %extra_argument var */
1033 return;
1034 }
1035 yytos = &yypParser->yystack[yypParser->yyidx];
1036 yytos->stateno = yyNewState;
1037 yytos->major = yyMajor;
1038 yytos->minor = *yypMinor;
1039 #ifndef NDEBUG
1040 if( yyTraceFILE && yypParser->yyidx>0 ){
1041 int i;
1042 fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
1043 fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
1044 for(i=1; i<=yypParser->yyidx; i++)
1045 fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
1046 fprintf(yyTraceFILE,"\n");
1047 }
1048 #endif
1049 }
1050
1051 /* The following table contains information about every rule that
1052 ** is used during the reduce.
1053 */
1054 static struct {
1055 YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */
1056 unsigned char nrhs; /* Number of right-hand side symbols in the rule */
1057 } yyRuleInfo[] = {
1058 { 81, 1 },
1059 { 82, 1 },
1060 { 82, 1 },
1061 { 82, 1 },
1062 { 82, 1 },
1063 { 83, 7 },
1064 { 87, 6 },
1065 { 94, 1 },
1066 { 94, 1 },
1067 { 94, 0 },
1068 { 95, 3 },
1069 { 95, 1 },
1070 { 98, 1 },
1071 { 98, 3 },
1072 { 98, 3 },
1073 { 98, 2 },
1074 { 98, 1 },
1075 { 96, 3 },
1076 { 96, 1 },
1077 { 97, 1 },
1078 { 97, 0 },
1079 { 101, 2 },
1080 { 101, 1 },
1081 { 102, 1 },
1082 { 103, 4 },
1083 { 106, 2 },
1084 { 106, 1 },
1085 { 106, 0 },
1086 { 104, 2 },
1087 { 104, 2 },
1088 { 104, 3 },
1089 { 104, 2 },
1090 { 104, 3 },
1091 { 104, 2 },
1092 { 104, 3 },
1093 { 104, 2 },
1094 { 104, 1 },
1095 { 107, 2 },
1096 { 107, 0 },
1097 { 84, 7 },
1098 { 84, 10 },
1099 { 108, 3 },
1100 { 108, 1 },
1101 { 111, 1 },
1102 { 109, 3 },
1103 { 109, 1 },
1104 { 112, 1 },
1105 { 85, 3 },
1106 { 113, 4 },
1107 { 115, 3 },
1108 { 115, 1 },
1109 { 116, 3 },
1110 { 118, 1 },
1111 { 86, 3 },
1112 { 119, 3 },
1113 { 100, 3 },
1114 { 100, 2 },
1115 { 100, 1 },
1116 { 100, 5 },
1117 { 100, 7 },
1118 { 100, 6 },
1119 { 100, 4 },
1120 { 100, 5 },
1121 { 100, 3 },
1122 { 121, 3 },
1123 { 121, 1 },
1124 { 120, 1 },
1125 { 105, 1 },
1126 { 88, 2 },
1127 { 88, 0 },
1128 { 91, 3 },
1129 { 91, 0 },
1130 { 122, 3 },
1131 { 122, 1 },
1132 { 123, 1 },
1133 { 123, 2 },
1134 { 123, 2 },
1135 { 89, 3 },
1136 { 89, 0 },
1137 { 124, 3 },
1138 { 124, 1 },
1139 { 125, 1 },
1140 { 90, 2 },
1141 { 90, 0 },
1142 { 93, 2 },
1143 { 93, 0 },
1144 { 92, 2 },
1145 { 92, 4 },
1146 { 92, 4 },
1147 { 92, 0 },
1148 { 114, 2 },
1149 { 114, 0 },
1150 { 126, 1 },
1151 { 126, 1 },
1152 { 126, 1 },
1153 { 126, 1 },
1154 { 126, 1 },
1155 { 99, 2 },
1156 { 99, 3 },
1157 { 99, 3 },
1158 { 99, 3 },
1159 { 99, 3 },
1160 { 99, 3 },
1161 { 99, 3 },
1162 { 99, 3 },
1163 { 99, 3 },
1164 { 99, 3 },
1165 { 99, 3 },
1166 { 99, 3 },
1167 { 99, 3 },
1168 { 99, 3 },
1169 { 99, 3 },
1170 { 99, 3 },
1171 { 99, 3 },
1172 { 99, 3 },
1173 { 99, 4 },
1174 { 99, 3 },
1175 { 99, 4 },
1176 { 99, 5 },
1177 { 99, 6 },
1178 { 99, 3 },
1179 { 99, 5 },
1180 { 99, 6 },
1181 { 99, 4 },
1182 { 99, 3 },
1183 { 99, 6 },
1184 { 99, 6 },
1185 { 99, 4 },
1186 { 128, 2 },
1187 { 128, 1 },
1188 { 129, 4 },
1189 { 129, 2 },
1190 { 99, 1 },
1191 { 130, 5 },
1192 { 131, 1 },
1193 { 131, 0 },
1194 { 132, 1 },
1195 { 132, 0 },
1196 { 127, 3 },
1197 { 127, 1 },
1198 { 133, 1 },
1199 { 133, 1 },
1200 { 99, 3 },
1201 { 99, 4 },
1202 { 99, 3 },
1203 { 99, 3 },
1204 { 99, 2 },
1205 { 99, 2 },
1206 { 99, 3 },
1207 { 99, 1 },
1208 { 99, 1 },
1209 { 99, 1 },
1210 { 99, 1 },
1211 { 99, 1 },
1212 { 99, 1 },
1213 { 99, 1 },
1214 { 99, 1 },
1215 { 99, 1 },
1216 { 99, 1 },
1217 { 99, 1 },
1218 { 117, 3 },
1219 { 117, 1 },
1220 };
1221
1222 static void yy_accept(yyParser*); /* Forward Declaration */
1223
1224 /*
1225 ** Perform a reduce action and the shift that must immediately
1226 ** follow the reduce.
1227 */
yy_reduce(yyParser * yypParser,int yyruleno)1228 static void yy_reduce(
1229 yyParser *yypParser, /* The parser */
1230 int yyruleno /* Number of the rule by which to reduce */
1231 ){
1232 int yygoto; /* The next state */
1233 int yyact; /* The next action */
1234 YYMINORTYPE yygotominor; /* The LHS of the rule reduced */
1235 yyStackEntry *yymsp; /* The top of the parser's stack */
1236 int yysize; /* Amount to pop the stack */
1237 phql_ARG_FETCH;
1238 yymsp = &yypParser->yystack[yypParser->yyidx];
1239 #ifndef NDEBUG
1240 if( yyTraceFILE && yyruleno>=0
1241 && yyruleno<sizeof(yyRuleName)/sizeof(yyRuleName[0]) ){
1242 fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
1243 yyRuleName[yyruleno]);
1244 }
1245 #endif /* NDEBUG */
1246
1247 switch( yyruleno ){
1248 /* Beginning here are the reduction cases. A typical example
1249 ** follows:
1250 ** case 0:
1251 ** #line <lineno> <grammarfile>
1252 ** { ... } // User supplied code
1253 ** #line <lineno> <thisfile>
1254 ** break;
1255 */
1256 case 0:
1257 #line 110 "parser.php7.lemon"
1258 {
1259 ZVAL_ZVAL(&status->ret, &yymsp[0].minor.yy202, 1, 1);
1260 }
1261 #line 1262 "parser.php7.c"
1262 break;
1263 case 1:
1264 case 2:
1265 case 3:
1266 case 4:
1267 case 18:
1268 case 19:
1269 case 22:
1270 case 23:
1271 case 43:
1272 case 50:
1273 case 52:
1274 case 65:
1275 case 67:
1276 case 73:
1277 case 80:
1278 case 81:
1279 case 132:
1280 case 136:
1281 case 141:
1282 case 149:
1283 #line 118 "parser.php7.lemon"
1284 {
1285 yygotominor.yy202 = yymsp[0].minor.yy202;
1286 }
1287 #line 1288 "parser.php7.c"
1288 break;
1289 case 5:
1290 #line 138 "parser.php7.lemon"
1291 {
1292 phql_ret_select_statement(&yygotominor.yy202, &yymsp[-6].minor.yy202, &yymsp[-5].minor.yy202, &yymsp[-2].minor.yy202, &yymsp[-4].minor.yy202, &yymsp[-3].minor.yy202, &yymsp[-1].minor.yy202, &yymsp[0].minor.yy202);
1293 }
1294 #line 1295 "parser.php7.c"
1295 break;
1296 case 6:
1297 #line 146 "parser.php7.lemon"
1298 {
1299 phql_ret_select_clause(&yygotominor.yy202, &yymsp[-4].minor.yy202, &yymsp[-3].minor.yy202, &yymsp[-1].minor.yy202, &yymsp[0].minor.yy202);
1300 yy_destructor(27,&yymsp[-5].minor);
1301 yy_destructor(28,&yymsp[-2].minor);
1302 }
1303 #line 1304 "parser.php7.c"
1304 break;
1305 case 7:
1306 #line 154 "parser.php7.lemon"
1307 {
1308 phql_ret_distinct_all(&yygotominor.yy202, 1);
1309 yy_destructor(29,&yymsp[0].minor);
1310 }
1311 #line 1312 "parser.php7.c"
1312 break;
1313 case 8:
1314 #line 158 "parser.php7.lemon"
1315 {
1316 phql_ret_distinct_all(&yygotominor.yy202, 0);
1317 yy_destructor(30,&yymsp[0].minor);
1318 }
1319 #line 1320 "parser.php7.c"
1320 break;
1321 case 9:
1322 case 20:
1323 case 27:
1324 case 38:
1325 case 69:
1326 case 71:
1327 case 78:
1328 case 83:
1329 case 85:
1330 case 89:
1331 case 91:
1332 case 135:
1333 case 137:
1334 #line 162 "parser.php7.lemon"
1335 {
1336 ZVAL_UNDEF(&yygotominor.yy202);
1337 }
1338 #line 1339 "parser.php7.c"
1339 break;
1340 case 10:
1341 case 17:
1342 case 41:
1343 case 44:
1344 case 49:
1345 case 64:
1346 case 72:
1347 case 79:
1348 case 138:
1349 #line 170 "parser.php7.lemon"
1350 {
1351 phql_ret_zval_list(&yygotominor.yy202, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1352 yy_destructor(26,&yymsp[-1].minor);
1353 }
1354 #line 1355 "parser.php7.c"
1355 break;
1356 case 11:
1357 case 42:
1358 case 45:
1359 case 129:
1360 case 139:
1361 #line 174 "parser.php7.lemon"
1362 {
1363 phql_ret_zval_list(&yygotominor.yy202, &yymsp[0].minor.yy202, NULL);
1364 }
1365 #line 1366 "parser.php7.c"
1366 break;
1367 case 12:
1368 case 140:
1369 #line 182 "parser.php7.lemon"
1370 {
1371 phql_ret_column_item(&yygotominor.yy202, PHQL_T_STARALL, NULL, NULL, NULL);
1372 yy_destructor(18,&yymsp[0].minor);
1373 }
1374 #line 1375 "parser.php7.c"
1375 break;
1376 case 13:
1377 #line 186 "parser.php7.lemon"
1378 {
1379 phql_ret_column_item(&yygotominor.yy202, PHQL_T_DOMAINALL, NULL, yymsp[-2].minor.yy0, NULL);
1380 yy_destructor(32,&yymsp[-1].minor);
1381 yy_destructor(18,&yymsp[0].minor);
1382 }
1383 #line 1384 "parser.php7.c"
1384 break;
1385 case 14:
1386 #line 190 "parser.php7.lemon"
1387 {
1388 phql_ret_column_item(&yygotominor.yy202, PHQL_T_EXPR, &yymsp[-2].minor.yy202, NULL, yymsp[0].minor.yy0);
1389 yy_destructor(33,&yymsp[-1].minor);
1390 }
1391 #line 1392 "parser.php7.c"
1392 break;
1393 case 15:
1394 #line 194 "parser.php7.lemon"
1395 {
1396 phql_ret_column_item(&yygotominor.yy202, PHQL_T_EXPR, &yymsp[-1].minor.yy202, NULL, yymsp[0].minor.yy0);
1397 }
1398 #line 1399 "parser.php7.c"
1399 break;
1400 case 16:
1401 #line 198 "parser.php7.lemon"
1402 {
1403 phql_ret_column_item(&yygotominor.yy202, PHQL_T_EXPR, &yymsp[0].minor.yy202, NULL, NULL);
1404 }
1405 #line 1406 "parser.php7.c"
1406 break;
1407 case 21:
1408 case 128:
1409 #line 226 "parser.php7.lemon"
1410 {
1411 phql_ret_zval_list(&yygotominor.yy202, &yymsp[-1].minor.yy202, &yymsp[0].minor.yy202);
1412 }
1413 #line 1414 "parser.php7.c"
1414 break;
1415 case 24:
1416 #line 247 "parser.php7.lemon"
1417 {
1418 phql_ret_join_item(&yygotominor.yy202, &yymsp[-3].minor.yy202, &yymsp[-2].minor.yy202, &yymsp[-1].minor.yy202, &yymsp[0].minor.yy202);
1419 }
1420 #line 1421 "parser.php7.c"
1421 break;
1422 case 25:
1423 #line 255 "parser.php7.lemon"
1424 {
1425 phql_ret_qualified_name(&yygotominor.yy202, NULL, NULL, yymsp[0].minor.yy0);
1426 yy_destructor(33,&yymsp[-1].minor);
1427 }
1428 #line 1429 "parser.php7.c"
1429 break;
1430 case 26:
1431 case 46:
1432 case 66:
1433 case 161:
1434 #line 259 "parser.php7.lemon"
1435 {
1436 phql_ret_qualified_name(&yygotominor.yy202, NULL, NULL, yymsp[0].minor.yy0);
1437 }
1438 #line 1439 "parser.php7.c"
1439 break;
1440 case 28:
1441 #line 271 "parser.php7.lemon"
1442 {
1443 phql_ret_join_type(&yygotominor.yy202, PHQL_T_INNERJOIN);
1444 yy_destructor(34,&yymsp[-1].minor);
1445 yy_destructor(35,&yymsp[0].minor);
1446 }
1447 #line 1448 "parser.php7.c"
1448 break;
1449 case 29:
1450 #line 275 "parser.php7.lemon"
1451 {
1452 phql_ret_join_type(&yygotominor.yy202, PHQL_T_CROSSJOIN);
1453 yy_destructor(36,&yymsp[-1].minor);
1454 yy_destructor(35,&yymsp[0].minor);
1455 }
1456 #line 1457 "parser.php7.c"
1457 break;
1458 case 30:
1459 #line 279 "parser.php7.lemon"
1460 {
1461 phql_ret_join_type(&yygotominor.yy202, PHQL_T_LEFTJOIN);
1462 yy_destructor(37,&yymsp[-2].minor);
1463 yy_destructor(38,&yymsp[-1].minor);
1464 yy_destructor(35,&yymsp[0].minor);
1465 }
1466 #line 1467 "parser.php7.c"
1467 break;
1468 case 31:
1469 #line 283 "parser.php7.lemon"
1470 {
1471 phql_ret_join_type(&yygotominor.yy202, PHQL_T_LEFTJOIN);
1472 yy_destructor(37,&yymsp[-1].minor);
1473 yy_destructor(35,&yymsp[0].minor);
1474 }
1475 #line 1476 "parser.php7.c"
1476 break;
1477 case 32:
1478 #line 287 "parser.php7.lemon"
1479 {
1480 phql_ret_join_type(&yygotominor.yy202, PHQL_T_RIGHTJOIN);
1481 yy_destructor(39,&yymsp[-2].minor);
1482 yy_destructor(38,&yymsp[-1].minor);
1483 yy_destructor(35,&yymsp[0].minor);
1484 }
1485 #line 1486 "parser.php7.c"
1486 break;
1487 case 33:
1488 #line 291 "parser.php7.lemon"
1489 {
1490 phql_ret_join_type(&yygotominor.yy202, PHQL_T_RIGHTJOIN);
1491 yy_destructor(39,&yymsp[-1].minor);
1492 yy_destructor(35,&yymsp[0].minor);
1493 }
1494 #line 1495 "parser.php7.c"
1495 break;
1496 case 34:
1497 #line 295 "parser.php7.lemon"
1498 {
1499 phql_ret_join_type(&yygotominor.yy202, PHQL_T_FULLJOIN);
1500 yy_destructor(40,&yymsp[-2].minor);
1501 yy_destructor(38,&yymsp[-1].minor);
1502 yy_destructor(35,&yymsp[0].minor);
1503 }
1504 #line 1505 "parser.php7.c"
1505 break;
1506 case 35:
1507 #line 299 "parser.php7.lemon"
1508 {
1509 phql_ret_join_type(&yygotominor.yy202, PHQL_T_FULLJOIN);
1510 yy_destructor(40,&yymsp[-1].minor);
1511 yy_destructor(35,&yymsp[0].minor);
1512 }
1513 #line 1514 "parser.php7.c"
1514 break;
1515 case 36:
1516 #line 303 "parser.php7.lemon"
1517 {
1518 phql_ret_join_type(&yygotominor.yy202, PHQL_T_INNERJOIN);
1519 yy_destructor(35,&yymsp[0].minor);
1520 }
1521 #line 1522 "parser.php7.c"
1522 break;
1523 case 37:
1524 #line 311 "parser.php7.lemon"
1525 {
1526 yygotominor.yy202 = yymsp[0].minor.yy202;
1527 yy_destructor(41,&yymsp[-1].minor);
1528 }
1529 #line 1530 "parser.php7.c"
1530 break;
1531 case 39:
1532 #line 324 "parser.php7.lemon"
1533 {
1534 phql_ret_insert_statement(&yygotominor.yy202, &yymsp[-4].minor.yy202, NULL, &yymsp[-1].minor.yy202);
1535 yy_destructor(42,&yymsp[-6].minor);
1536 yy_destructor(43,&yymsp[-5].minor);
1537 yy_destructor(44,&yymsp[-3].minor);
1538 yy_destructor(45,&yymsp[-2].minor);
1539 yy_destructor(46,&yymsp[0].minor);
1540 }
1541 #line 1542 "parser.php7.c"
1542 break;
1543 case 40:
1544 #line 328 "parser.php7.lemon"
1545 {
1546 phql_ret_insert_statement(&yygotominor.yy202, &yymsp[-7].minor.yy202, &yymsp[-5].minor.yy202, &yymsp[-1].minor.yy202);
1547 yy_destructor(42,&yymsp[-9].minor);
1548 yy_destructor(43,&yymsp[-8].minor);
1549 yy_destructor(45,&yymsp[-6].minor);
1550 yy_destructor(46,&yymsp[-4].minor);
1551 yy_destructor(44,&yymsp[-3].minor);
1552 yy_destructor(45,&yymsp[-2].minor);
1553 yy_destructor(46,&yymsp[0].minor);
1554 }
1555 #line 1556 "parser.php7.c"
1556 break;
1557 case 47:
1558 #line 374 "parser.php7.lemon"
1559 {
1560 phql_ret_update_statement(&yygotominor.yy202, &yymsp[-2].minor.yy202, &yymsp[-1].minor.yy202, &yymsp[0].minor.yy202);
1561 }
1562 #line 1563 "parser.php7.c"
1563 break;
1564 case 48:
1565 #line 382 "parser.php7.lemon"
1566 {
1567 phql_ret_update_clause(&yygotominor.yy202, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1568 yy_destructor(47,&yymsp[-3].minor);
1569 yy_destructor(48,&yymsp[-1].minor);
1570 }
1571 #line 1572 "parser.php7.c"
1572 break;
1573 case 51:
1574 #line 402 "parser.php7.lemon"
1575 {
1576 phql_ret_update_item(&yygotominor.yy202, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1577 yy_destructor(4,&yymsp[-1].minor);
1578 }
1579 #line 1580 "parser.php7.c"
1580 break;
1581 case 53:
1582 #line 416 "parser.php7.lemon"
1583 {
1584 phql_ret_delete_statement(&yygotominor.yy202, &yymsp[-2].minor.yy202, &yymsp[-1].minor.yy202, &yymsp[0].minor.yy202);
1585 }
1586 #line 1587 "parser.php7.c"
1587 break;
1588 case 54:
1589 #line 424 "parser.php7.lemon"
1590 {
1591 phql_ret_delete_clause(&yygotominor.yy202, &yymsp[0].minor.yy202);
1592 yy_destructor(49,&yymsp[-2].minor);
1593 yy_destructor(28,&yymsp[-1].minor);
1594 }
1595 #line 1596 "parser.php7.c"
1596 break;
1597 case 55:
1598 #line 432 "parser.php7.lemon"
1599 {
1600 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[-2].minor.yy202, yymsp[0].minor.yy0, NULL);
1601 yy_destructor(33,&yymsp[-1].minor);
1602 }
1603 #line 1604 "parser.php7.c"
1604 break;
1605 case 56:
1606 #line 436 "parser.php7.lemon"
1607 {
1608 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[-1].minor.yy202, yymsp[0].minor.yy0, NULL);
1609 }
1610 #line 1611 "parser.php7.c"
1611 break;
1612 case 57:
1613 #line 440 "parser.php7.lemon"
1614 {
1615 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[0].minor.yy202, NULL, NULL);
1616 }
1617 #line 1618 "parser.php7.c"
1618 break;
1619 case 58:
1620 #line 444 "parser.php7.lemon"
1621 {
1622 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[-4].minor.yy202, yymsp[-2].minor.yy0, &yymsp[0].minor.yy202);
1623 yy_destructor(33,&yymsp[-3].minor);
1624 yy_destructor(50,&yymsp[-1].minor);
1625 }
1626 #line 1627 "parser.php7.c"
1627 break;
1628 case 59:
1629 #line 448 "parser.php7.lemon"
1630 {
1631 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[-6].minor.yy202, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy202);
1632 yy_destructor(33,&yymsp[-5].minor);
1633 yy_destructor(50,&yymsp[-3].minor);
1634 yy_destructor(45,&yymsp[-2].minor);
1635 yy_destructor(46,&yymsp[0].minor);
1636 }
1637 #line 1638 "parser.php7.c"
1638 break;
1639 case 60:
1640 #line 452 "parser.php7.lemon"
1641 {
1642 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[-5].minor.yy202, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy202);
1643 yy_destructor(50,&yymsp[-3].minor);
1644 yy_destructor(45,&yymsp[-2].minor);
1645 yy_destructor(46,&yymsp[0].minor);
1646 }
1647 #line 1648 "parser.php7.c"
1648 break;
1649 case 61:
1650 #line 456 "parser.php7.lemon"
1651 {
1652 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[-3].minor.yy202, yymsp[-2].minor.yy0, &yymsp[0].minor.yy202);
1653 yy_destructor(50,&yymsp[-1].minor);
1654 }
1655 #line 1656 "parser.php7.c"
1656 break;
1657 case 62:
1658 #line 460 "parser.php7.lemon"
1659 {
1660 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[-4].minor.yy202, NULL, &yymsp[-1].minor.yy202);
1661 yy_destructor(50,&yymsp[-3].minor);
1662 yy_destructor(45,&yymsp[-2].minor);
1663 yy_destructor(46,&yymsp[0].minor);
1664 }
1665 #line 1666 "parser.php7.c"
1666 break;
1667 case 63:
1668 #line 464 "parser.php7.lemon"
1669 {
1670 phql_ret_assoc_name(&yygotominor.yy202, &yymsp[-2].minor.yy202, NULL, &yymsp[0].minor.yy202);
1671 yy_destructor(50,&yymsp[-1].minor);
1672 }
1673 #line 1674 "parser.php7.c"
1674 break;
1675 case 68:
1676 #line 500 "parser.php7.lemon"
1677 {
1678 yygotominor.yy202 = yymsp[0].minor.yy202;
1679 yy_destructor(51,&yymsp[-1].minor);
1680 }
1681 #line 1682 "parser.php7.c"
1682 break;
1683 case 70:
1684 #line 512 "parser.php7.lemon"
1685 {
1686 yygotominor.yy202 = yymsp[0].minor.yy202;
1687 yy_destructor(52,&yymsp[-2].minor);
1688 yy_destructor(53,&yymsp[-1].minor);
1689 }
1690 #line 1691 "parser.php7.c"
1691 break;
1692 case 74:
1693 #line 536 "parser.php7.lemon"
1694 {
1695 phql_ret_order_item(&yygotominor.yy202, &yymsp[0].minor.yy202, 0);
1696 }
1697 #line 1698 "parser.php7.c"
1698 break;
1699 case 75:
1700 #line 540 "parser.php7.lemon"
1701 {
1702 phql_ret_order_item(&yygotominor.yy202, &yymsp[-1].minor.yy202, PHQL_T_ASC);
1703 yy_destructor(54,&yymsp[0].minor);
1704 }
1705 #line 1706 "parser.php7.c"
1706 break;
1707 case 76:
1708 #line 544 "parser.php7.lemon"
1709 {
1710 phql_ret_order_item(&yygotominor.yy202, &yymsp[-1].minor.yy202, PHQL_T_DESC);
1711 yy_destructor(55,&yymsp[0].minor);
1712 }
1713 #line 1714 "parser.php7.c"
1714 break;
1715 case 77:
1716 #line 552 "parser.php7.lemon"
1717 {
1718 yygotominor.yy202 = yymsp[0].minor.yy202;
1719 yy_destructor(56,&yymsp[-2].minor);
1720 yy_destructor(53,&yymsp[-1].minor);
1721 }
1722 #line 1723 "parser.php7.c"
1723 break;
1724 case 82:
1725 #line 584 "parser.php7.lemon"
1726 {
1727 yygotominor.yy202 = yymsp[0].minor.yy202;
1728 yy_destructor(57,&yymsp[-1].minor);
1729 }
1730 #line 1731 "parser.php7.c"
1731 break;
1732 case 84:
1733 #line 596 "parser.php7.lemon"
1734 {
1735 phql_ret_for_update_clause(&yygotominor.yy202);
1736 yy_destructor(58,&yymsp[-1].minor);
1737 yy_destructor(47,&yymsp[0].minor);
1738 }
1739 #line 1740 "parser.php7.c"
1740 break;
1741 case 86:
1742 case 90:
1743 #line 608 "parser.php7.lemon"
1744 {
1745 phql_ret_limit_clause(&yygotominor.yy202, &yymsp[0].minor.yy202, NULL);
1746 yy_destructor(59,&yymsp[-1].minor);
1747 }
1748 #line 1749 "parser.php7.c"
1749 break;
1750 case 87:
1751 #line 612 "parser.php7.lemon"
1752 {
1753 phql_ret_limit_clause(&yygotominor.yy202, &yymsp[0].minor.yy202, &yymsp[-2].minor.yy202);
1754 yy_destructor(59,&yymsp[-3].minor);
1755 yy_destructor(26,&yymsp[-1].minor);
1756 }
1757 #line 1758 "parser.php7.c"
1758 break;
1759 case 88:
1760 #line 616 "parser.php7.lemon"
1761 {
1762 phql_ret_limit_clause(&yygotominor.yy202, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1763 yy_destructor(59,&yymsp[-3].minor);
1764 yy_destructor(60,&yymsp[-1].minor);
1765 }
1766 #line 1767 "parser.php7.c"
1767 break;
1768 case 92:
1769 case 150:
1770 #line 636 "parser.php7.lemon"
1771 {
1772 phql_ret_literal_zval(&yygotominor.yy202, PHQL_T_INTEGER, yymsp[0].minor.yy0);
1773 }
1774 #line 1775 "parser.php7.c"
1775 break;
1776 case 93:
1777 case 151:
1778 #line 640 "parser.php7.lemon"
1779 {
1780 phql_ret_literal_zval(&yygotominor.yy202, PHQL_T_HINTEGER, yymsp[0].minor.yy0);
1781 }
1782 #line 1783 "parser.php7.c"
1783 break;
1784 case 94:
1785 case 157:
1786 #line 644 "parser.php7.lemon"
1787 {
1788 phql_ret_placeholder_zval(&yygotominor.yy202, PHQL_T_NPLACEHOLDER, yymsp[0].minor.yy0);
1789 }
1790 #line 1791 "parser.php7.c"
1791 break;
1792 case 95:
1793 case 158:
1794 #line 648 "parser.php7.lemon"
1795 {
1796 phql_ret_placeholder_zval(&yygotominor.yy202, PHQL_T_SPLACEHOLDER, yymsp[0].minor.yy0);
1797 }
1798 #line 1799 "parser.php7.c"
1799 break;
1800 case 96:
1801 case 159:
1802 #line 652 "parser.php7.lemon"
1803 {
1804 phql_ret_placeholder_zval(&yygotominor.yy202, PHQL_T_BPLACEHOLDER, yymsp[0].minor.yy0);
1805 }
1806 #line 1807 "parser.php7.c"
1807 break;
1808 case 97:
1809 #line 660 "parser.php7.lemon"
1810 {
1811 phql_ret_expr(&yygotominor.yy202, PHQL_T_MINUS, NULL, &yymsp[0].minor.yy202);
1812 yy_destructor(21,&yymsp[-1].minor);
1813 }
1814 #line 1815 "parser.php7.c"
1815 break;
1816 case 98:
1817 #line 664 "parser.php7.lemon"
1818 {
1819 phql_ret_expr(&yygotominor.yy202, PHQL_T_SUB, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1820 yy_destructor(21,&yymsp[-1].minor);
1821 }
1822 #line 1823 "parser.php7.c"
1823 break;
1824 case 99:
1825 #line 668 "parser.php7.lemon"
1826 {
1827 phql_ret_expr(&yygotominor.yy202, PHQL_T_ADD, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1828 yy_destructor(20,&yymsp[-1].minor);
1829 }
1830 #line 1831 "parser.php7.c"
1831 break;
1832 case 100:
1833 #line 672 "parser.php7.lemon"
1834 {
1835 phql_ret_expr(&yygotominor.yy202, PHQL_T_MUL, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1836 yy_destructor(18,&yymsp[-1].minor);
1837 }
1838 #line 1839 "parser.php7.c"
1839 break;
1840 case 101:
1841 #line 676 "parser.php7.lemon"
1842 {
1843 phql_ret_expr(&yygotominor.yy202, PHQL_T_DIV, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1844 yy_destructor(17,&yymsp[-1].minor);
1845 }
1846 #line 1847 "parser.php7.c"
1847 break;
1848 case 102:
1849 #line 680 "parser.php7.lemon"
1850 {
1851 phql_ret_expr(&yygotominor.yy202, PHQL_T_MOD, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1852 yy_destructor(19,&yymsp[-1].minor);
1853 }
1854 #line 1855 "parser.php7.c"
1855 break;
1856 case 103:
1857 #line 684 "parser.php7.lemon"
1858 {
1859 phql_ret_expr(&yygotominor.yy202, PHQL_T_AND, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1860 yy_destructor(10,&yymsp[-1].minor);
1861 }
1862 #line 1863 "parser.php7.c"
1863 break;
1864 case 104:
1865 #line 688 "parser.php7.lemon"
1866 {
1867 phql_ret_expr(&yygotominor.yy202, PHQL_T_OR, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1868 yy_destructor(11,&yymsp[-1].minor);
1869 }
1870 #line 1871 "parser.php7.c"
1871 break;
1872 case 105:
1873 #line 692 "parser.php7.lemon"
1874 {
1875 phql_ret_expr(&yygotominor.yy202, PHQL_T_BITWISE_AND, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1876 yy_destructor(14,&yymsp[-1].minor);
1877 }
1878 #line 1879 "parser.php7.c"
1879 break;
1880 case 106:
1881 #line 696 "parser.php7.lemon"
1882 {
1883 phql_ret_expr(&yygotominor.yy202, PHQL_T_BITWISE_OR, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1884 yy_destructor(15,&yymsp[-1].minor);
1885 }
1886 #line 1887 "parser.php7.c"
1887 break;
1888 case 107:
1889 #line 700 "parser.php7.lemon"
1890 {
1891 phql_ret_expr(&yygotominor.yy202, PHQL_T_BITWISE_XOR, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1892 yy_destructor(16,&yymsp[-1].minor);
1893 }
1894 #line 1895 "parser.php7.c"
1895 break;
1896 case 108:
1897 #line 704 "parser.php7.lemon"
1898 {
1899 phql_ret_expr(&yygotominor.yy202, PHQL_T_EQUALS, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1900 yy_destructor(4,&yymsp[-1].minor);
1901 }
1902 #line 1903 "parser.php7.c"
1903 break;
1904 case 109:
1905 #line 708 "parser.php7.lemon"
1906 {
1907 phql_ret_expr(&yygotominor.yy202, PHQL_T_NOTEQUALS, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1908 yy_destructor(5,&yymsp[-1].minor);
1909 }
1910 #line 1911 "parser.php7.c"
1911 break;
1912 case 110:
1913 #line 712 "parser.php7.lemon"
1914 {
1915 phql_ret_expr(&yygotominor.yy202, PHQL_T_LESS, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1916 yy_destructor(6,&yymsp[-1].minor);
1917 }
1918 #line 1919 "parser.php7.c"
1919 break;
1920 case 111:
1921 #line 716 "parser.php7.lemon"
1922 {
1923 phql_ret_expr(&yygotominor.yy202, PHQL_T_GREATER, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1924 yy_destructor(7,&yymsp[-1].minor);
1925 }
1926 #line 1927 "parser.php7.c"
1927 break;
1928 case 112:
1929 #line 720 "parser.php7.lemon"
1930 {
1931 phql_ret_expr(&yygotominor.yy202, PHQL_T_GREATEREQUAL, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1932 yy_destructor(8,&yymsp[-1].minor);
1933 }
1934 #line 1935 "parser.php7.c"
1935 break;
1936 case 113:
1937 #line 724 "parser.php7.lemon"
1938 {
1939 phql_ret_expr(&yygotominor.yy202, PHQL_T_LESSEQUAL, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1940 yy_destructor(9,&yymsp[-1].minor);
1941 }
1942 #line 1943 "parser.php7.c"
1943 break;
1944 case 114:
1945 #line 728 "parser.php7.lemon"
1946 {
1947 phql_ret_expr(&yygotominor.yy202, PHQL_T_LIKE, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1948 yy_destructor(12,&yymsp[-1].minor);
1949 }
1950 #line 1951 "parser.php7.c"
1951 break;
1952 case 115:
1953 #line 732 "parser.php7.lemon"
1954 {
1955 phql_ret_expr(&yygotominor.yy202, PHQL_T_NLIKE, &yymsp[-3].minor.yy202, &yymsp[0].minor.yy202);
1956 yy_destructor(24,&yymsp[-2].minor);
1957 yy_destructor(12,&yymsp[-1].minor);
1958 }
1959 #line 1960 "parser.php7.c"
1960 break;
1961 case 116:
1962 #line 736 "parser.php7.lemon"
1963 {
1964 phql_ret_expr(&yygotominor.yy202, PHQL_T_ILIKE, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
1965 yy_destructor(13,&yymsp[-1].minor);
1966 }
1967 #line 1968 "parser.php7.c"
1968 break;
1969 case 117:
1970 #line 740 "parser.php7.lemon"
1971 {
1972 phql_ret_expr(&yygotominor.yy202, PHQL_T_NILIKE, &yymsp[-3].minor.yy202, &yymsp[0].minor.yy202);
1973 yy_destructor(24,&yymsp[-2].minor);
1974 yy_destructor(13,&yymsp[-1].minor);
1975 }
1976 #line 1977 "parser.php7.c"
1977 break;
1978 case 118:
1979 case 121:
1980 #line 744 "parser.php7.lemon"
1981 {
1982 phql_ret_expr(&yygotominor.yy202, PHQL_T_IN, &yymsp[-4].minor.yy202, &yymsp[-1].minor.yy202);
1983 yy_destructor(23,&yymsp[-3].minor);
1984 yy_destructor(45,&yymsp[-2].minor);
1985 yy_destructor(46,&yymsp[0].minor);
1986 }
1987 #line 1988 "parser.php7.c"
1988 break;
1989 case 119:
1990 case 122:
1991 #line 748 "parser.php7.lemon"
1992 {
1993 phql_ret_expr(&yygotominor.yy202, PHQL_T_NOTIN, &yymsp[-5].minor.yy202, &yymsp[-1].minor.yy202);
1994 yy_destructor(24,&yymsp[-4].minor);
1995 yy_destructor(23,&yymsp[-3].minor);
1996 yy_destructor(45,&yymsp[-2].minor);
1997 yy_destructor(46,&yymsp[0].minor);
1998 }
1999 #line 2000 "parser.php7.c"
2000 break;
2001 case 120:
2002 #line 752 "parser.php7.lemon"
2003 {
2004 phql_ret_expr(&yygotominor.yy202, PHQL_T_SUBQUERY, &yymsp[-1].minor.yy202, NULL);
2005 yy_destructor(45,&yymsp[-2].minor);
2006 yy_destructor(46,&yymsp[0].minor);
2007 }
2008 #line 2009 "parser.php7.c"
2009 break;
2010 case 123:
2011 #line 764 "parser.php7.lemon"
2012 {
2013 phql_ret_expr(&yygotominor.yy202, PHQL_T_EXISTS, NULL, &yymsp[-1].minor.yy202);
2014 yy_destructor(66,&yymsp[-3].minor);
2015 yy_destructor(45,&yymsp[-2].minor);
2016 yy_destructor(46,&yymsp[0].minor);
2017 }
2018 #line 2019 "parser.php7.c"
2019 break;
2020 case 124:
2021 #line 768 "parser.php7.lemon"
2022 {
2023 phql_ret_expr(&yygotominor.yy202, PHQL_T_AGAINST, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
2024 yy_destructor(1,&yymsp[-1].minor);
2025 }
2026 #line 2027 "parser.php7.c"
2027 break;
2028 case 125:
2029 #line 772 "parser.php7.lemon"
2030 {
2031 {
2032 zval qualified;
2033 phql_ret_raw_qualified_name(&qualified, yymsp[-1].minor.yy0, NULL);
2034 phql_ret_expr(&yygotominor.yy202, PHQL_T_CAST, &yymsp[-3].minor.yy202, &qualified);
2035 }
2036 yy_destructor(67,&yymsp[-5].minor);
2037 yy_destructor(45,&yymsp[-4].minor);
2038 yy_destructor(33,&yymsp[-2].minor);
2039 yy_destructor(46,&yymsp[0].minor);
2040 }
2041 #line 2042 "parser.php7.c"
2042 break;
2043 case 126:
2044 #line 780 "parser.php7.lemon"
2045 {
2046 {
2047 zval qualified;
2048 phql_ret_raw_qualified_name(&qualified, yymsp[-1].minor.yy0, NULL);
2049 phql_ret_expr(&yygotominor.yy202, PHQL_T_CONVERT, &yymsp[-3].minor.yy202, &qualified);
2050 }
2051 yy_destructor(68,&yymsp[-5].minor);
2052 yy_destructor(45,&yymsp[-4].minor);
2053 yy_destructor(69,&yymsp[-2].minor);
2054 yy_destructor(46,&yymsp[0].minor);
2055 }
2056 #line 2057 "parser.php7.c"
2057 break;
2058 case 127:
2059 #line 788 "parser.php7.lemon"
2060 {
2061 phql_ret_expr(&yygotominor.yy202, PHQL_T_CASE, &yymsp[-2].minor.yy202, &yymsp[-1].minor.yy202);
2062 yy_destructor(70,&yymsp[-3].minor);
2063 yy_destructor(71,&yymsp[0].minor);
2064 }
2065 #line 2066 "parser.php7.c"
2066 break;
2067 case 130:
2068 #line 800 "parser.php7.lemon"
2069 {
2070 phql_ret_expr(&yygotominor.yy202, PHQL_T_WHEN, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
2071 yy_destructor(72,&yymsp[-3].minor);
2072 yy_destructor(73,&yymsp[-1].minor);
2073 }
2074 #line 2075 "parser.php7.c"
2075 break;
2076 case 131:
2077 #line 804 "parser.php7.lemon"
2078 {
2079 phql_ret_expr(&yygotominor.yy202, PHQL_T_ELSE, &yymsp[0].minor.yy202, NULL);
2080 yy_destructor(74,&yymsp[-1].minor);
2081 }
2082 #line 2083 "parser.php7.c"
2083 break;
2084 case 133:
2085 #line 816 "parser.php7.lemon"
2086 {
2087 phql_ret_func_call(&yygotominor.yy202, yymsp[-4].minor.yy0, &yymsp[-1].minor.yy202, &yymsp[-2].minor.yy202);
2088 yy_destructor(45,&yymsp[-3].minor);
2089 yy_destructor(46,&yymsp[0].minor);
2090 }
2091 #line 2092 "parser.php7.c"
2092 break;
2093 case 134:
2094 #line 824 "parser.php7.lemon"
2095 {
2096 phql_ret_distinct(&yygotominor.yy202);
2097 yy_destructor(29,&yymsp[0].minor);
2098 }
2099 #line 2100 "parser.php7.c"
2100 break;
2101 case 142:
2102 #line 868 "parser.php7.lemon"
2103 {
2104 phql_ret_expr(&yygotominor.yy202, PHQL_T_ISNULL, &yymsp[-2].minor.yy202, NULL);
2105 yy_destructor(22,&yymsp[-1].minor);
2106 yy_destructor(75,&yymsp[0].minor);
2107 }
2108 #line 2109 "parser.php7.c"
2109 break;
2110 case 143:
2111 #line 872 "parser.php7.lemon"
2112 {
2113 phql_ret_expr(&yygotominor.yy202, PHQL_T_ISNOTNULL, &yymsp[-3].minor.yy202, NULL);
2114 yy_destructor(22,&yymsp[-2].minor);
2115 yy_destructor(24,&yymsp[-1].minor);
2116 yy_destructor(75,&yymsp[0].minor);
2117 }
2118 #line 2119 "parser.php7.c"
2119 break;
2120 case 144:
2121 #line 876 "parser.php7.lemon"
2122 {
2123 phql_ret_expr(&yygotominor.yy202, PHQL_T_BETWEEN, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
2124 yy_destructor(2,&yymsp[-1].minor);
2125 }
2126 #line 2127 "parser.php7.c"
2127 break;
2128 case 145:
2129 #line 880 "parser.php7.lemon"
2130 {
2131 phql_ret_expr(&yygotominor.yy202, PHQL_T_BETWEEN_NOT, &yymsp[-2].minor.yy202, &yymsp[0].minor.yy202);
2132 yy_destructor(3,&yymsp[-1].minor);
2133 }
2134 #line 2135 "parser.php7.c"
2135 break;
2136 case 146:
2137 #line 884 "parser.php7.lemon"
2138 {
2139 phql_ret_expr(&yygotominor.yy202, PHQL_T_NOT, NULL, &yymsp[0].minor.yy202);
2140 yy_destructor(24,&yymsp[-1].minor);
2141 }
2142 #line 2143 "parser.php7.c"
2143 break;
2144 case 147:
2145 #line 888 "parser.php7.lemon"
2146 {
2147 phql_ret_expr(&yygotominor.yy202, PHQL_T_BITWISE_NOT, NULL, &yymsp[0].minor.yy202);
2148 yy_destructor(25,&yymsp[-1].minor);
2149 }
2150 #line 2151 "parser.php7.c"
2151 break;
2152 case 148:
2153 #line 892 "parser.php7.lemon"
2154 {
2155 phql_ret_expr(&yygotominor.yy202, PHQL_T_ENCLOSED, &yymsp[-1].minor.yy202, NULL);
2156 yy_destructor(45,&yymsp[-2].minor);
2157 yy_destructor(46,&yymsp[0].minor);
2158 }
2159 #line 2160 "parser.php7.c"
2160 break;
2161 case 152:
2162 #line 908 "parser.php7.lemon"
2163 {
2164 phql_ret_literal_zval(&yygotominor.yy202, PHQL_T_STRING, yymsp[0].minor.yy0);
2165 }
2166 #line 2167 "parser.php7.c"
2167 break;
2168 case 153:
2169 #line 912 "parser.php7.lemon"
2170 {
2171 phql_ret_literal_zval(&yygotominor.yy202, PHQL_T_DOUBLE, yymsp[0].minor.yy0);
2172 }
2173 #line 2174 "parser.php7.c"
2174 break;
2175 case 154:
2176 #line 916 "parser.php7.lemon"
2177 {
2178 phql_ret_literal_zval(&yygotominor.yy202, PHQL_T_NULL, NULL);
2179 yy_destructor(75,&yymsp[0].minor);
2180 }
2181 #line 2182 "parser.php7.c"
2182 break;
2183 case 155:
2184 #line 920 "parser.php7.lemon"
2185 {
2186 phql_ret_literal_zval(&yygotominor.yy202, PHQL_T_TRUE, NULL);
2187 yy_destructor(78,&yymsp[0].minor);
2188 }
2189 #line 2190 "parser.php7.c"
2190 break;
2191 case 156:
2192 #line 924 "parser.php7.lemon"
2193 {
2194 phql_ret_literal_zval(&yygotominor.yy202, PHQL_T_FALSE, NULL);
2195 yy_destructor(79,&yymsp[0].minor);
2196 }
2197 #line 2198 "parser.php7.c"
2198 break;
2199 case 160:
2200 #line 947 "parser.php7.lemon"
2201 {
2202 phql_ret_qualified_name(&yygotominor.yy202, NULL, yymsp[-2].minor.yy0, yymsp[0].minor.yy0);
2203 yy_destructor(32,&yymsp[-1].minor);
2204 }
2205 #line 2206 "parser.php7.c"
2206 break;
2207 };
2208 yygoto = yyRuleInfo[yyruleno].lhs;
2209 yysize = yyRuleInfo[yyruleno].nrhs;
2210 yypParser->yyidx -= yysize;
2211 yyact = yy_find_reduce_action(yypParser,yygoto);
2212 if( yyact < YYNSTATE ){
2213 yy_shift(yypParser,yyact,yygoto,&yygotominor);
2214 }else if( yyact == YYNSTATE + YYNRULE + 1 ){
2215 yy_accept(yypParser);
2216 }
2217 }
2218
2219 /*
2220 ** The following code executes when the parse fails
2221 */
yy_parse_failed(yyParser * yypParser)2222 static void yy_parse_failed(
2223 yyParser *yypParser /* The parser */
2224 ){
2225 phql_ARG_FETCH;
2226 #ifndef NDEBUG
2227 if( yyTraceFILE ){
2228 fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
2229 }
2230 #endif
2231 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
2232 /* Here code is inserted which will be executed whenever the
2233 ** parser fails */
2234 phql_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
2235 }
2236
2237 /*
2238 ** The following code executes when a syntax error first occurs.
2239 */
yy_syntax_error(yyParser * yypParser,int yymajor,YYMINORTYPE yyminor)2240 static void yy_syntax_error(
2241 yyParser *yypParser, /* The parser */
2242 int yymajor, /* The major type of the error token */
2243 YYMINORTYPE yyminor /* The minor type of the error token */
2244 ){
2245 phql_ARG_FETCH;
2246 #define TOKEN (yyminor.yy0)
2247 #line 34 "parser.php7.lemon"
2248
2249 if (status->scanner_state->start_length) {
2250 {
2251
2252 char *token_name = NULL;
2253 int token_found = 0;
2254 unsigned int token_length;
2255 const phql_token_names *tokens = phql_tokens;
2256 int active_token = status->scanner_state->active_token;
2257 int near_length = status->scanner_state->start_length;
2258
2259 if (active_token) {
2260
2261 do {
2262 if (tokens->code == active_token) {
2263 token_name = tokens->name;
2264 token_length = tokens->length;
2265 token_found = 1;
2266 break;
2267 }
2268 ++tokens;
2269 } while (tokens[0].code != 0);
2270
2271 }
2272
2273 if (!token_name) {
2274 token_length = strlen("UNKNOWN");
2275 token_name = estrndup("UNKNOWN", token_length);
2276 token_found = 0;
2277 }
2278
2279 status->syntax_error_len = 96 + status->token->len + token_length + near_length + status->phql_length;;
2280 status->syntax_error = emalloc(sizeof(char) * status->syntax_error_len);
2281
2282 if (near_length > 0) {
2283 if (status->token->value) {
2284 snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected token %s(%s), near to '%s', when parsing: %s (%d)", token_name, status->token->value, status->scanner_state->start, status->phql, status->phql_length);
2285 } else {
2286 snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected token %s, near to '%s', when parsing: %s (%d)", token_name, status->scanner_state->start, status->phql, status->phql_length);
2287 }
2288 } else {
2289 if (active_token != PHQL_T_IGNORE) {
2290 if (status->token->value) {
2291 snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected token %s(%s), at the end of query, when parsing: %s (%d)", token_name, status->token->value, status->phql, status->phql_length);
2292 } else {
2293 snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected token %s, at the end of query, when parsing: %s (%d)", token_name, status->phql, status->phql_length);
2294 }
2295 } else {
2296 snprintf(status->syntax_error, status->syntax_error_len, "Syntax error, unexpected EOF, at the end of query");
2297 }
2298 status->syntax_error[status->syntax_error_len - 1] = '\0';
2299 }
2300
2301 if (!token_found) {
2302 if (token_name) {
2303 efree(token_name);
2304 }
2305 }
2306 }
2307 } else {
2308 status->syntax_error_len = strlen("Syntax error, unexpected EOF");
2309 status->syntax_error = estrndup("Syntax error, unexpected EOF", status->syntax_error_len);
2310 }
2311
2312 status->status = PHQL_PARSING_FAILED;
2313
2314 #line 2315 "parser.php7.c"
2315 phql_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
2316 }
2317
2318 /*
2319 ** The following is executed when the parser accepts
2320 */
yy_accept(yyParser * yypParser)2321 static void yy_accept(
2322 yyParser *yypParser /* The parser */
2323 ){
2324 phql_ARG_FETCH;
2325 #ifndef NDEBUG
2326 if( yyTraceFILE ){
2327 fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
2328 }
2329 #endif
2330 while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
2331 /* Here code is inserted which will be executed whenever the
2332 ** parser accepts */
2333 phql_ARG_STORE; /* Suppress warning about unused %extra_argument variable */
2334 }
2335
2336 /* The main parser program.
2337 ** The first argument is a pointer to a structure obtained from
2338 ** "phql_Alloc" which describes the current state of the parser.
2339 ** The second argument is the major token number. The third is
2340 ** the minor token. The fourth optional argument is whatever the
2341 ** user wants (and specified in the grammar) and is available for
2342 ** use by the action routines.
2343 **
2344 ** Inputs:
2345 ** <ul>
2346 ** <li> A pointer to the parser (an opaque structure.)
2347 ** <li> The major token number.
2348 ** <li> The minor token number.
2349 ** <li> An option argument of a grammar-specified type.
2350 ** </ul>
2351 **
2352 ** Outputs:
2353 ** None.
2354 */
phql_(void * yyp,int yymajor,phql_TOKENTYPE yyminor phql_ARG_PDECL)2355 void phql_(
2356 void *yyp, /* The parser */
2357 int yymajor, /* The major token code number */
2358 phql_TOKENTYPE yyminor /* The value for the token */
2359 phql_ARG_PDECL /* Optional %extra_argument parameter */
2360 ){
2361 YYMINORTYPE yyminorunion;
2362 int yyact; /* The parser action. */
2363 int yyendofinput; /* True if we are at the end of input */
2364 int yyerrorhit = 0; /* True if yymajor has invoked an error */
2365 yyParser *yypParser; /* The parser */
2366
2367 /* (re)initialize the parser, if necessary */
2368 yypParser = (yyParser*)yyp;
2369 if( yypParser->yyidx<0 ){
2370 if( yymajor==0 ) return;
2371 yypParser->yyidx = 0;
2372 yypParser->yyerrcnt = -1;
2373 yypParser->yystack[0].stateno = 0;
2374 yypParser->yystack[0].major = 0;
2375 }
2376 yyminorunion.yy0 = yyminor;
2377 yyendofinput = (yymajor==0);
2378 phql_ARG_STORE;
2379
2380 #ifndef NDEBUG
2381 if( yyTraceFILE ){
2382 fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
2383 }
2384 #endif
2385
2386 do{
2387 yyact = yy_find_shift_action(yypParser,yymajor);
2388 if( yyact<YYNSTATE ){
2389 yy_shift(yypParser,yyact,yymajor,&yyminorunion);
2390 yypParser->yyerrcnt--;
2391 if( yyendofinput && yypParser->yyidx>=0 ){
2392 yymajor = 0;
2393 }else{
2394 yymajor = YYNOCODE;
2395 }
2396 }else if( yyact < YYNSTATE + YYNRULE ){
2397 yy_reduce(yypParser,yyact-YYNSTATE);
2398 }else if( yyact == YY_ERROR_ACTION ){
2399 int yymx;
2400 #ifndef NDEBUG
2401 if( yyTraceFILE ){
2402 fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
2403 }
2404 #endif
2405 #ifdef YYERRORSYMBOL
2406 /* A syntax error has occurred.
2407 ** The response to an error depends upon whether or not the
2408 ** grammar defines an error token "ERROR".
2409 **
2410 ** This is what we do if the grammar does define ERROR:
2411 **
2412 ** * Call the %syntax_error function.
2413 **
2414 ** * Begin popping the stack until we enter a state where
2415 ** it is legal to shift the error symbol, then shift
2416 ** the error symbol.
2417 **
2418 ** * Set the error count to three.
2419 **
2420 ** * Begin accepting and shifting new tokens. No new error
2421 ** processing will occur until three tokens have been
2422 ** shifted successfully.
2423 **
2424 */
2425 if( yypParser->yyerrcnt<0 ){
2426 yy_syntax_error(yypParser,yymajor,yyminorunion);
2427 }
2428 yymx = yypParser->yystack[yypParser->yyidx].major;
2429 if( yymx==YYERRORSYMBOL || yyerrorhit ){
2430 #ifndef NDEBUG
2431 if( yyTraceFILE ){
2432 fprintf(yyTraceFILE,"%sDiscard input token %s\n",
2433 yyTracePrompt,yyTokenName[yymajor]);
2434 }
2435 #endif
2436 yy_destructor(yymajor,&yyminorunion);
2437 yymajor = YYNOCODE;
2438 }else{
2439 while(
2440 yypParser->yyidx >= 0 &&
2441 yymx != YYERRORSYMBOL &&
2442 (yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE
2443 ){
2444 yy_pop_parser_stack(yypParser);
2445 }
2446 if( yypParser->yyidx < 0 || yymajor==0 ){
2447 yy_destructor(yymajor,&yyminorunion);
2448 yy_parse_failed(yypParser);
2449 yymajor = YYNOCODE;
2450 }else if( yymx!=YYERRORSYMBOL ){
2451 YYMINORTYPE u2;
2452 u2.YYERRSYMDT = 0;
2453 yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
2454 }
2455 }
2456 yypParser->yyerrcnt = 3;
2457 yyerrorhit = 1;
2458 #else /* YYERRORSYMBOL is not defined */
2459 /* This is what we do if the grammar does not define ERROR:
2460 **
2461 ** * Report an error message, and throw away the input token.
2462 **
2463 ** * If the input token is $, then fail the parse.
2464 **
2465 ** As before, subsequent error messages are suppressed until
2466 ** three input tokens have been successfully shifted.
2467 */
2468 if( yypParser->yyerrcnt<=0 ){
2469 yy_syntax_error(yypParser,yymajor,yyminorunion);
2470 }
2471 yypParser->yyerrcnt = 3;
2472 yy_destructor(yymajor,&yyminorunion);
2473 if( yyendofinput ){
2474 yy_parse_failed(yypParser);
2475 }
2476 yymajor = YYNOCODE;
2477 #endif
2478 }else{
2479 yy_accept(yypParser);
2480 yymajor = YYNOCODE;
2481 }
2482 }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
2483 return;
2484 }
2485