~ubuntu-branches/ubuntu/karmic/gears/karmic

« back to all changes in this revision

Viewing changes to third_party/sqlite_google/preprocessed/parse.c

  • Committer: Bazaar Package Importer
  • Author(s): Stefan Lesicnik
  • Date: 2009-04-30 19:15:25 UTC
  • Revision ID: james.westby@ubuntu.com-20090430191525-0790sb5wzg8ou0xb
Tags: upstream-0.5.21.0~svn3334+dfsg
ImportĀ upstreamĀ versionĀ 0.5.21.0~svn3334+dfsg

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