parse.c
上传用户:sunhongbo
上传日期:2022-01-25
资源大小:3010k
文件大小:130k
源码类别:

数据库系统

开发平台:

C/C++

  1. /* Driver template for the LEMON parser generator.
  2. ** The author disclaims copyright to this source code.
  3. */
  4. /* First off, code is include which follows the "include" declaration
  5. ** in the input file. */
  6. #include <stdio.h>
  7. #line 51 "parse.y"
  8. #include "sqliteInt.h"
  9. /*
  10. ** An instance of this structure holds information about the
  11. ** LIMIT clause of a SELECT statement.
  12. */
  13. struct LimitVal {
  14.   Expr *pLimit;    /* The LIMIT expression.  NULL if there is no limit */
  15.   Expr *pOffset;   /* The OFFSET expression.  NULL if there is none */
  16. };
  17. /*
  18. ** An instance of this structure is used to store the LIKE,
  19. ** GLOB, NOT LIKE, and NOT GLOB operators.
  20. */
  21. struct LikeOp {
  22.   Token eOperator;  /* "like" or "glob" or "regexp" */
  23.   int not;         /* True if the NOT keyword is present */
  24. };
  25. /*
  26. ** An instance of the following structure describes the event of a
  27. ** TRIGGER.  "a" is the event type, one of TK_UPDATE, TK_INSERT,
  28. ** TK_DELETE, or TK_INSTEAD.  If the event is of the form
  29. **
  30. **      UPDATE ON (a,b,c)
  31. **
  32. ** Then the "b" IdList records the list "a,b,c".
  33. */
  34. struct TrigEvent { int a; IdList * b; };
  35. /*
  36. ** An instance of this structure holds the ATTACH key and the key type.
  37. */
  38. struct AttachKey { int type;  Token key; };
  39. #line 47 "parse.c"
  40. /* Next is all token values, in a form suitable for use by makeheaders.
  41. ** This section will be null unless lemon is run with the -m switch.
  42. */
  43. /* 
  44. ** These constants (all generated automatically by the parser generator)
  45. ** specify the various kinds of tokens (terminals) that the parser
  46. ** understands. 
  47. **
  48. ** Each symbol here is a terminal symbol in the grammar.
  49. */
  50. /* Make sure the INTERFACE macro is defined.
  51. */
  52. #ifndef INTERFACE
  53. # define INTERFACE 1
  54. #endif
  55. /* The next thing included is series of defines which control
  56. ** various aspects of the generated parser.
  57. **    YYCODETYPE         is the data type used for storing terminal
  58. **                       and nonterminal numbers.  "unsigned char" is
  59. **                       used if there are fewer than 250 terminals
  60. **                       and nonterminals.  "int" is used otherwise.
  61. **    YYNOCODE           is a number of type YYCODETYPE which corresponds
  62. **                       to no legal terminal or nonterminal number.  This
  63. **                       number is used to fill in empty slots of the hash 
  64. **                       table.
  65. **    YYFALLBACK         If defined, this indicates that one or more tokens
  66. **                       have fall-back values which should be used if the
  67. **                       original value of the token will not parse.
  68. **    YYACTIONTYPE       is the data type used for storing terminal
  69. **                       and nonterminal numbers.  "unsigned char" is
  70. **                       used if there are fewer than 250 rules and
  71. **                       states combined.  "int" is used otherwise.
  72. **    sqlite3ParserTOKENTYPE     is the data type used for minor tokens given 
  73. **                       directly to the parser from the tokenizer.
  74. **    YYMINORTYPE        is the data type used for all minor tokens.
  75. **                       This is typically a union of many types, one of
  76. **                       which is sqlite3ParserTOKENTYPE.  The entry in the union
  77. **                       for base tokens is called "yy0".
  78. **    YYSTACKDEPTH       is the maximum depth of the parser's stack.  If
  79. **                       zero the stack is dynamically sized using realloc()
  80. **    sqlite3ParserARG_SDECL     A static variable declaration for the %extra_argument
  81. **    sqlite3ParserARG_PDECL     A parameter declaration for the %extra_argument
  82. **    sqlite3ParserARG_STORE     Code to store %extra_argument into yypParser
  83. **    sqlite3ParserARG_FETCH     Code to extract %extra_argument from yypParser
  84. **    YYNSTATE           the combined number of states.
  85. **    YYNRULE            the number of rules in the grammar
  86. **    YYERRORSYMBOL      is the code number of the error symbol.  If not
  87. **                       defined, then do no error processing.
  88. */
  89. #define YYCODETYPE unsigned char
  90. #define YYNOCODE 248
  91. #define YYACTIONTYPE unsigned short int
  92. #define YYWILDCARD 59
  93. #define sqlite3ParserTOKENTYPE Token
  94. typedef union {
  95.   sqlite3ParserTOKENTYPE yy0;
  96.   int yy46;
  97.   struct LikeOp yy72;
  98.   Expr* yy172;
  99.   ExprList* yy174;
  100.   Select* yy219;
  101.   struct LimitVal yy234;
  102.   TriggerStep* yy243;
  103.   struct TrigEvent yy370;
  104.   SrcList* yy373;
  105.   struct {int value; int mask;} yy405;
  106.   Token yy410;
  107.   IdList* yy432;
  108. } YYMINORTYPE;
  109. #ifndef YYSTACKDEPTH
  110. #define YYSTACKDEPTH 100
  111. #endif
  112. #define sqlite3ParserARG_SDECL Parse *pParse;
  113. #define sqlite3ParserARG_PDECL ,Parse *pParse
  114. #define sqlite3ParserARG_FETCH Parse *pParse = yypParser->pParse
  115. #define sqlite3ParserARG_STORE yypParser->pParse = pParse
  116. #define YYNSTATE 588
  117. #define YYNRULE 312
  118. #define YYFALLBACK 1
  119. #define YY_NO_ACTION      (YYNSTATE+YYNRULE+2)
  120. #define YY_ACCEPT_ACTION  (YYNSTATE+YYNRULE+1)
  121. #define YY_ERROR_ACTION   (YYNSTATE+YYNRULE)
  122. /* The yyzerominor constant is used to initialize instances of
  123. ** YYMINORTYPE objects to zero. */
  124. static const YYMINORTYPE yyzerominor;
  125. /* Next are that tables used to determine what action to take based on the
  126. ** current state and lookahead token.  These tables are used to implement
  127. ** functions that take a state number and lookahead value and return an
  128. ** action integer.  
  129. **
  130. ** Suppose the action integer is N.  Then the action is determined as
  131. ** follows
  132. **
  133. **   0 <= N < YYNSTATE                  Shift N.  That is, push the lookahead
  134. **                                      token onto the stack and goto state N.
  135. **
  136. **   YYNSTATE <= N < YYNSTATE+YYNRULE   Reduce by rule N-YYNSTATE.
  137. **
  138. **   N == YYNSTATE+YYNRULE              A syntax error has occurred.
  139. **
  140. **   N == YYNSTATE+YYNRULE+1            The parser accepts its input.
  141. **
  142. **   N == YYNSTATE+YYNRULE+2            No such action.  Denotes unused
  143. **                                      slots in the yy_action[] table.
  144. **
  145. ** The action table is constructed as a single large table named yy_action[].
  146. ** Given state S and lookahead X, the action is computed as
  147. **
  148. **      yy_action[ yy_shift_ofst[S] + X ]
  149. **
  150. ** If the index value yy_shift_ofst[S]+X is out of range or if the value
  151. ** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
  152. ** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
  153. ** and that yy_default[S] should be used instead.  
  154. **
  155. ** The formula above is for computing the action when the lookahead is
  156. ** a terminal symbol.  If the lookahead is a non-terminal (as occurs after
  157. ** a reduce action) then the yy_reduce_ofst[] array is used in place of
  158. ** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
  159. ** YY_SHIFT_USE_DFLT.
  160. **
  161. ** The following are the tables generated in this section:
  162. **
  163. **  yy_action[]        A single table containing all actions.
  164. **  yy_lookahead[]     A table containing the lookahead for each entry in
  165. **                     yy_action.  Used to detect hash collisions.
  166. **  yy_shift_ofst[]    For each state, the offset into yy_action for
  167. **                     shifting terminals.
  168. **  yy_reduce_ofst[]   For each state, the offset into yy_action for
  169. **                     shifting non-terminals after a reduce.
  170. **  yy_default[]       Default action for each state.
  171. */
  172. static const YYACTIONTYPE yy_action[] = {
  173.  /*     0 */   292,  901,  124,  587,  409,  172,    2,  418,   61,   61,
  174.  /*    10 */    61,   61,  519,   63,   63,   63,   63,   64,   64,   65,
  175.  /*    20 */    65,   65,   66,  210,  447,  212,  425,  431,   68,   63,
  176.  /*    30 */    63,   63,   63,   64,   64,   65,   65,   65,   66,  210,
  177.  /*    40 */   391,  388,  396,  451,   60,   59,  297,  435,  436,  432,
  178.  /*    50 */   432,   62,   62,   61,   61,   61,   61,  263,   63,   63,
  179.  /*    60 */    63,   63,   64,   64,   65,   65,   65,   66,  210,  292,
  180.  /*    70 */   493,  494,  418,  489,  208,   82,   67,  420,   69,  154,
  181.  /*    80 */    63,   63,   63,   63,   64,   64,   65,   65,   65,   66,
  182.  /*    90 */   210,   67,  462,   69,  154,  425,  431,  573,  264,   58,
  183.  /*   100 */    64,   64,   65,   65,   65,   66,  210,  397,  398,  422,
  184.  /*   110 */   422,  422,  292,   60,   59,  297,  435,  436,  432,  432,
  185.  /*   120 */    62,   62,   61,   61,   61,   61,  317,   63,   63,   63,
  186.  /*   130 */    63,   64,   64,   65,   65,   65,   66,  210,  425,  431,
  187.  /*   140 */    94,   65,   65,   65,   66,  210,  396,  210,  414,   34,
  188.  /*   150 */    56,  298,  442,  443,  410,  488,   60,   59,  297,  435,
  189.  /*   160 */   436,  432,  432,   62,   62,   61,   61,   61,   61,  490,
  190.  /*   170 */    63,   63,   63,   63,   64,   64,   65,   65,   65,   66,
  191.  /*   180 */   210,  292,  257,  524,  295,  571,  113,  408,  522,  451,
  192.  /*   190 */   331,  317,  407,   20,  418,  340,  519,  396,  532,  531,
  193.  /*   200 */   505,  447,  212,  570,  569,  208,  530,  425,  431,  149,
  194.  /*   210 */   150,  397,  398,  414,   41,  211,  151,  533,  372,  489,
  195.  /*   220 */   261,  568,  259,  420,  292,   60,   59,  297,  435,  436,
  196.  /*   230 */   432,  432,   62,   62,   61,   61,   61,   61,  317,   63,
  197.  /*   240 */    63,   63,   63,   64,   64,   65,   65,   65,   66,  210,
  198.  /*   250 */   425,  431,  447,  333,  215,  422,  422,  422,  363,  418,
  199.  /*   260 */   414,   41,  397,  398,  366,  567,  211,  292,   60,   59,
  200.  /*   270 */   297,  435,  436,  432,  432,   62,   62,   61,   61,   61,
  201.  /*   280 */    61,  396,   63,   63,   63,   63,   64,   64,   65,   65,
  202.  /*   290 */    65,   66,  210,  425,  431,  491,  300,  524,  474,   66,
  203.  /*   300 */   210,  214,  474,  229,  411,  286,  534,   20,  449,  523,
  204.  /*   310 */   168,   60,   59,  297,  435,  436,  432,  432,   62,   62,
  205.  /*   320 */    61,   61,   61,   61,  474,   63,   63,   63,   63,   64,
  206.  /*   330 */    64,   65,   65,   65,   66,  210,  209,  480,  317,   77,
  207.  /*   340 */   292,  239,  300,   55,  484,  230,  397,  398,  181,  547,
  208.  /*   350 */   494,  345,  348,  349,   67,  152,   69,  154,  339,  524,
  209.  /*   360 */   414,   35,  350,  241,  221,  370,  425,  431,  578,   20,
  210.  /*   370 */   164,  118,  243,  343,  248,  344,  176,  322,  442,  443,
  211.  /*   380 */   414,    3,   80,  252,   60,   59,  297,  435,  436,  432,
  212.  /*   390 */   432,   62,   62,   61,   61,   61,   61,  174,   63,   63,
  213.  /*   400 */    63,   63,   64,   64,   65,   65,   65,   66,  210,  292,
  214.  /*   410 */   221,  550,  236,  487,  510,  353,  317,  118,  243,  343,
  215.  /*   420 */   248,  344,  176,  181,  317,  525,  345,  348,  349,  252,
  216.  /*   430 */   223,  415,  155,  464,  511,  425,  431,  350,  414,   34,
  217.  /*   440 */   465,  211,  177,  175,  160,  237,  414,   34,  338,  549,
  218.  /*   450 */   449,  323,  168,   60,   59,  297,  435,  436,  432,  432,
  219.  /*   460 */    62,   62,   61,   61,   61,   61,  415,   63,   63,   63,
  220.  /*   470 */    63,   64,   64,   65,   65,   65,   66,  210,  292,  542,
  221.  /*   480 */   335,  517,  504,  541,  456,  571,  302,   19,  331,  144,
  222.  /*   490 */   317,  390,  317,  330,    2,  362,  457,  294,  483,  373,
  223.  /*   500 */   269,  268,  252,  570,  425,  431,  588,  391,  388,  458,
  224.  /*   510 */   208,  495,  414,   49,  414,   49,  303,  585,  892,  159,
  225.  /*   520 */   892,  496,   60,   59,  297,  435,  436,  432,  432,   62,
  226.  /*   530 */    62,   61,   61,   61,   61,  201,   63,   63,   63,   63,
  227.  /*   540 */    64,   64,   65,   65,   65,   66,  210,  292,  317,  181,
  228.  /*   550 */   439,  255,  345,  348,  349,  370,  153,  582,  308,  251,
  229.  /*   560 */   309,  452,   76,  350,   78,  382,  211,  426,  427,  415,
  230.  /*   570 */   414,   27,  319,  425,  431,  440,    1,   22,  585,  891,
  231.  /*   580 */   396,  891,  544,  478,  320,  263,  438,  438,  429,  430,
  232.  /*   590 */   415,   60,   59,  297,  435,  436,  432,  432,   62,   62,
  233.  /*   600 */    61,   61,   61,   61,  328,   63,   63,   63,   63,   64,
  234.  /*   610 */    64,   65,   65,   65,   66,  210,  292,  428,  582,  374,
  235.  /*   620 */   224,   93,  517,    9,  336,  396,  557,  396,  456,   67,
  236.  /*   630 */   396,   69,  154,  399,  400,  401,  320,  238,  438,  438,
  237.  /*   640 */   457,  318,  425,  431,  299,  397,  398,  320,  433,  438,
  238.  /*   650 */   438,  581,  291,  458,  225,  327,    5,  222,  546,  292,
  239.  /*   660 */    60,   59,  297,  435,  436,  432,  432,   62,   62,   61,
  240.  /*   670 */    61,   61,   61,  395,   63,   63,   63,   63,   64,   64,
  241.  /*   680 */    65,   65,   65,   66,  210,  425,  431,  482,  313,  392,
  242.  /*   690 */   397,  398,  397,  398,  207,  397,  398,  824,  273,  517,
  243.  /*   700 */   251,  200,  292,   60,   59,  297,  435,  436,  432,  432,
  244.  /*   710 */    62,   62,   61,   61,   61,   61,  470,   63,   63,   63,
  245.  /*   720 */    63,   64,   64,   65,   65,   65,   66,  210,  425,  431,
  246.  /*   730 */   171,  160,  263,  263,  304,  415,  276,  119,  274,  263,
  247.  /*   740 */   517,  517,  263,  517,  192,  292,   60,   70,  297,  435,
  248.  /*   750 */   436,  432,  432,   62,   62,   61,   61,   61,   61,  379,
  249.  /*   760 */    63,   63,   63,   63,   64,   64,   65,   65,   65,   66,
  250.  /*   770 */   210,  425,  431,  384,  559,  305,  306,  251,  415,  320,
  251.  /*   780 */   560,  438,  438,  561,  540,  360,  540,  387,  292,  196,
  252.  /*   790 */    59,  297,  435,  436,  432,  432,   62,   62,   61,   61,
  253.  /*   800 */    61,   61,  371,   63,   63,   63,   63,   64,   64,   65,
  254.  /*   810 */    65,   65,   66,  210,  425,  431,  396,  275,  251,  251,
  255.  /*   820 */   172,  250,  418,  415,  386,  367,  178,  179,  180,  469,
  256.  /*   830 */   311,  123,  156,  128,  297,  435,  436,  432,  432,   62,
  257.  /*   840 */    62,   61,   61,   61,   61,  317,   63,   63,   63,   63,
  258.  /*   850 */    64,   64,   65,   65,   65,   66,  210,   72,  324,  177,
  259.  /*   860 */     4,  317,  263,  317,  296,  263,  415,  414,   28,  317,
  260.  /*   870 */   263,  317,  321,   72,  324,  317,    4,  421,  445,  445,
  261.  /*   880 */   296,  397,  398,  414,   23,  414,   32,  418,  321,  326,
  262.  /*   890 */   329,  414,   53,  414,   52,  317,  158,  414,   98,  451,
  263.  /*   900 */   317,  194,  317,  277,  317,  326,  378,  471,  502,  317,
  264.  /*   910 */   478,  279,  478,  165,  294,  451,  317,  414,   96,   75,
  265.  /*   920 */    74,  469,  414,  101,  414,  102,  414,  112,   73,  315,
  266.  /*   930 */   316,  414,  114,  420,  448,   75,   74,  481,  414,   16,
  267.  /*   940 */   381,  317,  183,  467,   73,  315,  316,   72,  324,  420,
  268.  /*   950 */     4,  208,  317,  186,  296,  317,  499,  500,  476,  208,
  269.  /*   960 */   173,  341,  321,  414,   99,  422,  422,  422,  423,  424,
  270.  /*   970 */    11,  361,  380,  307,  414,   33,  415,  414,   97,  326,
  271.  /*   980 */   460,  422,  422,  422,  423,  424,   11,  415,  413,  451,
  272.  /*   990 */   413,  162,  412,  317,  412,  468,  226,  227,  228,  104,
  273.  /*  1000 */    84,  473,  317,  509,  508,  317,  622,  477,  317,   75,
  274.  /*  1010 */    74,  249,  205,   21,  281,  414,   24,  418,   73,  315,
  275.  /*  1020 */   316,  282,  317,  420,  414,   54,  507,  414,  115,  317,
  276.  /*  1030 */   414,  116,  506,  203,  147,  549,  244,  512,  526,  202,
  277.  /*  1040 */   317,  513,  204,  317,  414,  117,  317,  245,  317,   18,
  278.  /*  1050 */   317,  414,   25,  317,  256,  422,  422,  422,  423,  424,
  279.  /*  1060 */    11,  258,  414,   36,  260,  414,   37,  317,  414,   26,
  280.  /*  1070 */   414,   38,  414,   39,  262,  414,   40,  317,  514,  317,
  281.  /*  1080 */   128,  317,  418,  317,  189,  377,  278,  268,  267,  414,
  282.  /*  1090 */    42,  293,  317,  254,  317,  128,  208,  365,    8,  414,
  283.  /*  1100 */    43,  414,   44,  414,   29,  414,   30,  352,  368,  128,
  284.  /*  1110 */   317,  545,  317,  128,  414,   45,  414,   46,  317,  583,
  285.  /*  1120 */   383,  553,  317,  173,  554,  317,   91,  317,  564,  369,
  286.  /*  1130 */    91,  357,  414,   47,  414,   48,  580,  270,  290,  271,
  287.  /*  1140 */   414,   31,  272,  556,  414,   10,  566,  414,   50,  414,
  288.  /*  1150 */    51,  280,  283,  284,  577,  146,  463,  405,  584,  231,
  289.  /*  1160 */   325,  419,  444,  466,  446,  246,  505,  552,  563,  515,
  290.  /*  1170 */   516,  520,  163,  518,  394,  347,    7,  402,  403,  404,
  291.  /*  1180 */   314,   84,  232,  334,  332,   83,   79,  416,  170,   57,
  292.  /*  1190 */   213,  461,  125,   85,  337,  342,  492,  301,  233,  498,
  293.  /*  1200 */   497,  105,  502,  219,  354,  247,  521,  234,  501,  235,
  294.  /*  1210 */   287,  417,  503,  218,  527,  528,  529,  358,  240,  535,
  295.  /*  1220 */   475,  242,  288,  479,  356,  184,  185,  121,  187,  132,
  296.  /*  1230 */   188,  548,  537,   88,  190,  193,  364,  142,  375,  376,
  297.  /*  1240 */   555,  133,  220,  562,  134,  310,  135,  138,  136,  574,
  298.  /*  1250 */   575,  141,  576,  265,  579,  100,  538,  217,  393,   92,
  299.  /*  1260 */   103,   95,  406,  623,  624,  166,  434,  167,  437,   71,
  300.  /*  1270 */   453,  441,  450,   17,  143,  157,  169,    6,  111,   13,
  301.  /*  1280 */   454,  455,  459,  472,  126,   81,   12,  127,  161,  485,
  302.  /*  1290 */   486,  216,   86,  122,  106,  182,  253,  346,  312,  107,
  303.  /*  1300 */   120,   87,  351,  108,  245,  355,  145,  536,  359,  129,
  304.  /*  1310 */   173,  266,  191,  109,  289,  551,  130,  539,  195,  543,
  305.  /*  1320 */   131,   14,  197,  199,  198,  558,  137,  139,  140,  110,
  306.  /*  1330 */    15,  285,  572,  206,  389,  565,  385,  148,  586,  902,
  307.  /*  1340 */   902,  902,  902,  902,  902,   89,   90,
  308. };
  309. static const YYCODETYPE yy_lookahead[] = {
  310.  /*     0 */    16,  139,  140,  141,  168,   21,  144,   23,   69,   70,
  311.  /*    10 */    71,   72,  176,   74,   75,   76,   77,   78,   79,   80,
  312.  /*    20 */    81,   82,   83,   84,   78,   79,   42,   43,   73,   74,
  313.  /*    30 */    75,   76,   77,   78,   79,   80,   81,   82,   83,   84,
  314.  /*    40 */     1,    2,   23,   58,   60,   61,   62,   63,   64,   65,
  315.  /*    50 */    66,   67,   68,   69,   70,   71,   72,  147,   74,   75,
  316.  /*    60 */    76,   77,   78,   79,   80,   81,   82,   83,   84,   16,
  317.  /*    70 */   185,  186,   88,   88,  110,   22,  217,   92,  219,  220,
  318.  /*    80 */    74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
  319.  /*    90 */    84,  217,  218,  219,  220,   42,   43,  238,  188,   46,
  320.  /*   100 */    78,   79,   80,   81,   82,   83,   84,   88,   89,  124,
  321.  /*   110 */   125,  126,   16,   60,   61,   62,   63,   64,   65,   66,
  322.  /*   120 */    67,   68,   69,   70,   71,   72,  147,   74,   75,   76,
  323.  /*   130 */    77,   78,   79,   80,   81,   82,   83,   84,   42,   43,
  324.  /*   140 */    44,   80,   81,   82,   83,   84,   23,   84,  169,  170,
  325.  /*   150 */    19,  164,  165,  166,   23,  169,   60,   61,   62,   63,
  326.  /*   160 */    64,   65,   66,   67,   68,   69,   70,   71,   72,  169,
  327.  /*   170 */    74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
  328.  /*   180 */    84,   16,   14,  147,  150,  147,   21,  167,  168,   58,
  329.  /*   190 */   211,  147,  156,  157,   23,  216,  176,   23,  181,  176,
  330.  /*   200 */   177,   78,   79,  165,  166,  110,  183,   42,   43,   78,
  331.  /*   210 */    79,   88,   89,  169,  170,  228,  180,  181,  123,   88,
  332.  /*   220 */    52,   98,   54,   92,   16,   60,   61,   62,   63,   64,
  333.  /*   230 */    65,   66,   67,   68,   69,   70,   71,   72,  147,   74,
  334.  /*   240 */    75,   76,   77,   78,   79,   80,   81,   82,   83,   84,
  335.  /*   250 */    42,   43,   78,  209,  210,  124,  125,  126,  224,   88,
  336.  /*   260 */   169,  170,   88,   89,  230,  227,  228,   16,   60,   61,
  337.  /*   270 */    62,   63,   64,   65,   66,   67,   68,   69,   70,   71,
  338.  /*   280 */    72,   23,   74,   75,   76,   77,   78,   79,   80,   81,
  339.  /*   290 */    82,   83,   84,   42,   43,  160,   16,  147,  161,   83,
  340.  /*   300 */    84,  210,  161,  153,  169,  158,  156,  157,  161,  162,
  341.  /*   310 */   163,   60,   61,   62,   63,   64,   65,   66,   67,   68,
  342.  /*   320 */    69,   70,   71,   72,  161,   74,   75,   76,   77,   78,
  343.  /*   330 */    79,   80,   81,   82,   83,   84,  192,  200,  147,  131,
  344.  /*   340 */    16,  200,   16,  199,   20,  190,   88,   89,   90,  185,
  345.  /*   350 */   186,   93,   94,   95,  217,   22,  219,  220,  147,  147,
  346.  /*   360 */   169,  170,  104,  200,   84,  147,   42,   43,  156,  157,
  347.  /*   370 */    90,   91,   92,   93,   94,   95,   96,  164,  165,  166,
  348.  /*   380 */   169,  170,  131,  103,   60,   61,   62,   63,   64,   65,
  349.  /*   390 */    66,   67,   68,   69,   70,   71,   72,  155,   74,   75,
  350.  /*   400 */    76,   77,   78,   79,   80,   81,   82,   83,   84,   16,
  351.  /*   410 */    84,   11,  221,   20,   30,   16,  147,   91,   92,   93,
  352.  /*   420 */    94,   95,   96,   90,  147,  181,   93,   94,   95,  103,
  353.  /*   430 */   212,  189,  155,   27,   50,   42,   43,  104,  169,  170,
  354.  /*   440 */    34,  228,   43,  201,  202,  147,  169,  170,  206,   49,
  355.  /*   450 */   161,  162,  163,   60,   61,   62,   63,   64,   65,   66,
  356.  /*   460 */    67,   68,   69,   70,   71,   72,  189,   74,   75,   76,
  357.  /*   470 */    77,   78,   79,   80,   81,   82,   83,   84,   16,   25,
  358.  /*   480 */   211,  147,   20,   29,   12,  147,  102,   19,  211,   21,
  359.  /*   490 */   147,  141,  147,  216,  144,   41,   24,   98,   20,   99,
  360.  /*   500 */   100,  101,  103,  165,   42,   43,    0,    1,    2,   37,
  361.  /*   510 */   110,   39,  169,  170,  169,  170,  182,   19,   20,  147,
  362.  /*   520 */    22,   49,   60,   61,   62,   63,   64,   65,   66,   67,
  363.  /*   530 */    68,   69,   70,   71,   72,  155,   74,   75,   76,   77,
  364.  /*   540 */    78,   79,   80,   81,   82,   83,   84,   16,  147,   90,
  365.  /*   550 */    20,   20,   93,   94,   95,  147,  155,   59,  215,  225,
  366.  /*   560 */   215,   20,  130,  104,  132,  227,  228,   42,   43,  189,
  367.  /*   570 */   169,  170,   16,   42,   43,   20,   19,   22,   19,   20,
  368.  /*   580 */    23,   22,   18,  147,  106,  147,  108,  109,   63,   64,
  369.  /*   590 */   189,   60,   61,   62,   63,   64,   65,   66,   67,   68,
  370.  /*   600 */    69,   70,   71,   72,  186,   74,   75,   76,   77,   78,
  371.  /*   610 */    79,   80,   81,   82,   83,   84,   16,   92,   59,   55,
  372.  /*   620 */   212,   21,  147,   19,  147,   23,  188,   23,   12,  217,
  373.  /*   630 */    23,  219,  220,    7,    8,    9,  106,  147,  108,  109,
  374.  /*   640 */    24,  147,   42,   43,  208,   88,   89,  106,   92,  108,
  375.  /*   650 */   109,  244,  245,   37,  145,   39,  191,  182,   94,   16,
  376.  /*   660 */    60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
  377.  /*   670 */    70,   71,   72,  147,   74,   75,   76,   77,   78,   79,
  378.  /*   680 */    80,   81,   82,   83,   84,   42,   43,   80,  142,  143,
  379.  /*   690 */    88,   89,   88,   89,  148,   88,   89,  133,   14,  147,
  380.  /*   700 */   225,  155,   16,   60,   61,   62,   63,   64,   65,   66,
  381.  /*   710 */    67,   68,   69,   70,   71,   72,  114,   74,   75,   76,
  382.  /*   720 */    77,   78,   79,   80,   81,   82,   83,   84,   42,   43,
  383.  /*   730 */   201,  202,  147,  147,  182,  189,   52,  147,   54,  147,
  384.  /*   740 */   147,  147,  147,  147,  155,   16,   60,   61,   62,   63,
  385.  /*   750 */    64,   65,   66,   67,   68,   69,   70,   71,   72,  213,
  386.  /*   760 */    74,   75,   76,   77,   78,   79,   80,   81,   82,   83,
  387.  /*   770 */    84,   42,   43,  188,  188,  182,  182,  225,  189,  106,
  388.  /*   780 */   188,  108,  109,  188,   99,  100,  101,  241,   16,  155,
  389.  /*   790 */    61,   62,   63,   64,   65,   66,   67,   68,   69,   70,
  390.  /*   800 */    71,   72,  213,   74,   75,   76,   77,   78,   79,   80,
  391.  /*   810 */    81,   82,   83,   84,   42,   43,   23,  133,  225,  225,
  392.  /*   820 */    21,  225,   23,  189,  239,  236,   99,  100,  101,   22,
  393.  /*   830 */   242,  243,  155,   22,   62,   63,   64,   65,   66,   67,
  394.  /*   840 */    68,   69,   70,   71,   72,  147,   74,   75,   76,   77,
  395.  /*   850 */    78,   79,   80,   81,   82,   83,   84,   16,   17,   43,
  396.  /*   860 */    19,  147,  147,  147,   23,  147,  189,  169,  170,  147,
  397.  /*   870 */   147,  147,   31,   16,   17,  147,   19,  147,  124,  125,
  398.  /*   880 */    23,   88,   89,  169,  170,  169,  170,   88,   31,   48,
  399.  /*   890 */   147,  169,  170,  169,  170,  147,   89,  169,  170,   58,
  400.  /*   900 */   147,   22,  147,  188,  147,   48,  188,  114,   97,  147,
  401.  /*   910 */   147,  188,  147,   19,   98,   58,  147,  169,  170,   78,
  402.  /*   920 */    79,  114,  169,  170,  169,  170,  169,  170,   87,   88,
  403.  /*   930 */    89,  169,  170,   92,  161,   78,   79,   80,  169,  170,
  404.  /*   940 */    91,  147,  155,   22,   87,   88,   89,   16,   17,   92,
  405.  /*   950 */    19,  110,  147,  155,   23,  147,    7,    8,   20,  110,
  406.  /*   960 */    22,   80,   31,  169,  170,  124,  125,  126,  127,  128,
  407.  /*   970 */   129,  208,  123,  208,  169,  170,  189,  169,  170,   48,
  408.  /*   980 */   147,  124,  125,  126,  127,  128,  129,  189,  107,   58,
  409.  /*   990 */   107,    5,  111,  147,  111,  203,   10,   11,   12,   13,
  410.  /*  1000 */   121,  147,  147,   91,   92,  147,  112,  147,  147,   78,
  411.  /*  1010 */    79,  147,   26,   19,   28,  169,  170,   23,   87,   88,
  412.  /*  1020 */    89,   35,  147,   92,  169,  170,  178,  169,  170,  147,
  413.  /*  1030 */   169,  170,  147,   47,  113,   49,   92,  178,  147,   53,
  414.  /*  1040 */   147,  178,   56,  147,  169,  170,  147,  103,  147,   19,
  415.  /*  1050 */   147,  169,  170,  147,  147,  124,  125,  126,  127,  128,
  416.  /*  1060 */   129,  147,  169,  170,  147,  169,  170,  147,  169,  170,
  417.  /*  1070 */   169,  170,  169,  170,  147,  169,  170,  147,   20,  147,
  418.  /*  1080 */    22,  147,   88,  147,  232,   99,  100,  101,  147,  169,
  419.  /*  1090 */   170,  105,  147,   20,  147,   22,  110,  147,   68,  169,
  420.  /*  1100 */   170,  169,  170,  169,  170,  169,  170,   20,  147,   22,
  421.  /*  1110 */   147,   20,  147,   22,  169,  170,  169,  170,  147,   20,
  422.  /*  1120 */   134,   20,  147,   22,   20,  147,   22,  147,   20,  147,
  423.  /*  1130 */    22,  233,  169,  170,  169,  170,   20,  147,   22,  147,
  424.  /*  1140 */   169,  170,  147,  147,  169,  170,  147,  169,  170,  169,
  425.  /*  1150 */   170,  147,  147,  147,  147,  191,  172,  149,   59,  193,
  426.  /*  1160 */   223,  161,  229,  172,  229,  172,  177,  194,  194,  172,
  427.  /*  1170 */   161,  161,    6,  172,  146,  173,   22,  146,  146,  146,
  428.  /*  1180 */   154,  121,  194,  118,  116,  119,  130,  189,  112,  120,
  429.  /*  1190 */   222,  152,  152,   98,  115,   98,  171,   40,  195,  179,
  430.  /*  1200 */   171,   19,   97,   84,   15,  171,  179,  196,  173,  197,
  431.  /*  1210 */   174,  198,  171,  226,  171,  171,  171,   38,  204,  152,
  432.  /*  1220 */   205,  204,  174,  205,  152,  151,  151,   60,  151,   19,
  433.  /*  1230 */   152,  184,  152,  130,  151,  184,  152,  214,  152,   15,
  434.  /*  1240 */   194,  187,  226,  194,  187,  152,  187,  184,  187,   33,
  435.  /*  1250 */   152,  214,  152,  234,  137,  159,  235,  175,    1,  237,
  436.  /*  1260 */   175,  237,   20,  112,  112,  112,   92,  112,  107,   19,
  437.  /*  1270 */    11,   20,   20,  231,   19,   19,   22,  117,  240,  117,
  438.  /*  1280 */    20,   20,   20,  114,   19,   22,   22,   20,  112,   20,
  439.  /*  1290 */    20,   44,   19,  243,   19,   96,   20,   44,  246,   19,
  440.  /*  1300 */    32,   19,   44,   19,  103,   16,   21,   17,   36,   98,
  441.  /*  1310 */    22,  133,   98,   19,    5,    1,   45,   51,  122,   45,
  442.  /*  1320 */   102,   19,  113,  115,   14,   17,  113,  102,  122,   14,
  443.  /*  1330 */    19,  136,   20,  135,    3,  123,   57,   19,    4,  247,
  444.  /*  1340 */   247,  247,  247,  247,  247,   68,   68,
  445. };
  446. #define YY_SHIFT_USE_DFLT (-62)
  447. #define YY_SHIFT_MAX 389
  448. static const short yy_shift_ofst[] = {
  449.  /*     0 */    39,  841,  986,  -16,  841,  931,  931,  258,  123,  -36,
  450.  /*    10 */    96,  931,  931,  931,  931,  931,  -45,  400,  174,   19,
  451.  /*    20 */   171,  -54,  -54,   53,  165,  208,  251,  324,  393,  462,
  452.  /*    30 */   531,  600,  643,  686,  643,  643,  643,  643,  643,  643,
  453.  /*    40 */   643,  643,  643,  643,  643,  643,  643,  643,  643,  643,
  454.  /*    50 */   643,  643,  729,  772,  772,  857,  931,  931,  931,  931,
  455.  /*    60 */   931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
  456.  /*    70 */   931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
  457.  /*    80 */   931,  931,  931,  931,  931,  931,  931,  931,  931,  931,
  458.  /*    90 */   931,  931,  931,  931,  931,  931,  -61,  -61,    6,    6,
  459.  /*   100 */   280,   22,   61,  399,  564,   19,   19,   19,   19,   19,
  460.  /*   110 */    19,   19,  216,  171,   63,  -62,  -62,  -62,  131,  326,
  461.  /*   120 */   472,  472,  498,  559,  506,  799,   19,  799,   19,   19,
  462.  /*   130 */    19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
  463.  /*   140 */    19,  849,   95,  -36,  -36,  -36,  -62,  -62,  -62,  -15,
  464.  /*   150 */   -15,  333,  459,  478,  557,  530,  541,  616,  602,  793,
  465.  /*   160 */   604,  607,  626,   19,   19,  881,   19,   19,  994,   19,
  466.  /*   170 */    19,  807,   19,   19,  673,  807,   19,   19,  384,  384,
  467.  /*   180 */   384,   19,   19,  673,   19,   19,  673,   19,  454,  685,
  468.  /*   190 */    19,   19,  673,   19,   19,   19,  673,   19,   19,   19,
  469.  /*   200 */   673,  673,   19,   19,   19,   19,   19,  468,  883,  921,
  470.  /*   210 */   171,  754,  754,  432,  406,  406,  406,  816,  406,  171,
  471.  /*   220 */   406,  171,  811,  879,  879, 1166, 1166, 1166, 1166, 1154,
  472.  /*   230 */   -36, 1060, 1065, 1066, 1068, 1069, 1056, 1076, 1076, 1095,
  473.  /*   240 */  1079, 1095, 1079, 1097, 1097, 1157, 1097, 1105, 1097, 1182,
  474.  /*   250 */  1119, 1119, 1157, 1097, 1097, 1097, 1182, 1189, 1076, 1189,
  475.  /*   260 */  1076, 1189, 1076, 1076, 1179, 1103, 1189, 1076, 1167, 1167,
  476.  /*   270 */  1210, 1060, 1076, 1224, 1224, 1224, 1224, 1060, 1167, 1210,
  477.  /*   280 */  1076, 1216, 1216, 1076, 1076, 1117,  -62,  -62,  -62,  -62,
  478.  /*   290 */   -62,  -62,  525,  684,  727,  168,  894,  556,  555,  938,
  479.  /*   300 */   944,  949,  912, 1058, 1073, 1087, 1091, 1101, 1104, 1108,
  480.  /*   310 */  1030, 1116, 1099, 1257, 1242, 1151, 1152, 1153, 1155, 1174,
  481.  /*   320 */  1161, 1250, 1251, 1252, 1255, 1259, 1256, 1260, 1254, 1261,
  482.  /*   330 */  1262, 1263, 1160, 1264, 1162, 1263, 1169, 1265, 1267, 1176,
  483.  /*   340 */  1269, 1270, 1268, 1247, 1273, 1253, 1275, 1276, 1280, 1282,
  484.  /*   350 */  1258, 1284, 1199, 1201, 1289, 1290, 1285, 1211, 1272, 1266,
  485.  /*   360 */  1271, 1288, 1274, 1178, 1214, 1294, 1309, 1314, 1218, 1277,
  486.  /*   370 */  1278, 1196, 1302, 1209, 1310, 1208, 1308, 1213, 1225, 1206,
  487.  /*   380 */  1311, 1212, 1312, 1315, 1279, 1198, 1195, 1318, 1331, 1334,
  488. };
  489. #define YY_REDUCE_USE_DFLT (-165)
  490. #define YY_REDUCE_MAX 291
  491. static const short yy_reduce_ofst[] = {
  492.  /*     0 */  -138,  277,  546,  137,  401,  -21,   44,   36,   38,  242,
  493.  /*    10 */  -141,  191,   91,  269,  343,  345, -126,  589,  338,  150,
  494.  /*    20 */   147,  -13,  213,  412,  412,  412,  412,  412,  412,  412,
  495.  /*    30 */   412,  412,  412,  412,  412,  412,  412,  412,  412,  412,
  496.  /*    40 */   412,  412,  412,  412,  412,  412,  412,  412,  412,  412,
  497.  /*    50 */   412,  412,  412,  412,  412,  211,  698,  714,  716,  722,
  498.  /*    60 */   724,  728,  748,  753,  755,  757,  762,  769,  794,  805,
  499.  /*    70 */   808,  846,  855,  858,  861,  875,  882,  893,  896,  899,
  500.  /*    80 */   901,  903,  906,  920,  930,  932,  934,  936,  945,  947,
  501.  /*    90 */   963,  965,  971,  975,  978,  980,  412,  412,  412,  412,
  502.  /*   100 */    20,  412,  412,   23,   34,  334,  475,  552,  593,  594,
  503.  /*   110 */   585,  212,  412,  289,  412,  412,  412,  412,  135, -164,
  504.  /*   120 */  -115,  164,  407,  407,  350,  141,  436,  163,  596,  -90,
  505.  /*   130 */   763,  218,  765,  438,  586,  592,  595,  715,  718,  408,
  506.  /*   140 */   723,  380,  634,  677,  787,  798,  144,  529,  588,  -14,
  507.  /*   150 */     0,   17,  244,  155,  298,  155,  155,  418,  372,  477,
  508.  /*   160 */   490,  494,  509,  526,  590,  465,  494,  730,  773,  743,
  509.  /*   170 */   833,  792,  854,  860,  155,  792,  864,  885,  848,  859,
  510.  /*   180 */   863,  891,  907,  155,  914,  917,  155,  927,  852,  898,
  511.  /*   190 */   941,  950,  155,  961,  982,  990,  155,  992,  995,  996,
  512.  /*   200 */   155,  155,  999, 1004, 1005, 1006, 1007, 1008,  964,  966,
  513.  /*   210 */  1000,  933,  935,  937,  984,  991,  993,  989,  997, 1009,
  514.  /*   220 */  1001, 1010, 1002,  973,  974, 1028, 1031, 1032, 1033, 1026,
  515.  /*   230 */   998,  988, 1003, 1011, 1012, 1013,  968, 1039, 1040, 1014,
  516.  /*   240 */  1015, 1017, 1018, 1025, 1029, 1020, 1034, 1035, 1041, 1036,
  517.  /*   250 */   987, 1016, 1027, 1043, 1044, 1045, 1048, 1074, 1067, 1075,
  518.  /*   260 */  1072, 1077, 1078, 1080, 1019, 1021, 1083, 1084, 1047, 1051,
  519.  /*   270 */  1023, 1046, 1086, 1054, 1057, 1059, 1061, 1049, 1063, 1037,
  520.  /*   280 */  1093, 1022, 1024, 1098, 1100, 1038, 1096, 1082, 1085, 1042,
  521.  /*   290 */  1050, 1052,
  522. };
  523. static const YYACTIONTYPE yy_default[] = {
  524.  /*     0 */   594,  819,  900,  709,  900,  819,  900,  900,  846,  713,
  525.  /*    10 */   875,  817,  900,  900,  900,  900,  791,  900,  846,  900,
  526.  /*    20 */   625,  846,  846,  742,  900,  900,  900,  900,  900,  900,
  527.  /*    30 */   900,  900,  743,  900,  821,  816,  812,  814,  813,  820,
  528.  /*    40 */   744,  733,  740,  747,  725,  859,  749,  750,  756,  757,
  529.  /*    50 */   876,  874,  779,  778,  797,  900,  900,  900,  900,  900,
  530.  /*    60 */   900,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  531.  /*    70 */   900,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  532.  /*    80 */   900,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  533.  /*    90 */   900,  900,  900,  900,  900,  900,  781,  803,  780,  790,
  534.  /*   100 */   618,  782,  783,  678,  613,  900,  900,  900,  900,  900,
  535.  /*   110 */   900,  900,  784,  900,  785,  798,  799,  800,  900,  900,
  536.  /*   120 */   900,  900,  900,  900,  594,  709,  900,  709,  900,  900,
  537.  /*   130 */   900,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  538.  /*   140 */   900,  900,  900,  900,  900,  900,  703,  713,  893,  900,
  539.  /*   150 */   900,  669,  900,  900,  900,  900,  900,  900,  900,  900,
  540.  /*   160 */   900,  900,  601,  599,  900,  701,  900,  900,  627,  900,
  541.  /*   170 */   900,  711,  900,  900,  716,  717,  900,  900,  900,  900,
  542.  /*   180 */   900,  900,  900,  615,  900,  900,  690,  900,  852,  900,
  543.  /*   190 */   900,  900,  866,  900,  900,  900,  864,  900,  900,  900,
  544.  /*   200 */   692,  752,  833,  900,  879,  881,  900,  900,  701,  710,
  545.  /*   210 */   900,  900,  900,  815,  736,  736,  736,  648,  736,  900,
  546.  /*   220 */   736,  900,  651,  746,  746,  598,  598,  598,  598,  668,
  547.  /*   230 */   900,  746,  737,  739,  729,  741,  900,  718,  718,  726,
  548.  /*   240 */   728,  726,  728,  680,  680,  665,  680,  651,  680,  825,
  549.  /*   250 */   830,  830,  665,  680,  680,  680,  825,  610,  718,  610,
  550.  /*   260 */   718,  610,  718,  718,  856,  858,  610,  718,  682,  682,
  551.  /*   270 */   758,  746,  718,  689,  689,  689,  689,  746,  682,  758,
  552.  /*   280 */   718,  878,  878,  718,  718,  886,  635,  653,  653,  861,
  553.  /*   290 */   893,  898,  900,  900,  900,  900,  765,  900,  900,  900,
  554.  /*   300 */   900,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  555.  /*   310 */   839,  900,  900,  900,  900,  770,  766,  900,  767,  900,
  556.  /*   320 */   695,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  557.  /*   330 */   900,  818,  900,  730,  900,  738,  900,  900,  900,  900,
  558.  /*   340 */   900,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  559.  /*   350 */   900,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  560.  /*   360 */   854,  855,  900,  900,  900,  900,  900,  900,  900,  900,
  561.  /*   370 */   900,  900,  900,  900,  900,  900,  900,  900,  900,  900,
  562.  /*   380 */   900,  900,  900,  900,  885,  900,  900,  888,  595,  900,
  563.  /*   390 */   589,  592,  591,  593,  597,  600,  622,  623,  624,  602,
  564.  /*   400 */   603,  604,  605,  606,  607,  608,  614,  616,  634,  636,
  565.  /*   410 */   620,  638,  699,  700,  762,  693,  694,  698,  621,  773,
  566.  /*   420 */   764,  768,  769,  771,  772,  786,  787,  789,  795,  802,
  567.  /*   430 */   805,  788,  793,  794,  796,  801,  804,  696,  697,  808,
  568.  /*   440 */   628,  629,  632,  633,  842,  844,  843,  845,  631,  630,
  569.  /*   450 */   774,  777,  810,  811,  867,  868,  869,  870,  871,  806,
  570.  /*   460 */   719,  809,  792,  731,  734,  735,  732,  702,  712,  721,
  571.  /*   470 */   722,  723,  724,  707,  708,  714,  727,  760,  761,  715,
  572.  /*   480 */   704,  705,  706,  807,  763,  775,  776,  639,  640,  770,
  573.  /*   490 */   641,  642,  643,  681,  684,  685,  686,  644,  663,  666,
  574.  /*   500 */   667,  645,  652,  646,  647,  654,  655,  656,  659,  660,
  575.  /*   510 */   661,  662,  657,  658,  826,  827,  831,  829,  828,  649,
  576.  /*   520 */   650,  664,  637,  626,  619,  670,  673,  674,  675,  676,
  577.  /*   530 */   677,  679,  671,  672,  617,  609,  611,  720,  848,  857,
  578.  /*   540 */   853,  849,  850,  851,  612,  822,  823,  683,  754,  755,
  579.  /*   550 */   847,  860,  862,  759,  863,  865,  890,  687,  688,  691,
  580.  /*   560 */   832,  872,  745,  748,  751,  753,  834,  835,  836,  837,
  581.  /*   570 */   840,  841,  838,  873,  877,  880,  882,  883,  884,  887,
  582.  /*   580 */   889,  894,  895,  896,  899,  897,  596,  590,
  583. };
  584. #define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0]))
  585. /* The next table maps tokens into fallback tokens.  If a construct
  586. ** like the following:
  587. ** 
  588. **      %fallback ID X Y Z.
  589. **
  590. ** appears in the grammer, then ID becomes a fallback token for X, Y,
  591. ** and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
  592. ** but it does not parse, the type of the token is changed to ID and
  593. ** the parse is retried before an error is thrown.
  594. */
  595. #ifdef YYFALLBACK
  596. static const YYCODETYPE yyFallback[] = {
  597.     0,  /*          $ => nothing */
  598.     0,  /*       SEMI => nothing */
  599.    23,  /*    EXPLAIN => ID */
  600.    23,  /*      QUERY => ID */
  601.    23,  /*       PLAN => ID */
  602.    23,  /*      BEGIN => ID */
  603.     0,  /* TRANSACTION => nothing */
  604.    23,  /*   DEFERRED => ID */
  605.    23,  /*  IMMEDIATE => ID */
  606.    23,  /*  EXCLUSIVE => ID */
  607.     0,  /*     COMMIT => nothing */
  608.    23,  /*        END => ID */
  609.     0,  /*   ROLLBACK => nothing */
  610.     0,  /*     CREATE => nothing */
  611.     0,  /*      TABLE => nothing */
  612.    23,  /*         IF => ID */
  613.     0,  /*        NOT => nothing */
  614.     0,  /*     EXISTS => nothing */
  615.    23,  /*       TEMP => ID */
  616.     0,  /*         LP => nothing */
  617.     0,  /*         RP => nothing */
  618.     0,  /*         AS => nothing */
  619.     0,  /*      COMMA => nothing */
  620.     0,  /*         ID => nothing */
  621.    23,  /*      ABORT => ID */
  622.    23,  /*      AFTER => ID */
  623.    23,  /*    ANALYZE => ID */
  624.    23,  /*        ASC => ID */
  625.    23,  /*     ATTACH => ID */
  626.    23,  /*     BEFORE => ID */
  627.    23,  /*    CASCADE => ID */
  628.    23,  /*       CAST => ID */
  629.    23,  /*   CONFLICT => ID */
  630.    23,  /*   DATABASE => ID */
  631.    23,  /*       DESC => ID */
  632.    23,  /*     DETACH => ID */
  633.    23,  /*       EACH => ID */
  634.    23,  /*       FAIL => ID */
  635.    23,  /*        FOR => ID */
  636.    23,  /*     IGNORE => ID */
  637.    23,  /*  INITIALLY => ID */
  638.    23,  /*    INSTEAD => ID */
  639.    23,  /*    LIKE_KW => ID */
  640.    23,  /*      MATCH => ID */
  641.    23,  /*        KEY => ID */
  642.    23,  /*         OF => ID */
  643.    23,  /*     OFFSET => ID */
  644.    23,  /*     PRAGMA => ID */
  645.    23,  /*      RAISE => ID */
  646.    23,  /*    REPLACE => ID */
  647.    23,  /*   RESTRICT => ID */
  648.    23,  /*        ROW => ID */
  649.    23,  /*    TRIGGER => ID */
  650.    23,  /*     VACUUM => ID */
  651.    23,  /*       VIEW => ID */
  652.    23,  /*    VIRTUAL => ID */
  653.    23,  /*    REINDEX => ID */
  654.    23,  /*     RENAME => ID */
  655.    23,  /*   CTIME_KW => ID */
  656.     0,  /*        ANY => nothing */
  657.     0,  /*         OR => nothing */
  658.     0,  /*        AND => nothing */
  659.     0,  /*         IS => nothing */
  660.     0,  /*    BETWEEN => nothing */
  661.     0,  /*         IN => nothing */
  662.     0,  /*     ISNULL => nothing */
  663.     0,  /*    NOTNULL => nothing */
  664.     0,  /*         NE => nothing */
  665.     0,  /*         EQ => nothing */
  666.     0,  /*         GT => nothing */
  667.     0,  /*         LE => nothing */
  668.     0,  /*         LT => nothing */
  669.     0,  /*         GE => nothing */
  670.     0,  /*     ESCAPE => nothing */
  671.     0,  /*     BITAND => nothing */
  672.     0,  /*      BITOR => nothing */
  673.     0,  /*     LSHIFT => nothing */
  674.     0,  /*     RSHIFT => nothing */
  675.     0,  /*       PLUS => nothing */
  676.     0,  /*      MINUS => nothing */
  677.     0,  /*       STAR => nothing */
  678.     0,  /*      SLASH => nothing */
  679.     0,  /*        REM => nothing */
  680.     0,  /*     CONCAT => nothing */
  681.     0,  /*    COLLATE => nothing */
  682.     0,  /*     UMINUS => nothing */
  683.     0,  /*      UPLUS => nothing */
  684.     0,  /*     BITNOT => nothing */
  685.     0,  /*     STRING => nothing */
  686.     0,  /*    JOIN_KW => nothing */
  687.     0,  /* CONSTRAINT => nothing */
  688.     0,  /*    DEFAULT => nothing */
  689.     0,  /*       NULL => nothing */
  690.     0,  /*    PRIMARY => nothing */
  691.     0,  /*     UNIQUE => nothing */
  692.     0,  /*      CHECK => nothing */
  693.     0,  /* REFERENCES => nothing */
  694.     0,  /*   AUTOINCR => nothing */
  695.     0,  /*         ON => nothing */
  696.     0,  /*     DELETE => nothing */
  697.     0,  /*     UPDATE => nothing */
  698.     0,  /*     INSERT => nothing */
  699.     0,  /*        SET => nothing */
  700.     0,  /* DEFERRABLE => nothing */
  701.     0,  /*    FOREIGN => nothing */
  702.     0,  /*       DROP => nothing */
  703.     0,  /*      UNION => nothing */
  704.     0,  /*        ALL => nothing */
  705.     0,  /*     EXCEPT => nothing */
  706.     0,  /*  INTERSECT => nothing */
  707.     0,  /*     SELECT => nothing */
  708.     0,  /*   DISTINCT => nothing */
  709.     0,  /*        DOT => nothing */
  710.     0,  /*       FROM => nothing */
  711.     0,  /*       JOIN => nothing */
  712.     0,  /*      USING => nothing */
  713.     0,  /*      ORDER => nothing */
  714.     0,  /*         BY => nothing */
  715.     0,  /*      GROUP => nothing */
  716.     0,  /*     HAVING => nothing */
  717.     0,  /*      LIMIT => nothing */
  718.     0,  /*      WHERE => nothing */
  719.     0,  /*       INTO => nothing */
  720.     0,  /*     VALUES => nothing */
  721.     0,  /*    INTEGER => nothing */
  722.     0,  /*      FLOAT => nothing */
  723.     0,  /*       BLOB => nothing */
  724.     0,  /*   REGISTER => nothing */
  725.     0,  /*   VARIABLE => nothing */
  726.     0,  /*       CASE => nothing */
  727.     0,  /*       WHEN => nothing */
  728.     0,  /*       THEN => nothing */
  729.     0,  /*       ELSE => nothing */
  730.     0,  /*      INDEX => nothing */
  731.     0,  /*      ALTER => nothing */
  732.     0,  /*         TO => nothing */
  733.     0,  /*        ADD => nothing */
  734.     0,  /*   COLUMNKW => nothing */
  735. };
  736. #endif /* YYFALLBACK */
  737. /* The following structure represents a single element of the
  738. ** parser's stack.  Information stored includes:
  739. **
  740. **   +  The state number for the parser at this level of the stack.
  741. **
  742. **   +  The value of the token stored at this level of the stack.
  743. **      (In other words, the "major" token.)
  744. **
  745. **   +  The semantic value stored at this level of the stack.  This is
  746. **      the information used by the action routines in the grammar.
  747. **      It is sometimes called the "minor" token.
  748. */
  749. struct yyStackEntry {
  750.   int stateno;       /* The state-number */
  751.   int major;         /* The major token value.  This is the code
  752.                      ** number for the token at this stack level */
  753.   YYMINORTYPE minor; /* The user-supplied minor token value.  This
  754.                      ** is the value of the token  */
  755. };
  756. typedef struct yyStackEntry yyStackEntry;
  757. /* The state of the parser is completely contained in an instance of
  758. ** the following structure */
  759. struct yyParser {
  760.   int yyidx;                    /* Index of top element in stack */
  761.   int yyerrcnt;                 /* Shifts left before out of the error */
  762.   sqlite3ParserARG_SDECL                /* A place to hold %extra_argument */
  763. #if YYSTACKDEPTH<=0
  764.   int yystksz;                  /* Current side of the stack */
  765.   yyStackEntry *yystack;        /* The parser's stack */
  766. #else
  767.   yyStackEntry yystack[YYSTACKDEPTH];  /* The parser's stack */
  768. #endif
  769. };
  770. typedef struct yyParser yyParser;
  771. #ifndef NDEBUG
  772. #include <stdio.h>
  773. static FILE *yyTraceFILE = 0;
  774. static char *yyTracePrompt = 0;
  775. #endif /* NDEBUG */
  776. #ifndef NDEBUG
  777. /* 
  778. ** Turn parser tracing on by giving a stream to which to write the trace
  779. ** and a prompt to preface each trace message.  Tracing is turned off
  780. ** by making either argument NULL 
  781. **
  782. ** Inputs:
  783. ** <ul>
  784. ** <li> A FILE* to which trace output should be written.
  785. **      If NULL, then tracing is turned off.
  786. ** <li> A prefix string written at the beginning of every
  787. **      line of trace output.  If NULL, then tracing is
  788. **      turned off.
  789. ** </ul>
  790. **
  791. ** Outputs:
  792. ** None.
  793. */
  794. void sqlite3ParserTrace(FILE *TraceFILE, char *zTracePrompt){
  795.   yyTraceFILE = TraceFILE;
  796.   yyTracePrompt = zTracePrompt;
  797.   if( yyTraceFILE==0 ) yyTracePrompt = 0;
  798.   else if( yyTracePrompt==0 ) yyTraceFILE = 0;
  799. }
  800. #endif /* NDEBUG */
  801. #ifndef NDEBUG
  802. /* For tracing shifts, the names of all terminals and nonterminals
  803. ** are required.  The following table supplies these names */
  804. static const char *const yyTokenName[] = { 
  805.   "$",             "SEMI",          "EXPLAIN",       "QUERY",       
  806.   "PLAN",          "BEGIN",         "TRANSACTION",   "DEFERRED",    
  807.   "IMMEDIATE",     "EXCLUSIVE",     "COMMIT",        "END",         
  808.   "ROLLBACK",      "CREATE",        "TABLE",         "IF",          
  809.   "NOT",           "EXISTS",        "TEMP",          "LP",          
  810.   "RP",            "AS",            "COMMA",         "ID",          
  811.   "ABORT",         "AFTER",         "ANALYZE",       "ASC",         
  812.   "ATTACH",        "BEFORE",        "CASCADE",       "CAST",        
  813.   "CONFLICT",      "DATABASE",      "DESC",          "DETACH",      
  814.   "EACH",          "FAIL",          "FOR",           "IGNORE",      
  815.   "INITIALLY",     "INSTEAD",       "LIKE_KW",       "MATCH",       
  816.   "KEY",           "OF",            "OFFSET",        "PRAGMA",      
  817.   "RAISE",         "REPLACE",       "RESTRICT",      "ROW",         
  818.   "TRIGGER",       "VACUUM",        "VIEW",          "VIRTUAL",     
  819.   "REINDEX",       "RENAME",        "CTIME_KW",      "ANY",         
  820.   "OR",            "AND",           "IS",            "BETWEEN",     
  821.   "IN",            "ISNULL",        "NOTNULL",       "NE",          
  822.   "EQ",            "GT",            "LE",            "LT",          
  823.   "GE",            "ESCAPE",        "BITAND",        "BITOR",       
  824.   "LSHIFT",        "RSHIFT",        "PLUS",          "MINUS",       
  825.   "STAR",          "SLASH",         "REM",           "CONCAT",      
  826.   "COLLATE",       "UMINUS",        "UPLUS",         "BITNOT",      
  827.   "STRING",        "JOIN_KW",       "CONSTRAINT",    "DEFAULT",     
  828.   "NULL",          "PRIMARY",       "UNIQUE",        "CHECK",       
  829.   "REFERENCES",    "AUTOINCR",      "ON",            "DELETE",      
  830.   "UPDATE",        "INSERT",        "SET",           "DEFERRABLE",  
  831.   "FOREIGN",       "DROP",          "UNION",         "ALL",         
  832.   "EXCEPT",        "INTERSECT",     "SELECT",        "DISTINCT",    
  833.   "DOT",           "FROM",          "JOIN",          "USING",       
  834.   "ORDER",         "BY",            "GROUP",         "HAVING",      
  835.   "LIMIT",         "WHERE",         "INTO",          "VALUES",      
  836.   "INTEGER",       "FLOAT",         "BLOB",          "REGISTER",    
  837.   "VARIABLE",      "CASE",          "WHEN",          "THEN",        
  838.   "ELSE",          "INDEX",         "ALTER",         "TO",          
  839.   "ADD",           "COLUMNKW",      "error",         "input",       
  840.   "cmdlist",       "ecmd",          "cmdx",          "cmd",         
  841.   "explain",       "transtype",     "trans_opt",     "nm",          
  842.   "create_table",  "create_table_args",  "temp",          "ifnotexists", 
  843.   "dbnm",          "columnlist",    "conslist_opt",  "select",      
  844.   "column",        "columnid",      "type",          "carglist",    
  845.   "id",            "ids",           "typetoken",     "typename",    
  846.   "signed",        "plus_num",      "minus_num",     "carg",        
  847.   "ccons",         "term",          "expr",          "onconf",      
  848.   "sortorder",     "autoinc",       "idxlist_opt",   "refargs",     
  849.   "defer_subclause",  "refarg",        "refact",        "init_deferred_pred_opt",
  850.   "conslist",      "tcons",         "idxlist",       "defer_subclause_opt",
  851.   "orconf",        "resolvetype",   "raisetype",     "ifexists",    
  852.   "fullname",      "oneselect",     "multiselect_op",  "distinct",    
  853.   "selcollist",    "from",          "where_opt",     "groupby_opt", 
  854.   "having_opt",    "orderby_opt",   "limit_opt",     "sclp",        
  855.   "as",            "seltablist",    "stl_prefix",    "joinop",      
  856.   "on_opt",        "using_opt",     "seltablist_paren",  "joinop2",     
  857.   "inscollist",    "sortlist",      "sortitem",      "nexprlist",   
  858.   "setlist",       "insert_cmd",    "inscollist_opt",  "itemlist",    
  859.   "exprlist",      "likeop",        "escape",        "between_op",  
  860.   "in_op",         "case_operand",  "case_exprlist",  "case_else",   
  861.   "uniqueflag",    "idxitem",       "collate",       "nmnum",       
  862.   "plus_opt",      "number",        "trigger_decl",  "trigger_cmd_list",
  863.   "trigger_time",  "trigger_event",  "foreach_clause",  "when_clause", 
  864.   "trigger_cmd",   "database_kw_opt",  "key_opt",       "add_column_fullname",
  865.   "kwcolumn_opt",  "create_vtab",   "vtabarglist",   "vtabarg",     
  866.   "vtabargtoken",  "lp",            "anylist",     
  867. };
  868. #endif /* NDEBUG */
  869. #ifndef NDEBUG
  870. /* For tracing reduce actions, the names of all rules are required.
  871. */
  872. static const char *const yyRuleName[] = {
  873.  /*   0 */ "input ::= cmdlist",
  874.  /*   1 */ "cmdlist ::= cmdlist ecmd",
  875.  /*   2 */ "cmdlist ::= ecmd",
  876.  /*   3 */ "cmdx ::= cmd",
  877.  /*   4 */ "ecmd ::= SEMI",
  878.  /*   5 */ "ecmd ::= explain cmdx SEMI",
  879.  /*   6 */ "explain ::=",
  880.  /*   7 */ "explain ::= EXPLAIN",
  881.  /*   8 */ "explain ::= EXPLAIN QUERY PLAN",
  882.  /*   9 */ "cmd ::= BEGIN transtype trans_opt",
  883.  /*  10 */ "trans_opt ::=",
  884.  /*  11 */ "trans_opt ::= TRANSACTION",
  885.  /*  12 */ "trans_opt ::= TRANSACTION nm",
  886.  /*  13 */ "transtype ::=",
  887.  /*  14 */ "transtype ::= DEFERRED",
  888.  /*  15 */ "transtype ::= IMMEDIATE",
  889.  /*  16 */ "transtype ::= EXCLUSIVE",
  890.  /*  17 */ "cmd ::= COMMIT trans_opt",
  891.  /*  18 */ "cmd ::= END trans_opt",
  892.  /*  19 */ "cmd ::= ROLLBACK trans_opt",
  893.  /*  20 */ "cmd ::= create_table create_table_args",
  894.  /*  21 */ "create_table ::= CREATE temp TABLE ifnotexists nm dbnm",
  895.  /*  22 */ "ifnotexists ::=",
  896.  /*  23 */ "ifnotexists ::= IF NOT EXISTS",
  897.  /*  24 */ "temp ::= TEMP",
  898.  /*  25 */ "temp ::=",
  899.  /*  26 */ "create_table_args ::= LP columnlist conslist_opt RP",
  900.  /*  27 */ "create_table_args ::= AS select",
  901.  /*  28 */ "columnlist ::= columnlist COMMA column",
  902.  /*  29 */ "columnlist ::= column",
  903.  /*  30 */ "column ::= columnid type carglist",
  904.  /*  31 */ "columnid ::= nm",
  905.  /*  32 */ "id ::= ID",
  906.  /*  33 */ "ids ::= ID|STRING",
  907.  /*  34 */ "nm ::= ID",
  908.  /*  35 */ "nm ::= STRING",
  909.  /*  36 */ "nm ::= JOIN_KW",
  910.  /*  37 */ "type ::=",
  911.  /*  38 */ "type ::= typetoken",
  912.  /*  39 */ "typetoken ::= typename",
  913.  /*  40 */ "typetoken ::= typename LP signed RP",
  914.  /*  41 */ "typetoken ::= typename LP signed COMMA signed RP",
  915.  /*  42 */ "typename ::= ids",
  916.  /*  43 */ "typename ::= typename ids",
  917.  /*  44 */ "signed ::= plus_num",
  918.  /*  45 */ "signed ::= minus_num",
  919.  /*  46 */ "carglist ::= carglist carg",
  920.  /*  47 */ "carglist ::=",
  921.  /*  48 */ "carg ::= CONSTRAINT nm ccons",
  922.  /*  49 */ "carg ::= ccons",
  923.  /*  50 */ "ccons ::= DEFAULT term",
  924.  /*  51 */ "ccons ::= DEFAULT LP expr RP",
  925.  /*  52 */ "ccons ::= DEFAULT PLUS term",
  926.  /*  53 */ "ccons ::= DEFAULT MINUS term",
  927.  /*  54 */ "ccons ::= DEFAULT id",
  928.  /*  55 */ "ccons ::= NULL onconf",
  929.  /*  56 */ "ccons ::= NOT NULL onconf",
  930.  /*  57 */ "ccons ::= PRIMARY KEY sortorder onconf autoinc",
  931.  /*  58 */ "ccons ::= UNIQUE onconf",
  932.  /*  59 */ "ccons ::= CHECK LP expr RP",
  933.  /*  60 */ "ccons ::= REFERENCES nm idxlist_opt refargs",
  934.  /*  61 */ "ccons ::= defer_subclause",
  935.  /*  62 */ "ccons ::= COLLATE ids",
  936.  /*  63 */ "autoinc ::=",
  937.  /*  64 */ "autoinc ::= AUTOINCR",
  938.  /*  65 */ "refargs ::=",
  939.  /*  66 */ "refargs ::= refargs refarg",
  940.  /*  67 */ "refarg ::= MATCH nm",
  941.  /*  68 */ "refarg ::= ON DELETE refact",
  942.  /*  69 */ "refarg ::= ON UPDATE refact",
  943.  /*  70 */ "refarg ::= ON INSERT refact",
  944.  /*  71 */ "refact ::= SET NULL",
  945.  /*  72 */ "refact ::= SET DEFAULT",
  946.  /*  73 */ "refact ::= CASCADE",
  947.  /*  74 */ "refact ::= RESTRICT",
  948.  /*  75 */ "defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt",
  949.  /*  76 */ "defer_subclause ::= DEFERRABLE init_deferred_pred_opt",
  950.  /*  77 */ "init_deferred_pred_opt ::=",
  951.  /*  78 */ "init_deferred_pred_opt ::= INITIALLY DEFERRED",
  952.  /*  79 */ "init_deferred_pred_opt ::= INITIALLY IMMEDIATE",
  953.  /*  80 */ "conslist_opt ::=",
  954.  /*  81 */ "conslist_opt ::= COMMA conslist",
  955.  /*  82 */ "conslist ::= conslist COMMA tcons",
  956.  /*  83 */ "conslist ::= conslist tcons",
  957.  /*  84 */ "conslist ::= tcons",
  958.  /*  85 */ "tcons ::= CONSTRAINT nm",
  959.  /*  86 */ "tcons ::= PRIMARY KEY LP idxlist autoinc RP onconf",
  960.  /*  87 */ "tcons ::= UNIQUE LP idxlist RP onconf",
  961.  /*  88 */ "tcons ::= CHECK LP expr RP onconf",
  962.  /*  89 */ "tcons ::= FOREIGN KEY LP idxlist RP REFERENCES nm idxlist_opt refargs defer_subclause_opt",
  963.  /*  90 */ "defer_subclause_opt ::=",
  964.  /*  91 */ "defer_subclause_opt ::= defer_subclause",
  965.  /*  92 */ "onconf ::=",
  966.  /*  93 */ "onconf ::= ON CONFLICT resolvetype",
  967.  /*  94 */ "orconf ::=",
  968.  /*  95 */ "orconf ::= OR resolvetype",
  969.  /*  96 */ "resolvetype ::= raisetype",
  970.  /*  97 */ "resolvetype ::= IGNORE",
  971.  /*  98 */ "resolvetype ::= REPLACE",
  972.  /*  99 */ "cmd ::= DROP TABLE ifexists fullname",
  973.  /* 100 */ "ifexists ::= IF EXISTS",
  974.  /* 101 */ "ifexists ::=",
  975.  /* 102 */ "cmd ::= CREATE temp VIEW ifnotexists nm dbnm AS select",
  976.  /* 103 */ "cmd ::= DROP VIEW ifexists fullname",
  977.  /* 104 */ "cmd ::= select",
  978.  /* 105 */ "select ::= oneselect",
  979.  /* 106 */ "select ::= select multiselect_op oneselect",
  980.  /* 107 */ "multiselect_op ::= UNION",
  981.  /* 108 */ "multiselect_op ::= UNION ALL",
  982.  /* 109 */ "multiselect_op ::= EXCEPT|INTERSECT",
  983.  /* 110 */ "oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt",
  984.  /* 111 */ "distinct ::= DISTINCT",
  985.  /* 112 */ "distinct ::= ALL",
  986.  /* 113 */ "distinct ::=",
  987.  /* 114 */ "sclp ::= selcollist COMMA",
  988.  /* 115 */ "sclp ::=",
  989.  /* 116 */ "selcollist ::= sclp expr as",
  990.  /* 117 */ "selcollist ::= sclp STAR",
  991.  /* 118 */ "selcollist ::= sclp nm DOT STAR",
  992.  /* 119 */ "as ::= AS nm",
  993.  /* 120 */ "as ::= ids",
  994.  /* 121 */ "as ::=",
  995.  /* 122 */ "from ::=",
  996.  /* 123 */ "from ::= FROM seltablist",
  997.  /* 124 */ "stl_prefix ::= seltablist joinop",
  998.  /* 125 */ "stl_prefix ::=",
  999.  /* 126 */ "seltablist ::= stl_prefix nm dbnm as on_opt using_opt",
  1000.  /* 127 */ "seltablist ::= stl_prefix LP seltablist_paren RP as on_opt using_opt",
  1001.  /* 128 */ "seltablist_paren ::= select",
  1002.  /* 129 */ "seltablist_paren ::= seltablist",
  1003.  /* 130 */ "dbnm ::=",
  1004.  /* 131 */ "dbnm ::= DOT nm",
  1005.  /* 132 */ "fullname ::= nm dbnm",
  1006.  /* 133 */ "joinop ::= COMMA|JOIN",
  1007.  /* 134 */ "joinop ::= JOIN_KW JOIN",
  1008.  /* 135 */ "joinop ::= JOIN_KW nm JOIN",
  1009.  /* 136 */ "joinop ::= JOIN_KW nm nm JOIN",
  1010.  /* 137 */ "on_opt ::= ON expr",
  1011.  /* 138 */ "on_opt ::=",
  1012.  /* 139 */ "using_opt ::= USING LP inscollist RP",
  1013.  /* 140 */ "using_opt ::=",
  1014.  /* 141 */ "orderby_opt ::=",
  1015.  /* 142 */ "orderby_opt ::= ORDER BY sortlist",
  1016.  /* 143 */ "sortlist ::= sortlist COMMA sortitem sortorder",
  1017.  /* 144 */ "sortlist ::= sortitem sortorder",
  1018.  /* 145 */ "sortitem ::= expr",
  1019.  /* 146 */ "sortorder ::= ASC",
  1020.  /* 147 */ "sortorder ::= DESC",
  1021.  /* 148 */ "sortorder ::=",
  1022.  /* 149 */ "groupby_opt ::=",
  1023.  /* 150 */ "groupby_opt ::= GROUP BY nexprlist",
  1024.  /* 151 */ "having_opt ::=",
  1025.  /* 152 */ "having_opt ::= HAVING expr",
  1026.  /* 153 */ "limit_opt ::=",
  1027.  /* 154 */ "limit_opt ::= LIMIT expr",
  1028.  /* 155 */ "limit_opt ::= LIMIT expr OFFSET expr",
  1029.  /* 156 */ "limit_opt ::= LIMIT expr COMMA expr",
  1030.  /* 157 */ "cmd ::= DELETE FROM fullname where_opt",
  1031.  /* 158 */ "where_opt ::=",
  1032.  /* 159 */ "where_opt ::= WHERE expr",
  1033.  /* 160 */ "cmd ::= UPDATE orconf fullname SET setlist where_opt",
  1034.  /* 161 */ "setlist ::= setlist COMMA nm EQ expr",
  1035.  /* 162 */ "setlist ::= nm EQ expr",
  1036.  /* 163 */ "cmd ::= insert_cmd INTO fullname inscollist_opt VALUES LP itemlist RP",
  1037.  /* 164 */ "cmd ::= insert_cmd INTO fullname inscollist_opt select",
  1038.  /* 165 */ "cmd ::= insert_cmd INTO fullname inscollist_opt DEFAULT VALUES",
  1039.  /* 166 */ "insert_cmd ::= INSERT orconf",
  1040.  /* 167 */ "insert_cmd ::= REPLACE",
  1041.  /* 168 */ "itemlist ::= itemlist COMMA expr",
  1042.  /* 169 */ "itemlist ::= expr",
  1043.  /* 170 */ "inscollist_opt ::=",
  1044.  /* 171 */ "inscollist_opt ::= LP inscollist RP",
  1045.  /* 172 */ "inscollist ::= inscollist COMMA nm",
  1046.  /* 173 */ "inscollist ::= nm",
  1047.  /* 174 */ "expr ::= term",
  1048.  /* 175 */ "expr ::= LP expr RP",
  1049.  /* 176 */ "term ::= NULL",
  1050.  /* 177 */ "expr ::= ID",
  1051.  /* 178 */ "expr ::= JOIN_KW",
  1052.  /* 179 */ "expr ::= nm DOT nm",
  1053.  /* 180 */ "expr ::= nm DOT nm DOT nm",
  1054.  /* 181 */ "term ::= INTEGER|FLOAT|BLOB",
  1055.  /* 182 */ "term ::= STRING",
  1056.  /* 183 */ "expr ::= REGISTER",
  1057.  /* 184 */ "expr ::= VARIABLE",
  1058.  /* 185 */ "expr ::= expr COLLATE ids",
  1059.  /* 186 */ "expr ::= CAST LP expr AS typetoken RP",
  1060.  /* 187 */ "expr ::= ID LP distinct exprlist RP",
  1061.  /* 188 */ "expr ::= ID LP STAR RP",
  1062.  /* 189 */ "term ::= CTIME_KW",
  1063.  /* 190 */ "expr ::= expr AND expr",
  1064.  /* 191 */ "expr ::= expr OR expr",
  1065.  /* 192 */ "expr ::= expr LT|GT|GE|LE expr",
  1066.  /* 193 */ "expr ::= expr EQ|NE expr",
  1067.  /* 194 */ "expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr",
  1068.  /* 195 */ "expr ::= expr PLUS|MINUS expr",
  1069.  /* 196 */ "expr ::= expr STAR|SLASH|REM expr",
  1070.  /* 197 */ "expr ::= expr CONCAT expr",
  1071.  /* 198 */ "likeop ::= LIKE_KW",
  1072.  /* 199 */ "likeop ::= NOT LIKE_KW",
  1073.  /* 200 */ "likeop ::= MATCH",
  1074.  /* 201 */ "likeop ::= NOT MATCH",
  1075.  /* 202 */ "escape ::= ESCAPE expr",
  1076.  /* 203 */ "escape ::=",
  1077.  /* 204 */ "expr ::= expr likeop expr escape",
  1078.  /* 205 */ "expr ::= expr ISNULL|NOTNULL",
  1079.  /* 206 */ "expr ::= expr IS NULL",
  1080.  /* 207 */ "expr ::= expr NOT NULL",
  1081.  /* 208 */ "expr ::= expr IS NOT NULL",
  1082.  /* 209 */ "expr ::= NOT expr",
  1083.  /* 210 */ "expr ::= BITNOT expr",
  1084.  /* 211 */ "expr ::= MINUS expr",
  1085.  /* 212 */ "expr ::= PLUS expr",
  1086.  /* 213 */ "between_op ::= BETWEEN",
  1087.  /* 214 */ "between_op ::= NOT BETWEEN",
  1088.  /* 215 */ "expr ::= expr between_op expr AND expr",
  1089.  /* 216 */ "in_op ::= IN",
  1090.  /* 217 */ "in_op ::= NOT IN",
  1091.  /* 218 */ "expr ::= expr in_op LP exprlist RP",
  1092.  /* 219 */ "expr ::= LP select RP",
  1093.  /* 220 */ "expr ::= expr in_op LP select RP",
  1094.  /* 221 */ "expr ::= expr in_op nm dbnm",
  1095.  /* 222 */ "expr ::= EXISTS LP select RP",
  1096.  /* 223 */ "expr ::= CASE case_operand case_exprlist case_else END",
  1097.  /* 224 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr",
  1098.  /* 225 */ "case_exprlist ::= WHEN expr THEN expr",
  1099.  /* 226 */ "case_else ::= ELSE expr",
  1100.  /* 227 */ "case_else ::=",
  1101.  /* 228 */ "case_operand ::= expr",
  1102.  /* 229 */ "case_operand ::=",
  1103.  /* 230 */ "exprlist ::= nexprlist",
  1104.  /* 231 */ "exprlist ::=",
  1105.  /* 232 */ "nexprlist ::= nexprlist COMMA expr",
  1106.  /* 233 */ "nexprlist ::= expr",
  1107.  /* 234 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP",
  1108.  /* 235 */ "uniqueflag ::= UNIQUE",
  1109.  /* 236 */ "uniqueflag ::=",
  1110.  /* 237 */ "idxlist_opt ::=",
  1111.  /* 238 */ "idxlist_opt ::= LP idxlist RP",
  1112.  /* 239 */ "idxlist ::= idxlist COMMA idxitem collate sortorder",
  1113.  /* 240 */ "idxlist ::= idxitem collate sortorder",
  1114.  /* 241 */ "idxitem ::= nm",
  1115.  /* 242 */ "collate ::=",
  1116.  /* 243 */ "collate ::= COLLATE ids",
  1117.  /* 244 */ "cmd ::= DROP INDEX ifexists fullname",
  1118.  /* 245 */ "cmd ::= VACUUM",
  1119.  /* 246 */ "cmd ::= VACUUM nm",
  1120.  /* 247 */ "cmd ::= PRAGMA nm dbnm EQ nmnum",
  1121.  /* 248 */ "cmd ::= PRAGMA nm dbnm EQ ON",
  1122.  /* 249 */ "cmd ::= PRAGMA nm dbnm EQ minus_num",
  1123.  /* 250 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP",
  1124.  /* 251 */ "cmd ::= PRAGMA nm dbnm",
  1125.  /* 252 */ "nmnum ::= plus_num",
  1126.  /* 253 */ "nmnum ::= nm",
  1127.  /* 254 */ "plus_num ::= plus_opt number",
  1128.  /* 255 */ "minus_num ::= MINUS number",
  1129.  /* 256 */ "number ::= INTEGER|FLOAT",
  1130.  /* 257 */ "plus_opt ::= PLUS",
  1131.  /* 258 */ "plus_opt ::=",
  1132.  /* 259 */ "cmd ::= CREATE trigger_decl BEGIN trigger_cmd_list END",
  1133.  /* 260 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause",
  1134.  /* 261 */ "trigger_time ::= BEFORE",
  1135.  /* 262 */ "trigger_time ::= AFTER",
  1136.  /* 263 */ "trigger_time ::= INSTEAD OF",
  1137.  /* 264 */ "trigger_time ::=",
  1138.  /* 265 */ "trigger_event ::= DELETE|INSERT",
  1139.  /* 266 */ "trigger_event ::= UPDATE",
  1140.  /* 267 */ "trigger_event ::= UPDATE OF inscollist",
  1141.  /* 268 */ "foreach_clause ::=",
  1142.  /* 269 */ "foreach_clause ::= FOR EACH ROW",
  1143.  /* 270 */ "when_clause ::=",
  1144.  /* 271 */ "when_clause ::= WHEN expr",
  1145.  /* 272 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI",
  1146.  /* 273 */ "trigger_cmd_list ::=",
  1147.  /* 274 */ "trigger_cmd ::= UPDATE orconf nm SET setlist where_opt",
  1148.  /* 275 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt VALUES LP itemlist RP",
  1149.  /* 276 */ "trigger_cmd ::= insert_cmd INTO nm inscollist_opt select",
  1150.  /* 277 */ "trigger_cmd ::= DELETE FROM nm where_opt",
  1151.  /* 278 */ "trigger_cmd ::= select",
  1152.  /* 279 */ "expr ::= RAISE LP IGNORE RP",
  1153.  /* 280 */ "expr ::= RAISE LP raisetype COMMA nm RP",
  1154.  /* 281 */ "raisetype ::= ROLLBACK",
  1155.  /* 282 */ "raisetype ::= ABORT",
  1156.  /* 283 */ "raisetype ::= FAIL",
  1157.  /* 284 */ "cmd ::= DROP TRIGGER ifexists fullname",
  1158.  /* 285 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt",
  1159.  /* 286 */ "cmd ::= DETACH database_kw_opt expr",
  1160.  /* 287 */ "key_opt ::=",
  1161.  /* 288 */ "key_opt ::= KEY expr",
  1162.  /* 289 */ "database_kw_opt ::= DATABASE",
  1163.  /* 290 */ "database_kw_opt ::=",
  1164.  /* 291 */ "cmd ::= REINDEX",
  1165.  /* 292 */ "cmd ::= REINDEX nm dbnm",
  1166.  /* 293 */ "cmd ::= ANALYZE",
  1167.  /* 294 */ "cmd ::= ANALYZE nm dbnm",
  1168.  /* 295 */ "cmd ::= ALTER TABLE fullname RENAME TO nm",
  1169.  /* 296 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt column",
  1170.  /* 297 */ "add_column_fullname ::= fullname",
  1171.  /* 298 */ "kwcolumn_opt ::=",
  1172.  /* 299 */ "kwcolumn_opt ::= COLUMNKW",
  1173.  /* 300 */ "cmd ::= create_vtab",
  1174.  /* 301 */ "cmd ::= create_vtab LP vtabarglist RP",
  1175.  /* 302 */ "create_vtab ::= CREATE VIRTUAL TABLE nm dbnm USING nm",
  1176.  /* 303 */ "vtabarglist ::= vtabarg",
  1177.  /* 304 */ "vtabarglist ::= vtabarglist COMMA vtabarg",
  1178.  /* 305 */ "vtabarg ::=",
  1179.  /* 306 */ "vtabarg ::= vtabarg vtabargtoken",
  1180.  /* 307 */ "vtabargtoken ::= ANY",
  1181.  /* 308 */ "vtabargtoken ::= lp anylist RP",
  1182.  /* 309 */ "lp ::= LP",
  1183.  /* 310 */ "anylist ::=",
  1184.  /* 311 */ "anylist ::= anylist ANY",
  1185. };
  1186. #endif /* NDEBUG */
  1187. #if YYSTACKDEPTH<=0
  1188. /*
  1189. ** Try to increase the size of the parser stack.
  1190. */
  1191. static void yyGrowStack(yyParser *p){
  1192.   int newSize;
  1193.   yyStackEntry *pNew;
  1194.   newSize = p->yystksz*2 + 100;
  1195.   pNew = realloc(p->yystack, newSize*sizeof(pNew[0]));
  1196.   if( pNew ){
  1197.     p->yystack = pNew;
  1198.     p->yystksz = newSize;
  1199. #ifndef NDEBUG
  1200.     if( yyTraceFILE ){
  1201.       fprintf(yyTraceFILE,"%sStack grows to %d entries!n",
  1202.               yyTracePrompt, p->yystksz);
  1203.     }
  1204. #endif
  1205.   }
  1206. }
  1207. #endif
  1208. /* 
  1209. ** This function allocates a new parser.
  1210. ** The only argument is a pointer to a function which works like
  1211. ** malloc.
  1212. **
  1213. ** Inputs:
  1214. ** A pointer to the function used to allocate memory.
  1215. **
  1216. ** Outputs:
  1217. ** A pointer to a parser.  This pointer is used in subsequent calls
  1218. ** to sqlite3Parser and sqlite3ParserFree.
  1219. */
  1220. void *sqlite3ParserAlloc(void *(*mallocProc)(size_t)){
  1221.   yyParser *pParser;
  1222.   pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) );
  1223.   if( pParser ){
  1224.     pParser->yyidx = -1;
  1225. #if YYSTACKDEPTH<=0
  1226.     yyGrowStack(pParser);
  1227. #endif
  1228.   }
  1229.   return pParser;
  1230. }
  1231. /* The following function deletes the value associated with a
  1232. ** symbol.  The symbol can be either a terminal or nonterminal.
  1233. ** "yymajor" is the symbol code, and "yypminor" is a pointer to
  1234. ** the value.
  1235. */
  1236. static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
  1237.   switch( yymajor ){
  1238.     /* Here is inserted the actions which take place when a
  1239.     ** terminal or non-terminal is destroyed.  This can happen
  1240.     ** when the symbol is popped from the stack during a
  1241.     ** reduce or during error processing or when a parser is 
  1242.     ** being destroyed before it is finished parsing.
  1243.     **
  1244.     ** Note: during a reduce, the only symbols destroyed are those
  1245.     ** which appear on the RHS of the rule, but which are not used
  1246.     ** inside the C code.
  1247.     */
  1248.     case 155: /* select */
  1249.     case 189: /* oneselect */
  1250.     case 206: /* seltablist_paren */
  1251. #line 369 "parse.y"
  1252. {sqlite3SelectDelete((yypminor->yy219));}
  1253. #line 1275 "parse.c"
  1254.       break;
  1255.     case 169: /* term */
  1256.     case 170: /* expr */
  1257.     case 194: /* where_opt */
  1258.     case 196: /* having_opt */
  1259.     case 204: /* on_opt */
  1260.     case 210: /* sortitem */
  1261.     case 218: /* escape */
  1262.     case 221: /* case_operand */
  1263.     case 223: /* case_else */
  1264.     case 235: /* when_clause */
  1265.     case 238: /* key_opt */
  1266. #line 629 "parse.y"
  1267. {sqlite3ExprDelete((yypminor->yy172));}
  1268. #line 1290 "parse.c"
  1269.       break;
  1270.     case 174: /* idxlist_opt */
  1271.     case 182: /* idxlist */
  1272.     case 192: /* selcollist */
  1273.     case 195: /* groupby_opt */
  1274.     case 197: /* orderby_opt */
  1275.     case 199: /* sclp */
  1276.     case 209: /* sortlist */
  1277.     case 211: /* nexprlist */
  1278.     case 212: /* setlist */
  1279.     case 215: /* itemlist */
  1280.     case 216: /* exprlist */
  1281.     case 222: /* case_exprlist */
  1282. #line 887 "parse.y"
  1283. {sqlite3ExprListDelete((yypminor->yy174));}
  1284. #line 1306 "parse.c"
  1285.       break;
  1286.     case 188: /* fullname */
  1287.     case 193: /* from */
  1288.     case 201: /* seltablist */
  1289.     case 202: /* stl_prefix */
  1290. #line 486 "parse.y"
  1291. {sqlite3SrcListDelete((yypminor->yy373));}
  1292. #line 1314 "parse.c"
  1293.       break;
  1294.     case 205: /* using_opt */
  1295.     case 208: /* inscollist */
  1296.     case 214: /* inscollist_opt */
  1297. #line 503 "parse.y"
  1298. {sqlite3IdListDelete((yypminor->yy432));}
  1299. #line 1321 "parse.c"
  1300.       break;
  1301.     case 231: /* trigger_cmd_list */
  1302.     case 236: /* trigger_cmd */
  1303. #line 990 "parse.y"
  1304. {sqlite3DeleteTriggerStep((yypminor->yy243));}
  1305. #line 1327 "parse.c"
  1306.       break;
  1307.     case 233: /* trigger_event */
  1308. #line 976 "parse.y"
  1309. {sqlite3IdListDelete((yypminor->yy370).b);}
  1310. #line 1332 "parse.c"
  1311.       break;
  1312.     default:  break;   /* If no destructor action specified: do nothing */
  1313.   }
  1314. }
  1315. /*
  1316. ** Pop the parser's stack once.
  1317. **
  1318. ** If there is a destructor routine associated with the token which
  1319. ** is popped from the stack, then call it.
  1320. **
  1321. ** Return the major token number for the symbol popped.
  1322. */
  1323. static int yy_pop_parser_stack(yyParser *pParser){
  1324.   YYCODETYPE yymajor;
  1325.   yyStackEntry *yytos = &pParser->yystack[pParser->yyidx];
  1326.   if( pParser->yyidx<0 ) return 0;
  1327. #ifndef NDEBUG
  1328.   if( yyTraceFILE && pParser->yyidx>=0 ){
  1329.     fprintf(yyTraceFILE,"%sPopping %sn",
  1330.       yyTracePrompt,
  1331.       yyTokenName[yytos->major]);
  1332.   }
  1333. #endif
  1334.   yymajor = yytos->major;
  1335.   yy_destructor( yymajor, &yytos->minor);
  1336.   pParser->yyidx--;
  1337.   return yymajor;
  1338. }
  1339. /* 
  1340. ** Deallocate and destroy a parser.  Destructors are all called for
  1341. ** all stack elements before shutting the parser down.
  1342. **
  1343. ** Inputs:
  1344. ** <ul>
  1345. ** <li>  A pointer to the parser.  This should be a pointer
  1346. **       obtained from sqlite3ParserAlloc.
  1347. ** <li>  A pointer to a function used to reclaim memory obtained
  1348. **       from malloc.
  1349. ** </ul>
  1350. */
  1351. void sqlite3ParserFree(
  1352.   void *p,                    /* The parser to be deleted */
  1353.   void (*freeProc)(void*)     /* Function used to reclaim memory */
  1354. ){
  1355.   yyParser *pParser = (yyParser*)p;
  1356.   if( pParser==0 ) return;
  1357.   while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser);
  1358. #if YYSTACKDEPTH<=0
  1359.   free(pParser->yystack);
  1360. #endif
  1361.   (*freeProc)((void*)pParser);
  1362. }
  1363. /*
  1364. ** Find the appropriate action for a parser given the terminal
  1365. ** look-ahead token iLookAhead.
  1366. **
  1367. ** If the look-ahead token is YYNOCODE, then check to see if the action is
  1368. ** independent of the look-ahead.  If it is, return the action, otherwise
  1369. ** return YY_NO_ACTION.
  1370. */
  1371. static int yy_find_shift_action(
  1372.   yyParser *pParser,        /* The parser */
  1373.   YYCODETYPE iLookAhead     /* The look-ahead token */
  1374. ){
  1375.   int i;
  1376.   int stateno = pParser->yystack[pParser->yyidx].stateno;
  1377.  
  1378.   if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){
  1379.     return yy_default[stateno];
  1380.   }
  1381.   assert( iLookAhead!=YYNOCODE );
  1382.   i += iLookAhead;
  1383.   if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){
  1384.     if( iLookAhead>0 ){
  1385. #ifdef YYFALLBACK
  1386.       int iFallback;            /* Fallback token */
  1387.       if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0])
  1388.              && (iFallback = yyFallback[iLookAhead])!=0 ){
  1389. #ifndef NDEBUG
  1390.         if( yyTraceFILE ){
  1391.           fprintf(yyTraceFILE, "%sFALLBACK %s => %sn",
  1392.              yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
  1393.         }
  1394. #endif
  1395.         return yy_find_shift_action(pParser, iFallback);
  1396.       }
  1397. #endif
  1398. #ifdef YYWILDCARD
  1399.       {
  1400.         int j = i - iLookAhead + YYWILDCARD;
  1401.         if( j>=0 && j<YY_SZ_ACTTAB && yy_lookahead[j]==YYWILDCARD ){
  1402. #ifndef NDEBUG
  1403.           if( yyTraceFILE ){
  1404.             fprintf(yyTraceFILE, "%sWILDCARD %s => %sn",
  1405.                yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]);
  1406.           }
  1407. #endif /* NDEBUG */
  1408.           return yy_action[j];
  1409.         }
  1410.       }
  1411. #endif /* YYWILDCARD */
  1412.     }
  1413.     return yy_default[stateno];
  1414.   }else{
  1415.     return yy_action[i];
  1416.   }
  1417. }
  1418. /*
  1419. ** Find the appropriate action for a parser given the non-terminal
  1420. ** look-ahead token iLookAhead.
  1421. **
  1422. ** If the look-ahead token is YYNOCODE, then check to see if the action is
  1423. ** independent of the look-ahead.  If it is, return the action, otherwise
  1424. ** return YY_NO_ACTION.
  1425. */
  1426. static int yy_find_reduce_action(
  1427.   int stateno,              /* Current state number */
  1428.   YYCODETYPE iLookAhead     /* The look-ahead token */
  1429. ){
  1430.   int i;
  1431.   assert( stateno<=YY_REDUCE_MAX );
  1432.   i = yy_reduce_ofst[stateno];
  1433.   assert( i!=YY_REDUCE_USE_DFLT );
  1434.   assert( iLookAhead!=YYNOCODE );
  1435.   i += iLookAhead;
  1436.   assert( i>=0 && i<YY_SZ_ACTTAB );
  1437.   assert( yy_lookahead[i]==iLookAhead );
  1438.   return yy_action[i];
  1439. }
  1440. /*
  1441. ** The following routine is called if the stack overflows.
  1442. */
  1443. static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){
  1444.    sqlite3ParserARG_FETCH;
  1445.    yypParser->yyidx--;
  1446. #ifndef NDEBUG
  1447.    if( yyTraceFILE ){
  1448.      fprintf(yyTraceFILE,"%sStack Overflow!n",yyTracePrompt);
  1449.    }
  1450. #endif
  1451.    while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser);
  1452.    /* Here code is inserted which will execute if the parser
  1453.    ** stack every overflows */
  1454. #line 39 "parse.y"
  1455.   sqlite3ErrorMsg(pParse, "parser stack overflow");
  1456.   pParse->parseError = 1;
  1457. #line 1487 "parse.c"
  1458.    sqlite3ParserARG_STORE; /* Suppress warning about unused %extra_argument var */
  1459. }
  1460. /*
  1461. ** Perform a shift action.
  1462. */
  1463. static void yy_shift(
  1464.   yyParser *yypParser,          /* The parser to be shifted */
  1465.   int yyNewState,               /* The new state to shift in */
  1466.   int yyMajor,                  /* The major token to shift in */
  1467.   YYMINORTYPE *yypMinor         /* Pointer ot the minor token to shift in */
  1468. ){
  1469.   yyStackEntry *yytos;
  1470.   yypParser->yyidx++;
  1471. #if YYSTACKDEPTH>0 
  1472.   if( yypParser->yyidx>=YYSTACKDEPTH ){
  1473.     yyStackOverflow(yypParser, yypMinor);
  1474.     return;
  1475.   }
  1476. #else
  1477.   if( yypParser->yyidx>=yypParser->yystksz ){
  1478.     yyGrowStack(yypParser);
  1479.     if( yypParser->yyidx>=yypParser->yystksz ){
  1480.       yyStackOverflow(yypParser, yypMinor);
  1481.       return;
  1482.     }
  1483.   }
  1484. #endif
  1485.   yytos = &yypParser->yystack[yypParser->yyidx];
  1486.   yytos->stateno = yyNewState;
  1487.   yytos->major = yyMajor;
  1488.   yytos->minor = *yypMinor;
  1489. #ifndef NDEBUG
  1490.   if( yyTraceFILE && yypParser->yyidx>0 ){
  1491.     int i;
  1492.     fprintf(yyTraceFILE,"%sShift %dn",yyTracePrompt,yyNewState);
  1493.     fprintf(yyTraceFILE,"%sStack:",yyTracePrompt);
  1494.     for(i=1; i<=yypParser->yyidx; i++)
  1495.       fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]);
  1496.     fprintf(yyTraceFILE,"n");
  1497.   }
  1498. #endif
  1499. }
  1500. /* The following table contains information about every rule that
  1501. ** is used during the reduce.
  1502. */
  1503. static const struct {
  1504.   YYCODETYPE lhs;         /* Symbol on the left-hand side of the rule */
  1505.   unsigned char nrhs;     /* Number of right-hand side symbols in the rule */
  1506. } yyRuleInfo[] = {
  1507.   { 139, 1 },
  1508.   { 140, 2 },
  1509.   { 140, 1 },
  1510.   { 142, 1 },
  1511.   { 141, 1 },
  1512.   { 141, 3 },
  1513.   { 144, 0 },
  1514.   { 144, 1 },
  1515.   { 144, 3 },
  1516.   { 143, 3 },
  1517.   { 146, 0 },
  1518.   { 146, 1 },
  1519.   { 146, 2 },
  1520.   { 145, 0 },
  1521.   { 145, 1 },
  1522.   { 145, 1 },
  1523.   { 145, 1 },
  1524.   { 143, 2 },
  1525.   { 143, 2 },
  1526.   { 143, 2 },
  1527.   { 143, 2 },
  1528.   { 148, 6 },
  1529.   { 151, 0 },
  1530.   { 151, 3 },
  1531.   { 150, 1 },
  1532.   { 150, 0 },
  1533.   { 149, 4 },
  1534.   { 149, 2 },
  1535.   { 153, 3 },
  1536.   { 153, 1 },
  1537.   { 156, 3 },
  1538.   { 157, 1 },
  1539.   { 160, 1 },
  1540.   { 161, 1 },
  1541.   { 147, 1 },
  1542.   { 147, 1 },
  1543.   { 147, 1 },
  1544.   { 158, 0 },
  1545.   { 158, 1 },
  1546.   { 162, 1 },
  1547.   { 162, 4 },
  1548.   { 162, 6 },
  1549.   { 163, 1 },
  1550.   { 163, 2 },
  1551.   { 164, 1 },
  1552.   { 164, 1 },
  1553.   { 159, 2 },
  1554.   { 159, 0 },
  1555.   { 167, 3 },
  1556.   { 167, 1 },
  1557.   { 168, 2 },
  1558.   { 168, 4 },
  1559.   { 168, 3 },
  1560.   { 168, 3 },
  1561.   { 168, 2 },
  1562.   { 168, 2 },
  1563.   { 168, 3 },
  1564.   { 168, 5 },
  1565.   { 168, 2 },
  1566.   { 168, 4 },
  1567.   { 168, 4 },
  1568.   { 168, 1 },
  1569.   { 168, 2 },
  1570.   { 173, 0 },
  1571.   { 173, 1 },
  1572.   { 175, 0 },
  1573.   { 175, 2 },
  1574.   { 177, 2 },
  1575.   { 177, 3 },
  1576.   { 177, 3 },
  1577.   { 177, 3 },
  1578.   { 178, 2 },
  1579.   { 178, 2 },
  1580.   { 178, 1 },
  1581.   { 178, 1 },
  1582.   { 176, 3 },
  1583.   { 176, 2 },
  1584.   { 179, 0 },
  1585.   { 179, 2 },
  1586.   { 179, 2 },
  1587.   { 154, 0 },
  1588.   { 154, 2 },
  1589.   { 180, 3 },
  1590.   { 180, 2 },
  1591.   { 180, 1 },
  1592.   { 181, 2 },
  1593.   { 181, 7 },
  1594.   { 181, 5 },
  1595.   { 181, 5 },
  1596.   { 181, 10 },
  1597.   { 183, 0 },
  1598.   { 183, 1 },
  1599.   { 171, 0 },
  1600.   { 171, 3 },
  1601.   { 184, 0 },
  1602.   { 184, 2 },
  1603.   { 185, 1 },
  1604.   { 185, 1 },
  1605.   { 185, 1 },
  1606.   { 143, 4 },
  1607.   { 187, 2 },
  1608.   { 187, 0 },
  1609.   { 143, 8 },
  1610.   { 143, 4 },
  1611.   { 143, 1 },
  1612.   { 155, 1 },
  1613.   { 155, 3 },
  1614.   { 190, 1 },
  1615.   { 190, 2 },
  1616.   { 190, 1 },
  1617.   { 189, 9 },
  1618.   { 191, 1 },
  1619.   { 191, 1 },
  1620.   { 191, 0 },
  1621.   { 199, 2 },
  1622.   { 199, 0 },
  1623.   { 192, 3 },
  1624.   { 192, 2 },
  1625.   { 192, 4 },
  1626.   { 200, 2 },
  1627.   { 200, 1 },
  1628.   { 200, 0 },
  1629.   { 193, 0 },
  1630.   { 193, 2 },
  1631.   { 202, 2 },
  1632.   { 202, 0 },
  1633.   { 201, 6 },
  1634.   { 201, 7 },
  1635.   { 206, 1 },
  1636.   { 206, 1 },
  1637.   { 152, 0 },
  1638.   { 152, 2 },
  1639.   { 188, 2 },
  1640.   { 203, 1 },
  1641.   { 203, 2 },
  1642.   { 203, 3 },
  1643.   { 203, 4 },
  1644.   { 204, 2 },
  1645.   { 204, 0 },
  1646.   { 205, 4 },
  1647.   { 205, 0 },
  1648.   { 197, 0 },
  1649.   { 197, 3 },
  1650.   { 209, 4 },
  1651.   { 209, 2 },
  1652.   { 210, 1 },
  1653.   { 172, 1 },
  1654.   { 172, 1 },
  1655.   { 172, 0 },
  1656.   { 195, 0 },
  1657.   { 195, 3 },
  1658.   { 196, 0 },
  1659.   { 196, 2 },
  1660.   { 198, 0 },
  1661.   { 198, 2 },
  1662.   { 198, 4 },
  1663.   { 198, 4 },
  1664.   { 143, 4 },
  1665.   { 194, 0 },
  1666.   { 194, 2 },
  1667.   { 143, 6 },
  1668.   { 212, 5 },
  1669.   { 212, 3 },
  1670.   { 143, 8 },
  1671.   { 143, 5 },
  1672.   { 143, 6 },
  1673.   { 213, 2 },
  1674.   { 213, 1 },
  1675.   { 215, 3 },
  1676.   { 215, 1 },
  1677.   { 214, 0 },
  1678.   { 214, 3 },
  1679.   { 208, 3 },
  1680.   { 208, 1 },
  1681.   { 170, 1 },
  1682.   { 170, 3 },
  1683.   { 169, 1 },
  1684.   { 170, 1 },
  1685.   { 170, 1 },
  1686.   { 170, 3 },
  1687.   { 170, 5 },
  1688.   { 169, 1 },
  1689.   { 169, 1 },
  1690.   { 170, 1 },
  1691.   { 170, 1 },
  1692.   { 170, 3 },
  1693.   { 170, 6 },
  1694.   { 170, 5 },
  1695.   { 170, 4 },
  1696.   { 169, 1 },
  1697.   { 170, 3 },
  1698.   { 170, 3 },
  1699.   { 170, 3 },
  1700.   { 170, 3 },
  1701.   { 170, 3 },
  1702.   { 170, 3 },
  1703.   { 170, 3 },
  1704.   { 170, 3 },
  1705.   { 217, 1 },
  1706.   { 217, 2 },
  1707.   { 217, 1 },
  1708.   { 217, 2 },
  1709.   { 218, 2 },
  1710.   { 218, 0 },
  1711.   { 170, 4 },
  1712.   { 170, 2 },
  1713.   { 170, 3 },
  1714.   { 170, 3 },
  1715.   { 170, 4 },