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 33 "parse.y"
8 
9 #include "sqliteInt.h"
10 #include "parse.h"
11 
12 /*
13 ** An instance of this structure holds information about the
14 ** LIMIT clause of a SELECT statement.
15 */
16 struct LimitVal {
17   int limit;    /* The LIMIT value.  -1 if there is no limit */
18   int offset;   /* The OFFSET.  0 if there is none */
19 };
20 
21 /*
22 ** An instance of the following structure describes the event of a
23 ** TRIGGER.  "a" is the event type, one of TK_UPDATE, TK_INSERT,
24 ** TK_DELETE, or TK_INSTEAD.  If the event is of the form
25 **
26 **      UPDATE ON (a,b,c)
27 **
28 ** Then the "b" IdList records the list "a,b,c".
29 */
30 struct TrigEvent { int a; IdList * b; };
31 
32 
33 #line 34 "parse.c"
34 /* Next is all token values, in a form suitable for use by makeheaders.
35 ** This section will be null unless lemon is run with the -m switch.
36 */
37 /*
38 ** These constants (all generated automatically by the parser generator)
39 ** specify the various kinds of tokens (terminals) that the parser
40 ** understands.
41 **
42 ** Each symbol here is a terminal symbol in the grammar.
43 */
44 /* Make sure the INTERFACE macro is defined.
45 */
46 #ifndef INTERFACE
47 # define INTERFACE 1
48 #endif
49 /* The next thing included is series of defines which control
50 ** various aspects of the generated parser.
51 **    YYCODETYPE         is the data type used for storing terminal
52 **                       and nonterminal numbers.  "unsigned char" is
53 **                       used if there are fewer than 250 terminals
54 **                       and nonterminals.  "int" is used otherwise.
55 **    YYNOCODE           is a number of type YYCODETYPE which corresponds
56 **                       to no legal terminal or nonterminal number.  This
57 **                       number is used to fill in empty slots of the hash
58 **                       table.
59 **    YYFALLBACK         If defined, this indicates that one or more tokens
60 **                       have fall-back values which should be used if the
61 **                       original value of the token will not parse.
62 **    YYACTIONTYPE       is the data type used for storing terminal
63 **                       and nonterminal numbers.  "unsigned char" is
64 **                       used if there are fewer than 250 rules and
65 **                       states combined.  "int" is used otherwise.
66 **    sqliteParserTOKENTYPE     is the data type used for minor tokens given
67 **                       directly to the parser from the tokenizer.
68 **    YYMINORTYPE        is the data type used for all minor tokens.
69 **                       This is typically a union of many types, one of
70 **                       which is sqliteParserTOKENTYPE.  The entry in the union
71 **                       for base tokens is called "yy0".
72 **    YYSTACKDEPTH       is the maximum depth of the parser's stack.
73 **    sqliteParserARG_SDECL     A static variable declaration for the %extra_argument
74 **    sqliteParserARG_PDECL     A parameter declaration for the %extra_argument
75 **    sqliteParserARG_STORE     Code to store %extra_argument into yypParser
76 **    sqliteParserARG_FETCH     Code to extract %extra_argument from yypParser
77 **    YYNSTATE           the combined number of states.
78 **    YYNRULE            the number of rules in the grammar
79 **    YYERRORSYMBOL      is the code number of the error symbol.  If not
80 **                       defined, then do no error processing.
81 */
82 /*  */
83 #define YYCODETYPE unsigned char
84 #define YYNOCODE 221
85 #define YYACTIONTYPE unsigned short int
86 #define sqliteParserTOKENTYPE Token
87 typedef union {
88   sqliteParserTOKENTYPE yy0;
89   TriggerStep * yy19;
90   struct LimitVal yy124;
91   Select* yy179;
92   Expr * yy182;
93   Expr* yy242;
94   struct TrigEvent yy290;
95   Token yy298;
96   SrcList* yy307;
97   IdList* yy320;
98   ExprList* yy322;
99   int yy372;
100   struct {int value; int mask;} yy407;
101   int yy441;
102 } YYMINORTYPE;
103 #define YYSTACKDEPTH 100
104 #define sqliteParserARG_SDECL Parse *pParse;
105 #define sqliteParserARG_PDECL ,Parse *pParse
106 #define sqliteParserARG_FETCH Parse *pParse = yypParser->pParse
107 #define sqliteParserARG_STORE yypParser->pParse = pParse
108 #define YYNSTATE 563
109 #define YYNRULE 293
110 #define YYERRORSYMBOL 131
111 #define YYERRSYMDT yy441
112 #define YYFALLBACK 1
113 #define YY_NO_ACTION      (YYNSTATE+YYNRULE+2)
114 #define YY_ACCEPT_ACTION  (YYNSTATE+YYNRULE+1)
115 #define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)
116 
117 /* Next are that tables used to determine what action to take based on the
118 ** current state and lookahead token.  These tables are used to implement
119 ** functions that take a state number and lookahead value and return an
120 ** action integer.
121 **
122 ** Suppose the action integer is N.  Then the action is determined as
123 ** follows
124 **
125 **   0 <= N < YYNSTATE                  Shift N.  That is, push the lookahead
126 **                                      token onto the stack and goto state N.
127 **
128 **   YYNSTATE <= N < YYNSTATE+YYNRULE   Reduce by rule N-YYNSTATE.
129 **
130 **   N == YYNSTATE+YYNRULE              A syntax error has occurred.
131 **
132 **   N == YYNSTATE+YYNRULE+1            The parser accepts its input.
133 **
134 **   N == YYNSTATE+YYNRULE+2            No such action.  Denotes unused
135 **                                      slots in the yy_action[] table.
136 **
137 ** The action table is constructed as a single large table named yy_action[].
138 ** Given state S and lookahead X, the action is computed as
139 **
140 **      yy_action[ yy_shift_ofst[S] + X ]
141 **
142 ** If the index value yy_shift_ofst[S]+X is out of range or if the value
143 ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
144 ** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
145 ** and that yy_default[S] should be used instead.
146 **
147 ** The formula above is for computing the action when the lookahead is
148 ** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
149 ** a reduce action) then the yy_reduce_ofst[] array is used in place of
150 ** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
151 ** YY_SHIFT_USE_DFLT.
152 **
153 ** The following are the tables generated in this section:
154 **
155 **  yy_action[]        A single table containing all actions.
156 **  yy_lookahead[]     A table containing the lookahead for each entry in
157 **                     yy_action.  Used to detect hash collisions.
158 **  yy_shift_ofst[]    For each state, the offset into yy_action for
159 **                     shifting terminals.
160 **  yy_reduce_ofst[]   For each state, the offset into yy_action for
161 **                     shifting non-terminals after a reduce.
162 **  yy_default[]       Default action for each state.
163 */
164 static YYACTIONTYPE yy_action[] = {
165  /*     0 */   264,  106,  262,  119,  123,  117,  121,  129,  131,  133,
166  /*    10 */   135,  144,  146,  148,  150,  152,  154,  844,  426,  174,
167  /*    20 */   143,  425,    2,    3,  839,  142,  129,  131,  133,  135,
168  /*    30 */   144,  146,  148,  150,  152,  154,  247,  837,  427,  115,
169  /*    40 */   104,  139,  127,  125,  156,  161,  157,  162,  166,  119,
170  /*    50 */   123,  117,  121,  129,  131,  133,  135,  144,  146,  148,
171  /*    60 */   150,  152,  154,  448,  361,  218,  263,  143,  363,  369,
172  /*    70 */   374,  137,  142,  144,  146,  148,  150,  152,  154,  377,
173  /*    80 */   857,    1,  562,    3,  396,  327,  115,  104,  139,  127,
174  /*    90 */   125,  156,  161,  157,  162,  166,  119,  123,  117,  121,
175  /*   100 */   129,  131,  133,  135,  144,  146,  148,  150,  152,  154,
176  /*   110 */   482,  454,  444,  106,  143,  169,   20,  171,  172,  142,
177  /*   120 */   310,   73,    4,    6,  402,   68,  398,   29,  248,   64,
178  /*   130 */    46,  174,  497,  115,  104,  139,  127,  125,  156,  161,
179  /*   140 */   157,  162,  166,  119,  123,  117,  121,  129,  131,  133,
180  /*   150 */   135,  144,  146,  148,  150,  152,  154,   69,  193,   65,
181  /*   160 */   101,   44,   54,   60,   62,  308,  331,  244,  175,  106,
182  /*   170 */    20,  357,  333,  173,  640,   70,  359,  219,   36,   37,
183  /*   180 */    21,   22,  510,  143,  181,  179,  303,  299,  142,   31,
184  /*   190 */    20,  392,  177,   66,   67,  111,  358,  390,  112,  105,
185  /*   200 */    69,  191,  115,  104,  139,  127,  125,  156,  161,  157,
186  /*   210 */   162,  166,  119,  123,  117,  121,  129,  131,  133,  135,
187  /*   220 */   144,  146,  148,  150,  152,  154,  388,  312,   73,  688,
188  /*   230 */   306,  113,  183,  387,   21,   22,  230,  361,   52,  106,
189  /*   240 */    20,  363,  369,  374,  361,  544,  542,   53,  363,  369,
190  /*   250 */   374,  143,  377,  591,   21,   22,  142,  212,  338,  377,
191  /*   260 */   169,   38,  171,  172,  356,  348,  535,   46,  534,  792,
192  /*   270 */   115,  104,  139,  127,  125,  156,  161,  157,  162,  166,
193  /*   280 */   119,  123,  117,  121,  129,  131,  133,  135,  144,  146,
194  /*   290 */   148,  150,  152,  154,  790,   41,  336,  298,   44,   54,
195  /*   300 */    60,   62,  308,  331,   21,   22,  197,  167,   20,  333,
196  /*   310 */    58,   20,  395,  340,  343,  201,  169,  809,  171,  172,
197  /*   320 */    59,  143,  337,  311,  339,  281,  142,  346,  347,   20,
198  /*   330 */   205,   20,  639,  195,   35,  536,  537,  538,  842,   45,
199  /*   340 */   115,  104,  139,  127,  125,  156,  161,  157,  162,  166,
200  /*   350 */   119,  123,  117,  121,  129,  131,  133,  135,  144,  146,
201  /*   360 */   148,  150,  152,  154,  300,  276,  148,  150,  152,  154,
202  /*   370 */    71,  106,   21,   22,  430,   21,   22,   20,  443,  791,
203  /*   380 */   441,  106,   40,  335,  169,  143,  171,  172,  330,  305,
204  /*   390 */   142,   84,   86,   21,   22,   21,   22,   10,  572,  174,
205  /*   400 */   254,   18,   83,   69,  115,  104,  139,  127,  125,  156,
206  /*   410 */   161,  157,  162,  166,  119,  123,  117,  121,  129,  131,
207  /*   420 */   133,  135,  144,  146,  148,  150,  152,  154,  467,  106,
208  /*   430 */   661,  275,  143,  720,  295,  301,  169,  142,  171,  172,
209  /*   440 */   539,   21,   22,  487,  449,  219,  459,  103,  232,  451,
210  /*   450 */   282,  115,  104,  139,  127,  125,  156,  161,  157,  162,
211  /*   460 */   166,  119,  123,  117,  121,  129,  131,  133,  135,  144,
212  /*   470 */   146,  148,  150,  152,  154,   69,  417,  419,  418,  143,
213  /*   480 */    95,  237,  312,  494,  142,  489,   47,  283,  259,   75,
214  /*   490 */    10,   68,  189,  284,  209,   64,  289,   49,  115,  104,
215  /*   500 */   139,  127,  125,  156,  161,  157,  162,  166,  119,  123,
216  /*   510 */   117,  121,  129,  131,  133,  135,  144,  146,  148,  150,
217  /*   520 */   152,  154,  196,  297,  193,  357,  429,  296,  169,   32,
218  /*   530 */   171,  172,  391,   37,  175,  169,  276,  171,  172,  313,
219  /*   540 */   316,  323,  325,  663,  106,  689,  245,  251,  143,  651,
220  /*   550 */   181,  179,  292,  142,  386,  583,  491,  690,  177,   66,
221  /*   560 */    67,  111,  184,  437,  112,  105,  213,  115,  164,  139,
222  /*   570 */   127,  125,  156,  161,  157,  162,  166,  119,  123,  117,
223  /*   580 */   121,  129,  131,  133,  135,  144,  146,  148,  150,  152,
224  /*   590 */   154,  315,  726,   20,  106,  143,  333,  113,  183,  563,
225  /*   600 */   142,   43,  278,  440,  170,  185,  330,  666,  560,  561,
226  /*   610 */   249,  259,  103,  253,  115,  104,  139,  127,  125,  156,
227  /*   620 */   161,  157,  162,  166,  119,  123,  117,  121,  129,  131,
228  /*   630 */   133,  135,  144,  146,  148,  150,  152,  154,  800,   10,
229  /*   640 */   252,  169,  143,  171,  172,  445,   97,  142,  560,  561,
230  /*   650 */   216,  221,  217,  169,  313,  171,  172,   21,   22,   42,
231  /*   660 */   159,  115,  227,  139,  127,  125,  156,  161,  157,  162,
232  /*   670 */   166,  119,  123,  117,  121,  129,  131,  133,  135,  144,
233  /*   680 */   146,  148,  150,  152,  154,  256,   73,  106,  816,  143,
234  /*   690 */   169,  158,  171,  172,  142,  234,  397,  217,  545,  475,
235  /*   700 */   273,  302,  274,  217,  266,  481,  315,   96,  653,  104,
236  /*   710 */   139,  127,  125,  156,  161,  157,  162,  166,  119,  123,
237  /*   720 */   117,  121,  129,  131,  133,  135,  144,  146,  148,  150,
238  /*   730 */   152,  154,  106,  349,  291,  262,  143,  262,  264,   74,
239  /*   740 */   262,  142,  533,  464,  320,  477,  319,  329,  341,  274,
240  /*   750 */   481,  342,  137,  415,  416,  321,  266,  139,  127,  125,
241  /*   760 */   156,  161,  157,  162,  166,  119,  123,  117,  121,  129,
242  /*   770 */   131,  133,  135,  144,  146,  148,  150,  152,  154,    7,
243  /*   780 */   322,   23,   25,   27,  394,   68,  267,   13,  393,   64,
244  /*   790 */   518,  251,  106,  836,  344,  548,   14,  345,  458,  263,
245  /*   800 */   520,  263,  106,   91,  263,  557,  266,  314,  168,  106,
246  /*   810 */   462,   15,  443,   69,   16,  231,  276,  106,  193,  531,
247  /*   820 */   174,  448,  276,  106,  276,   17,  529,  174,  175,  318,
248  /*   830 */   106,   89,  106,   69,  276,  114,  286,   69,   68,  399,
249  /*   840 */    69,  116,   64,  328,  181,  179,  106,  106,  118,  366,
250  /*   850 */   163,  272,  177,   66,   67,  111,  215,  253,  112,  105,
251  /*   860 */   276,  371,  467,  233,  120,  375,  219,  143,  498,  503,
252  /*   870 */   444,  193,  142,  219,  486,  720,  401,   73,  453,   73,
253  /*   880 */   420,  175,  278,  451,  252,  400,  106,  380,  278,   68,
254  /*   890 */   278,  113,  183,   64,  225,  229,  106,  181,  179,  106,
255  /*   900 */   278,   69,  106,  106,  122,  177,   66,   67,  111,  411,
256  /*   910 */   106,  112,  105,  106,  124,  106,  106,  126,  106,  224,
257  /*   920 */   128,  130,  193,  106,  106,  106,  278,  351,  132,  352,
258  /*   930 */   831,  134,  175,  136,  138,  422,  141,  106,  367,  376,
259  /*   940 */   274,  145,  147,  149,  113,  183,  793,  690,  181,  179,
260  /*   950 */   106,  424,  106,  106,  424,  151,  177,   66,   67,  111,
261  /*   960 */   106,  106,  112,  105,  106,  106,  808,  106,  153,  106,
262  /*   970 */   155,  165,  106,  106,  106,  106,  106,  464,  176,  178,
263  /*   980 */   852,  106,  180,  182,  106,  190,  293,  192,  245,  106,
264  /*   990 */   210,  214,  226,  228,  241,  113,  183,  106,  474,  246,
265  /*  1000 */   137,  690,  280,  372,  290,  274,  381,  412,  274,  106,
266  /*  1010 */   471,  221,  832,  421,  438,  466,  274,  472,  480,  422,
267  /*  1020 */   478,   73,  515,   69,  519,  255,  478,  479,  221,  690,
268  /*  1030 */   540,  527,  508,  541,  516,   85,   39,  403,  406,  257,
269  /*  1040 */   317,  404,  198,  407,  405,  221,  408,   69,  413,    5,
270  /*  1050 */   824,  221,  211,  409,  817,  410,  546,  582,  258,  414,
271  /*  1060 */    90,  547,  199,  260,  223,  829,  830,  261,  324,  200,
272  /*  1070 */   815,   72,   34,  526,  222,  186,  423,  326,   94,   57,
273  /*  1080 */   428,   56,  187,  188,  265,  202,  431,  554,  332,   88,
274  /*  1090 */    33,  432,  433,  434,  279,  268,  436,  556,  435,   51,
275  /*  1100 */   578,   30,  549,  270,  439,  798,  334,  269,  799,  203,
276  /*  1110 */   442,  577,  204,  271,   28,  550,  447,  812,  446,   98,
277  /*  1120 */   532,  450,  727,  728,  823,  452,  819,  576,   26,   81,
278  /*  1130 */    82,  445,  235,  838,   80,  457,  575,  463,  461,  455,
279  /*  1140 */    24,  456,  551,   93,  813,  460,  277,  840,  465,  528,
280  /*  1150 */    79,  206,  807,  468,  469,  593,  470,   55,  552,  473,
281  /*  1160 */   350,  820,  355,  850,  592,  476,  250,   19,  207,  553,
282  /*  1170 */   353,  354,  841,  285,  236,  814,  484,  555,  287,  483,
283  /*  1180 */   843,  208,  660,  485,  488,  389,   63,  490,  662,  360,
284  /*  1190 */   492,  288,  851,  100,  806,  849,  495,  493,  362,  496,
285  /*  1200 */    92,  499,  719,  364,  240,  238,  500,  365,  501,  502,
286  /*  1210 */   239,  294,  504,  505,  507,  506,  568,   61,   11,  722,
287  /*  1220 */   108,  368,  571,  511,   12,  517,  512,    9,    8,  559,
288  /*  1230 */   370,  514,  725,  509,   50,  558,  373,   78,  243,  217,
289  /*  1240 */    18,  242,  818,  521,   77,  513,  110,  543,  855,  109,
290  /*  1250 */   522,  154,  245,  524,  107,  379,  378,  160,  523,   87,
291  /*  1260 */   194,  385,   48,  304,  530,  383,  382,  140,   76,  811,
292  /*  1270 */    99,  384,  525,  220,  810,  515,   49,  102,  515,  307,
293  /*  1280 */   515,  515,  309,  515,  515,  667,  668,  669,
294 };
295 static YYCODETYPE yy_lookahead[] = {
296  /*     0 */    21,  140,   23,   70,   71,   72,   73,   74,   75,   76,
297  /*    10 */    77,   78,   79,   80,   81,   82,   83,    9,   25,  158,
298  /*    20 */    41,   28,  134,  135,   14,   46,   74,   75,   76,   77,
299  /*    30 */    78,   79,   80,   81,   82,   83,   22,   11,   45,   60,
300  /*    40 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
301  /*    50 */    71,   72,   73,   74,   75,   76,   77,   78,   79,   80,
302  /*    60 */    81,   82,   83,   53,   90,  204,   87,   41,   94,   95,
303  /*    70 */    96,  200,   46,   78,   79,   80,   81,   82,   83,  105,
304  /*    80 */   132,  133,  134,  135,   17,   19,   60,   61,   62,   63,
305  /*    90 */    64,   65,   66,   67,   68,   69,   70,   71,   72,   73,
306  /*   100 */    74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
307  /*   110 */   100,  101,  102,  140,   41,  107,   23,  109,  110,   46,
308  /*   120 */   159,  111,  136,  137,   57,   19,   59,  141,  114,   23,
309  /*   130 */    62,  158,  146,   60,   61,   62,   63,   64,   65,   66,
310  /*   140 */    67,   68,   69,   70,   71,   72,   73,   74,   75,   76,
311  /*   150 */    77,   78,   79,   80,   81,   82,   83,  171,   52,   19,
312  /*   160 */    23,   93,   94,   95,   96,   97,   98,  194,   62,  140,
313  /*   170 */    23,  140,  104,   20,   20,  146,   22,  204,  147,  148,
314  /*   180 */    87,   88,  196,   41,   78,   79,   80,  158,   46,   19,
315  /*   190 */    23,   21,   86,   87,   88,   89,  165,  166,   92,   93,
316  /*   200 */   171,  128,   60,   61,   62,   63,   64,   65,   66,   67,
317  /*   210 */    68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
318  /*   220 */    78,   79,   80,   81,   82,   83,  161,  162,  111,   20,
319  /*   230 */    20,  125,  126,  168,   87,   88,   19,   90,   34,  140,
320  /*   240 */    23,   94,   95,   96,   90,   78,   79,   43,   94,   95,
321  /*   250 */    96,   41,  105,  113,   87,   88,   46,  158,   23,  105,
322  /*   260 */   107,  149,  109,  110,  152,  153,   99,   62,  140,  127,
323  /*   270 */    60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
324  /*   280 */    70,   71,   72,   73,   74,   75,   76,   77,   78,   79,
325  /*   290 */    80,   81,   82,   83,   14,   90,   91,   20,   93,   94,
326  /*   300 */    95,   96,   97,   98,   87,   88,   15,   19,   23,  104,
327  /*   310 */    26,   23,  143,   78,   79,   24,  107,    9,  109,  110,
328  /*   320 */    36,   41,   87,  160,   89,   19,   46,   92,   93,   23,
329  /*   330 */    39,   23,   20,   42,   22,  207,  208,  209,    9,  139,
330  /*   340 */    60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
331  /*   350 */    70,   71,   72,   73,   74,   75,   76,   77,   78,   79,
332  /*   360 */    80,   81,   82,   83,   20,  140,   80,   81,   82,   83,
333  /*   370 */   172,  140,   87,   88,  205,   87,   88,   23,  146,   14,
334  /*   380 */   211,  140,  155,  156,  107,   41,  109,  110,  161,  158,
335  /*   390 */    46,   78,   79,   87,   88,   87,   88,   99,    9,  158,
336  /*   400 */   115,   12,   89,  171,   60,   61,   62,   63,   64,   65,
337  /*   410 */    66,   67,   68,   69,   70,   71,   72,   73,   74,   75,
338  /*   420 */    76,   77,   78,   79,   80,   81,   82,   83,  196,  140,
339  /*   430 */     9,  206,   41,    9,   80,  194,  107,   46,  109,  110,
340  /*   440 */   210,   87,   88,   17,  212,  204,   22,  158,   20,  217,
341  /*   450 */   146,   60,   61,   62,   63,   64,   65,   66,   67,   68,
342  /*   460 */    69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
343  /*   470 */    79,   80,   81,   82,   83,  171,  100,  101,  102,   41,
344  /*   480 */   191,  192,  162,   57,   46,   59,   93,  183,  184,  174,
345  /*   490 */    99,   19,  127,  189,  129,   23,  181,  104,   60,   61,
346  /*   500 */    62,   63,   64,   65,   66,   67,   68,   69,   70,   71,
347  /*   510 */    72,   73,   74,   75,   76,   77,   78,   79,   80,   81,
348  /*   520 */    82,   83,   20,  108,   52,  140,   18,  112,  107,  144,
349  /*   530 */   109,  110,  147,  148,   62,  107,  140,  109,  110,   47,
350  /*   540 */   100,  101,  102,    9,  140,   20,  122,   22,   41,    9,
351  /*   550 */    78,   79,   80,   46,   62,    9,  130,   19,   86,   87,
352  /*   560 */    88,   89,  158,  167,   92,   93,  128,   60,   61,   62,
353  /*   570 */    63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
354  /*   580 */    73,   74,   75,   76,   77,   78,   79,   80,   81,   82,
355  /*   590 */    83,   99,    9,   23,  140,   41,  104,  125,  126,    0,
356  /*   600 */    46,  156,  206,   95,  108,  201,  161,  111,    9,   10,
357  /*   610 */   183,  184,  158,   88,   60,   61,   62,   63,   64,   65,
358  /*   620 */    66,   67,   68,   69,   70,   71,   72,   73,   74,   75,
359  /*   630 */    76,   77,   78,   79,   80,   81,   82,   83,  130,   99,
360  /*   640 */   115,  107,   41,  109,  110,   60,  192,   46,    9,   10,
361  /*   650 */    20,  113,   22,  107,   47,  109,  110,   87,   88,  140,
362  /*   660 */    62,   60,   61,   62,   63,   64,   65,   66,   67,   68,
363  /*   670 */    69,   70,   71,   72,   73,   74,   75,   76,   77,   78,
364  /*   680 */    79,   80,   81,   82,   83,  115,  111,  140,    9,   41,
365  /*   690 */   107,   93,  109,  110,   46,   20,  140,   22,   19,  124,
366  /*   700 */    20,   20,   22,   22,  152,  158,   99,   22,  123,   61,
367  /*   710 */    62,   63,   64,   65,   66,   67,   68,   69,   70,   71,
368  /*   720 */    72,   73,   74,   75,   76,   77,   78,   79,   80,   81,
369  /*   730 */    82,   83,  140,   19,  182,   23,   41,   23,   21,  173,
370  /*   740 */    23,   46,   63,  140,   91,  198,   93,   20,   89,   22,
371  /*   750 */   158,   92,  200,   55,   56,   29,  152,   62,   63,   64,
372  /*   760 */    65,   66,   67,   68,   69,   70,   71,   72,   73,   74,
373  /*   770 */    75,   76,   77,   78,   79,   80,   81,   82,   83,   11,
374  /*   780 */    54,   13,   14,   15,   16,   19,  182,   15,  146,   23,
375  /*   790 */   198,   22,  140,   11,   89,   27,   24,   92,  195,   87,
376  /*   800 */    32,   87,  140,   22,   87,   37,  152,  140,  146,  140,
377  /*   810 */   158,   39,  146,  171,   42,  146,  140,  140,   52,   51,
378  /*   820 */   158,   53,  140,  140,  140,   53,   58,  158,   62,  103,
379  /*   830 */   140,   50,  140,  171,  140,  158,  182,  171,   19,  140,
380  /*   840 */   171,  158,   23,  167,   78,   79,  140,  140,  158,  167,
381  /*   850 */   158,  167,   86,   87,   88,   89,  194,   88,   92,   93,
382  /*   860 */   140,  167,  196,  194,  158,  158,  204,   41,  100,  101,
383  /*   870 */   102,   52,   46,  204,  106,    9,  146,  111,  212,  111,
384  /*   880 */    49,   62,  206,  217,  115,   21,  140,  167,  206,   19,
385  /*   890 */   206,  125,  126,   23,   68,   69,  140,   78,   79,  140,
386  /*   900 */   206,  171,  140,  140,  158,   86,   87,   88,   89,  127,
387  /*   910 */   140,   92,   93,  140,  158,  140,  140,  158,  140,   93,
388  /*   920 */   158,  158,   52,  140,  140,  140,  206,   20,  158,   22,
389  /*   930 */    99,  158,   62,  158,  158,   22,  158,  140,   20,  139,
390  /*   940 */    22,  158,  158,  158,  125,  126,  127,    9,   78,   79,
391  /*   950 */   140,  140,  140,  140,  140,  158,   86,   87,   88,   89,
392  /*   960 */   140,  140,   92,   93,  140,  140,    9,  140,  158,  140,
393  /*   970 */   158,  158,  140,  140,  140,  140,  140,  140,  158,  158,
394  /*   980 */     9,  140,  158,  158,  140,  158,  140,  158,  122,  140,
395  /*   990 */   158,  158,  158,  158,  158,  125,  126,  140,  146,  158,
396  /*  1000 */   200,  103,  158,   20,  158,   22,   20,  158,   22,  140,
397  /*  1010 */   199,  113,   99,  199,   20,  158,   22,   20,   20,   22,
398  /*  1020 */    22,  111,  146,  171,   20,  140,   22,  158,  113,  114,
399  /*  1030 */    89,   35,  195,   92,  124,   89,  150,  140,   99,  140,
400  /*  1040 */   163,  213,   22,  140,  214,  113,  186,  171,   40,    9,
401  /*  1050 */    11,  113,  127,  215,    9,  216,  140,    9,  115,   38,
402  /*  1060 */   154,   20,  140,  140,  186,   99,   99,  186,  163,   20,
403  /*  1070 */     9,  171,   20,  116,  140,  202,  140,  163,  118,  139,
404  /*  1080 */    49,  157,  203,   14,  140,   22,  130,  116,  151,  154,
405  /*  1090 */   145,  140,   99,  140,   99,  187,   19,   33,  186,   44,
406  /*  1100 */     9,  142,  218,  116,  139,    9,  164,  188,  130,  140,
407  /*  1110 */    11,    9,   20,   19,  138,  152,  169,    9,  170,  193,
408  /*  1120 */   152,   14,  123,  123,    9,    9,    9,    9,  138,  180,
409  /*  1130 */   121,   60,  140,   14,  179,  103,    9,  176,   63,  169,
410  /*  1140 */   138,  140,   21,  117,    9,  140,  157,    9,   63,   87,
411  /*  1150 */   178,   22,    9,  123,  140,  113,   19,   48,  140,  197,
412  /*  1160 */   154,    9,  152,    9,  113,   19,  185,  140,  140,  219,
413  /*  1170 */   154,   20,    9,   20,  186,    9,  140,  152,  187,  114,
414  /*  1180 */     9,   20,    9,  176,  140,  166,   19,  140,    9,  166,
415  /*  1190 */   140,  188,    9,   98,    9,    9,  140,  186,  140,  186,
416  /*  1200 */   154,  114,    9,   48,  120,  193,  140,   19,  186,  176,
417  /*  1210 */   157,  113,  169,  140,  103,  186,    9,  139,   31,    9,
418  /*  1220 */   140,  139,    9,  123,  170,   19,  140,  139,  138,  140,
419  /*  1230 */    19,  197,    9,  176,  164,  218,  139,  177,  118,   22,
420  /*  1240 */    12,  119,    9,  169,  176,  186,  140,  210,    9,  113,
421  /*  1250 */   140,   83,  122,  114,  113,   19,   48,   93,  186,   89,
422  /*  1260 */    19,  160,  139,   20,  140,  140,   97,  200,  175,    9,
423  /*  1270 */   157,  159,  140,  140,    9,  220,  104,  151,  220,  139,
424  /*  1280 */   220,  220,  140,  220,  220,  111,  111,  111,
425 };
426 #define YY_SHIFT_USE_DFLT (-68)
427 static short yy_shift_ofst[] = {
428  /*     0 */   639,  599,  -68,  768, 1040,  -68, 1207, 1228,  540, 1213,
429  /*    10 */  1187,  772,  -68,  -68,  -68,  -68,  -68,  -68,   93,  -68,
430  /*    20 */   -68,  -68,  -68,  389, 1127,  389, 1118,  389, 1102,  170,
431  /*    30 */  1091,   93,  312, 1052, 1048,  147,  -68,  712,  -68,  205,
432  /*    40 */   -68,   93,   68,  -68,  298,  -68,  393,  298,  -68, 1055,
433  /*    50 */   -68,  204,  -68,  -68, 1109,  284,  298,  -68,  -68,  -68,
434  /*    60 */   298,  -68, 1167,  870,  140,  106, 1051, 1042,  766,  -68,
435  /*    70 */   277,  117,  -68,  415,  -68,   14, 1130, 1122, 1084, 1026,
436  /*    80 */  1009,  -68,  313,  -68,  946,  -68, 1170,  -68,  781,  313,
437  /*    90 */   -68,  313,  -68,  960,  870,  685,  870, 1095,  284,  -68,
438  /*   100 */   137,  -68,  -68,  554,  870,  -68, 1141,   93, 1136,   93,
439  /*   110 */   -68,  -68,  -68,  -68,  695,  870,  648,  870,  -48,  870,
440  /*   120 */   -48,  870,  -48,  870,  -48,  870,  -67,  870,  -67,  870,
441  /*   130 */    -5,  870,   -5,  870,   -5,  870,   -5,  870,  -67,  826,
442  /*   140 */   870,  -67,  -68,  -68,  870,  286,  870,  286,  870, 1168,
443  /*   150 */   870, 1168,  870, 1168,  870,  -68,  -68,  598,  -68, 1164,
444  /*   160 */   -68,  -68,  870,  507,  870,  -67,  288,  766,  153,  496,
445  /*   170 */  1174, 1175, 1176,  -68,  554,  870,  695,  870,  -68,  870,
446  /*   180 */   -68,  870,  -68,  819,  142,  925,  365, 1069,  -68,  870,
447  /*   190 */    73,  870,  554, 1241,  291,  502,  -68, 1020,   93, 1049,
448  /*   200 */   -68, 1063,   93, 1092,  -68, 1129,   93, 1161,  -68,  870,
449  /*   210 */   280,  870,  438,  870,  554,  630,  -68,  870,  -68,  -68,
450  /*   220 */   932,   93,  -68,  -68,  -68,  870,  601,  870,  695,  217,
451  /*   230 */   766,  428,  -68,  675,  -68,  932,  -68, 1095,  284,  -68,
452  /*   240 */   870,  554, 1120,  870, 1217,  870,  554,  -68,  -68,  769,
453  /*   250 */   -68,  -68,  -68,  285,  -68,  570,  -68,  943,  -68,  306,
454  /*   260 */   932,  717,  -68,  -68,   93,  -68,  -68,  995,  987,  -68,
455  /*   270 */  1094,   93,  680,  -68,   93,  -68,  284,  -68,  -68,  870,
456  /*   280 */   554,  117,  209,  525, 1153,  717,  995,  987,  -68,  472,
457  /*   290 */   -21,  -68,  -68, 1098,  354,  -68,  -68,  -68,  -68,  344,
458  /*   300 */   -68,  681,  -68, 1243,  -68,  210,  298,  -68,   93,   66,
459  /*   310 */   -68,  607,  -68,   93,  -68,  440,  726,  -68,  653,  -68,
460  /*   320 */   -68,  -68,  -68,  726,  -68,  726,  -68,   93,  727,  -68,
461  /*   330 */   -68,  137,  -68, 1055,  -68,  -68,  235,  -68,  -68,  -68,
462  /*   340 */   659,  -68,  -68,  705,  -68,  -68,  -68,  -68,  714,  313,
463  /*   350 */   907,  -68,  313, 1151,  -68,  -68,  -68,  -68,  154,  -26,
464  /*   360 */   -68,   93,  -68, 1155, 1188,   93,  918,  298,  -68, 1211,
465  /*   370 */    93,  983,  298,  -68,  870,  391,  -68, 1208, 1236,   93,
466  /*   380 */   986, 1169,   93,   66,  -68,  492, 1172,  -68,  -68,  -68,
467  /*   390 */   -68,  -68,  117,  546,  508,   67,   93,  -68,   93,  864,
468  /*   400 */   117,  421,   93,   -7,  376,  939,   93,  932, 1008,  782,
469  /*   410 */  1039,  870,   26, 1021,  698,  -68,  -68,  966,  967,  831,
470  /*   420 */    93,  913,   93,  -68,  -68,  -68,  -68, 1031,  -68,  -68,
471  /*   430 */   956,   93,  993,   93,  538, 1077,   93,  994,  540, 1096,
472  /*   440 */   978, 1099,   10,    8,  585,  772,  -68,  999, 1000, 1107,
473  /*   450 */  1115, 1116,   10, 1119, 1071,   93, 1032,   93,  424,   93,
474  /*   460 */  1075,  870,  554, 1138, 1085,  870,  554, 1030,   93, 1137,
475  /*   470 */    93,  997,  -68,  575,  329, 1146,  870,  998,  870,  554,
476  /*   480 */  1163,  554, 1065,   93,  866, 1171,  426,   93, 1173,   93,
477  /*   490 */  1179,   93,  938, 1185,   93,  938, 1186,  534, 1087,   93,
478  /*   500 */   932,  866, 1193, 1071,   93,  898, 1111,   93,  424, 1210,
479  /*   510 */  1100,   93,  932, 1137,  910,  583, 1206,  870, 1004, 1223,
480  /*   520 */  1071,   93,  915, 1139,   93,  957,  996, 1062, 1143,  308,
481  /*   530 */  1265,  712,  679,  167, 1260, 1108, 1135, 1166,  941, 1045,
482  /*   540 */  1117, 1152,  941, 1233,  -68,   93, 1041, 1061, 1064,  712,
483  /*   550 */  1121,   93,  971, 1154,  712, 1183,  -68, 1064,   93, 1239,
484  /*   560 */   -68,  -68,  -68,
485 };
486 #define YY_REDUCE_USE_DFLT (-140)
487 static short yy_reduce_ofst[] = {
488  /*     0 */   -52, -112, -140,  -14, -140, -140, -140, 1090, 1088, -140,
489  /*    10 */  -140, 1054, -140, -140, -140, -140, -140, -140, 1027, -140,
490  /*    20 */  -140, -140, -140, 1002, -140,  990, -140,  976, -140,  959,
491  /*    30 */  -140,  385,  945, -140, -140,   31, -140,  112,  886,  227,
492  /*    40 */  -140,  519,  445, -140,  200, -140, -140, 1123, -140, 1070,
493  /*    50 */  -140, -140, -140, -140, -140,  924,  940, -140, -140, -140,
494  /*    60 */  1078, -140, -140,  231, -140,  241, -140, -140,   29, -140,
495  /*    70 */   198,  900, -140,  566,  315, 1093, 1068, 1060,  972,  955,
496  /*    80 */   949, -140,  935, -140, -140, -140, -140, -140, -140,  906,
497  /*    90 */  -140, 1046, -140, -140,  289, -140,  454,  926, 1113, -140,
498  /*   100 */  1126, -140, -140, -129,  677, -140, -140, 1080, -140, 1106,
499  /*   110 */  -140, -140, -140, -140, -129,  683, -129,  690, -129,  706,
500  /*   120 */  -129,  746, -129,  756, -129,  759, -129,  762, -129,  763,
501  /*   130 */  -129,  770, -129,  773, -129,  775, -129,  776, -129, 1067,
502  /*   140 */   778, -129, -140, -140,  783, -129,  784, -129,  785, -129,
503  /*   150 */   797, -129,  810, -129,  812, -129, -140, -140, -140, -140,
504  /*   160 */  -140, -140,  692, -129,  813, -129, 1133,  662,  198, -140,
505  /*   170 */  -140, -140, -140, -140, -129,  820, -129,  821, -129,  824,
506  /*   180 */  -129,  825, -129,  404, -129,  873,  879, -140, -140,  827,
507  /*   190 */  -129,  829, -129, -140, -140, -140, -140, -140,  922, -140,
508  /*   200 */  -140, -140,  969, -140, -140, -140, 1028, -140, -140,  832,
509  /*   210 */  -129,   99, -129,  833, -129, -140, -140, -139, -140, -140,
510  /*   220 */   878,  934, -140, -140, -140,  834, -129,  835, -129,  992,
511  /*   230 */   669,  198, -140, -140, -140,  988, -140, 1012, 1053, -140,
512  /*   240 */   836, -129, -140,  -27, -140,  841, -129, -140,  427,  981,
513  /*   250 */  -140, -140, -140,  885, -140,  899, -140, -140, -140,  923,
514  /*   260 */   881,  604, -140, -140,  944, -140, -140,  908,  919, -140,
515  /*   270 */  -140,  684, -140, -140,  225, -140,  989, -140, -140,  844,
516  /*   280 */  -129,  304,  198,  981, -140,  654,  991, 1003, -140,  846,
517  /*   290 */   552, -140, -140, -140, 1080, -140, -140, -140, -140, -129,
518  /*   300 */  -140, -140, -140, -140, -140, -129, 1140, -140, 1142,  -39,
519  /*   310 */   163,  320, -140,  667, -140, -140,  877, -140, -140, -140,
520  /*   320 */  -140, -140, -140,  905, -140,  914, -140,  676, -140, -140,
521  /*   330 */  -140,  937, -140,  942, -140, -140, -140, -140, -140, -140,
522  /*   340 */  -140, -140, -140, -140, -140, -140, -140, -140, 1010, 1006,
523  /*   350 */  -140, -140, 1016, -140, -140, -140, -140, -140, 1019, 1023,
524  /*   360 */  -140, 1058, -140, -140, -140,  682, -140, 1082, -140, -140,
525  /*   370 */   694, -140, 1097, -140,  707,  800, -140, -140, -140,  720,
526  /*   380 */  -140, -140, 1125, 1112, 1101,   65, -140, -140, -140, -140,
527  /*   390 */  -140, -140,  642,  198,  169, -140,  556, -140,  699, -140,
528  /*   400 */   730,  198,  897,  828,  830, -140,  903,  860,  838,  839,
529  /*   410 */  -140,  849, -129, -140, -140, -140, -140, -140, -140, -140,
530  /*   420 */   814, -140,  936, -140, -140, -140, -140, -140, -140, -140,
531  /*   430 */  -140,  951, -140,  953,  912, -140,  396, -140,  965, -140,
532  /*   440 */  -140, -140,  232,  198,  947,  948, -140, -140, -140, -140,
533  /*   450 */  -140, -140,  666, -140,  970, 1001, -140,  603,  961, 1005,
534  /*   460 */  -140,  652, -129, -140, -140,  857, -129, -140, 1014,  962,
535  /*   470 */   811, -140, -140,  852,  198, -140,  547, -140,  869, -129,
536  /*   480 */  -140, -129, -140, 1036, 1007, -140, -140, 1044, -140, 1047,
537  /*   490 */  -140, 1050, 1011, -140, 1056, 1013, -140,  198, -140, 1066,
538  /*   500 */  1022, 1033, -140, 1043, 1073, 1029, -140,  837, 1057, -140,
539  /*   510 */  -140, 1086, 1059, 1034,  876,  198, -140,  592, -140, -140,
540  /*   520 */  1074, 1110, 1072, -140, 1132, -140, -140, -140, -140, 1124,
541  /*   530 */  -140,  968, -140,  128, -140, -140, -140, -140,  230, -140,
542  /*   540 */  -140, -140, 1037, -140, -140,  916, -140, -140,  884,  963,
543  /*   550 */  -140, 1018,  950, -140, 1025, -140, -140, 1017, 1089, -140,
544  /*   560 */  -140, -140, -140,
545 };
546 static YYACTIONTYPE yy_default[] = {
547  /*     0 */   570,  570,  564,  856,  856,  566,  856,  572,  856,  856,
548  /*    10 */   856,  856,  652,  655,  656,  657,  658,  659,  573,  574,
549  /*    20 */   591,  592,  593,  856,  856,  856,  856,  856,  856,  856,
550  /*    30 */   856,  856,  856,  856,  856,  856,  584,  594,  604,  586,
551  /*    40 */   603,  856,  856,  605,  651,  616,  856,  651,  617,  636,
552  /*    50 */   634,  856,  637,  638,  856,  708,  651,  618,  706,  707,
553  /*    60 */   651,  619,  856,  856,  737,  797,  743,  738,  856,  664,
554  /*    70 */   856,  856,  665,  673,  675,  682,  720,  711,  713,  701,
555  /*    80 */   715,  670,  856,  600,  856,  601,  856,  602,  716,  856,
556  /*    90 */   717,  856,  718,  856,  856,  702,  856,  709,  708,  703,
557  /*   100 */   856,  588,  710,  705,  856,  736,  856,  856,  739,  856,
558  /*   110 */   740,  741,  742,  744,  747,  856,  748,  856,  749,  856,
559  /*   120 */   750,  856,  751,  856,  752,  856,  753,  856,  754,  856,
560  /*   130 */   755,  856,  756,  856,  757,  856,  758,  856,  759,  856,
561  /*   140 */   856,  760,  761,  762,  856,  763,  856,  764,  856,  765,
562  /*   150 */   856,  766,  856,  767,  856,  768,  769,  856,  770,  856,
563  /*   160 */   773,  771,  856,  856,  856,  779,  856,  797,  856,  856,
564  /*   170 */   856,  856,  856,  782,  796,  856,  774,  856,  775,  856,
565  /*   180 */   776,  856,  777,  856,  856,  856,  856,  856,  787,  856,
566  /*   190 */   856,  856,  788,  856,  856,  856,  845,  856,  856,  856,
567  /*   200 */   846,  856,  856,  856,  847,  856,  856,  856,  848,  856,
568  /*   210 */   856,  856,  856,  856,  789,  856,  781,  797,  794,  795,
569  /*   220 */   690,  856,  691,  785,  772,  856,  856,  856,  780,  856,
570  /*   230 */   797,  856,  784,  856,  783,  690,  786,  709,  708,  704,
571  /*   240 */   856,  714,  856,  797,  712,  856,  721,  674,  685,  683,
572  /*   250 */   684,  692,  693,  856,  694,  856,  695,  856,  696,  856,
573  /*   260 */   690,  681,  589,  590,  856,  679,  680,  698,  700,  686,
574  /*   270 */   856,  856,  856,  699,  856,  803,  708,  805,  804,  856,
575  /*   280 */   697,  685,  856,  856,  856,  681,  698,  700,  687,  856,
576  /*   290 */   681,  676,  677,  856,  856,  678,  671,  672,  778,  856,
577  /*   300 */   735,  856,  745,  856,  746,  856,  651,  620,  856,  801,
578  /*   310 */   624,  621,  625,  856,  626,  856,  856,  627,  856,  630,
579  /*   320 */   631,  632,  633,  856,  628,  856,  629,  856,  856,  802,
580  /*   330 */   622,  856,  623,  636,  635,  606,  856,  607,  608,  609,
581  /*   340 */   856,  610,  613,  856,  611,  614,  612,  615,  595,  856,
582  /*   350 */   856,  596,  856,  856,  597,  599,  598,  587,  856,  856,
583  /*   360 */   641,  856,  644,  856,  856,  856,  856,  651,  645,  856,
584  /*   370 */   856,  856,  651,  646,  856,  651,  647,  856,  856,  856,
585  /*   380 */   856,  856,  856,  801,  624,  649,  856,  648,  650,  642,
586  /*   390 */   643,  585,  856,  856,  581,  856,  856,  579,  856,  856,
587  /*   400 */   856,  856,  856,  828,  856,  856,  856,  690,  833,  856,
588  /*   410 */   856,  856,  856,  856,  856,  834,  835,  856,  856,  856,
589  /*   420 */   856,  856,  856,  733,  734,  825,  826,  856,  827,  580,
590  /*   430 */   856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
591  /*   440 */   856,  856,  856,  856,  856,  856,  654,  856,  856,  856,
592  /*   450 */   856,  856,  856,  856,  653,  856,  856,  856,  856,  856,
593  /*   460 */   856,  856,  723,  856,  856,  856,  724,  856,  856,  731,
594  /*   470 */   856,  856,  732,  856,  856,  856,  856,  856,  856,  729,
595  /*   480 */   856,  730,  856,  856,  856,  856,  856,  856,  856,  856,
596  /*   490 */   856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
597  /*   500 */   690,  856,  856,  653,  856,  856,  856,  856,  856,  856,
598  /*   510 */   856,  856,  690,  731,  856,  856,  856,  856,  856,  856,
599  /*   520 */   653,  856,  856,  856,  856,  856,  856,  856,  856,  856,
600  /*   530 */   856,  856,  856,  822,  856,  856,  856,  856,  856,  856,
601  /*   540 */   856,  856,  856,  856,  821,  856,  856,  856,  854,  856,
602  /*   550 */   856,  856,  856,  856,  856,  856,  853,  854,  856,  856,
603  /*   560 */   567,  569,  565,
604 };
605 #define YY_SZ_ACTTAB (sizeof(yy_action)/sizeof(yy_action[0]))
606 
607 /* The next table maps tokens into fallback tokens.  If a construct
608 ** like the following:
609 **
610 **      %fallback ID X Y Z.
611 **
612 ** appears in the grammer, then ID becomes a fallback token for X, Y,
613 ** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
614 ** but it does not parse, the type of the token is changed to ID and
615 ** the parse is retried before an error is thrown.
616 */
617 #ifdef YYFALLBACK
618 static const YYCODETYPE yyFallback[] = {
619     0,  /*          $ => nothing */
620     0,  /* END_OF_FILE => nothing */
621     0,  /*    ILLEGAL => nothing */
622     0,  /*      SPACE => nothing */
623     0,  /* UNCLOSED_STRING => nothing */
624     0,  /*    COMMENT => nothing */
625     0,  /*   FUNCTION => nothing */
626     0,  /*     COLUMN => nothing */
627     0,  /* AGG_FUNCTION => nothing */
628     0,  /*       SEMI => nothing */
629    23,  /*    EXPLAIN => ID */
630    23,  /*      BEGIN => ID */
631     0,  /* TRANSACTION => nothing */
632     0,  /*     COMMIT => nothing */
633    23,  /*        END => ID */
634     0,  /*   ROLLBACK => nothing */
635     0,  /*     CREATE => nothing */
636     0,  /*      TABLE => nothing */
637    23,  /*       TEMP => ID */
638     0,  /*         LP => nothing */
639     0,  /*         RP => nothing */
640     0,  /*         AS => nothing */
641     0,  /*      COMMA => nothing */
642     0,  /*         ID => nothing */
643    23,  /*      ABORT => ID */
644    23,  /*      AFTER => ID */
645    23,  /*        ASC => ID */
646    23,  /*     ATTACH => ID */
647    23,  /*     BEFORE => ID */
648    23,  /*    CASCADE => ID */
649    23,  /*    CLUSTER => ID */
650    23,  /*   CONFLICT => ID */
651    23,  /*       COPY => ID */
652    23,  /*   DATABASE => ID */
653    23,  /*   DEFERRED => ID */
654    23,  /* DELIMITERS => ID */
655    23,  /*       DESC => ID */
656    23,  /*     DETACH => ID */
657    23,  /*       EACH => ID */
658    23,  /*       FAIL => ID */
659    23,  /*        FOR => ID */
660    23,  /*       GLOB => ID */
661    23,  /*     IGNORE => ID */
662    23,  /*  IMMEDIATE => ID */
663    23,  /*  INITIALLY => ID */
664    23,  /*    INSTEAD => ID */
665    23,  /*       LIKE => ID */
666    23,  /*      MATCH => ID */
667    23,  /*        KEY => ID */
668    23,  /*         OF => ID */
669    23,  /*     OFFSET => ID */
670    23,  /*     PRAGMA => ID */
671    23,  /*      RAISE => ID */
672    23,  /*    REPLACE => ID */
673    23,  /*   RESTRICT => ID */
674    23,  /*        ROW => ID */
675    23,  /*  STATEMENT => ID */
676    23,  /*    TRIGGER => ID */
677    23,  /*     VACUUM => ID */
678    23,  /*       VIEW => ID */
679     0,  /*         OR => nothing */
680     0,  /*        AND => nothing */
681     0,  /*        NOT => nothing */
682     0,  /*         EQ => nothing */
683     0,  /*         NE => nothing */
684     0,  /*     ISNULL => nothing */
685     0,  /*    NOTNULL => nothing */
686     0,  /*         IS => nothing */
687     0,  /*    BETWEEN => nothing */
688     0,  /*         IN => nothing */
689     0,  /*         GT => nothing */
690     0,  /*         GE => nothing */
691     0,  /*         LT => nothing */
692     0,  /*         LE => nothing */
693     0,  /*     BITAND => nothing */
694     0,  /*      BITOR => nothing */
695     0,  /*     LSHIFT => nothing */
696     0,  /*     RSHIFT => nothing */
697     0,  /*       PLUS => nothing */
698     0,  /*      MINUS => nothing */
699     0,  /*       STAR => nothing */
700     0,  /*      SLASH => nothing */
701     0,  /*        REM => nothing */
702     0,  /*     CONCAT => nothing */
703     0,  /*     UMINUS => nothing */
704     0,  /*      UPLUS => nothing */
705     0,  /*     BITNOT => nothing */
706     0,  /*     STRING => nothing */
707     0,  /*    JOIN_KW => nothing */
708     0,  /*    INTEGER => nothing */
709     0,  /* CONSTRAINT => nothing */
710     0,  /*    DEFAULT => nothing */
711     0,  /*      FLOAT => nothing */
712     0,  /*       NULL => nothing */
713     0,  /*    PRIMARY => nothing */
714     0,  /*     UNIQUE => nothing */
715     0,  /*      CHECK => nothing */
716     0,  /* REFERENCES => nothing */
717     0,  /*    COLLATE => nothing */
718     0,  /*         ON => nothing */
719     0,  /*     DELETE => nothing */
720     0,  /*     UPDATE => nothing */
721     0,  /*     INSERT => nothing */
722     0,  /*        SET => nothing */
723     0,  /* DEFERRABLE => nothing */
724     0,  /*    FOREIGN => nothing */
725     0,  /*       DROP => nothing */
726     0,  /*      UNION => nothing */
727     0,  /*        ALL => nothing */
728     0,  /*  INTERSECT => nothing */
729     0,  /*     EXCEPT => nothing */
730     0,  /*     SELECT => nothing */
731     0,  /*   DISTINCT => nothing */
732     0,  /*        DOT => nothing */
733     0,  /*       FROM => nothing */
734     0,  /*       JOIN => nothing */
735     0,  /*      USING => nothing */
736     0,  /*      ORDER => nothing */
737     0,  /*         BY => nothing */
738     0,  /*      GROUP => nothing */
739     0,  /*     HAVING => nothing */
740     0,  /*      LIMIT => nothing */
741     0,  /*      WHERE => nothing */
742     0,  /*       INTO => nothing */
743     0,  /*     VALUES => nothing */
744     0,  /*   VARIABLE => nothing */
745     0,  /*       CASE => nothing */
746     0,  /*       WHEN => nothing */
747     0,  /*       THEN => nothing */
748     0,  /*       ELSE => nothing */
749     0,  /*      INDEX => nothing */
750 };
751 #endif /* YYFALLBACK */
752 
753 /* The following structure represents a single element of the
754 ** parser's stack.  Information stored includes:
755 **
756 **   +  The state number for the parser at this level of the stack.
757 **
758 **   +  The value of the token stored at this level of the stack.
759 **      (In other words, the "major" token.)
760 **
761 **   +  The semantic value stored at this level of the stack.  This is
762 **      the information used by the action routines in the grammar.
763 **      It is sometimes called the "minor" token.
764 */
765 struct yyStackEntry {
766   int stateno;       /* The state-number */
767   int major;         /* The major token value.  This is the code
768                      ** number for the token at this stack level */
769   YYMINORTYPE minor; /* The user-supplied minor token value.  This
770                      ** is the value of the token  */
771 };
772 typedef struct yyStackEntry yyStackEntry;
773 
774 /* The state of the parser is completely contained in an instance of
775 ** the following structure */
776 struct yyParser {
777   int yyidx;                    /* Index of top element in stack */
778   int yyerrcnt;                 /* Shifts left before out of the error */
779   sqliteParserARG_SDECL                /* A place to hold %extra_argument */
780   yyStackEntry yystack[YYSTACKDEPTH];  /* The parser's stack */
781 };
782 typedef struct yyParser yyParser;
783 
784 #ifndef NDEBUG
785 #include <stdio.h>
786 static FILE *yyTraceFILE = 0;
787 static char *yyTracePrompt = 0;
788 #endif /* NDEBUG */
789 
790 #ifndef NDEBUG
791 /*
792 ** Turn parser tracing on by giving a stream to which to write the trace
793 ** and a prompt to preface each trace message.  Tracing is turned off
794 ** by making either argument NULL
795 **
796 ** Inputs:
797 ** <ul>
798 ** <li> A FILE* to which trace output should be written.
799 **      If NULL, then tracing is turned off.
800 ** <li> A prefix string written at the beginning of every
801 **      line of trace output.  If NULL, then tracing is
802 **      turned off.
803 ** </ul>
804 **
805 ** Outputs:
806 ** None.
807 */
sqliteParserTrace(FILE * TraceFILE,char * zTracePrompt)808 void sqliteParserTrace(FILE *TraceFILE, char *zTracePrompt){
809   yyTraceFILE = TraceFILE;
810   yyTracePrompt = zTracePrompt;
811   if( yyTraceFILE==0 ) yyTracePrompt = 0;
812   else if( yyTracePrompt==0 ) yyTraceFILE = 0;
813 }
814 #endif /* NDEBUG */
815 
816 #ifndef NDEBUG
817 /* For tracing shifts, the names of all terminals and nonterminals
818 ** are required.  The following table supplies these names */
819 static const char *yyTokenName[] = {
820   "$",             "END_OF_FILE",   "ILLEGAL",       "SPACE",
821   "UNCLOSED_STRING",  "COMMENT",       "FUNCTION",      "COLUMN",
822   "AGG_FUNCTION",  "SEMI",          "EXPLAIN",       "BEGIN",
823   "TRANSACTION",   "COMMIT",        "END",           "ROLLBACK",
824   "CREATE",        "TABLE",         "TEMP",          "LP",
825   "RP",            "AS",            "COMMA",         "ID",
826   "ABORT",         "AFTER",         "ASC",           "ATTACH",
827   "BEFORE",        "CASCADE",       "CLUSTER",       "CONFLICT",
828   "COPY",          "DATABASE",      "DEFERRED",      "DELIMITERS",
829   "DESC",          "DETACH",        "EACH",          "FAIL",
830   "FOR",           "GLOB",          "IGNORE",        "IMMEDIATE",
831   "INITIALLY",     "INSTEAD",       "LIKE",          "MATCH",
832   "KEY",           "OF",            "OFFSET",        "PRAGMA",
833   "RAISE",         "REPLACE",       "RESTRICT",      "ROW",
834   "STATEMENT",     "TRIGGER",       "VACUUM",        "VIEW",
835   "OR",            "AND",           "NOT",           "EQ",
836   "NE",            "ISNULL",        "NOTNULL",       "IS",
837   "BETWEEN",       "IN",            "GT",            "GE",
838   "LT",            "LE",            "BITAND",        "BITOR",
839   "LSHIFT",        "RSHIFT",        "PLUS",          "MINUS",
840   "STAR",          "SLASH",         "REM",           "CONCAT",
841   "UMINUS",        "UPLUS",         "BITNOT",        "STRING",
842   "JOIN_KW",       "INTEGER",       "CONSTRAINT",    "DEFAULT",
843   "FLOAT",         "NULL",          "PRIMARY",       "UNIQUE",
844   "CHECK",         "REFERENCES",    "COLLATE",       "ON",
845   "DELETE",        "UPDATE",        "INSERT",        "SET",
846   "DEFERRABLE",    "FOREIGN",       "DROP",          "UNION",
847   "ALL",           "INTERSECT",     "EXCEPT",        "SELECT",
848   "DISTINCT",      "DOT",           "FROM",          "JOIN",
849   "USING",         "ORDER",         "BY",            "GROUP",
850   "HAVING",        "LIMIT",         "WHERE",         "INTO",
851   "VALUES",        "VARIABLE",      "CASE",          "WHEN",
852   "THEN",          "ELSE",          "INDEX",         "error",
853   "input",         "cmdlist",       "ecmd",          "explain",
854   "cmdx",          "cmd",           "trans_opt",     "onconf",
855   "nm",            "create_table",  "create_table_args",  "temp",
856   "columnlist",    "conslist_opt",  "select",        "column",
857   "columnid",      "type",          "carglist",      "id",
858   "ids",           "typename",      "signed",        "carg",
859   "ccons",         "sortorder",     "expr",          "idxlist_opt",
860   "refargs",       "defer_subclause",  "refarg",        "refact",
861   "init_deferred_pred_opt",  "conslist",      "tcons",         "idxlist",
862   "defer_subclause_opt",  "orconf",        "resolvetype",   "oneselect",
863   "multiselect_op",  "distinct",      "selcollist",    "from",
864   "where_opt",     "groupby_opt",   "having_opt",    "orderby_opt",
865   "limit_opt",     "sclp",          "as",            "seltablist",
866   "stl_prefix",    "joinop",        "dbnm",          "on_opt",
867   "using_opt",     "seltablist_paren",  "joinop2",       "sortlist",
868   "sortitem",      "collate",       "exprlist",      "setlist",
869   "insert_cmd",    "inscollist_opt",  "itemlist",      "inscollist",
870   "likeop",        "case_operand",  "case_exprlist",  "case_else",
871   "expritem",      "uniqueflag",    "idxitem",       "plus_num",
872   "minus_num",     "plus_opt",      "number",        "trigger_decl",
873   "trigger_cmd_list",  "trigger_time",  "trigger_event",  "foreach_clause",
874   "when_clause",   "trigger_cmd",   "database_kw_opt",  "key_opt",
875 };
876 #endif /* NDEBUG */
877 
878 #ifndef NDEBUG
879 /* For tracing reduce actions, the names of all rules are required.
880 */
881 static const char *yyRuleName[] = {
882  /*   0 */ "input ::= cmdlist",
883  /*   1 */ "cmdlist ::= cmdlist ecmd",
884  /*   2 */ "cmdlist ::= ecmd",
885  /*   3 */ "ecmd ::= explain cmdx SEMI",
886  /*   4 */ "ecmd ::= SEMI",
887  /*   5 */ "cmdx ::= cmd",
888  /*   6 */ "explain ::= EXPLAIN",
889  /*   7 */ "explain ::=",
890  /*   8 */ "cmd ::= BEGIN trans_opt onconf",
891  /*   9 */ "trans_opt ::=",
892  /*  10 */ "trans_opt ::= TRANSACTION",
893  /*  11 */ "trans_opt ::= TRANSACTION nm",
894  /*  12 */ "cmd ::= COMMIT trans_opt",
895  /*  13 */ "cmd ::= END trans_opt",
896  /*  14 */ "cmd ::= ROLLBACK trans_opt",
897  /*  15 */ "cmd ::= create_table create_table_args",
898  /*  16 */ "create_table ::= CREATE temp TABLE nm",
899  /*  17 */ "temp ::= TEMP",
900  /*  18 */ "temp ::=",
901  /*  19 */ "create_table_args ::= LP columnlist conslist_opt RP",
902  /*  20 */ "create_table_args ::= AS select",
903  /*  21 */ "columnlist ::= columnlist COMMA column",
904  /*  22 */ "columnlist ::= column",
905  /*  23 */ "column ::= columnid type carglist",
906  /*  24 */ "columnid ::= nm",
907  /*  25 */ "id ::= ID",
908  /*  26 */ "ids ::= ID",
909  /*  27 */ "ids ::= STRING",
910  /*  28 */ "nm ::= ID",
911  /*  29 */ "nm ::= STRING",
912  /*  30 */ "nm ::= JOIN_KW",
913  /*  31 */ "type ::=",
914  /*  32 */ "type ::= typename",
915  /*  33 */ "type ::= typename LP signed RP",
916  /*  34 */ "type ::= typename LP signed COMMA signed RP",
917  /*  35 */ "typename ::= ids",
918  /*  36 */ "typename ::= typename ids",
919  /*  37 */ "signed ::= INTEGER",
920  /*  38 */ "signed ::= PLUS INTEGER",
921  /*  39 */ "signed ::= MINUS INTEGER",
922  /*  40 */ "carglist ::= carglist carg",
923  /*  41 */ "carglist ::=",
924  /*  42 */ "carg ::= CONSTRAINT nm ccons",
925  /*  43 */ "carg ::= ccons",
926  /*  44 */ "carg ::= DEFAULT STRING",
927  /*  45 */ "carg ::= DEFAULT ID",
928  /*  46 */ "carg ::= DEFAULT INTEGER",
929  /*  47 */ "carg ::= DEFAULT PLUS INTEGER",
930  /*  48 */ "carg ::= DEFAULT MINUS INTEGER",
931  /*  49 */ "carg ::= DEFAULT FLOAT",
932  /*  50 */ "carg ::= DEFAULT PLUS FLOAT",
933  /*  51 */ "carg ::= DEFAULT MINUS FLOAT",
934  /*  52 */ "carg ::= DEFAULT NULL",
935  /*  53 */ "ccons ::= NULL onconf",
936  /*  54 */ "ccons ::= NOT NULL onconf",
937  /*  55 */ "ccons ::= PRIMARY KEY sortorder onconf",
938  /*  56 */ "ccons ::= UNIQUE onconf",
939  /*  57 */ "ccons ::= CHECK LP expr RP onconf",
940  /*  58 */ "ccons ::= REFERENCES nm idxlist_opt refargs",
941  /*  59 */ "ccons ::= defer_subclause",
942  /*  60 */ "ccons ::= COLLATE id",
943  /*  61 */ "refargs ::=",
944  /*  62 */ "refargs ::= refargs refarg",
945  /*  63 */ "refarg ::= MATCH nm",
946  /*  64 */ "refarg ::= ON DELETE refact",
947  /*  65 */ "refarg ::= ON UPDATE refact",
948  /*  66 */ "refarg ::= ON INSERT refact",
949  /*  67 */ "refact ::= SET NULL",
950  /*  68 */ "refact ::= SET DEFAULT",
951  /*  69 */ "refact ::= CASCADE",
952  /*  70 */ "refact ::= RESTRICT",
953  /*  71 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
954  /*  72 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
955  /*  73 */ "init_deferred_pred_opt ::=",
956  /*  74 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
957  /*  75 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
958  /*  76 */ "conslist_opt ::=",
959  /*  77 */ "conslist_opt ::= COMMA conslist",
960  /*  78 */ "conslist ::= conslist COMMA tcons",
961  /*  79 */ "conslist ::= conslist tcons",
962  /*  80 */ "conslist ::= tcons",
963  /*  81 */ "tcons ::= CONSTRAINT nm",
964  /*  82 */ "tcons ::= PRIMARY KEY LP idxlist RP onconf",
965  /*  83 */ "tcons ::= UNIQUE LP idxlist RP onconf",
966  /*  84 */ "tcons ::= CHECK expr onconf",
967  /*  85 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt",
968  /*  86 */ "defer_subclause_opt ::=",
969  /*  87 */ "defer_subclause_opt ::= defer_subclause",
970  /*  88 */ "onconf ::=",
971  /*  89 */ "onconf ::= ON CONFLICT resolvetype",
972  /*  90 */ "orconf ::=",
973  /*  91 */ "orconf ::= OR resolvetype",
974  /*  92 */ "resolvetype ::= ROLLBACK",
975  /*  93 */ "resolvetype ::= ABORT",
976  /*  94 */ "resolvetype ::= FAIL",
977  /*  95 */ "resolvetype ::= IGNORE",
978  /*  96 */ "resolvetype ::= REPLACE",
979  /*  97 */ "cmd ::= DROP TABLE nm",
980  /*  98 */ "cmd ::= CREATE temp VIEW nm AS select",
981  /*  99 */ "cmd ::= DROP VIEW nm",
982  /* 100 */ "cmd ::= select",
983  /* 101 */ "select ::= oneselect",
984  /* 102 */ "select ::= select multiselect_op oneselect",
985  /* 103 */ "multiselect_op ::= UNION",
986  /* 104 */ "multiselect_op ::= UNION ALL",
987  /* 105 */ "multiselect_op ::= INTERSECT",
988  /* 106 */ "multiselect_op ::= EXCEPT",
989  /* 107 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
990  /* 108 */ "distinct ::= DISTINCT",
991  /* 109 */ "distinct ::= ALL",
992  /* 110 */ "distinct ::=",
993  /* 111 */ "sclp ::= selcollist COMMA",
994  /* 112 */ "sclp ::=",
995  /* 113 */ "selcollist ::= sclp expr as",
996  /* 114 */ "selcollist ::= sclp STAR",
997  /* 115 */ "selcollist ::= sclp nm DOT STAR",
998  /* 116 */ "as ::= AS nm",
999  /* 117 */ "as ::= ids",
1000  /* 118 */ "as ::=",
1001  /* 119 */ "from ::=",
1002  /* 120 */ "from ::= FROM seltablist",
1003  /* 121 */ "stl_prefix ::= seltablist joinop",
1004  /* 122 */ "stl_prefix ::=",
1005  /* 123 */ "seltablist ::= stl_prefix nm dbnm as on_opt using_opt",
1006  /* 124 */ "seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt",
1007  /* 125 */ "seltablist_paren ::= select",
1008  /* 126 */ "seltablist_paren ::= seltablist",
1009  /* 127 */ "dbnm ::=",
1010  /* 128 */ "dbnm ::= DOT nm",
1011  /* 129 */ "joinop ::= COMMA",
1012  /* 130 */ "joinop ::= JOIN",
1013  /* 131 */ "joinop ::= JOIN_KW JOIN",
1014  /* 132 */ "joinop ::= JOIN_KW nm JOIN",
1015  /* 133 */ "joinop ::= JOIN_KW nm nm JOIN",
1016  /* 134 */ "on_opt ::= ON expr",
1017  /* 135 */ "on_opt ::=",
1018  /* 136 */ "using_opt ::= USING LP idxlist RP",
1019  /* 137 */ "using_opt ::=",
1020  /* 138 */ "orderby_opt ::=",
1021  /* 139 */ "orderby_opt ::= ORDER BY sortlist",
1022  /* 140 */ "sortlist ::= sortlist COMMA sortitem collate sortorder",
1023  /* 141 */ "sortlist ::= sortitem collate sortorder",
1024  /* 142 */ "sortitem ::= expr",
1025  /* 143 */ "sortorder ::= ASC",
1026  /* 144 */ "sortorder ::= DESC",
1027  /* 145 */ "sortorder ::=",
1028  /* 146 */ "collate ::=",
1029  /* 147 */ "collate ::= COLLATE id",
1030  /* 148 */ "groupby_opt ::=",
1031  /* 149 */ "groupby_opt ::= GROUP BY exprlist",
1032  /* 150 */ "having_opt ::=",
1033  /* 151 */ "having_opt ::= HAVING expr",
1034  /* 152 */ "limit_opt ::=",
1035  /* 153 */ "limit_opt ::= LIMIT signed",
1036  /* 154 */ "limit_opt ::= LIMIT signed OFFSET signed",
1037  /* 155 */ "limit_opt ::= LIMIT signed COMMA signed",
1038  /* 156 */ "cmd ::= DELETE FROM nm dbnm where_opt",
1039  /* 157 */ "where_opt ::=",
1040  /* 158 */ "where_opt ::= WHERE expr",
1041  /* 159 */ "cmd ::= UPDATE orconf nm dbnm SET setlist where_opt",
1042  /* 160 */ "setlist ::= setlist COMMA nm EQ expr",
1043  /* 161 */ "setlist ::= nm EQ expr",
1044  /* 162 */ "cmd ::= insert_cmd INTO nm dbnm inscollist_opt VALUES LP itemlist RP",
1045  /* 163 */ "cmd ::= insert_cmd INTO nm dbnm inscollist_opt select",
1046  /* 164 */ "insert_cmd ::= INSERT orconf",
1047  /* 165 */ "insert_cmd ::= REPLACE",
1048  /* 166 */ "itemlist ::= itemlist COMMA expr",
1049  /* 167 */ "itemlist ::= expr",
1050  /* 168 */ "inscollist_opt ::=",
1051  /* 169 */ "inscollist_opt ::= LP inscollist RP",
1052  /* 170 */ "inscollist ::= inscollist COMMA nm",
1053  /* 171 */ "inscollist ::= nm",
1054  /* 172 */ "expr ::= LP expr RP",
1055  /* 173 */ "expr ::= NULL",
1056  /* 174 */ "expr ::= ID",
1057  /* 175 */ "expr ::= JOIN_KW",
1058  /* 176 */ "expr ::= nm DOT nm",
1059  /* 177 */ "expr ::= nm DOT nm DOT nm",
1060  /* 178 */ "expr ::= INTEGER",
1061  /* 179 */ "expr ::= FLOAT",
1062  /* 180 */ "expr ::= STRING",
1063  /* 181 */ "expr ::= VARIABLE",
1064  /* 182 */ "expr ::= ID LP exprlist RP",
1065  /* 183 */ "expr ::= ID LP STAR RP",
1066  /* 184 */ "expr ::= expr AND expr",
1067  /* 185 */ "expr ::= expr OR expr",
1068  /* 186 */ "expr ::= expr LT expr",
1069  /* 187 */ "expr ::= expr GT expr",
1070  /* 188 */ "expr ::= expr LE expr",
1071  /* 189 */ "expr ::= expr GE expr",
1072  /* 190 */ "expr ::= expr NE expr",
1073  /* 191 */ "expr ::= expr EQ expr",
1074  /* 192 */ "expr ::= expr BITAND expr",
1075  /* 193 */ "expr ::= expr BITOR expr",
1076  /* 194 */ "expr ::= expr LSHIFT expr",
1077  /* 195 */ "expr ::= expr RSHIFT expr",
1078  /* 196 */ "expr ::= expr likeop expr",
1079  /* 197 */ "expr ::= expr NOT likeop expr",
1080  /* 198 */ "likeop ::= LIKE",
1081  /* 199 */ "likeop ::= GLOB",
1082  /* 200 */ "expr ::= expr PLUS expr",
1083  /* 201 */ "expr ::= expr MINUS expr",
1084  /* 202 */ "expr ::= expr STAR expr",
1085  /* 203 */ "expr ::= expr SLASH expr",
1086  /* 204 */ "expr ::= expr REM expr",
1087  /* 205 */ "expr ::= expr CONCAT expr",
1088  /* 206 */ "expr ::= expr ISNULL",
1089  /* 207 */ "expr ::= expr IS NULL",
1090  /* 208 */ "expr ::= expr NOTNULL",
1091  /* 209 */ "expr ::= expr NOT NULL",
1092  /* 210 */ "expr ::= expr IS NOT NULL",
1093  /* 211 */ "expr ::= NOT expr",
1094  /* 212 */ "expr ::= BITNOT expr",
1095  /* 213 */ "expr ::= MINUS expr",
1096  /* 214 */ "expr ::= PLUS expr",
1097  /* 215 */ "expr ::= LP select RP",
1098  /* 216 */ "expr ::= expr BETWEEN expr AND expr",
1099  /* 217 */ "expr ::= expr NOT BETWEEN expr AND expr",
1100  /* 218 */ "expr ::= expr IN LP exprlist RP",
1101  /* 219 */ "expr ::= expr IN LP select RP",
1102  /* 220 */ "expr ::= expr NOT IN LP exprlist RP",
1103  /* 221 */ "expr ::= expr NOT IN LP select RP",
1104  /* 222 */ "expr ::= expr IN nm dbnm",
1105  /* 223 */ "expr ::= expr NOT IN nm dbnm",
1106  /* 224 */ "expr ::= CASE case_operand case_exprlist case_else END",
1107  /* 225 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
1108  /* 226 */ "case_exprlist ::= WHEN expr THEN expr",
1109  /* 227 */ "case_else ::= ELSE expr",
1110  /* 228 */ "case_else ::=",
1111  /* 229 */ "case_operand ::= expr",
1112  /* 230 */ "case_operand ::=",
1113  /* 231 */ "exprlist ::= exprlist COMMA expritem",
1114  /* 232 */ "exprlist ::= expritem",
1115  /* 233 */ "expritem ::= expr",
1116  /* 234 */ "expritem ::=",
1117  /* 235 */ "cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf",
1118  /* 236 */ "uniqueflag ::= UNIQUE",
1119  /* 237 */ "uniqueflag ::=",
1120  /* 238 */ "idxlist_opt ::=",
1121  /* 239 */ "idxlist_opt ::= LP idxlist RP",
1122  /* 240 */ "idxlist ::= idxlist COMMA idxitem",
1123  /* 241 */ "idxlist ::= idxitem",
1124  /* 242 */ "idxitem ::= nm sortorder",
1125  /* 243 */ "cmd ::= DROP INDEX nm dbnm",
1126  /* 244 */ "cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING",
1127  /* 245 */ "cmd ::= COPY orconf nm dbnm FROM nm",
1128  /* 246 */ "cmd ::= VACUUM",
1129  /* 247 */ "cmd ::= VACUUM nm",
1130  /* 248 */ "cmd ::= PRAGMA ids EQ nm",
1131  /* 249 */ "cmd ::= PRAGMA ids EQ ON",
1132  /* 250 */ "cmd ::= PRAGMA ids EQ plus_num",
1133  /* 251 */ "cmd ::= PRAGMA ids EQ minus_num",
1134  /* 252 */ "cmd ::= PRAGMA ids LP nm RP",
1135  /* 253 */ "cmd ::= PRAGMA ids",
1136  /* 254 */ "plus_num ::= plus_opt number",
1137  /* 255 */ "minus_num ::= MINUS number",
1138  /* 256 */ "number ::= INTEGER",
1139  /* 257 */ "number ::= FLOAT",
1140  /* 258 */ "plus_opt ::= PLUS",
1141  /* 259 */ "plus_opt ::=",
1142  /* 260 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END",
1143  /* 261 */ "trigger_decl ::= temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause",
1144  /* 262 */ "trigger_time ::= BEFORE",
1145  /* 263 */ "trigger_time ::= AFTER",
1146  /* 264 */ "trigger_time ::= INSTEAD OF",
1147  /* 265 */ "trigger_time ::=",
1148  /* 266 */ "trigger_event ::= DELETE",
1149  /* 267 */ "trigger_event ::= INSERT",
1150  /* 268 */ "trigger_event ::= UPDATE",
1151  /* 269 */ "trigger_event ::= UPDATE OF inscollist",
1152  /* 270 */ "foreach_clause ::=",
1153  /* 271 */ "foreach_clause ::= FOR EACH ROW",
1154  /* 272 */ "foreach_clause ::= FOR EACH STATEMENT",
1155  /* 273 */ "when_clause ::=",
1156  /* 274 */ "when_clause ::= WHEN expr",
1157  /* 275 */ "trigger_cmd_list ::= trigger_cmd SEMI trigger_cmd_list",
1158  /* 276 */ "trigger_cmd_list ::=",
1159  /* 277 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt",
1160  /* 278 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP",
1161  /* 279 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select",
1162  /* 280 */ "trigger_cmd ::= DELETE FROM nm where_opt",
1163  /* 281 */ "trigger_cmd ::= select",
1164  /* 282 */ "expr ::= RAISE LP IGNORE RP",
1165  /* 283 */ "expr ::= RAISE LP ROLLBACK COMMA nm RP",
1166  /* 284 */ "expr ::= RAISE LP ABORT COMMA nm RP",
1167  /* 285 */ "expr ::= RAISE LP FAIL COMMA nm RP",
1168  /* 286 */ "cmd ::= DROP TRIGGER nm dbnm",
1169  /* 287 */ "cmd ::= ATTACH database_kw_opt ids AS nm key_opt",
1170  /* 288 */ "key_opt ::= USING ids",
1171  /* 289 */ "key_opt ::=",
1172  /* 290 */ "database_kw_opt ::= DATABASE",
1173  /* 291 */ "database_kw_opt ::=",
1174  /* 292 */ "cmd ::= DETACH database_kw_opt nm",
1175 };
1176 #endif /* NDEBUG */
1177 
1178 /*
1179 ** This function returns the symbolic name associated with a token
1180 ** value.
1181 */
sqliteParserTokenName(int tokenType)1182 const char *sqliteParserTokenName(int tokenType){
1183 #ifndef NDEBUG
1184   if( tokenType>0 && tokenType<(sizeof(yyTokenName)/sizeof(yyTokenName[0])) ){
1185     return yyTokenName[tokenType];
1186   }else{
1187     return "Unknown";
1188   }
1189 #else
1190   return "";
1191 #endif
1192 }
1193 
1194 /*
1195 ** This function allocates a new parser.
1196 ** The only argument is a pointer to a function which works like
1197 ** malloc.
1198 **
1199 ** Inputs:
1200 ** A pointer to the function used to allocate memory.
1201 **
1202 ** Outputs:
1203 ** A pointer to a parser.  This pointer is used in subsequent calls
1204 ** to sqliteParser and sqliteParserFree.
1205 */
sqliteParserAlloc(void * (* mallocProc)(size_t))1206 void *sqliteParserAlloc(void *(*mallocProc)(size_t)){
1207   yyParser *pParser;
1208   pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
1209   if( pParser ){
1210     pParser->yyidx = -1;
1211   }
1212   return pParser;
1213 }
1214 
1215 /* The following function deletes the value associated with a
1216 ** symbol.  The symbol can be either a terminal or nonterminal.
1217 ** "yymajor" is the symbol code, and "yypminor" is a pointer to
1218 ** the value.
1219 */
yy_destructor(YYCODETYPE yymajor,YYMINORTYPE * yypminor)1220 static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
1221   switch( yymajor ){
1222     /* Here is inserted the actions which take place when a
1223     ** terminal or non-terminal is destroyed.  This can happen
1224     ** when the symbol is popped from the stack during a
1225     ** reduce or during error processing or when a parser is
1226     ** being destroyed before it is finished parsing.
1227     **
1228     ** Note: during a reduce, the only symbols destroyed are those
1229     ** which appear on the RHS of the rule, but which are not used
1230     ** inside the C code.
1231     */
1232     case 146:
1233 #line 286 "parse.y"
1234 {sqliteSelectDelete((yypminor->yy179));}
1235 #line 1235 "parse.c"
1236       break;
1237     case 158:
1238 #line 533 "parse.y"
1239 {sqliteExprDelete((yypminor->yy242));}
1240 #line 1240 "parse.c"
1241       break;
1242     case 159:
1243 #line 746 "parse.y"
1244 {sqliteIdListDelete((yypminor->yy320));}
1245 #line 1245 "parse.c"
1246       break;
1247     case 167:
1248 #line 744 "parse.y"
1249 {sqliteIdListDelete((yypminor->yy320));}
1250 #line 1250 "parse.c"
1251       break;
1252     case 171:
1253 #line 288 "parse.y"
1254 {sqliteSelectDelete((yypminor->yy179));}
1255 #line 1255 "parse.c"
1256       break;
1257     case 174:
1258 #line 322 "parse.y"
1259 {sqliteExprListDelete((yypminor->yy322));}
1260 #line 1260 "parse.c"
1261       break;
1262     case 175:
1263 #line 353 "parse.y"
1264 {sqliteSrcListDelete((yypminor->yy307));}
1265 #line 1265 "parse.c"
1266       break;
1267     case 176:
1268 #line 483 "parse.y"
1269 {sqliteExprDelete((yypminor->yy242));}
1270 #line 1270 "parse.c"
1271       break;
1272     case 177:
1273 #line 459 "parse.y"
1274 {sqliteExprListDelete((yypminor->yy322));}
1275 #line 1275 "parse.c"
1276       break;
1277     case 178:
1278 #line 464 "parse.y"
1279 {sqliteExprDelete((yypminor->yy242));}
1280 #line 1280 "parse.c"
1281       break;
1282     case 179:
1283 #line 431 "parse.y"
1284 {sqliteExprListDelete((yypminor->yy322));}
1285 #line 1285 "parse.c"
1286       break;
1287     case 181:
1288 #line 324 "parse.y"
1289 {sqliteExprListDelete((yypminor->yy322));}
1290 #line 1290 "parse.c"
1291       break;
1292     case 183:
1293 #line 349 "parse.y"
1294 {sqliteSrcListDelete((yypminor->yy307));}
1295 #line 1295 "parse.c"
1296       break;
1297     case 184:
1298 #line 351 "parse.y"
1299 {sqliteSrcListDelete((yypminor->yy307));}
1300 #line 1300 "parse.c"
1301       break;
1302     case 187:
1303 #line 420 "parse.y"
1304 {sqliteExprDelete((yypminor->yy242));}
1305 #line 1305 "parse.c"
1306       break;
1307     case 188:
1308 #line 425 "parse.y"
1309 {sqliteIdListDelete((yypminor->yy320));}
1310 #line 1310 "parse.c"
1311       break;
1312     case 189:
1313 #line 400 "parse.y"
1314 {sqliteSelectDelete((yypminor->yy179));}
1315 #line 1315 "parse.c"
1316       break;
1317     case 191:
1318 #line 433 "parse.y"
1319 {sqliteExprListDelete((yypminor->yy322));}
1320 #line 1320 "parse.c"
1321       break;
1322     case 192:
1323 #line 435 "parse.y"
1324 {sqliteExprDelete((yypminor->yy242));}
1325 #line 1325 "parse.c"
1326       break;
1327     case 194:
1328 #line 719 "parse.y"
1329 {sqliteExprListDelete((yypminor->yy322));}
1330 #line 1330 "parse.c"
1331       break;
1332     case 195:
1333 #line 489 "parse.y"
1334 {sqliteExprListDelete((yypminor->yy322));}
1335 #line 1335 "parse.c"
1336       break;
1337     case 197:
1338 #line 520 "parse.y"
1339 {sqliteIdListDelete((yypminor->yy320));}
1340 #line 1340 "parse.c"
1341       break;
1342     case 198:
1343 #line 514 "parse.y"
1344 {sqliteExprListDelete((yypminor->yy322));}
1345 #line 1345 "parse.c"
1346       break;
1347     case 199:
1348 #line 522 "parse.y"
1349 {sqliteIdListDelete((yypminor->yy320));}
1350 #line 1350 "parse.c"
1351       break;
1352     case 202:
1353 #line 702 "parse.y"
1354 {sqliteExprListDelete((yypminor->yy322));}
1355 #line 1355 "parse.c"
1356       break;
1357     case 204:
1358 #line 721 "parse.y"
1359 {sqliteExprDelete((yypminor->yy242));}
1360 #line 1360 "parse.c"
1361       break;
1362     case 212:
1363 #line 828 "parse.y"
1364 {sqliteDeleteTriggerStep((yypminor->yy19));}
1365 #line 1365 "parse.c"
1366       break;
1367     case 214:
1368 #line 812 "parse.y"
1369 {sqliteIdListDelete((yypminor->yy290).b);}
1370 #line 1370 "parse.c"
1371       break;
1372     case 217:
1373 #line 836 "parse.y"
1374 {sqliteDeleteTriggerStep((yypminor->yy19));}
1375 #line 1375 "parse.c"
1376       break;
1377     default:  break;   /* If no destructor action specified: do nothing */
1378   }
1379 }
1380 
1381 /*
1382 ** Pop the parser's stack once.
1383 **
1384 ** If there is a destructor routine associated with the token which
1385 ** is popped from the stack, then call it.
1386 **
1387 ** Return the major token number for the symbol popped.
1388 */
yy_pop_parser_stack(yyParser * pParser)1389 static int yy_pop_parser_stack(yyParser *pParser){
1390   YYCODETYPE yymajor;
1391   yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
1392 
1393   if( pParser->yyidx<0 ) return 0;
1394 #ifndef NDEBUG
1395   if( yyTraceFILE && pParser->yyidx>=0 ){
1396     fprintf(yyTraceFILE,"%sPopping %s\n",
1397       yyTracePrompt,
1398       yyTokenName[yytos->major]);
1399   }
1400 #endif
1401   yymajor = yytos->major;
1402   yy_destructor( yymajor, &yytos->minor);
1403   pParser->yyidx--;
1404   return yymajor;
1405 }
1406 
1407 /*
1408 ** Deallocate and destroy a parser.  Destructors are all called for
1409 ** all stack elements before shutting the parser down.
1410 **
1411 ** Inputs:
1412 ** <ul>
1413 ** <li>  A pointer to the parser.  This should be a pointer
1414 **       obtained from sqliteParserAlloc.
1415 ** <li>  A pointer to a function used to reclaim memory obtained
1416 **       from malloc.
1417 ** </ul>
1418 */
sqliteParserFree(void * p,void (* freeProc)(void *))1419 void sqliteParserFree(
1420   void *p,                    /* The parser to be deleted */
1421   void (*freeProc)(void*)     /* Function used to reclaim memory */
1422 ){
1423   yyParser *pParser = (yyParser*)p;
1424   if( pParser==0 ) return;
1425   while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
1426   (*freeProc)((void*)pParser);
1427 }
1428 
1429 /*
1430 ** Find the appropriate action for a parser given the terminal
1431 ** look-ahead token iLookAhead.
1432 **
1433 ** If the look-ahead token is YYNOCODE, then check to see if the action is
1434 ** independent of the look-ahead.  If it is, return the action, otherwise
1435 ** return YY_NO_ACTION.
1436 */
yy_find_shift_action(yyParser * pParser,int iLookAhead)1437 static int yy_find_shift_action(
1438   yyParser *pParser,        /* The parser */
1439   int iLookAhead            /* The look-ahead token */
1440 ){
1441   int i;
1442   int stateno = pParser->yystack[pParser->yyidx].stateno;
1443 
1444   /* if( pParser->yyidx<0 ) return YY_NO_ACTION;  */
1445   i = yy_shift_ofst[stateno];
1446   if( i==YY_SHIFT_USE_DFLT ){
1447     return yy_default[stateno];
1448   }
1449   if( iLookAhead==YYNOCODE ){
1450     return YY_NO_ACTION;
1451   }
1452   i += iLookAhead;
1453   if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1454 #ifdef YYFALLBACK
1455     int iFallback;            /* Fallback token */
1456     if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
1457            && (iFallback = yyFallback[iLookAhead])!=0 ){
1458 #ifndef NDEBUG
1459       if( yyTraceFILE ){
1460         fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
1461            yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
1462       }
1463 #endif
1464       return yy_find_shift_action(pParser, iFallback);
1465     }
1466 #endif
1467     return yy_default[stateno];
1468   }else{
1469     return yy_action[i];
1470   }
1471 }
1472 
1473 /*
1474 ** Find the appropriate action for a parser given the non-terminal
1475 ** look-ahead token iLookAhead.
1476 **
1477 ** If the look-ahead token is YYNOCODE, then check to see if the action is
1478 ** independent of the look-ahead.  If it is, return the action, otherwise
1479 ** return YY_NO_ACTION.
1480 */
yy_find_reduce_action(yyParser * pParser,int iLookAhead)1481 static int yy_find_reduce_action(
1482   yyParser *pParser,        /* The parser */
1483   int iLookAhead            /* The look-ahead token */
1484 ){
1485   int i;
1486   int stateno = pParser->yystack[pParser->yyidx].stateno;
1487 
1488   i = yy_reduce_ofst[stateno];
1489   if( i==YY_REDUCE_USE_DFLT ){
1490     return yy_default[stateno];
1491   }
1492   if( iLookAhead==YYNOCODE ){
1493     return YY_NO_ACTION;
1494   }
1495   i += iLookAhead;
1496   if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
1497     return yy_default[stateno];
1498   }else{
1499     return yy_action[i];
1500   }
1501 }
1502 
1503 /*
1504 ** Perform a shift action.
1505 */
yy_shift(yyParser * yypParser,int yyNewState,int yyMajor,YYMINORTYPE * yypMinor)1506 static void yy_shift(
1507   yyParser *yypParser,          /* The parser to be shifted */
1508   int yyNewState,               /* The new state to shift in */
1509   int yyMajor,                  /* The major token to shift in */
1510   YYMINORTYPE *yypMinor         /* Pointer ot the minor token to shift in */
1511 ){
1512   yyStackEntry *yytos;
1513   yypParser->yyidx++;
1514   if( yypParser->yyidx>=YYSTACKDEPTH ){
1515      sqliteParserARG_FETCH;
1516      yypParser->yyidx--;
1517 #ifndef NDEBUG
1518      if( yyTraceFILE ){
1519        fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt);
1520      }
1521 #endif
1522      while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
1523      /* Here code is inserted which will execute if the parser
1524      ** stack every overflows */
1525      sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument var */
1526      return;
1527   }
1528   yytos = &yypParser->yystack[yypParser->yyidx];
1529   yytos->stateno = yyNewState;
1530   yytos->major = yyMajor;
1531   yytos->minor = *yypMinor;
1532 #ifndef NDEBUG
1533   if( yyTraceFILE && yypParser->yyidx>0 ){
1534     int i;
1535     fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState);
1536     fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
1537     for(i=1; i<=yypParser->yyidx; i++)
1538       fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
1539     fprintf(yyTraceFILE,"\n");
1540   }
1541 #endif
1542 }
1543 
1544 /* The following table contains information about every rule that
1545 ** is used during the reduce.
1546 */
1547 static struct {
1548   YYCODETYPE lhs;         /* Symbol on the left-hand side of the rule */
1549   unsigned char nrhs;     /* Number of right-hand side symbols in the rule */
1550 } yyRuleInfo[] = {
1551   { 132, 1 },
1552   { 133, 2 },
1553   { 133, 1 },
1554   { 134, 3 },
1555   { 134, 1 },
1556   { 136, 1 },
1557   { 135, 1 },
1558   { 135, 0 },
1559   { 137, 3 },
1560   { 138, 0 },
1561   { 138, 1 },
1562   { 138, 2 },
1563   { 137, 2 },
1564   { 137, 2 },
1565   { 137, 2 },
1566   { 137, 2 },
1567   { 141, 4 },
1568   { 143, 1 },
1569   { 143, 0 },
1570   { 142, 4 },
1571   { 142, 2 },
1572   { 144, 3 },
1573   { 144, 1 },
1574   { 147, 3 },
1575   { 148, 1 },
1576   { 151, 1 },
1577   { 152, 1 },
1578   { 152, 1 },
1579   { 140, 1 },
1580   { 140, 1 },
1581   { 140, 1 },
1582   { 149, 0 },
1583   { 149, 1 },
1584   { 149, 4 },
1585   { 149, 6 },
1586   { 153, 1 },
1587   { 153, 2 },
1588   { 154, 1 },
1589   { 154, 2 },
1590   { 154, 2 },
1591   { 150, 2 },
1592   { 150, 0 },
1593   { 155, 3 },
1594   { 155, 1 },
1595   { 155, 2 },
1596   { 155, 2 },
1597   { 155, 2 },
1598   { 155, 3 },
1599   { 155, 3 },
1600   { 155, 2 },
1601   { 155, 3 },
1602   { 155, 3 },
1603   { 155, 2 },
1604   { 156, 2 },
1605   { 156, 3 },
1606   { 156, 4 },
1607   { 156, 2 },
1608   { 156, 5 },
1609   { 156, 4 },
1610   { 156, 1 },
1611   { 156, 2 },
1612   { 160, 0 },
1613   { 160, 2 },
1614   { 162, 2 },
1615   { 162, 3 },
1616   { 162, 3 },
1617   { 162, 3 },
1618   { 163, 2 },
1619   { 163, 2 },
1620   { 163, 1 },
1621   { 163, 1 },
1622   { 161, 3 },
1623   { 161, 2 },
1624   { 164, 0 },
1625   { 164, 2 },
1626   { 164, 2 },
1627   { 145, 0 },
1628   { 145, 2 },
1629   { 165, 3 },
1630   { 165, 2 },
1631   { 165, 1 },
1632   { 166, 2 },
1633   { 166, 6 },
1634   { 166, 5 },
1635   { 166, 3 },
1636   { 166, 10 },
1637   { 168, 0 },
1638   { 168, 1 },
1639   { 139, 0 },
1640   { 139, 3 },
1641   { 169, 0 },
1642   { 169, 2 },
1643   { 170, 1 },
1644   { 170, 1 },
1645   { 170, 1 },
1646   { 170, 1 },
1647   { 170, 1 },
1648   { 137, 3 },
1649   { 137, 6 },
1650   { 137, 3 },
1651   { 137, 1 },
1652   { 146, 1 },
1653   { 146, 3 },
1654   { 172, 1 },
1655   { 172, 2 },
1656   { 172, 1 },
1657   { 172, 1 },
1658   { 171, 9 },
1659   { 173, 1 },
1660   { 173, 1 },
1661   { 173, 0 },
1662   { 181, 2 },
1663   { 181, 0 },
1664   { 174, 3 },
1665   { 174, 2 },
1666   { 174, 4 },
1667   { 182, 2 },
1668   { 182, 1 },
1669   { 182, 0 },
1670   { 175, 0 },
1671   { 175, 2 },
1672   { 184, 2 },
1673   { 184, 0 },
1674   { 183, 6 },
1675   { 183, 7 },
1676   { 189, 1 },
1677   { 189, 1 },
1678   { 186, 0 },
1679   { 186, 2 },
1680   { 185, 1 },
1681   { 185, 1 },
1682   { 185, 2 },
1683   { 185, 3 },
1684   { 185, 4 },
1685   { 187, 2 },
1686   { 187, 0 },
1687   { 188, 4 },
1688   { 188, 0 },
1689   { 179, 0 },
1690   { 179, 3 },
1691   { 191, 5 },
1692   { 191, 3 },
1693   { 192, 1 },
1694   { 157, 1 },
1695   { 157, 1 },
1696   { 157, 0 },
1697   { 193, 0 },
1698   { 193, 2 },
1699   { 177, 0 },
1700   { 177, 3 },
1701   { 178, 0 },
1702   { 178, 2 },
1703   { 180, 0 },
1704   { 180, 2 },
1705   { 180, 4 },
1706   { 180, 4 },
1707   { 137, 5 },
1708   { 176, 0 },
1709   { 176, 2 },
1710   { 137, 7 },
1711   { 195, 5 },
1712   { 195, 3 },
1713   { 137, 9 },
1714   { 137, 6 },
1715   { 196, 2 },
1716   { 196, 1 },
1717   { 198, 3 },
1718   { 198, 1 },
1719   { 197, 0 },
1720   { 197, 3 },
1721   { 199, 3 },
1722   { 199, 1 },
1723   { 158, 3 },
1724   { 158, 1 },
1725   { 158, 1 },
1726   { 158, 1 },
1727   { 158, 3 },
1728   { 158, 5 },
1729   { 158, 1 },
1730   { 158, 1 },
1731   { 158, 1 },
1732   { 158, 1 },
1733   { 158, 4 },
1734   { 158, 4 },
1735   { 158, 3 },
1736   { 158, 3 },
1737   { 158, 3 },
1738   { 158, 3 },
1739   { 158, 3 },
1740   { 158, 3 },
1741   { 158, 3 },
1742   { 158, 3 },
1743   { 158, 3 },
1744   { 158, 3 },
1745   { 158, 3 },
1746   { 158, 3 },
1747   { 158, 3 },
1748   { 158, 4 },
1749   { 200, 1 },
1750   { 200, 1 },
1751   { 158, 3 },
1752   { 158, 3 },
1753   { 158, 3 },
1754   { 158, 3 },
1755   { 158, 3 },
1756   { 158, 3 },
1757   { 158, 2 },
1758   { 158, 3 },
1759   { 158, 2 },
1760   { 158, 3 },
1761   { 158, 4 },
1762   { 158, 2 },
1763   { 158, 2 },
1764   { 158, 2 },
1765   { 158, 2 },
1766   { 158, 3 },
1767   { 158, 5 },
1768   { 158, 6 },
1769   { 158, 5 },
1770   { 158, 5 },
1771   { 158, 6 },
1772   { 158, 6 },
1773   { 158, 4 },
1774   { 158, 5 },
1775   { 158, 5 },
1776   { 202, 5 },
1777   { 202, 4 },
1778   { 203, 2 },
1779   { 203, 0 },
1780   { 201, 1 },
1781   { 201, 0 },
1782   { 194, 3 },
1783   { 194, 1 },
1784   { 204, 1 },
1785   { 204, 0 },
1786   { 137, 11 },
1787   { 205, 1 },
1788   { 205, 0 },
1789   { 159, 0 },
1790   { 159, 3 },
1791   { 167, 3 },
1792   { 167, 1 },
1793   { 206, 2 },
1794   { 137, 4 },
1795   { 137, 9 },
1796   { 137, 6 },
1797   { 137, 1 },
1798   { 137, 2 },
1799   { 137, 4 },
1800   { 137, 4 },
1801   { 137, 4 },
1802   { 137, 4 },
1803   { 137, 5 },
1804   { 137, 2 },
1805   { 207, 2 },
1806   { 208, 2 },
1807   { 210, 1 },
1808   { 210, 1 },
1809   { 209, 1 },
1810   { 209, 0 },
1811   { 137, 5 },
1812   { 211, 10 },
1813   { 213, 1 },
1814   { 213, 1 },
1815   { 213, 2 },
1816   { 213, 0 },
1817   { 214, 1 },
1818   { 214, 1 },
1819   { 214, 1 },
1820   { 214, 3 },
1821   { 215, 0 },
1822   { 215, 3 },
1823   { 215, 3 },
1824   { 216, 0 },
1825   { 216, 2 },
1826   { 212, 3 },
1827   { 212, 0 },
1828   { 217, 6 },
1829   { 217, 8 },
1830   { 217, 5 },
1831   { 217, 4 },
1832   { 217, 1 },
1833   { 158, 4 },
1834   { 158, 6 },
1835   { 158, 6 },
1836   { 158, 6 },
1837   { 137, 4 },
1838   { 137, 6 },
1839   { 219, 2 },
1840   { 219, 0 },
1841   { 218, 1 },
1842   { 218, 0 },
1843   { 137, 3 },
1844 };
1845 
1846 static void yy_accept(yyParser*);  /* Forward Declaration */
1847 
1848 /*
1849 ** Perform a reduce action and the shift that must immediately
1850 ** follow the reduce.
1851 */
yy_reduce(yyParser * yypParser,int yyruleno)1852 static void yy_reduce(
1853   yyParser *yypParser,         /* The parser */
1854   int yyruleno                 /* Number of the rule by which to reduce */
1855 ){
1856   int yygoto;                     /* The next state */
1857   int yyact;                      /* The next action */
1858   YYMINORTYPE yygotominor;        /* The LHS of the rule reduced */
1859   yyStackEntry *yymsp;            /* The top of the parser's stack */
1860   int yysize;                     /* Amount to pop the stack */
1861   sqliteParserARG_FETCH;
1862   yymsp = &yypParser->yystack[yypParser->yyidx];
1863 #ifndef NDEBUG
1864   if( yyTraceFILE && yyruleno>=0
1865         && yyruleno<sizeof(yyRuleName)/sizeof(yyRuleName[0]) ){
1866     fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt,
1867       yyRuleName[yyruleno]);
1868   }
1869 #endif /* NDEBUG */
1870 
1871   switch( yyruleno ){
1872   /* Beginning here are the reduction cases.  A typical example
1873   ** follows:
1874   **   case 0:
1875   **  #line <lineno> <grammarfile>
1876   **     { ... }           // User supplied code
1877   **  #line <lineno> <thisfile>
1878   **     break;
1879   */
1880       case 0:
1881         /* No destructor defined for cmdlist */
1882         break;
1883       case 1:
1884         /* No destructor defined for cmdlist */
1885         /* No destructor defined for ecmd */
1886         break;
1887       case 2:
1888         /* No destructor defined for ecmd */
1889         break;
1890       case 3:
1891         /* No destructor defined for explain */
1892         /* No destructor defined for cmdx */
1893         /* No destructor defined for SEMI */
1894         break;
1895       case 4:
1896         /* No destructor defined for SEMI */
1897         break;
1898       case 5:
1899 #line 72 "parse.y"
1900 { sqliteExec(pParse); }
1901 #line 1901 "parse.c"
1902         /* No destructor defined for cmd */
1903         break;
1904       case 6:
1905 #line 73 "parse.y"
1906 { sqliteBeginParse(pParse, 1); }
1907 #line 1907 "parse.c"
1908         /* No destructor defined for EXPLAIN */
1909         break;
1910       case 7:
1911 #line 74 "parse.y"
1912 { sqliteBeginParse(pParse, 0); }
1913 #line 1913 "parse.c"
1914         break;
1915       case 8:
1916 #line 79 "parse.y"
1917 {sqliteBeginTransaction(pParse,yymsp[0].minor.yy372);}
1918 #line 1918 "parse.c"
1919         /* No destructor defined for BEGIN */
1920         /* No destructor defined for trans_opt */
1921         break;
1922       case 9:
1923         break;
1924       case 10:
1925         /* No destructor defined for TRANSACTION */
1926         break;
1927       case 11:
1928         /* No destructor defined for TRANSACTION */
1929         /* No destructor defined for nm */
1930         break;
1931       case 12:
1932 #line 83 "parse.y"
1933 {sqliteCommitTransaction(pParse);}
1934 #line 1934 "parse.c"
1935         /* No destructor defined for COMMIT */
1936         /* No destructor defined for trans_opt */
1937         break;
1938       case 13:
1939 #line 84 "parse.y"
1940 {sqliteCommitTransaction(pParse);}
1941 #line 1941 "parse.c"
1942         /* No destructor defined for END */
1943         /* No destructor defined for trans_opt */
1944         break;
1945       case 14:
1946 #line 85 "parse.y"
1947 {sqliteRollbackTransaction(pParse);}
1948 #line 1948 "parse.c"
1949         /* No destructor defined for ROLLBACK */
1950         /* No destructor defined for trans_opt */
1951         break;
1952       case 15:
1953         /* No destructor defined for create_table */
1954         /* No destructor defined for create_table_args */
1955         break;
1956       case 16:
1957 #line 90 "parse.y"
1958 {
1959    sqliteStartTable(pParse,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy298,yymsp[-2].minor.yy372,0);
1960 }
1961 #line 1961 "parse.c"
1962         /* No destructor defined for TABLE */
1963         break;
1964       case 17:
1965 #line 94 "parse.y"
1966 {yygotominor.yy372 = 1;}
1967 #line 1967 "parse.c"
1968         /* No destructor defined for TEMP */
1969         break;
1970       case 18:
1971 #line 95 "parse.y"
1972 {yygotominor.yy372 = 0;}
1973 #line 1973 "parse.c"
1974         break;
1975       case 19:
1976 #line 96 "parse.y"
1977 {
1978   sqliteEndTable(pParse,&yymsp[0].minor.yy0,0);
1979 }
1980 #line 1980 "parse.c"
1981         /* No destructor defined for LP */
1982         /* No destructor defined for columnlist */
1983         /* No destructor defined for conslist_opt */
1984         break;
1985       case 20:
1986 #line 99 "parse.y"
1987 {
1988   sqliteEndTable(pParse,0,yymsp[0].minor.yy179);
1989   sqliteSelectDelete(yymsp[0].minor.yy179);
1990 }
1991 #line 1991 "parse.c"
1992         /* No destructor defined for AS */
1993         break;
1994       case 21:
1995         /* No destructor defined for columnlist */
1996         /* No destructor defined for COMMA */
1997         /* No destructor defined for column */
1998         break;
1999       case 22:
2000         /* No destructor defined for column */
2001         break;
2002       case 23:
2003         /* No destructor defined for columnid */
2004         /* No destructor defined for type */
2005         /* No destructor defined for carglist */
2006         break;
2007       case 24:
2008 #line 111 "parse.y"
2009 {sqliteAddColumn(pParse,&yymsp[0].minor.yy298);}
2010 #line 2010 "parse.c"
2011         break;
2012       case 25:
2013 #line 117 "parse.y"
2014 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2015 #line 2015 "parse.c"
2016         break;
2017       case 26:
2018 #line 149 "parse.y"
2019 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2020 #line 2020 "parse.c"
2021         break;
2022       case 27:
2023 #line 150 "parse.y"
2024 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2025 #line 2025 "parse.c"
2026         break;
2027       case 28:
2028 #line 155 "parse.y"
2029 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2030 #line 2030 "parse.c"
2031         break;
2032       case 29:
2033 #line 156 "parse.y"
2034 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2035 #line 2035 "parse.c"
2036         break;
2037       case 30:
2038 #line 157 "parse.y"
2039 {yygotominor.yy298 = yymsp[0].minor.yy0;}
2040 #line 2040 "parse.c"
2041         break;
2042       case 31:
2043         break;
2044       case 32:
2045 #line 160 "parse.y"
2046 {sqliteAddColumnType(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298);}
2047 #line 2047 "parse.c"
2048         break;
2049       case 33:
2050 #line 161 "parse.y"
2051 {sqliteAddColumnType(pParse,&yymsp[-3].minor.yy298,&yymsp[0].minor.yy0);}
2052 #line 2052 "parse.c"
2053         /* No destructor defined for LP */
2054         /* No destructor defined for signed */
2055         break;
2056       case 34:
2057 #line 163 "parse.y"
2058 {sqliteAddColumnType(pParse,&yymsp[-5].minor.yy298,&yymsp[0].minor.yy0);}
2059 #line 2059 "parse.c"
2060         /* No destructor defined for LP */
2061         /* No destructor defined for signed */
2062         /* No destructor defined for COMMA */
2063         /* No destructor defined for signed */
2064         break;
2065       case 35:
2066 #line 165 "parse.y"
2067 {yygotominor.yy298 = yymsp[0].minor.yy298;}
2068 #line 2068 "parse.c"
2069         break;
2070       case 36:
2071 #line 166 "parse.y"
2072 {yygotominor.yy298 = yymsp[-1].minor.yy298;}
2073 #line 2073 "parse.c"
2074         /* No destructor defined for ids */
2075         break;
2076       case 37:
2077 #line 168 "parse.y"
2078 { yygotominor.yy372 = atoi(yymsp[0].minor.yy0.z); }
2079 #line 2079 "parse.c"
2080         break;
2081       case 38:
2082 #line 169 "parse.y"
2083 { yygotominor.yy372 = atoi(yymsp[0].minor.yy0.z); }
2084 #line 2084 "parse.c"
2085         /* No destructor defined for PLUS */
2086         break;
2087       case 39:
2088 #line 170 "parse.y"
2089 { yygotominor.yy372 = -atoi(yymsp[0].minor.yy0.z); }
2090 #line 2090 "parse.c"
2091         /* No destructor defined for MINUS */
2092         break;
2093       case 40:
2094         /* No destructor defined for carglist */
2095         /* No destructor defined for carg */
2096         break;
2097       case 41:
2098         break;
2099       case 42:
2100         /* No destructor defined for CONSTRAINT */
2101         /* No destructor defined for nm */
2102         /* No destructor defined for ccons */
2103         break;
2104       case 43:
2105         /* No destructor defined for ccons */
2106         break;
2107       case 44:
2108 #line 175 "parse.y"
2109 {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
2110 #line 2110 "parse.c"
2111         /* No destructor defined for DEFAULT */
2112         break;
2113       case 45:
2114 #line 176 "parse.y"
2115 {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
2116 #line 2116 "parse.c"
2117         /* No destructor defined for DEFAULT */
2118         break;
2119       case 46:
2120 #line 177 "parse.y"
2121 {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
2122 #line 2122 "parse.c"
2123         /* No destructor defined for DEFAULT */
2124         break;
2125       case 47:
2126 #line 178 "parse.y"
2127 {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
2128 #line 2128 "parse.c"
2129         /* No destructor defined for DEFAULT */
2130         /* No destructor defined for PLUS */
2131         break;
2132       case 48:
2133 #line 179 "parse.y"
2134 {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);}
2135 #line 2135 "parse.c"
2136         /* No destructor defined for DEFAULT */
2137         /* No destructor defined for MINUS */
2138         break;
2139       case 49:
2140 #line 180 "parse.y"
2141 {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
2142 #line 2142 "parse.c"
2143         /* No destructor defined for DEFAULT */
2144         break;
2145       case 50:
2146 #line 181 "parse.y"
2147 {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,0);}
2148 #line 2148 "parse.c"
2149         /* No destructor defined for DEFAULT */
2150         /* No destructor defined for PLUS */
2151         break;
2152       case 51:
2153 #line 182 "parse.y"
2154 {sqliteAddDefaultValue(pParse,&yymsp[0].minor.yy0,1);}
2155 #line 2155 "parse.c"
2156         /* No destructor defined for DEFAULT */
2157         /* No destructor defined for MINUS */
2158         break;
2159       case 52:
2160         /* No destructor defined for DEFAULT */
2161         /* No destructor defined for NULL */
2162         break;
2163       case 53:
2164         /* No destructor defined for NULL */
2165         /* No destructor defined for onconf */
2166         break;
2167       case 54:
2168 #line 189 "parse.y"
2169 {sqliteAddNotNull(pParse, yymsp[0].minor.yy372);}
2170 #line 2170 "parse.c"
2171         /* No destructor defined for NOT */
2172         /* No destructor defined for NULL */
2173         break;
2174       case 55:
2175 #line 190 "parse.y"
2176 {sqliteAddPrimaryKey(pParse,0,yymsp[0].minor.yy372);}
2177 #line 2177 "parse.c"
2178         /* No destructor defined for PRIMARY */
2179         /* No destructor defined for KEY */
2180         /* No destructor defined for sortorder */
2181         break;
2182       case 56:
2183 #line 191 "parse.y"
2184 {sqliteCreateIndex(pParse,0,0,0,yymsp[0].minor.yy372,0,0);}
2185 #line 2185 "parse.c"
2186         /* No destructor defined for UNIQUE */
2187         break;
2188       case 57:
2189         /* No destructor defined for CHECK */
2190         /* No destructor defined for LP */
2191   yy_destructor(158,&yymsp[-2].minor);
2192         /* No destructor defined for RP */
2193         /* No destructor defined for onconf */
2194         break;
2195       case 58:
2196 #line 194 "parse.y"
2197 {sqliteCreateForeignKey(pParse,0,&yymsp[-2].minor.yy298,yymsp[-1].minor.yy320,yymsp[0].minor.yy372);}
2198 #line 2198 "parse.c"
2199         /* No destructor defined for REFERENCES */
2200         break;
2201       case 59:
2202 #line 195 "parse.y"
2203 {sqliteDeferForeignKey(pParse,yymsp[0].minor.yy372);}
2204 #line 2204 "parse.c"
2205         break;
2206       case 60:
2207 #line 196 "parse.y"
2208 {
2209    sqliteAddCollateType(pParse, sqliteCollateType(yymsp[0].minor.yy298.z, yymsp[0].minor.yy298.n));
2210 }
2211 #line 2211 "parse.c"
2212         /* No destructor defined for COLLATE */
2213         break;
2214       case 61:
2215 #line 206 "parse.y"
2216 { yygotominor.yy372 = OE_Restrict * 0x010101; }
2217 #line 2217 "parse.c"
2218         break;
2219       case 62:
2220 #line 207 "parse.y"
2221 { yygotominor.yy372 = (yymsp[-1].minor.yy372 & yymsp[0].minor.yy407.mask) | yymsp[0].minor.yy407.value; }
2222 #line 2222 "parse.c"
2223         break;
2224       case 63:
2225 #line 209 "parse.y"
2226 { yygotominor.yy407.value = 0;     yygotominor.yy407.mask = 0x000000; }
2227 #line 2227 "parse.c"
2228         /* No destructor defined for MATCH */
2229         /* No destructor defined for nm */
2230         break;
2231       case 64:
2232 #line 210 "parse.y"
2233 { yygotominor.yy407.value = yymsp[0].minor.yy372;     yygotominor.yy407.mask = 0x0000ff; }
2234 #line 2234 "parse.c"
2235         /* No destructor defined for ON */
2236         /* No destructor defined for DELETE */
2237         break;
2238       case 65:
2239 #line 211 "parse.y"
2240 { yygotominor.yy407.value = yymsp[0].minor.yy372<<8;  yygotominor.yy407.mask = 0x00ff00; }
2241 #line 2241 "parse.c"
2242         /* No destructor defined for ON */
2243         /* No destructor defined for UPDATE */
2244         break;
2245       case 66:
2246 #line 212 "parse.y"
2247 { yygotominor.yy407.value = yymsp[0].minor.yy372<<16; yygotominor.yy407.mask = 0xff0000; }
2248 #line 2248 "parse.c"
2249         /* No destructor defined for ON */
2250         /* No destructor defined for INSERT */
2251         break;
2252       case 67:
2253 #line 214 "parse.y"
2254 { yygotominor.yy372 = OE_SetNull; }
2255 #line 2255 "parse.c"
2256         /* No destructor defined for SET */
2257         /* No destructor defined for NULL */
2258         break;
2259       case 68:
2260 #line 215 "parse.y"
2261 { yygotominor.yy372 = OE_SetDflt; }
2262 #line 2262 "parse.c"
2263         /* No destructor defined for SET */
2264         /* No destructor defined for DEFAULT */
2265         break;
2266       case 69:
2267 #line 216 "parse.y"
2268 { yygotominor.yy372 = OE_Cascade; }
2269 #line 2269 "parse.c"
2270         /* No destructor defined for CASCADE */
2271         break;
2272       case 70:
2273 #line 217 "parse.y"
2274 { yygotominor.yy372 = OE_Restrict; }
2275 #line 2275 "parse.c"
2276         /* No destructor defined for RESTRICT */
2277         break;
2278       case 71:
2279 #line 219 "parse.y"
2280 {yygotominor.yy372 = yymsp[0].minor.yy372;}
2281 #line 2281 "parse.c"
2282         /* No destructor defined for NOT */
2283         /* No destructor defined for DEFERRABLE */
2284         break;
2285       case 72:
2286 #line 220 "parse.y"
2287 {yygotominor.yy372 = yymsp[0].minor.yy372;}
2288 #line 2288 "parse.c"
2289         /* No destructor defined for DEFERRABLE */
2290         break;
2291       case 73:
2292 #line 222 "parse.y"
2293 {yygotominor.yy372 = 0;}
2294 #line 2294 "parse.c"
2295         break;
2296       case 74:
2297 #line 223 "parse.y"
2298 {yygotominor.yy372 = 1;}
2299 #line 2299 "parse.c"
2300         /* No destructor defined for INITIALLY */
2301         /* No destructor defined for DEFERRED */
2302         break;
2303       case 75:
2304 #line 224 "parse.y"
2305 {yygotominor.yy372 = 0;}
2306 #line 2306 "parse.c"
2307         /* No destructor defined for INITIALLY */
2308         /* No destructor defined for IMMEDIATE */
2309         break;
2310       case 76:
2311         break;
2312       case 77:
2313         /* No destructor defined for COMMA */
2314         /* No destructor defined for conslist */
2315         break;
2316       case 78:
2317         /* No destructor defined for conslist */
2318         /* No destructor defined for COMMA */
2319         /* No destructor defined for tcons */
2320         break;
2321       case 79:
2322         /* No destructor defined for conslist */
2323         /* No destructor defined for tcons */
2324         break;
2325       case 80:
2326         /* No destructor defined for tcons */
2327         break;
2328       case 81:
2329         /* No destructor defined for CONSTRAINT */
2330         /* No destructor defined for nm */
2331         break;
2332       case 82:
2333 #line 236 "parse.y"
2334 {sqliteAddPrimaryKey(pParse,yymsp[-2].minor.yy320,yymsp[0].minor.yy372);}
2335 #line 2335 "parse.c"
2336         /* No destructor defined for PRIMARY */
2337         /* No destructor defined for KEY */
2338         /* No destructor defined for LP */
2339         /* No destructor defined for RP */
2340         break;
2341       case 83:
2342 #line 238 "parse.y"
2343 {sqliteCreateIndex(pParse,0,0,yymsp[-2].minor.yy320,yymsp[0].minor.yy372,0,0);}
2344 #line 2344 "parse.c"
2345         /* No destructor defined for UNIQUE */
2346         /* No destructor defined for LP */
2347         /* No destructor defined for RP */
2348         break;
2349       case 84:
2350         /* No destructor defined for CHECK */
2351   yy_destructor(158,&yymsp[-1].minor);
2352         /* No destructor defined for onconf */
2353         break;
2354       case 85:
2355 #line 241 "parse.y"
2356 {
2357     sqliteCreateForeignKey(pParse, yymsp[-6].minor.yy320, &yymsp[-3].minor.yy298, yymsp[-2].minor.yy320, yymsp[-1].minor.yy372);
2358     sqliteDeferForeignKey(pParse, yymsp[0].minor.yy372);
2359 }
2360 #line 2360 "parse.c"
2361         /* No destructor defined for FOREIGN */
2362         /* No destructor defined for KEY */
2363         /* No destructor defined for LP */
2364         /* No destructor defined for RP */
2365         /* No destructor defined for REFERENCES */
2366         break;
2367       case 86:
2368 #line 246 "parse.y"
2369 {yygotominor.yy372 = 0;}
2370 #line 2370 "parse.c"
2371         break;
2372       case 87:
2373 #line 247 "parse.y"
2374 {yygotominor.yy372 = yymsp[0].minor.yy372;}
2375 #line 2375 "parse.c"
2376         break;
2377       case 88:
2378 #line 255 "parse.y"
2379 { yygotominor.yy372 = OE_Default; }
2380 #line 2380 "parse.c"
2381         break;
2382       case 89:
2383 #line 256 "parse.y"
2384 { yygotominor.yy372 = yymsp[0].minor.yy372; }
2385 #line 2385 "parse.c"
2386         /* No destructor defined for ON */
2387         /* No destructor defined for CONFLICT */
2388         break;
2389       case 90:
2390 #line 257 "parse.y"
2391 { yygotominor.yy372 = OE_Default; }
2392 #line 2392 "parse.c"
2393         break;
2394       case 91:
2395 #line 258 "parse.y"
2396 { yygotominor.yy372 = yymsp[0].minor.yy372; }
2397 #line 2397 "parse.c"
2398         /* No destructor defined for OR */
2399         break;
2400       case 92:
2401 #line 259 "parse.y"
2402 { yygotominor.yy372 = OE_Rollback; }
2403 #line 2403 "parse.c"
2404         /* No destructor defined for ROLLBACK */
2405         break;
2406       case 93:
2407 #line 260 "parse.y"
2408 { yygotominor.yy372 = OE_Abort; }
2409 #line 2409 "parse.c"
2410         /* No destructor defined for ABORT */
2411         break;
2412       case 94:
2413 #line 261 "parse.y"
2414 { yygotominor.yy372 = OE_Fail; }
2415 #line 2415 "parse.c"
2416         /* No destructor defined for FAIL */
2417         break;
2418       case 95:
2419 #line 262 "parse.y"
2420 { yygotominor.yy372 = OE_Ignore; }
2421 #line 2421 "parse.c"
2422         /* No destructor defined for IGNORE */
2423         break;
2424       case 96:
2425 #line 263 "parse.y"
2426 { yygotominor.yy372 = OE_Replace; }
2427 #line 2427 "parse.c"
2428         /* No destructor defined for REPLACE */
2429         break;
2430       case 97:
2431 #line 267 "parse.y"
2432 {sqliteDropTable(pParse,&yymsp[0].minor.yy298,0);}
2433 #line 2433 "parse.c"
2434         /* No destructor defined for DROP */
2435         /* No destructor defined for TABLE */
2436         break;
2437       case 98:
2438 #line 271 "parse.y"
2439 {
2440   sqliteCreateView(pParse, &yymsp[-5].minor.yy0, &yymsp[-2].minor.yy298, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);
2441 }
2442 #line 2442 "parse.c"
2443         /* No destructor defined for VIEW */
2444         /* No destructor defined for AS */
2445         break;
2446       case 99:
2447 #line 274 "parse.y"
2448 {
2449   sqliteDropTable(pParse, &yymsp[0].minor.yy298, 1);
2450 }
2451 #line 2451 "parse.c"
2452         /* No destructor defined for DROP */
2453         /* No destructor defined for VIEW */
2454         break;
2455       case 100:
2456 #line 280 "parse.y"
2457 {
2458   sqliteSelect(pParse, yymsp[0].minor.yy179, SRT_Callback, 0, 0, 0, 0);
2459   sqliteSelectDelete(yymsp[0].minor.yy179);
2460 }
2461 #line 2461 "parse.c"
2462         break;
2463       case 101:
2464 #line 290 "parse.y"
2465 {yygotominor.yy179 = yymsp[0].minor.yy179;}
2466 #line 2466 "parse.c"
2467         break;
2468       case 102:
2469 #line 291 "parse.y"
2470 {
2471   if( yymsp[0].minor.yy179 ){
2472     yymsp[0].minor.yy179->op = yymsp[-1].minor.yy372;
2473     yymsp[0].minor.yy179->pPrior = yymsp[-2].minor.yy179;
2474   }
2475   yygotominor.yy179 = yymsp[0].minor.yy179;
2476 }
2477 #line 2477 "parse.c"
2478         break;
2479       case 103:
2480 #line 299 "parse.y"
2481 {yygotominor.yy372 = TK_UNION;}
2482 #line 2482 "parse.c"
2483         /* No destructor defined for UNION */
2484         break;
2485       case 104:
2486 #line 300 "parse.y"
2487 {yygotominor.yy372 = TK_ALL;}
2488 #line 2488 "parse.c"
2489         /* No destructor defined for UNION */
2490         /* No destructor defined for ALL */
2491         break;
2492       case 105:
2493 #line 301 "parse.y"
2494 {yygotominor.yy372 = TK_INTERSECT;}
2495 #line 2495 "parse.c"
2496         /* No destructor defined for INTERSECT */
2497         break;
2498       case 106:
2499 #line 302 "parse.y"
2500 {yygotominor.yy372 = TK_EXCEPT;}
2501 #line 2501 "parse.c"
2502         /* No destructor defined for EXCEPT */
2503         break;
2504       case 107:
2505 #line 304 "parse.y"
2506 {
2507   yygotominor.yy179 = sqliteSelectNew(yymsp[-6].minor.yy322,yymsp[-5].minor.yy307,yymsp[-4].minor.yy242,yymsp[-3].minor.yy322,yymsp[-2].minor.yy242,yymsp[-1].minor.yy322,yymsp[-7].minor.yy372,yymsp[0].minor.yy124.limit,yymsp[0].minor.yy124.offset);
2508 }
2509 #line 2509 "parse.c"
2510         /* No destructor defined for SELECT */
2511         break;
2512       case 108:
2513 #line 312 "parse.y"
2514 {yygotominor.yy372 = 1;}
2515 #line 2515 "parse.c"
2516         /* No destructor defined for DISTINCT */
2517         break;
2518       case 109:
2519 #line 313 "parse.y"
2520 {yygotominor.yy372 = 0;}
2521 #line 2521 "parse.c"
2522         /* No destructor defined for ALL */
2523         break;
2524       case 110:
2525 #line 314 "parse.y"
2526 {yygotominor.yy372 = 0;}
2527 #line 2527 "parse.c"
2528         break;
2529       case 111:
2530 #line 325 "parse.y"
2531 {yygotominor.yy322 = yymsp[-1].minor.yy322;}
2532 #line 2532 "parse.c"
2533         /* No destructor defined for COMMA */
2534         break;
2535       case 112:
2536 #line 326 "parse.y"
2537 {yygotominor.yy322 = 0;}
2538 #line 2538 "parse.c"
2539         break;
2540       case 113:
2541 #line 327 "parse.y"
2542 {
2543    yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[-1].minor.yy242,yymsp[0].minor.yy298.n?&yymsp[0].minor.yy298:0);
2544 }
2545 #line 2545 "parse.c"
2546         break;
2547       case 114:
2548 #line 330 "parse.y"
2549 {
2550   yygotominor.yy322 = sqliteExprListAppend(yymsp[-1].minor.yy322, sqliteExpr(TK_ALL, 0, 0, 0), 0);
2551 }
2552 #line 2552 "parse.c"
2553         /* No destructor defined for STAR */
2554         break;
2555       case 115:
2556 #line 333 "parse.y"
2557 {
2558   Expr *pRight = sqliteExpr(TK_ALL, 0, 0, 0);
2559   Expr *pLeft = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
2560   yygotominor.yy322 = sqliteExprListAppend(yymsp[-3].minor.yy322, sqliteExpr(TK_DOT, pLeft, pRight, 0), 0);
2561 }
2562 #line 2562 "parse.c"
2563         /* No destructor defined for DOT */
2564         /* No destructor defined for STAR */
2565         break;
2566       case 116:
2567 #line 343 "parse.y"
2568 { yygotominor.yy298 = yymsp[0].minor.yy298; }
2569 #line 2569 "parse.c"
2570         /* No destructor defined for AS */
2571         break;
2572       case 117:
2573 #line 344 "parse.y"
2574 { yygotominor.yy298 = yymsp[0].minor.yy298; }
2575 #line 2575 "parse.c"
2576         break;
2577       case 118:
2578 #line 345 "parse.y"
2579 { yygotominor.yy298.n = 0; }
2580 #line 2580 "parse.c"
2581         break;
2582       case 119:
2583 #line 357 "parse.y"
2584 {yygotominor.yy307 = sqliteMalloc(sizeof(*yygotominor.yy307));}
2585 #line 2585 "parse.c"
2586         break;
2587       case 120:
2588 #line 358 "parse.y"
2589 {yygotominor.yy307 = yymsp[0].minor.yy307;}
2590 #line 2590 "parse.c"
2591         /* No destructor defined for FROM */
2592         break;
2593       case 121:
2594 #line 363 "parse.y"
2595 {
2596    yygotominor.yy307 = yymsp[-1].minor.yy307;
2597    if( yygotominor.yy307 && yygotominor.yy307->nSrc>0 ) yygotominor.yy307->a[yygotominor.yy307->nSrc-1].jointype = yymsp[0].minor.yy372;
2598 }
2599 #line 2599 "parse.c"
2600         break;
2601       case 122:
2602 #line 367 "parse.y"
2603 {yygotominor.yy307 = 0;}
2604 #line 2604 "parse.c"
2605         break;
2606       case 123:
2607 #line 368 "parse.y"
2608 {
2609   yygotominor.yy307 = sqliteSrcListAppend(yymsp[-5].minor.yy307,&yymsp[-4].minor.yy298,&yymsp[-3].minor.yy298);
2610   if( yymsp[-2].minor.yy298.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy298);
2611   if( yymsp[-1].minor.yy242 ){
2612     if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pOn = yymsp[-1].minor.yy242; }
2613     else { sqliteExprDelete(yymsp[-1].minor.yy242); }
2614   }
2615   if( yymsp[0].minor.yy320 ){
2616     if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pUsing = yymsp[0].minor.yy320; }
2617     else { sqliteIdListDelete(yymsp[0].minor.yy320); }
2618   }
2619 }
2620 #line 2620 "parse.c"
2621         break;
2622       case 124:
2623 #line 381 "parse.y"
2624 {
2625   yygotominor.yy307 = sqliteSrcListAppend(yymsp[-6].minor.yy307,0,0);
2626   yygotominor.yy307->a[yygotominor.yy307->nSrc-1].pSelect = yymsp[-4].minor.yy179;
2627   if( yymsp[-2].minor.yy298.n ) sqliteSrcListAddAlias(yygotominor.yy307,&yymsp[-2].minor.yy298);
2628   if( yymsp[-1].minor.yy242 ){
2629     if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pOn = yymsp[-1].minor.yy242; }
2630     else { sqliteExprDelete(yymsp[-1].minor.yy242); }
2631   }
2632   if( yymsp[0].minor.yy320 ){
2633     if( yygotominor.yy307 && yygotominor.yy307->nSrc>1 ){ yygotominor.yy307->a[yygotominor.yy307->nSrc-2].pUsing = yymsp[0].minor.yy320; }
2634     else { sqliteIdListDelete(yymsp[0].minor.yy320); }
2635   }
2636 }
2637 #line 2637 "parse.c"
2638         /* No destructor defined for LP */
2639         /* No destructor defined for RP */
2640         break;
2641       case 125:
2642 #line 401 "parse.y"
2643 {yygotominor.yy179 = yymsp[0].minor.yy179;}
2644 #line 2644 "parse.c"
2645         break;
2646       case 126:
2647 #line 402 "parse.y"
2648 {
2649    yygotominor.yy179 = sqliteSelectNew(0,yymsp[0].minor.yy307,0,0,0,0,0,-1,0);
2650 }
2651 #line 2651 "parse.c"
2652         break;
2653       case 127:
2654 #line 407 "parse.y"
2655 {yygotominor.yy298.z=0; yygotominor.yy298.n=0;}
2656 #line 2656 "parse.c"
2657         break;
2658       case 128:
2659 #line 408 "parse.y"
2660 {yygotominor.yy298 = yymsp[0].minor.yy298;}
2661 #line 2661 "parse.c"
2662         /* No destructor defined for DOT */
2663         break;
2664       case 129:
2665 #line 412 "parse.y"
2666 { yygotominor.yy372 = JT_INNER; }
2667 #line 2667 "parse.c"
2668         /* No destructor defined for COMMA */
2669         break;
2670       case 130:
2671 #line 413 "parse.y"
2672 { yygotominor.yy372 = JT_INNER; }
2673 #line 2673 "parse.c"
2674         /* No destructor defined for JOIN */
2675         break;
2676       case 131:
2677 #line 414 "parse.y"
2678 { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-1].minor.yy0,0,0); }
2679 #line 2679 "parse.c"
2680         /* No destructor defined for JOIN */
2681         break;
2682       case 132:
2683 #line 415 "parse.y"
2684 { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy298,0); }
2685 #line 2685 "parse.c"
2686         /* No destructor defined for JOIN */
2687         break;
2688       case 133:
2689 #line 417 "parse.y"
2690 { yygotominor.yy372 = sqliteJoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy298,&yymsp[-1].minor.yy298); }
2691 #line 2691 "parse.c"
2692         /* No destructor defined for JOIN */
2693         break;
2694       case 134:
2695 #line 421 "parse.y"
2696 {yygotominor.yy242 = yymsp[0].minor.yy242;}
2697 #line 2697 "parse.c"
2698         /* No destructor defined for ON */
2699         break;
2700       case 135:
2701 #line 422 "parse.y"
2702 {yygotominor.yy242 = 0;}
2703 #line 2703 "parse.c"
2704         break;
2705       case 136:
2706 #line 426 "parse.y"
2707 {yygotominor.yy320 = yymsp[-1].minor.yy320;}
2708 #line 2708 "parse.c"
2709         /* No destructor defined for USING */
2710         /* No destructor defined for LP */
2711         /* No destructor defined for RP */
2712         break;
2713       case 137:
2714 #line 427 "parse.y"
2715 {yygotominor.yy320 = 0;}
2716 #line 2716 "parse.c"
2717         break;
2718       case 138:
2719 #line 437 "parse.y"
2720 {yygotominor.yy322 = 0;}
2721 #line 2721 "parse.c"
2722         break;
2723       case 139:
2724 #line 438 "parse.y"
2725 {yygotominor.yy322 = yymsp[0].minor.yy322;}
2726 #line 2726 "parse.c"
2727         /* No destructor defined for ORDER */
2728         /* No destructor defined for BY */
2729         break;
2730       case 140:
2731 #line 439 "parse.y"
2732 {
2733   yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[-2].minor.yy242,0);
2734   if( yygotominor.yy322 ) yygotominor.yy322->a[yygotominor.yy322->nExpr-1].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372;
2735 }
2736 #line 2736 "parse.c"
2737         /* No destructor defined for COMMA */
2738         break;
2739       case 141:
2740 #line 443 "parse.y"
2741 {
2742   yygotominor.yy322 = sqliteExprListAppend(0,yymsp[-2].minor.yy242,0);
2743   if( yygotominor.yy322 ) yygotominor.yy322->a[0].sortOrder = yymsp[-1].minor.yy372+yymsp[0].minor.yy372;
2744 }
2745 #line 2745 "parse.c"
2746         break;
2747       case 142:
2748 #line 447 "parse.y"
2749 {yygotominor.yy242 = yymsp[0].minor.yy242;}
2750 #line 2750 "parse.c"
2751         break;
2752       case 143:
2753 #line 452 "parse.y"
2754 {yygotominor.yy372 = SQLITE_SO_ASC;}
2755 #line 2755 "parse.c"
2756         /* No destructor defined for ASC */
2757         break;
2758       case 144:
2759 #line 453 "parse.y"
2760 {yygotominor.yy372 = SQLITE_SO_DESC;}
2761 #line 2761 "parse.c"
2762         /* No destructor defined for DESC */
2763         break;
2764       case 145:
2765 #line 454 "parse.y"
2766 {yygotominor.yy372 = SQLITE_SO_ASC;}
2767 #line 2767 "parse.c"
2768         break;
2769       case 146:
2770 #line 455 "parse.y"
2771 {yygotominor.yy372 = SQLITE_SO_UNK;}
2772 #line 2772 "parse.c"
2773         break;
2774       case 147:
2775 #line 456 "parse.y"
2776 {yygotominor.yy372 = sqliteCollateType(yymsp[0].minor.yy298.z, yymsp[0].minor.yy298.n);}
2777 #line 2777 "parse.c"
2778         /* No destructor defined for COLLATE */
2779         break;
2780       case 148:
2781 #line 460 "parse.y"
2782 {yygotominor.yy322 = 0;}
2783 #line 2783 "parse.c"
2784         break;
2785       case 149:
2786 #line 461 "parse.y"
2787 {yygotominor.yy322 = yymsp[0].minor.yy322;}
2788 #line 2788 "parse.c"
2789         /* No destructor defined for GROUP */
2790         /* No destructor defined for BY */
2791         break;
2792       case 150:
2793 #line 465 "parse.y"
2794 {yygotominor.yy242 = 0;}
2795 #line 2795 "parse.c"
2796         break;
2797       case 151:
2798 #line 466 "parse.y"
2799 {yygotominor.yy242 = yymsp[0].minor.yy242;}
2800 #line 2800 "parse.c"
2801         /* No destructor defined for HAVING */
2802         break;
2803       case 152:
2804 #line 469 "parse.y"
2805 {yygotominor.yy124.limit = -1; yygotominor.yy124.offset = 0;}
2806 #line 2806 "parse.c"
2807         break;
2808       case 153:
2809 #line 470 "parse.y"
2810 {yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = 0;}
2811 #line 2811 "parse.c"
2812         /* No destructor defined for LIMIT */
2813         break;
2814       case 154:
2815 #line 472 "parse.y"
2816 {yygotominor.yy124.limit = yymsp[-2].minor.yy372; yygotominor.yy124.offset = yymsp[0].minor.yy372;}
2817 #line 2817 "parse.c"
2818         /* No destructor defined for LIMIT */
2819         /* No destructor defined for OFFSET */
2820         break;
2821       case 155:
2822 #line 474 "parse.y"
2823 {yygotominor.yy124.limit = yymsp[0].minor.yy372; yygotominor.yy124.offset = yymsp[-2].minor.yy372;}
2824 #line 2824 "parse.c"
2825         /* No destructor defined for LIMIT */
2826         /* No destructor defined for COMMA */
2827         break;
2828       case 156:
2829 #line 478 "parse.y"
2830 {
2831    sqliteDeleteFrom(pParse, sqliteSrcListAppend(0,&yymsp[-2].minor.yy298,&yymsp[-1].minor.yy298), yymsp[0].minor.yy242);
2832 }
2833 #line 2833 "parse.c"
2834         /* No destructor defined for DELETE */
2835         /* No destructor defined for FROM */
2836         break;
2837       case 157:
2838 #line 485 "parse.y"
2839 {yygotominor.yy242 = 0;}
2840 #line 2840 "parse.c"
2841         break;
2842       case 158:
2843 #line 486 "parse.y"
2844 {yygotominor.yy242 = yymsp[0].minor.yy242;}
2845 #line 2845 "parse.c"
2846         /* No destructor defined for WHERE */
2847         break;
2848       case 159:
2849 #line 494 "parse.y"
2850 {sqliteUpdate(pParse,sqliteSrcListAppend(0,&yymsp[-4].minor.yy298,&yymsp[-3].minor.yy298),yymsp[-1].minor.yy322,yymsp[0].minor.yy242,yymsp[-5].minor.yy372);}
2851 #line 2851 "parse.c"
2852         /* No destructor defined for UPDATE */
2853         /* No destructor defined for SET */
2854         break;
2855       case 160:
2856 #line 497 "parse.y"
2857 {yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322,yymsp[0].minor.yy242,&yymsp[-2].minor.yy298);}
2858 #line 2858 "parse.c"
2859         /* No destructor defined for COMMA */
2860         /* No destructor defined for EQ */
2861         break;
2862       case 161:
2863 #line 498 "parse.y"
2864 {yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,&yymsp[-2].minor.yy298);}
2865 #line 2865 "parse.c"
2866         /* No destructor defined for EQ */
2867         break;
2868       case 162:
2869 #line 504 "parse.y"
2870 {sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-6].minor.yy298,&yymsp[-5].minor.yy298), yymsp[-1].minor.yy322, 0, yymsp[-4].minor.yy320, yymsp[-8].minor.yy372);}
2871 #line 2871 "parse.c"
2872         /* No destructor defined for INTO */
2873         /* No destructor defined for VALUES */
2874         /* No destructor defined for LP */
2875         /* No destructor defined for RP */
2876         break;
2877       case 163:
2878 #line 506 "parse.y"
2879 {sqliteInsert(pParse, sqliteSrcListAppend(0,&yymsp[-3].minor.yy298,&yymsp[-2].minor.yy298), 0, yymsp[0].minor.yy179, yymsp[-1].minor.yy320, yymsp[-5].minor.yy372);}
2880 #line 2880 "parse.c"
2881         /* No destructor defined for INTO */
2882         break;
2883       case 164:
2884 #line 509 "parse.y"
2885 {yygotominor.yy372 = yymsp[0].minor.yy372;}
2886 #line 2886 "parse.c"
2887         /* No destructor defined for INSERT */
2888         break;
2889       case 165:
2890 #line 510 "parse.y"
2891 {yygotominor.yy372 = OE_Replace;}
2892 #line 2892 "parse.c"
2893         /* No destructor defined for REPLACE */
2894         break;
2895       case 166:
2896 #line 516 "parse.y"
2897 {yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy242,0);}
2898 #line 2898 "parse.c"
2899         /* No destructor defined for COMMA */
2900         break;
2901       case 167:
2902 #line 517 "parse.y"
2903 {yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,0);}
2904 #line 2904 "parse.c"
2905         break;
2906       case 168:
2907 #line 524 "parse.y"
2908 {yygotominor.yy320 = 0;}
2909 #line 2909 "parse.c"
2910         break;
2911       case 169:
2912 #line 525 "parse.y"
2913 {yygotominor.yy320 = yymsp[-1].minor.yy320;}
2914 #line 2914 "parse.c"
2915         /* No destructor defined for LP */
2916         /* No destructor defined for RP */
2917         break;
2918       case 170:
2919 #line 526 "parse.y"
2920 {yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy298);}
2921 #line 2921 "parse.c"
2922         /* No destructor defined for COMMA */
2923         break;
2924       case 171:
2925 #line 527 "parse.y"
2926 {yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy298);}
2927 #line 2927 "parse.c"
2928         break;
2929       case 172:
2930 #line 535 "parse.y"
2931 {yygotominor.yy242 = yymsp[-1].minor.yy242; sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); }
2932 #line 2932 "parse.c"
2933         break;
2934       case 173:
2935 #line 536 "parse.y"
2936 {yygotominor.yy242 = sqliteExpr(TK_NULL, 0, 0, &yymsp[0].minor.yy0);}
2937 #line 2937 "parse.c"
2938         break;
2939       case 174:
2940 #line 537 "parse.y"
2941 {yygotominor.yy242 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
2942 #line 2942 "parse.c"
2943         break;
2944       case 175:
2945 #line 538 "parse.y"
2946 {yygotominor.yy242 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy0);}
2947 #line 2947 "parse.c"
2948         break;
2949       case 176:
2950 #line 539 "parse.y"
2951 {
2952   Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
2953   Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy298);
2954   yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp2, 0);
2955 }
2956 #line 2956 "parse.c"
2957         /* No destructor defined for DOT */
2958         break;
2959       case 177:
2960 #line 544 "parse.y"
2961 {
2962   Expr *temp1 = sqliteExpr(TK_ID, 0, 0, &yymsp[-4].minor.yy298);
2963   Expr *temp2 = sqliteExpr(TK_ID, 0, 0, &yymsp[-2].minor.yy298);
2964   Expr *temp3 = sqliteExpr(TK_ID, 0, 0, &yymsp[0].minor.yy298);
2965   Expr *temp4 = sqliteExpr(TK_DOT, temp2, temp3, 0);
2966   yygotominor.yy242 = sqliteExpr(TK_DOT, temp1, temp4, 0);
2967 }
2968 #line 2968 "parse.c"
2969         /* No destructor defined for DOT */
2970         /* No destructor defined for DOT */
2971         break;
2972       case 178:
2973 #line 551 "parse.y"
2974 {yygotominor.yy242 = sqliteExpr(TK_INTEGER, 0, 0, &yymsp[0].minor.yy0);}
2975 #line 2975 "parse.c"
2976         break;
2977       case 179:
2978 #line 552 "parse.y"
2979 {yygotominor.yy242 = sqliteExpr(TK_FLOAT, 0, 0, &yymsp[0].minor.yy0);}
2980 #line 2980 "parse.c"
2981         break;
2982       case 180:
2983 #line 553 "parse.y"
2984 {yygotominor.yy242 = sqliteExpr(TK_STRING, 0, 0, &yymsp[0].minor.yy0);}
2985 #line 2985 "parse.c"
2986         break;
2987       case 181:
2988 #line 554 "parse.y"
2989 {
2990   yygotominor.yy242 = sqliteExpr(TK_VARIABLE, 0, 0, &yymsp[0].minor.yy0);
2991   if( yygotominor.yy242 ) yygotominor.yy242->iTable = ++pParse->nVar;
2992 }
2993 #line 2993 "parse.c"
2994         break;
2995       case 182:
2996 #line 558 "parse.y"
2997 {
2998   yygotominor.yy242 = sqliteExprFunction(yymsp[-1].minor.yy322, &yymsp[-3].minor.yy0);
2999   sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
3000 }
3001 #line 3001 "parse.c"
3002         /* No destructor defined for LP */
3003         break;
3004       case 183:
3005 #line 562 "parse.y"
3006 {
3007   yygotominor.yy242 = sqliteExprFunction(0, &yymsp[-3].minor.yy0);
3008   sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy0,&yymsp[0].minor.yy0);
3009 }
3010 #line 3010 "parse.c"
3011         /* No destructor defined for LP */
3012         /* No destructor defined for STAR */
3013         break;
3014       case 184:
3015 #line 566 "parse.y"
3016 {yygotominor.yy242 = sqliteExpr(TK_AND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3017 #line 3017 "parse.c"
3018         /* No destructor defined for AND */
3019         break;
3020       case 185:
3021 #line 567 "parse.y"
3022 {yygotominor.yy242 = sqliteExpr(TK_OR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3023 #line 3023 "parse.c"
3024         /* No destructor defined for OR */
3025         break;
3026       case 186:
3027 #line 568 "parse.y"
3028 {yygotominor.yy242 = sqliteExpr(TK_LT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3029 #line 3029 "parse.c"
3030         /* No destructor defined for LT */
3031         break;
3032       case 187:
3033 #line 569 "parse.y"
3034 {yygotominor.yy242 = sqliteExpr(TK_GT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3035 #line 3035 "parse.c"
3036         /* No destructor defined for GT */
3037         break;
3038       case 188:
3039 #line 570 "parse.y"
3040 {yygotominor.yy242 = sqliteExpr(TK_LE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3041 #line 3041 "parse.c"
3042         /* No destructor defined for LE */
3043         break;
3044       case 189:
3045 #line 571 "parse.y"
3046 {yygotominor.yy242 = sqliteExpr(TK_GE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3047 #line 3047 "parse.c"
3048         /* No destructor defined for GE */
3049         break;
3050       case 190:
3051 #line 572 "parse.y"
3052 {yygotominor.yy242 = sqliteExpr(TK_NE, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3053 #line 3053 "parse.c"
3054         /* No destructor defined for NE */
3055         break;
3056       case 191:
3057 #line 573 "parse.y"
3058 {yygotominor.yy242 = sqliteExpr(TK_EQ, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3059 #line 3059 "parse.c"
3060         /* No destructor defined for EQ */
3061         break;
3062       case 192:
3063 #line 574 "parse.y"
3064 {yygotominor.yy242 = sqliteExpr(TK_BITAND, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3065 #line 3065 "parse.c"
3066         /* No destructor defined for BITAND */
3067         break;
3068       case 193:
3069 #line 575 "parse.y"
3070 {yygotominor.yy242 = sqliteExpr(TK_BITOR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3071 #line 3071 "parse.c"
3072         /* No destructor defined for BITOR */
3073         break;
3074       case 194:
3075 #line 576 "parse.y"
3076 {yygotominor.yy242 = sqliteExpr(TK_LSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3077 #line 3077 "parse.c"
3078         /* No destructor defined for LSHIFT */
3079         break;
3080       case 195:
3081 #line 577 "parse.y"
3082 {yygotominor.yy242 = sqliteExpr(TK_RSHIFT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3083 #line 3083 "parse.c"
3084         /* No destructor defined for RSHIFT */
3085         break;
3086       case 196:
3087 #line 578 "parse.y"
3088 {
3089   ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0);
3090   pList = sqliteExprListAppend(pList, yymsp[-2].minor.yy242, 0);
3091   yygotominor.yy242 = sqliteExprFunction(pList, 0);
3092   if( yygotominor.yy242 ) yygotominor.yy242->op = yymsp[-1].minor.yy372;
3093   sqliteExprSpan(yygotominor.yy242, &yymsp[-2].minor.yy242->span, &yymsp[0].minor.yy242->span);
3094 }
3095 #line 3095 "parse.c"
3096         break;
3097       case 197:
3098 #line 585 "parse.y"
3099 {
3100   ExprList *pList = sqliteExprListAppend(0, yymsp[0].minor.yy242, 0);
3101   pList = sqliteExprListAppend(pList, yymsp[-3].minor.yy242, 0);
3102   yygotominor.yy242 = sqliteExprFunction(pList, 0);
3103   if( yygotominor.yy242 ) yygotominor.yy242->op = yymsp[-1].minor.yy372;
3104   yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
3105   sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy242->span);
3106 }
3107 #line 3107 "parse.c"
3108         /* No destructor defined for NOT */
3109         break;
3110       case 198:
3111 #line 594 "parse.y"
3112 {yygotominor.yy372 = TK_LIKE;}
3113 #line 3113 "parse.c"
3114         /* No destructor defined for LIKE */
3115         break;
3116       case 199:
3117 #line 595 "parse.y"
3118 {yygotominor.yy372 = TK_GLOB;}
3119 #line 3119 "parse.c"
3120         /* No destructor defined for GLOB */
3121         break;
3122       case 200:
3123 #line 596 "parse.y"
3124 {yygotominor.yy242 = sqliteExpr(TK_PLUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3125 #line 3125 "parse.c"
3126         /* No destructor defined for PLUS */
3127         break;
3128       case 201:
3129 #line 597 "parse.y"
3130 {yygotominor.yy242 = sqliteExpr(TK_MINUS, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3131 #line 3131 "parse.c"
3132         /* No destructor defined for MINUS */
3133         break;
3134       case 202:
3135 #line 598 "parse.y"
3136 {yygotominor.yy242 = sqliteExpr(TK_STAR, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3137 #line 3137 "parse.c"
3138         /* No destructor defined for STAR */
3139         break;
3140       case 203:
3141 #line 599 "parse.y"
3142 {yygotominor.yy242 = sqliteExpr(TK_SLASH, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3143 #line 3143 "parse.c"
3144         /* No destructor defined for SLASH */
3145         break;
3146       case 204:
3147 #line 600 "parse.y"
3148 {yygotominor.yy242 = sqliteExpr(TK_REM, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3149 #line 3149 "parse.c"
3150         /* No destructor defined for REM */
3151         break;
3152       case 205:
3153 #line 601 "parse.y"
3154 {yygotominor.yy242 = sqliteExpr(TK_CONCAT, yymsp[-2].minor.yy242, yymsp[0].minor.yy242, 0);}
3155 #line 3155 "parse.c"
3156         /* No destructor defined for CONCAT */
3157         break;
3158       case 206:
3159 #line 602 "parse.y"
3160 {
3161   yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-1].minor.yy242, 0, 0);
3162   sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0);
3163 }
3164 #line 3164 "parse.c"
3165         break;
3166       case 207:
3167 #line 606 "parse.y"
3168 {
3169   yygotominor.yy242 = sqliteExpr(TK_ISNULL, yymsp[-2].minor.yy242, 0, 0);
3170   sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0);
3171 }
3172 #line 3172 "parse.c"
3173         /* No destructor defined for IS */
3174         break;
3175       case 208:
3176 #line 610 "parse.y"
3177 {
3178   yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-1].minor.yy242, 0, 0);
3179   sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy242->span,&yymsp[0].minor.yy0);
3180 }
3181 #line 3181 "parse.c"
3182         break;
3183       case 209:
3184 #line 614 "parse.y"
3185 {
3186   yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-2].minor.yy242, 0, 0);
3187   sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy242->span,&yymsp[0].minor.yy0);
3188 }
3189 #line 3189 "parse.c"
3190         /* No destructor defined for NOT */
3191         break;
3192       case 210:
3193 #line 618 "parse.y"
3194 {
3195   yygotominor.yy242 = sqliteExpr(TK_NOTNULL, yymsp[-3].minor.yy242, 0, 0);
3196   sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,&yymsp[0].minor.yy0);
3197 }
3198 #line 3198 "parse.c"
3199         /* No destructor defined for IS */
3200         /* No destructor defined for NOT */
3201         break;
3202       case 211:
3203 #line 622 "parse.y"
3204 {
3205   yygotominor.yy242 = sqliteExpr(TK_NOT, yymsp[0].minor.yy242, 0, 0);
3206   sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
3207 }
3208 #line 3208 "parse.c"
3209         break;
3210       case 212:
3211 #line 626 "parse.y"
3212 {
3213   yygotominor.yy242 = sqliteExpr(TK_BITNOT, yymsp[0].minor.yy242, 0, 0);
3214   sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
3215 }
3216 #line 3216 "parse.c"
3217         break;
3218       case 213:
3219 #line 630 "parse.y"
3220 {
3221   yygotominor.yy242 = sqliteExpr(TK_UMINUS, yymsp[0].minor.yy242, 0, 0);
3222   sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
3223 }
3224 #line 3224 "parse.c"
3225         break;
3226       case 214:
3227 #line 634 "parse.y"
3228 {
3229   yygotominor.yy242 = sqliteExpr(TK_UPLUS, yymsp[0].minor.yy242, 0, 0);
3230   sqliteExprSpan(yygotominor.yy242,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy242->span);
3231 }
3232 #line 3232 "parse.c"
3233         break;
3234       case 215:
3235 #line 638 "parse.y"
3236 {
3237   yygotominor.yy242 = sqliteExpr(TK_SELECT, 0, 0, 0);
3238   if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
3239   sqliteExprSpan(yygotominor.yy242,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0);
3240 }
3241 #line 3241 "parse.c"
3242         break;
3243       case 216:
3244 #line 643 "parse.y"
3245 {
3246   ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
3247   pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0);
3248   yygotominor.yy242 = sqliteExpr(TK_BETWEEN, yymsp[-4].minor.yy242, 0, 0);
3249   if( yygotominor.yy242 ) yygotominor.yy242->pList = pList;
3250   sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy242->span);
3251 }
3252 #line 3252 "parse.c"
3253         /* No destructor defined for BETWEEN */
3254         /* No destructor defined for AND */
3255         break;
3256       case 217:
3257 #line 650 "parse.y"
3258 {
3259   ExprList *pList = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
3260   pList = sqliteExprListAppend(pList, yymsp[0].minor.yy242, 0);
3261   yygotominor.yy242 = sqliteExpr(TK_BETWEEN, yymsp[-5].minor.yy242, 0, 0);
3262   if( yygotominor.yy242 ) yygotominor.yy242->pList = pList;
3263   yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
3264   sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy242->span);
3265 }
3266 #line 3266 "parse.c"
3267         /* No destructor defined for NOT */
3268         /* No destructor defined for BETWEEN */
3269         /* No destructor defined for AND */
3270         break;
3271       case 218:
3272 #line 658 "parse.y"
3273 {
3274   yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
3275   if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322;
3276   sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0);
3277 }
3278 #line 3278 "parse.c"
3279         /* No destructor defined for IN */
3280         /* No destructor defined for LP */
3281         break;
3282       case 219:
3283 #line 663 "parse.y"
3284 {
3285   yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
3286   if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
3287   sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,&yymsp[0].minor.yy0);
3288 }
3289 #line 3289 "parse.c"
3290         /* No destructor defined for IN */
3291         /* No destructor defined for LP */
3292         break;
3293       case 220:
3294 #line 668 "parse.y"
3295 {
3296   yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0);
3297   if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-1].minor.yy322;
3298   yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
3299   sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0);
3300 }
3301 #line 3301 "parse.c"
3302         /* No destructor defined for NOT */
3303         /* No destructor defined for IN */
3304         /* No destructor defined for LP */
3305         break;
3306       case 221:
3307 #line 674 "parse.y"
3308 {
3309   yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-5].minor.yy242, 0, 0);
3310   if( yygotominor.yy242 ) yygotominor.yy242->pSelect = yymsp[-1].minor.yy179;
3311   yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
3312   sqliteExprSpan(yygotominor.yy242,&yymsp[-5].minor.yy242->span,&yymsp[0].minor.yy0);
3313 }
3314 #line 3314 "parse.c"
3315         /* No destructor defined for NOT */
3316         /* No destructor defined for IN */
3317         /* No destructor defined for LP */
3318         break;
3319       case 222:
3320 #line 680 "parse.y"
3321 {
3322   SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
3323   yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-3].minor.yy242, 0, 0);
3324   if( yygotominor.yy242 ) yygotominor.yy242->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);
3325   sqliteExprSpan(yygotominor.yy242,&yymsp[-3].minor.yy242->span,yymsp[0].minor.yy298.z?&yymsp[0].minor.yy298:&yymsp[-1].minor.yy298);
3326 }
3327 #line 3327 "parse.c"
3328         /* No destructor defined for IN */
3329         break;
3330       case 223:
3331 #line 686 "parse.y"
3332 {
3333   SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
3334   yygotominor.yy242 = sqliteExpr(TK_IN, yymsp[-4].minor.yy242, 0, 0);
3335   if( yygotominor.yy242 ) yygotominor.yy242->pSelect = sqliteSelectNew(0,pSrc,0,0,0,0,0,-1,0);
3336   yygotominor.yy242 = sqliteExpr(TK_NOT, yygotominor.yy242, 0, 0);
3337   sqliteExprSpan(yygotominor.yy242,&yymsp[-4].minor.yy242->span,yymsp[0].minor.yy298.z?&yymsp[0].minor.yy298:&yymsp[-1].minor.yy298);
3338 }
3339 #line 3339 "parse.c"
3340         /* No destructor defined for NOT */
3341         /* No destructor defined for IN */
3342         break;
3343       case 224:
3344 #line 696 "parse.y"
3345 {
3346   yygotominor.yy242 = sqliteExpr(TK_CASE, yymsp[-3].minor.yy242, yymsp[-1].minor.yy242, 0);
3347   if( yygotominor.yy242 ) yygotominor.yy242->pList = yymsp[-2].minor.yy322;
3348   sqliteExprSpan(yygotominor.yy242, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0);
3349 }
3350 #line 3350 "parse.c"
3351         break;
3352       case 225:
3353 #line 703 "parse.y"
3354 {
3355   yygotominor.yy322 = sqliteExprListAppend(yymsp[-4].minor.yy322, yymsp[-2].minor.yy242, 0);
3356   yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0);
3357 }
3358 #line 3358 "parse.c"
3359         /* No destructor defined for WHEN */
3360         /* No destructor defined for THEN */
3361         break;
3362       case 226:
3363 #line 707 "parse.y"
3364 {
3365   yygotominor.yy322 = sqliteExprListAppend(0, yymsp[-2].minor.yy242, 0);
3366   yygotominor.yy322 = sqliteExprListAppend(yygotominor.yy322, yymsp[0].minor.yy242, 0);
3367 }
3368 #line 3368 "parse.c"
3369         /* No destructor defined for WHEN */
3370         /* No destructor defined for THEN */
3371         break;
3372       case 227:
3373 #line 712 "parse.y"
3374 {yygotominor.yy242 = yymsp[0].minor.yy242;}
3375 #line 3375 "parse.c"
3376         /* No destructor defined for ELSE */
3377         break;
3378       case 228:
3379 #line 713 "parse.y"
3380 {yygotominor.yy242 = 0;}
3381 #line 3381 "parse.c"
3382         break;
3383       case 229:
3384 #line 715 "parse.y"
3385 {yygotominor.yy242 = yymsp[0].minor.yy242;}
3386 #line 3386 "parse.c"
3387         break;
3388       case 230:
3389 #line 716 "parse.y"
3390 {yygotominor.yy242 = 0;}
3391 #line 3391 "parse.c"
3392         break;
3393       case 231:
3394 #line 724 "parse.y"
3395 {yygotominor.yy322 = sqliteExprListAppend(yymsp[-2].minor.yy322,yymsp[0].minor.yy242,0);}
3396 #line 3396 "parse.c"
3397         /* No destructor defined for COMMA */
3398         break;
3399       case 232:
3400 #line 725 "parse.y"
3401 {yygotominor.yy322 = sqliteExprListAppend(0,yymsp[0].minor.yy242,0);}
3402 #line 3402 "parse.c"
3403         break;
3404       case 233:
3405 #line 726 "parse.y"
3406 {yygotominor.yy242 = yymsp[0].minor.yy242;}
3407 #line 3407 "parse.c"
3408         break;
3409       case 234:
3410 #line 727 "parse.y"
3411 {yygotominor.yy242 = 0;}
3412 #line 3412 "parse.c"
3413         break;
3414       case 235:
3415 #line 732 "parse.y"
3416 {
3417   SrcList *pSrc = sqliteSrcListAppend(0, &yymsp[-5].minor.yy298, &yymsp[-4].minor.yy298);
3418   if( yymsp[-9].minor.yy372!=OE_None ) yymsp[-9].minor.yy372 = yymsp[0].minor.yy372;
3419   if( yymsp[-9].minor.yy372==OE_Default) yymsp[-9].minor.yy372 = OE_Abort;
3420   sqliteCreateIndex(pParse, &yymsp[-7].minor.yy298, pSrc, yymsp[-2].minor.yy320, yymsp[-9].minor.yy372, &yymsp[-10].minor.yy0, &yymsp[-1].minor.yy0);
3421 }
3422 #line 3422 "parse.c"
3423         /* No destructor defined for INDEX */
3424         /* No destructor defined for ON */
3425         /* No destructor defined for LP */
3426         break;
3427       case 236:
3428 #line 740 "parse.y"
3429 { yygotominor.yy372 = OE_Abort; }
3430 #line 3430 "parse.c"
3431         /* No destructor defined for UNIQUE */
3432         break;
3433       case 237:
3434 #line 741 "parse.y"
3435 { yygotominor.yy372 = OE_None; }
3436 #line 3436 "parse.c"
3437         break;
3438       case 238:
3439 #line 749 "parse.y"
3440 {yygotominor.yy320 = 0;}
3441 #line 3441 "parse.c"
3442         break;
3443       case 239:
3444 #line 750 "parse.y"
3445 {yygotominor.yy320 = yymsp[-1].minor.yy320;}
3446 #line 3446 "parse.c"
3447         /* No destructor defined for LP */
3448         /* No destructor defined for RP */
3449         break;
3450       case 240:
3451 #line 751 "parse.y"
3452 {yygotominor.yy320 = sqliteIdListAppend(yymsp[-2].minor.yy320,&yymsp[0].minor.yy298);}
3453 #line 3453 "parse.c"
3454         /* No destructor defined for COMMA */
3455         break;
3456       case 241:
3457 #line 752 "parse.y"
3458 {yygotominor.yy320 = sqliteIdListAppend(0,&yymsp[0].minor.yy298);}
3459 #line 3459 "parse.c"
3460         break;
3461       case 242:
3462 #line 753 "parse.y"
3463 {yygotominor.yy298 = yymsp[-1].minor.yy298;}
3464 #line 3464 "parse.c"
3465         /* No destructor defined for sortorder */
3466         break;
3467       case 243:
3468 #line 758 "parse.y"
3469 {
3470   sqliteDropIndex(pParse, sqliteSrcListAppend(0,&yymsp[-1].minor.yy298,&yymsp[0].minor.yy298));
3471 }
3472 #line 3472 "parse.c"
3473         /* No destructor defined for DROP */
3474         /* No destructor defined for INDEX */
3475         break;
3476       case 244:
3477 #line 766 "parse.y"
3478 {sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-6].minor.yy298,&yymsp[-5].minor.yy298),&yymsp[-3].minor.yy298,&yymsp[0].minor.yy0,yymsp[-7].minor.yy372);}
3479 #line 3479 "parse.c"
3480         /* No destructor defined for COPY */
3481         /* No destructor defined for FROM */
3482         /* No destructor defined for USING */
3483         /* No destructor defined for DELIMITERS */
3484         break;
3485       case 245:
3486 #line 768 "parse.y"
3487 {sqliteCopy(pParse,sqliteSrcListAppend(0,&yymsp[-3].minor.yy298,&yymsp[-2].minor.yy298),&yymsp[0].minor.yy298,0,yymsp[-4].minor.yy372);}
3488 #line 3488 "parse.c"
3489         /* No destructor defined for COPY */
3490         /* No destructor defined for FROM */
3491         break;
3492       case 246:
3493 #line 772 "parse.y"
3494 {sqliteVacuum(pParse,0);}
3495 #line 3495 "parse.c"
3496         /* No destructor defined for VACUUM */
3497         break;
3498       case 247:
3499 #line 773 "parse.y"
3500 {sqliteVacuum(pParse,&yymsp[0].minor.yy298);}
3501 #line 3501 "parse.c"
3502         /* No destructor defined for VACUUM */
3503         break;
3504       case 248:
3505 #line 777 "parse.y"
3506 {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,0);}
3507 #line 3507 "parse.c"
3508         /* No destructor defined for PRAGMA */
3509         /* No destructor defined for EQ */
3510         break;
3511       case 249:
3512 #line 778 "parse.y"
3513 {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy0,0);}
3514 #line 3514 "parse.c"
3515         /* No destructor defined for PRAGMA */
3516         /* No destructor defined for EQ */
3517         break;
3518       case 250:
3519 #line 779 "parse.y"
3520 {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,0);}
3521 #line 3521 "parse.c"
3522         /* No destructor defined for PRAGMA */
3523         /* No destructor defined for EQ */
3524         break;
3525       case 251:
3526 #line 780 "parse.y"
3527 {sqlitePragma(pParse,&yymsp[-2].minor.yy298,&yymsp[0].minor.yy298,1);}
3528 #line 3528 "parse.c"
3529         /* No destructor defined for PRAGMA */
3530         /* No destructor defined for EQ */
3531         break;
3532       case 252:
3533 #line 781 "parse.y"
3534 {sqlitePragma(pParse,&yymsp[-3].minor.yy298,&yymsp[-1].minor.yy298,0);}
3535 #line 3535 "parse.c"
3536         /* No destructor defined for PRAGMA */
3537         /* No destructor defined for LP */
3538         /* No destructor defined for RP */
3539         break;
3540       case 253:
3541 #line 782 "parse.y"
3542 {sqlitePragma(pParse,&yymsp[0].minor.yy298,&yymsp[0].minor.yy298,0);}
3543 #line 3543 "parse.c"
3544         /* No destructor defined for PRAGMA */
3545         break;
3546       case 254:
3547 #line 783 "parse.y"
3548 {yygotominor.yy298 = yymsp[0].minor.yy298;}
3549 #line 3549 "parse.c"
3550         /* No destructor defined for plus_opt */
3551         break;
3552       case 255:
3553 #line 784 "parse.y"
3554 {yygotominor.yy298 = yymsp[0].minor.yy298;}
3555 #line 3555 "parse.c"
3556         /* No destructor defined for MINUS */
3557         break;
3558       case 256:
3559 #line 785 "parse.y"
3560 {yygotominor.yy298 = yymsp[0].minor.yy0;}
3561 #line 3561 "parse.c"
3562         break;
3563       case 257:
3564 #line 786 "parse.y"
3565 {yygotominor.yy298 = yymsp[0].minor.yy0;}
3566 #line 3566 "parse.c"
3567         break;
3568       case 258:
3569         /* No destructor defined for PLUS */
3570         break;
3571       case 259:
3572         break;
3573       case 260:
3574 #line 792 "parse.y"
3575 {
3576   Token all;
3577   all.z = yymsp[-4].minor.yy0.z;
3578   all.n = (yymsp[0].minor.yy0.z - yymsp[-4].minor.yy0.z) + yymsp[0].minor.yy0.n;
3579   sqliteFinishTrigger(pParse, yymsp[-1].minor.yy19, &all);
3580 }
3581 #line 3581 "parse.c"
3582         /* No destructor defined for trigger_decl */
3583         /* No destructor defined for BEGIN */
3584         break;
3585       case 261:
3586 #line 800 "parse.y"
3587 {
3588   SrcList *pTab = sqliteSrcListAppend(0, &yymsp[-3].minor.yy298, &yymsp[-2].minor.yy298);
3589   sqliteBeginTrigger(pParse, &yymsp[-7].minor.yy298, yymsp[-6].minor.yy372, yymsp[-5].minor.yy290.a, yymsp[-5].minor.yy290.b, pTab, yymsp[-1].minor.yy372, yymsp[0].minor.yy182, yymsp[-9].minor.yy372);
3590 }
3591 #line 3591 "parse.c"
3592         /* No destructor defined for TRIGGER */
3593         /* No destructor defined for ON */
3594         break;
3595       case 262:
3596 #line 806 "parse.y"
3597 { yygotominor.yy372 = TK_BEFORE; }
3598 #line 3598 "parse.c"
3599         /* No destructor defined for BEFORE */
3600         break;
3601       case 263:
3602 #line 807 "parse.y"
3603 { yygotominor.yy372 = TK_AFTER;  }
3604 #line 3604 "parse.c"
3605         /* No destructor defined for AFTER */
3606         break;
3607       case 264:
3608 #line 808 "parse.y"
3609 { yygotominor.yy372 = TK_INSTEAD;}
3610 #line 3610 "parse.c"
3611         /* No destructor defined for INSTEAD */
3612         /* No destructor defined for OF */
3613         break;
3614       case 265:
3615 #line 809 "parse.y"
3616 { yygotominor.yy372 = TK_BEFORE; }
3617 #line 3617 "parse.c"
3618         break;
3619       case 266:
3620 #line 813 "parse.y"
3621 { yygotominor.yy290.a = TK_DELETE; yygotominor.yy290.b = 0; }
3622 #line 3622 "parse.c"
3623         /* No destructor defined for DELETE */
3624         break;
3625       case 267:
3626 #line 814 "parse.y"
3627 { yygotominor.yy290.a = TK_INSERT; yygotominor.yy290.b = 0; }
3628 #line 3628 "parse.c"
3629         /* No destructor defined for INSERT */
3630         break;
3631       case 268:
3632 #line 815 "parse.y"
3633 { yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = 0;}
3634 #line 3634 "parse.c"
3635         /* No destructor defined for UPDATE */
3636         break;
3637       case 269:
3638 #line 816 "parse.y"
3639 {yygotominor.yy290.a = TK_UPDATE; yygotominor.yy290.b = yymsp[0].minor.yy320; }
3640 #line 3640 "parse.c"
3641         /* No destructor defined for UPDATE */
3642         /* No destructor defined for OF */
3643         break;
3644       case 270:
3645 #line 819 "parse.y"
3646 { yygotominor.yy372 = TK_ROW; }
3647 #line 3647 "parse.c"
3648         break;
3649       case 271:
3650 #line 820 "parse.y"
3651 { yygotominor.yy372 = TK_ROW; }
3652 #line 3652 "parse.c"
3653         /* No destructor defined for FOR */
3654         /* No destructor defined for EACH */
3655         /* No destructor defined for ROW */
3656         break;
3657       case 272:
3658 #line 821 "parse.y"
3659 { yygotominor.yy372 = TK_STATEMENT; }
3660 #line 3660 "parse.c"
3661         /* No destructor defined for FOR */
3662         /* No destructor defined for EACH */
3663         /* No destructor defined for STATEMENT */
3664         break;
3665       case 273:
3666 #line 824 "parse.y"
3667 { yygotominor.yy182 = 0; }
3668 #line 3668 "parse.c"
3669         break;
3670       case 274:
3671 #line 825 "parse.y"
3672 { yygotominor.yy182 = yymsp[0].minor.yy242; }
3673 #line 3673 "parse.c"
3674         /* No destructor defined for WHEN */
3675         break;
3676       case 275:
3677 #line 829 "parse.y"
3678 {
3679   yymsp[-2].minor.yy19->pNext = yymsp[0].minor.yy19;
3680   yygotominor.yy19 = yymsp[-2].minor.yy19;
3681 }
3682 #line 3682 "parse.c"
3683         /* No destructor defined for SEMI */
3684         break;
3685       case 276:
3686 #line 833 "parse.y"
3687 { yygotominor.yy19 = 0; }
3688 #line 3688 "parse.c"
3689         break;
3690       case 277:
3691 #line 839 "parse.y"
3692 { yygotominor.yy19 = sqliteTriggerUpdateStep(&yymsp[-3].minor.yy298, yymsp[-1].minor.yy322, yymsp[0].minor.yy242, yymsp[-4].minor.yy372); }
3693 #line 3693 "parse.c"
3694         /* No destructor defined for UPDATE */
3695         /* No destructor defined for SET */
3696         break;
3697       case 278:
3698 #line 844 "parse.y"
3699 {yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-5].minor.yy298, yymsp[-4].minor.yy320, yymsp[-1].minor.yy322, 0, yymsp[-7].minor.yy372);}
3700 #line 3700 "parse.c"
3701         /* No destructor defined for INTO */
3702         /* No destructor defined for VALUES */
3703         /* No destructor defined for LP */
3704         /* No destructor defined for RP */
3705         break;
3706       case 279:
3707 #line 847 "parse.y"
3708 {yygotominor.yy19 = sqliteTriggerInsertStep(&yymsp[-2].minor.yy298, yymsp[-1].minor.yy320, 0, yymsp[0].minor.yy179, yymsp[-4].minor.yy372);}
3709 #line 3709 "parse.c"
3710         /* No destructor defined for INTO */
3711         break;
3712       case 280:
3713 #line 851 "parse.y"
3714 {yygotominor.yy19 = sqliteTriggerDeleteStep(&yymsp[-1].minor.yy298, yymsp[0].minor.yy242);}
3715 #line 3715 "parse.c"
3716         /* No destructor defined for DELETE */
3717         /* No destructor defined for FROM */
3718         break;
3719       case 281:
3720 #line 854 "parse.y"
3721 {yygotominor.yy19 = sqliteTriggerSelectStep(yymsp[0].minor.yy179); }
3722 #line 3722 "parse.c"
3723         break;
3724       case 282:
3725 #line 857 "parse.y"
3726 {
3727   yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, 0);
3728   yygotominor.yy242->iColumn = OE_Ignore;
3729   sqliteExprSpan(yygotominor.yy242, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0);
3730 }
3731 #line 3731 "parse.c"
3732         /* No destructor defined for LP */
3733         /* No destructor defined for IGNORE */
3734         break;
3735       case 283:
3736 #line 862 "parse.y"
3737 {
3738   yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
3739   yygotominor.yy242->iColumn = OE_Rollback;
3740   sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
3741 }
3742 #line 3742 "parse.c"
3743         /* No destructor defined for LP */
3744         /* No destructor defined for ROLLBACK */
3745         /* No destructor defined for COMMA */
3746         break;
3747       case 284:
3748 #line 867 "parse.y"
3749 {
3750   yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
3751   yygotominor.yy242->iColumn = OE_Abort;
3752   sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
3753 }
3754 #line 3754 "parse.c"
3755         /* No destructor defined for LP */
3756         /* No destructor defined for ABORT */
3757         /* No destructor defined for COMMA */
3758         break;
3759       case 285:
3760 #line 872 "parse.y"
3761 {
3762   yygotominor.yy242 = sqliteExpr(TK_RAISE, 0, 0, &yymsp[-1].minor.yy298);
3763   yygotominor.yy242->iColumn = OE_Fail;
3764   sqliteExprSpan(yygotominor.yy242, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0);
3765 }
3766 #line 3766 "parse.c"
3767         /* No destructor defined for LP */
3768         /* No destructor defined for FAIL */
3769         /* No destructor defined for COMMA */
3770         break;
3771       case 286:
3772 #line 879 "parse.y"
3773 {
3774   sqliteDropTrigger(pParse,sqliteSrcListAppend(0,&yymsp[-1].minor.yy298,&yymsp[0].minor.yy298));
3775 }
3776 #line 3776 "parse.c"
3777         /* No destructor defined for DROP */
3778         /* No destructor defined for TRIGGER */
3779         break;
3780       case 287:
3781 #line 884 "parse.y"
3782 {
3783   sqliteAttach(pParse, &yymsp[-3].minor.yy298, &yymsp[-1].minor.yy298, &yymsp[0].minor.yy298);
3784 }
3785 #line 3785 "parse.c"
3786         /* No destructor defined for ATTACH */
3787         /* No destructor defined for database_kw_opt */
3788         /* No destructor defined for AS */
3789         break;
3790       case 288:
3791 #line 888 "parse.y"
3792 { yygotominor.yy298 = yymsp[0].minor.yy298; }
3793 #line 3793 "parse.c"
3794         /* No destructor defined for USING */
3795         break;
3796       case 289:
3797 #line 889 "parse.y"
3798 { yygotominor.yy298.z = 0; yygotominor.yy298.n = 0; }
3799 #line 3799 "parse.c"
3800         break;
3801       case 290:
3802         /* No destructor defined for DATABASE */
3803         break;
3804       case 291:
3805         break;
3806       case 292:
3807 #line 895 "parse.y"
3808 {
3809   sqliteDetach(pParse, &yymsp[0].minor.yy298);
3810 }
3811 #line 3811 "parse.c"
3812         /* No destructor defined for DETACH */
3813         /* No destructor defined for database_kw_opt */
3814         break;
3815   };
3816   yygoto = yyRuleInfo[yyruleno].lhs;
3817   yysize = yyRuleInfo[yyruleno].nrhs;
3818   yypParser->yyidx -= yysize;
3819   yyact = yy_find_reduce_action(yypParser,yygoto);
3820   if( yyact < YYNSTATE ){
3821     yy_shift(yypParser,yyact,yygoto,&yygotominor);
3822   }else if( yyact == YYNSTATE + YYNRULE + 1 ){
3823     yy_accept(yypParser);
3824   }
3825 }
3826 
3827 /*
3828 ** The following code executes when the parse fails
3829 */
yy_parse_failed(yyParser * yypParser)3830 static void yy_parse_failed(
3831   yyParser *yypParser           /* The parser */
3832 ){
3833   sqliteParserARG_FETCH;
3834 #ifndef NDEBUG
3835   if( yyTraceFILE ){
3836     fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt);
3837   }
3838 #endif
3839   while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3840   /* Here code is inserted which will be executed whenever the
3841   ** parser fails */
3842   sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3843 }
3844 
3845 /*
3846 ** The following code executes when a syntax error first occurs.
3847 */
yy_syntax_error(yyParser * yypParser,int yymajor,YYMINORTYPE yyminor)3848 static void yy_syntax_error(
3849   yyParser *yypParser,           /* The parser */
3850   int yymajor,                   /* The major type of the error token */
3851   YYMINORTYPE yyminor            /* The minor type of the error token */
3852 ){
3853   sqliteParserARG_FETCH;
3854 #define TOKEN (yyminor.yy0)
3855 #line 23 "parse.y"
3856 
3857   if( pParse->zErrMsg==0 ){
3858     if( TOKEN.z[0] ){
3859       sqliteErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN);
3860     }else{
3861       sqliteErrorMsg(pParse, "incomplete SQL statement");
3862     }
3863   }
3864 
3865 #line 3865 "parse.c"
3866   sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3867 }
3868 
3869 /*
3870 ** The following is executed when the parser accepts
3871 */
yy_accept(yyParser * yypParser)3872 static void yy_accept(
3873   yyParser *yypParser           /* The parser */
3874 ){
3875   sqliteParserARG_FETCH;
3876 #ifndef NDEBUG
3877   if( yyTraceFILE ){
3878     fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt);
3879   }
3880 #endif
3881   while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
3882   /* Here code is inserted which will be executed whenever the
3883   ** parser accepts */
3884   sqliteParserARG_STORE; /* Suppress warning about unused %extra_argument variable */
3885 }
3886 
3887 /* The main parser program.
3888 ** The first argument is a pointer to a structure obtained from
3889 ** "sqliteParserAlloc" which describes the current state of the parser.
3890 ** The second argument is the major token number.  The third is
3891 ** the minor token.  The fourth optional argument is whatever the
3892 ** user wants (and specified in the grammar) and is available for
3893 ** use by the action routines.
3894 **
3895 ** Inputs:
3896 ** <ul>
3897 ** <li> A pointer to the parser (an opaque structure.)
3898 ** <li> The major token number.
3899 ** <li> The minor token number.
3900 ** <li> An option argument of a grammar-specified type.
3901 ** </ul>
3902 **
3903 ** Outputs:
3904 ** None.
3905 */
sqliteParser(void * yyp,int yymajor,sqliteParserTOKENTYPE yyminor sqliteParserARG_PDECL)3906 void sqliteParser(
3907   void *yyp,                   /* The parser */
3908   int yymajor,                 /* The major token code number */
3909   sqliteParserTOKENTYPE yyminor       /* The value for the token */
3910   sqliteParserARG_PDECL               /* Optional %extra_argument parameter */
3911 ){
3912   YYMINORTYPE yyminorunion;
3913   int yyact;            /* The parser action. */
3914   int yyendofinput;     /* True if we are at the end of input */
3915   int yyerrorhit = 0;   /* True if yymajor has invoked an error */
3916   yyParser *yypParser;  /* The parser */
3917 
3918   /* (re)initialize the parser, if necessary */
3919   yypParser = (yyParser*)yyp;
3920   if( yypParser->yyidx<0 ){
3921     if( yymajor==0 ) return;
3922     yypParser->yyidx = 0;
3923     yypParser->yyerrcnt = -1;
3924     yypParser->yystack[0].stateno = 0;
3925     yypParser->yystack[0].major = 0;
3926   }
3927   yyminorunion.yy0 = yyminor;
3928   yyendofinput = (yymajor==0);
3929   sqliteParserARG_STORE;
3930 
3931 #ifndef NDEBUG
3932   if( yyTraceFILE ){
3933     fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]);
3934   }
3935 #endif
3936 
3937   do{
3938     yyact = yy_find_shift_action(yypParser,yymajor);
3939     if( yyact<YYNSTATE ){
3940       yy_shift(yypParser,yyact,yymajor,&yyminorunion);
3941       yypParser->yyerrcnt--;
3942       if( yyendofinput && yypParser->yyidx>=0 ){
3943         yymajor = 0;
3944       }else{
3945         yymajor = YYNOCODE;
3946       }
3947     }else if( yyact < YYNSTATE + YYNRULE ){
3948       yy_reduce(yypParser,yyact-YYNSTATE);
3949     }else if( yyact == YY_ERROR_ACTION ){
3950       int yymx;
3951 #ifndef NDEBUG
3952       if( yyTraceFILE ){
3953         fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt);
3954       }
3955 #endif
3956 #ifdef YYERRORSYMBOL
3957       /* A syntax error has occurred.
3958       ** The response to an error depends upon whether or not the
3959       ** grammar defines an error token "ERROR".
3960       **
3961       ** This is what we do if the grammar does define ERROR:
3962       **
3963       **  * Call the %syntax_error function.
3964       **
3965       **  * Begin popping the stack until we enter a state where
3966       **    it is legal to shift the error symbol, then shift
3967       **    the error symbol.
3968       **
3969       **  * Set the error count to three.
3970       **
3971       **  * Begin accepting and shifting new tokens.  No new error
3972       **    processing will occur until three tokens have been
3973       **    shifted successfully.
3974       **
3975       */
3976       if( yypParser->yyerrcnt<0 ){
3977         yy_syntax_error(yypParser,yymajor,yyminorunion);
3978       }
3979       yymx = yypParser->yystack[yypParser->yyidx].major;
3980       if( yymx==YYERRORSYMBOL || yyerrorhit ){
3981 #ifndef NDEBUG
3982         if( yyTraceFILE ){
3983           fprintf(yyTraceFILE,"%sDiscard input token %s\n",
3984              yyTracePrompt,yyTokenName[yymajor]);
3985         }
3986 #endif
3987         yy_destructor(yymajor,&yyminorunion);
3988         yymajor = YYNOCODE;
3989       }else{
3990          while(
3991           yypParser->yyidx >= 0 &&
3992           yymx != YYERRORSYMBOL &&
3993           (yyact = yy_find_shift_action(yypParser,YYERRORSYMBOL)) >= YYNSTATE
3994         ){
3995           yy_pop_parser_stack(yypParser);
3996         }
3997         if( yypParser->yyidx < 0 || yymajor==0 ){
3998           yy_destructor(yymajor,&yyminorunion);
3999           yy_parse_failed(yypParser);
4000           yymajor = YYNOCODE;
4001         }else if( yymx!=YYERRORSYMBOL ){
4002           YYMINORTYPE u2;
4003           u2.YYERRSYMDT = 0;
4004           yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2);
4005         }
4006       }
4007       yypParser->yyerrcnt = 3;
4008       yyerrorhit = 1;
4009 #else  /* YYERRORSYMBOL is not defined */
4010       /* This is what we do if the grammar does not define ERROR:
4011       **
4012       **  * Report an error message, and throw away the input token.
4013       **
4014       **  * If the input token is $, then fail the parse.
4015       **
4016       ** As before, subsequent error messages are suppressed until
4017       ** three input tokens have been successfully shifted.
4018       */
4019       if( yypParser->yyerrcnt<=0 ){
4020         yy_syntax_error(yypParser,yymajor,yyminorunion);
4021       }
4022       yypParser->yyerrcnt = 3;
4023       yy_destructor(yymajor,&yyminorunion);
4024       if( yyendofinput ){
4025         yy_parse_failed(yypParser);
4026       }
4027       yymajor = YYNOCODE;
4028 #endif
4029     }else{
4030       yy_accept(yypParser);
4031       yymajor = YYNOCODE;
4032     }
4033   }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 );
4034   return;
4035 }
4036