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