~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/sqlite/parse.c

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

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