# -*- Python -*-

# Driver template for the LEMON parser generator.
# The author disclaims copyright to this source code.


# First off, define the token values.  These constants (all generated
# automatically by the parser generator) specify the various kinds of
# tokens (terminals) that the parser understands.
#
# Each symbol here is a terminal symbol in the grammar.

T_SEMI                         =  1
K_BEGIN                        =  2
K_ROLLBACK                     =  3
K_COMMIT                       =  4
K_CREATE                       =  5
K_TABLE                        =  6
K_AS                           =  7
K_DROP                         =  8
K_ALTER                        =  9
T_COMMA                        = 10
K_RENAME                       = 11
K_TO                           = 12
K_SET                          = 13
K_DEFAULT                      = 14
K_GENERATOR                    = 15
K_UNSET                        = 16
K_COLUMN                       = 17
K_FOR                          = 18
K_USING                        = 19
T_LROUND                       = 20
T_RROUND                       = 21
ANY                            = 22
K_INITIALIZE                   = 23
L_INTEGER                      = 24
K_MODEL                        = 25
K_MODELS                       = 26
K_ANALYZE                      = 27
K_FROM                         = 28
K_TEMP                         = 29
K_TEMPORARY                    = 30
K_IF                           = 31
K_EXISTS                       = 32
K_NOT                          = 33
T_MINUS                        = 34
K_CHECKPOINT                   = 35
K_ITERATION                    = 36
K_ITERATIONS                   = 37
K_MINUTE                       = 38
K_MINUTES                      = 39
K_SECOND                       = 40
K_SECONDS                      = 41
K_WAIT                         = 42
K_SIMULATE                     = 43
K_GIVEN                        = 44
T_EQ                           = 45
K_SELECT                       = 46
K_ESTIMATE                     = 47
K_COLUMNS                      = 48
K_PAIRWISE                     = 49
K_ROW                          = 50
K_BY                           = 51
K_INFER                        = 52
K_EXPLICIT                     = 53
T_STAR                         = 54
K_WITH                         = 55
K_CONFIDENCE                   = 56
K_PREDICT                      = 57
K_DISTINCT                     = 58
K_ALL                          = 59
T_DOT                          = 60
L_NAME                         = 61
K_OF                           = 62
K_WHERE                        = 63
K_GROUP                        = 64
K_HAVING                       = 65
K_ORDER                        = 66
K_ASC                          = 67
K_DESC                         = 68
K_LIMIT                        = 69
K_OFFSET                       = 70
K_OR                           = 71
K_AND                          = 72
K_IS                           = 73
K_LIKE                         = 74
K_ESCAPE                       = 75
K_GLOB                         = 76
K_REGEXP                       = 77
K_MATCH                        = 78
K_BETWEEN                      = 79
K_IN                           = 80
K_ISNULL                       = 81
K_NOTNULL                      = 82
T_NEQ                          = 83
T_LT                           = 84
T_LEQ                          = 85
T_GEQ                          = 86
T_GT                           = 87
T_BITAND                       = 88
T_BITIOR                       = 89
T_LSHIFT                       = 90
T_RSHIFT                       = 91
T_PLUS                         = 92
T_SLASH                        = 93
T_PERCENT                      = 94
T_CONCAT                       = 95
K_COLLATE                      = 96
L_STRING                       = 97
T_BITNOT                       = 98
K_PREDICTIVE                   = 99
K_PROBABILITY                  = 100
K_VALUE                        = 101
K_SIMILARITY                   = 102
K_DEPENDENCE                   = 103
K_MUTUAL                       = 104
K_INFORMATION                  = 105
K_CORRELATION                  = 106
K_PVALUE                       = 107
K_RESPECT                      = 108
K_SAMPLES                      = 109
L_NUMPAR                       = 110
L_NAMPAR                       = 111
K_CAST                         = 112
K_CASE                         = 113
K_END                          = 114
K_WHEN                         = 115
K_THEN                         = 116
K_ELSE                         = 117
K_NULL                         = 118
L_FLOAT                        = 119
K_BTABLE                       = 120
K_CONF                         = 121

# The state of the parser is completely contained in an instance of
# the following class.

class Parser(object):

    # defaults
    YYERRORSYMBOL = None
    YYWILDCARD = None

    # The next thing included is series of definitions which control
    # various aspects of the generated parser.
    #    YYNOCODE           is a number which corresponds
    #                       to no legal terminal or nonterminal number.  This
    #                       number is used to fill in empty slots of the hash 
    #                       table.
    #    YYNSTATE           the combined number of states.
    #    YYNRULE            the number of rules in the grammar
    #    YYERRORSYMBOL      is the code number of the error symbol.  If not
    #                       defined, then do no error processing.

    YYNOCODE = 219
    YYWILDCARD = 22
    YYNSTATE = 526
    YYNRULE = 265
    YYERRORSYMBOL = 122
    YY_NO_ACTION     = YYNSTATE + YYNRULE + 2
    YY_ACCEPT_ACTION = YYNSTATE + YYNRULE + 1
    YY_ERROR_ACTION  = YYNSTATE + YYNRULE


    # Next are that tables used to determine what action to take based on the
    # current state and lookahead token.  These tables are used to implement
    # functions that take a state number and lookahead value and return an
    # action integer.  
    #
    # Suppose the action integer is N.  Then the action is determined as
    # follows
    #
    #   0 <= N < YYNSTATE                  Shift N.  That is, push the lookahead
    #                                      token onto the stack and goto state N.
    #
    #   YYNSTATE <= N < YYNSTATE+YYNRULE   Reduce by rule N-YYNSTATE.
    #
    #   N == YYNSTATE+YYNRULE              A syntax error has occurred.
    #
    #   N == YYNSTATE+YYNRULE+1            The parser accepts its input.
    #
    #   N == YYNSTATE+YYNRULE+2            No such action.  Denotes unused
    #                                      slots in the yy_action[] table.
    #
    # The action table is constructed as a single large table named yy_action[].
    # Given state S and lookahead X, the action is computed as
    #
    #      yy_action[ yy_shift_ofst[S] + X ]
    #
    # If the index value yy_shift_ofst[S]+X is out of range or if the value
    # yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S]
    # is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table
    # and that yy_default[S] should be used instead.  
    #
    # The formula above is for computing the action when the lookahead is
    # a terminal symbol.  If the lookahead is a non-terminal (as occurs after
    # a reduce action) then the yy_reduce_ofst[] array is used in place of
    # the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of
    # YY_SHIFT_USE_DFLT.
    #
    # The following are the tables generated in this section:
    #
    #  yy_action[]        A single table containing all actions.
    #  yy_lookahead[]     A table containing the lookahead for each entry in
    #                     yy_action.  Used to detect hash collisions.
    #  yy_shift_ofst[]    For each state, the offset into yy_action for
    #                     shifting terminals.
    #  yy_reduce_ofst[]   For each state, the offset into yy_action for
    #                     shifting non-terminals after a reduce.
    #  yy_default[]       Default action for each state.

    YY_ACTTAB_COUNT = 2336
    yy_action = [
          300,  209,  117,  319,  194,  319,   62,  319,  464,   39, #     0
          464,  193,  464,   29,   48,  157,   46,   44,   42,   40, #    10
          292,   57,   56,   55,   54,  485,  360,  360,  359,  359, #    20
          358,  358,  301,  199,  492,  491,  490,  489,  488,  487, #    30
          486,   28,   50,  468,   38,   36,   34,   32,  290,  398, #    40
          397,   30,  308,  121,   73,  475,  123,  332,   18,  475, #    50
           16,  319,   68,   67,   63,  450,  464,  352,  340,  501, #    60
          207,  238,  236,  255,  242,  329,  338,  512,  508,  315, #    70
          349,  512,  508,  495,  464,  495,  106,  495,    1,  126, #    80
          110,    4,  459,   72,   71,   86,  447,  427,    2,  444, #    90
          321,   26,   78,  507,  507,  194,  507,   49,  165,  172, #   100
          116,  106,  193,  475,  126,  110,   57,   56,   55,   54, #   110
           86,  473,    1,  319,  525,  187,  459,  251,  464,  260, #   120
          201,  475,  434,  438,  321,  511,  508,   61,   60,   59, #   130
           58,  495,   93,  352,  340,  501,  207,  238,  236,  255, #   140
          242,  329,  338,  512,  508,   57,   56,   55,   54,  495, #   150
           77,  383,  550,  260,  319,  457,   79,  348,  346,  464, #   160
          129,  335,  333,   47,  118,  475,  382,  382,  494,  493, #   170
          327,   10,   57,   56,   55,   54,  460,  458,    1,  202, #   180
          386,  385,  459,  259,  242,  329,  338,  512,  508,  457, #   190
          321,   26,   78,  495,   93,  513,    9,   93,  152,  277, #   200
          276,  375,  494,  493,  327,   10,  475,  150,  405,  337, #   210
          460,  458,  286,   23,  113,  187,    7,   88,   88,  260, #   220
          515,  207,  238,  236,  255,  242,  329,  338,  512,  508, #   230
          471,  513,  205,  161,  495,   45,  319,  180,  138,  138, #   240
          322,  464,  418,  417,   57,   56,   55,   54,   70,  120, #   250
           77,  271,  298,   67,  268,  457,   79,  348,  346,   93, #   260
          129,  335,  333,  106,  118,  124,  126,  110,  494,  493, #   270
          327,   10,   86,  556,  319,   25,  460,  458,    1,  464, #   280
          146,  145,  459,  202,  556,  385,  371,  427,  475,  141, #   290
          321,   26,   78,  518,  507,   27,  330,  415,  323,  341, #   300
          352,  340,  501,  207,  238,  236,  255,  242,  329,  338, #   310
          512,  508,  448,  426,  247,  187,  495,  108,  485,  260, #   320
          319,  342,  504,   31,  296,  464,  475,  492,  491,  490, #   330
          489,  488,  487,  486,   23,   57,   56,   55,   54,  351, #   340
          501,  207,  238,  236,  255,  242,  329,  338,  512,  508, #   350
           77,   74,  341,  258,  495,  457,   79,  348,  346,  160, #   360
          129,  335,  333,   53,  118,   76,  250,  347,  494,  493, #   370
          327,   10,  475,  555,  285,  504,  460,  458,    1,   96, #   380
           13,  173,  459,  202,  555,  385,   84,  424,  203,   19, #   390
          321,   26,   78,  309,  510,  508,   43,  427,  341,  388, #   400
          495,  426,  418,  417,  507,   57,   56,   55,   54,  480, #   410
          479,    3,  448,  325,  303,  167,  410,  254,  485,  260, #   420
          342,  504,   97,  293,  328,  433,   41,  492,  491,  490, #   430
          489,  488,  487,  486,  319,   57,   56,   55,   54,  464, #   440
           14,    9,  319,  319,  173,  507,  444,  464,  464,  341, #   450
           77,  654,  310,  507,  241,  457,   79,  348,  346,   87, #   460
          129,  335,  333,  454,  118,  450,   98,   98,  494,  493, #   470
          327,   10,  503,  266,  365,  424,  460,  458,    1,  319, #   480
          262,  375,  459,  314,  464,   75,  475,  441,  445,  313, #   490
          321,   51,   78,  353,  476,  475,  195,  287,  352,  340, #   500
          501,  207,  238,  236,  255,  242,  329,  338,  512,  508, #   510
          390,  426,    1,  426,  495,  187,  459,  509,  508,  260, #   520
          312,  436,  495,  495,  321,   26,   78,  130,  261,  483, #   530
           37,  452,  343,  483,   35,  105,  483,  328,   66,   57, #   540
           56,   55,   54,   57,   56,   55,   54,  484,   21,  187, #   550
           77,  466,  160,  260,  446,  457,   79,  348,  346,  495, #   560
          129,  335,  333,  483,  118,  273,  368,   22,  494,  493, #   570
          327,   10,  128,  355,  792,   52,  460,  458,  192,  411, #   580
          127,  440,  282,  496,   77,  428,    8,  406,   12,  457, #   590
           79,  348,  346,   81,  129,  335,  333,   20,  118,  470, #   600
          103,  474,  494,  493,  327,   10,  304,  472,  315,  414, #   610
          460,  458,    1,  464,  469,   69,  459,   11,  181,  462, #   620
           17,   80,  114,  166,  321,  178,   78,  356,  524,  523, #   630
          522,  485,  442,  432,  319,  164,  425,  165,  162,  464, #   640
          492,  491,  490,  489,  488,  487,  486,  125,  421,  187, #   650
          420,  419,  416,  260,   94,  485,  159,  409,  408,  158, #   660
          475,  297,  422,   92,  492,  491,  490,  489,  488,  487, #   670
          486,  294,  352,  340,  501,  207,  238,  236,  255,  242, #   680
          329,  338,  512,  508,   77,  403,  344,  311,  495,  457, #   690
           79,  348,  346,   83,  129,  335,  333,  401,  118,   65, #   700
           64,  315,  494,  493,  327,   10,  464,   33,  505,  508, #   710
          460,  458,  485,  389,  495,  400,   57,   56,   55,   54, #   720
          399,  492,  491,  490,  489,  488,  487,  486,  396,  395, #   730
          165,  394,  156,  283,  315,  153,  154,  380,  147,  464, #   740
          115,  107,  148,  274,  319,  111,  376,  270,  143,  464, #   750
          142,  140,  269,  475,  369,  422,  267,  139,  245,  319, #   760
          122,  137,  307,  165,  464,  352,  340,  501,  207,  238, #   770
          236,  255,  242,  329,  338,  512,  508,  306,  200,  284, #   780
          411,  495,  109,  354,  112,  450,  475,  439,  438,  197, #   790
          198,  316,  319,   89,   24,  506,  475,  464,  352,  340, #   800
          501,  207,  238,  236,  255,  242,  329,  338,  512,  508, #   810
          196,  475,  507,  517,  495,  244,  329,  338,  512,  508, #   820
          499,  454,  334,  319,  495,  498,  497,   82,  464,  257, #   830
          242,  329,  338,  512,  508,  189,   15,  186,  188,  495, #   840
          320,  104,  436,  331,  475,  328,  184,  183,  102,  463, #   850
          182,  353,  124,  451,  175,  288,  352,  340,  501,  207, #   860
          238,  236,  255,  242,  329,  338,  512,  508,  179,  177, #   870
          176,  319,  495,  313,  443,  475,  464,  174,  170,   85, #   880
          101,  319,  429,  171,  482,  168,  464,  352,  340,  501, #   890
          207,  238,  236,  255,  242,  329,  338,  512,  508,  169, #   900
          454,   95,  319,  495,  100,  437,  305,  464,  204,  407, #   910
          435,  163,  423,  281,  298,  391,  280,  155,  384,  151, #   920
          279,  278,  381,  475,  149,  413,  379,  275,  412,  315, #   930
          252,  455,  378,  295,  464,  352,  340,  501,  207,  238, #   940
          236,  255,  242,  329,  338,  512,  508,  377,   91,  373, #   950
          272,  495,  372,  367,  475,  402,  508,  370,  165,   99, #   960
          319,  495,  265,  366,  263,  464,  352,  340,  501,  207, #   970
          238,  236,  255,  242,  329,  338,  512,  508,  364,  119, #   980
          131,  475,  495,  449,  206,  134,  363,  319,  132,  248, #   990
          133,  362,  464,  352,  340,  501,  207,  238,  236,  255, #  1000
          242,  329,  338,  512,  508,  361,  208,  357,  345,  495, #  1010
          404,  190,  475,  500,  191,    6,  516,  481,  477,  318, #  1020
          430,  144,  135,  478,  352,  340,  501,  207,  238,  236, #  1030
          255,  242,  329,  338,  512,  508,  253,  431,  324,  475, #  1040
          495,  185,  387,  374,    5,  467,  793,  793,  793,  793, #  1050
          793,  352,  340,  501,  207,  238,  236,  255,  242,  329, #  1060
          338,  512,  508,  319,  309,  793,  793,  495,  464,  793, #  1070
          793,  302,  793,  793,  793,  793,  793,  793,  793,  793, #  1080
          793,  793,  793,  793,  793,  793,  793,  793,  793,  485, #  1090
          319,  793,  502,  793,  793,  464,  485,  793,  492,  491, #  1100
          490,  489,  488,  487,  486,  492,  491,  490,  489,  488, #  1110
          487,  486,  793,  793,  793,  475,  319,  793,  793,  299, #  1120
          793,  464,  793,  793,  793,  793,  793,  352,  340,  501, #  1130
          207,  238,  236,  255,  242,  329,  338,  512,  508,  793, #  1140
          793,  793,  475,  495,  793,  326,  793,  793,  319,  793, #  1150
          793,  793,  793,  464,  352,  340,  501,  207,  238,  236, #  1160
          255,  242,  329,  338,  512,  508,  793,  793,  475,  291, #  1170
          495,  793,  793,  793,  793,  793,  793,  465,  793,  793, #  1180
          352,  340,  501,  207,  238,  236,  255,  242,  329,  338, #  1190
          512,  508,  319,  793,  485,  793,  495,  464,  793,  793, #  1200
          475,  793,  793,  492,  491,  490,  489,  488,  487,  486, #  1210
          793,  793,  352,  340,  501,  207,  238,  236,  255,  242, #  1220
          329,  338,  512,  508,  319,  793,  793,  793,  495,  464, #  1230
          793,  793,  793,  793,  793,  793,  793,  793,  793,  793, #  1240
          793,  793,  793,  793,  475,  793,  793,  793,  793,  793, #  1250
          793,  319,  793,  317,  793,  793,  464,  793,  514,  207, #  1260
          238,  236,  255,  242,  329,  338,  512,  508,  793,  793, #  1270
          793,  793,  495,  793,  793,  793,  475,  319,  793,  793, #  1280
          461,  793,  464,  793,  793,  793,  793,  793,  352,  340, #  1290
          501,  207,  238,  236,  255,  242,  329,  338,  512,  508, #  1300
          793,  793,  793,  475,  495,  793,  456,  793,  793,  319, #  1310
          793,  793,  793,  793,  464,  352,  340,  501,  207,  238, #  1320
          236,  255,  242,  329,  338,  512,  508,  793,  793,  475, #  1330
          793,  495,  793,  793,  793,  319,  793,  793,  453,  793, #  1340
          464,  352,  340,  501,  207,  238,  236,  255,  242,  329, #  1350
          338,  512,  508,  319,  793,  793,  793,  495,  464,  793, #  1360
          793,  475,  793,  793,  793,  793,  793,  793,  793,  793, #  1370
          793,  793,  793,  352,  340,  501,  207,  238,  236,  255, #  1380
          242,  329,  338,  512,  508,  319,  793,  475,  793,  495, #  1390
          464,  793,  793,  793,  793,  793,  793,  793,  793,  793, #  1400
          793,  793,  793,  793,  793,  475,  243,  329,  338,  512, #  1410
          508,  793,  319,  793,  393,  495,  793,  464,  793,  793, #  1420
          793,  233,  236,  255,  242,  329,  338,  512,  508,  793, #  1430
          793,  793,  793,  495,  793,  793,  793,  475,  793,  793, #  1440
          793,  392,  793,  793,  793,  793,  793,  793,  793,  352, #  1450
          340,  501,  207,  238,  236,  255,  242,  329,  338,  512, #  1460
          508,  793,  793,  793,  475,  495,  526,  793,  521,  520, #  1470
          519,   90,  793,  793,  220,  246,  352,  340,  501,  207, #  1480
          238,  236,  255,  242,  329,  338,  512,  508,  793,  264, #  1490
          319,  793,  495,  136,  793,  464,  793,  793,  793,  793, #  1500
          793,  793,  793,  793,  793,  319,  793,  793,  793,  106, #  1510
          464,  793,  126,  110,  793,  793,  793,  319,   86,  793, #  1520
          793,  793,  464,  793,  793,  793,  793,  793,  793,  793, #  1530
          793,  793,  793,  793,  793,  793,  793,  793,  793,  793, #  1540
          793,  793,  475,  793,  319,  793,  793,  793,  793,  464, #  1550
          793,  793,  793,  793,  793,  793,  793,  475,  219,  236, #  1560
          255,  242,  329,  338,  512,  508,  793,  793,  793,  475, #  1570
          495,  793,  793,  232,  236,  255,  242,  329,  338,  512, #  1580
          508,  319,  793,  793,  793,  495,  464,  256,  242,  329, #  1590
          338,  512,  508,  793,  793,  793,  475,  495,  793,  793, #  1600
          289,  793,  793,  793,  793,  793,  319,  793,  793,  793, #  1610
          793,  464,  218,  236,  255,  242,  329,  338,  512,  508, #  1620
          793,  319,  793,  793,  495,  485,  464,  793,  793,  793, #  1630
          793,  793,  793,  475,  492,  491,  490,  489,  488,  487, #  1640
          486,  793,  793,  793,  793,  793,  793,  793,  793,  231, #  1650
          236,  255,  242,  329,  338,  512,  508,  793,  475,  793, #  1660
          793,  495,  793,  793,  793,  793,  793,  793,  793,  793, #  1670
          793,  793,  793,  475,  217,  236,  255,  242,  329,  338, #  1680
          512,  508,  793,  793,  793,  793,  495,  793,  793,  230, #  1690
          236,  255,  242,  329,  338,  512,  508,  319,  793,  793, #  1700
          793,  495,  464,  793,  793,  793,  793,  793,  793,  793, #  1710
          319,  793,  793,  793,  793,  464,  793,  793,  793,  793, #  1720
          793,  793,  793,  793,  319,  793,  793,  793,  793,  464, #  1730
          793,  793,  793,  793,  793,  793,  793,  793,  793,  793, #  1740
          793,  793,  793,  319,  793,  793,  793,  793,  464,  475, #  1750
          793,  793,  793,  793,  793,  793,  319,  793,  793,  793, #  1760
          793,  464,  475,  793,  793,  216,  236,  255,  242,  329, #  1770
          338,  512,  508,  793,  793,  793,  475,  495,  229,  236, #  1780
          255,  242,  329,  338,  512,  508,  319,  793,  793,  793, #  1790
          495,  464,  793,  793,  793,  475,  350,  338,  512,  508, #  1800
          793,  793,  793,  793,  495,  793,  793,  793,  475,  793, #  1810
          793,  215,  236,  255,  242,  329,  338,  512,  508,  793, #  1820
          793,  793,  793,  495,  228,  236,  255,  242,  329,  338, #  1830
          512,  508,  793,  793,  319,  793,  495,  793,  475,  464, #  1840
          793,  793,  793,  793,  793,  793,  793,  319,  793,  793, #  1850
          793,  793,  464,  793,  214,  236,  255,  242,  329,  338, #  1860
          512,  508,  793,  793,  793,  793,  495,  793,  793,  793, #  1870
          793,  793,  793,  793,  793,  793,  793,  793,  793,  793, #  1880
          319,  793,  793,  793,  793,  464,  475,  793,  793,  793, #  1890
          793,  793,  793,  319,  793,  793,  793,  793,  464,  475, #  1900
          793,  793,  227,  236,  255,  242,  329,  338,  512,  508, #  1910
          793,  793,  793,  793,  495,  213,  236,  255,  242,  329, #  1920
          338,  512,  508,  319,  793,  793,  793,  495,  464,  793, #  1930
          793,  793,  475,  793,  793,  793,  319,  793,  793,  793, #  1940
          793,  464,  793,  793,  793,  475,  793,  793,  226,  236, #  1950
          255,  242,  329,  338,  512,  508,  793,  793,  793,  793, #  1960
          495,  212,  236,  255,  242,  329,  338,  512,  508,  793, #  1970
          793,  319,  793,  495,  793,  475,  464,  793,  793,  793, #  1980
          793,  793,  793,  793,  319,  793,  793,  793,  475,  464, #  1990
          793,  225,  236,  255,  242,  329,  338,  512,  508,  793, #  2000
          793,  793,  793,  495,  793,  793,  793,  793,  339,  338, #  2010
          512,  508,  793,  793,  793,  793,  495,  319,  793,  793, #  2020
          793,  793,  464,  475,  793,  793,  793,  793,  793,  793, #  2030
          319,  793,  793,  793,  793,  464,  475,  793,  793,  211, #  2040
          236,  255,  242,  329,  338,  512,  508,  793,  793,  793, #  2050
          793,  495,  224,  236,  255,  242,  329,  338,  512,  508, #  2060
          319,  793,  793,  793,  495,  464,  793,  793,  793,  475, #  2070
          793,  793,  793,  319,  793,  793,  793,  793,  464,  793, #  2080
          793,  793,  475,  793,  793,  210,  236,  255,  242,  329, #  2090
          338,  512,  508,  793,  793,  793,  793,  495,  223,  236, #  2100
          255,  242,  329,  338,  512,  508,  793,  793,  319,  793, #  2110
          495,  793,  475,  464,  793,  793,  793,  793,  793,  793, #  2120
          793,  319,  793,  793,  793,  475,  464,  793,  222,  236, #  2130
          255,  242,  329,  338,  512,  508,  793,  793,  793,  793, #  2140
          495,  793,  793,  793,  793,  336,  338,  512,  508,  793, #  2150
          793,  793,  793,  495,  319,  793,  793,  793,  793,  464, #  2160
          475,  793,  793,  793,  793,  793,  793,  319,  793,  793, #  2170
          793,  793,  464,  475,  793,  793,  221,  236,  255,  242, #  2180
          329,  338,  512,  508,  793,  793,  793,  793,  495,  240, #  2190
          236,  255,  242,  329,  338,  512,  508,  319,  793,  793, #  2200
          793,  495,  464,  793,  793,  793,  475,  793,  793,  793, #  2210
          793,  793,  793,  793,  793,  793,  793,  793,  793,  475, #  2220
          793,  793,  793,  239,  255,  242,  329,  338,  512,  508, #  2230
          319,  793,  793,  793,  495,  464,  237,  255,  242,  329, #  2240
          338,  512,  508,  793,  793,  319,  793,  495,  793,  475, #  2250
          464,  793,  793,  793,  793,  793,  793,  793,  793,  793, #  2260
          793,  793,  793,  793,  793,  793,  235,  255,  242,  329, #  2270
          338,  512,  508,  793,  793,  793,  793,  495,  793,  793, #  2280
          793,  793,  475,  793,  793,  793,  793,  793,  793,  793, #  2290
          793,  793,  793,  793,  793,  793,  793,  475,  793,  234, #  2300
          255,  242,  329,  338,  512,  508,  793,  793,  793,  793, #  2310
          495,  793,  793,  793,  793,  249,  242,  329,  338,  512, #  2320
          508,  793,  793,  793,  793,  495, #  2330
        ]
    yy_lookahead = [
          128,   33,   20,  131,   55,  131,   34,  131,  136,   72, #     0
          136,   62,  136,   45,   74,   10,   76,   77,   78,   79, #    10
           80,   84,   85,   86,   87,  153,   36,   37,   38,   39, #    20
           40,   41,  160,   28,  162,  163,  164,  165,  166,  167, #    30
          168,   73,   74,   61,   76,   77,   78,   79,   80,   81, #    40
           82,   83,   48,   49,   54,  183,  107,  183,  115,  183, #    50
          117,  131,   20,   20,   92,   61,  136,  195,  196,  197, #    60
          198,  199,  200,  201,  202,  203,  204,  205,  206,  131, #    70
          204,  205,  206,  211,  136,  211,   43,  211,   20,   46, #    80
           47,   10,   24,   93,   94,   52,   54,   54,   53,   54, #    90
           32,   33,   34,   61,   61,   55,   61,   75,  160,   28, #   100
           10,   43,   62,  183,   46,   47,   84,   85,   86,   87, #   110
           52,   21,   20,  131,    1,   57,   24,  179,  136,   61, #   120
            6,  183,  184,  185,   32,  205,  206,   88,   89,   90, #   130
           91,  211,   10,  195,  196,  197,  198,  199,  200,  201, #   140
          202,  203,  204,  205,  206,   84,   85,   86,   87,  211, #   150
           92,   14,   15,   61,  131,   97,   98,   99,  100,  136, #   160
          102,  103,  104,   75,  106,  183,   29,   30,  110,  111, #   170
          112,  113,   84,   85,   86,   87,  118,  119,   20,   20, #   180
           21,   22,   24,  201,  202,  203,  204,  205,  206,   97, #   190
           32,   33,   34,  211,   72,   61,   10,   10,    6,  149, #   200
          150,  151,  110,  111,  112,  113,  183,   15,   21,   12, #   210
          118,  119,   54,   10,   28,   57,   58,   25,   26,   61, #   220
          197,  198,  199,  200,  201,  202,  203,  204,  205,  206, #   230
           24,   97,   48,   49,  211,   75,  131,   51,   25,   26, #   240
           34,  136,   58,   59,   84,   85,   86,   87,    7,   11, #   250
           92,   13,   55,   20,   16,   97,   98,   99,  100,   72, #   260
          102,  103,  104,   43,  106,  160,   46,   47,  110,  111, #   270
          112,  113,   52,   10,  131,   71,  118,  119,   20,  136, #   280
            6,   12,   24,   20,   21,   22,   17,   54,  183,   15, #   290
           32,   33,   34,  128,   61,   72,  191,  192,   92,  136, #   300
          195,  196,  197,  198,  199,  200,  201,  202,  203,  204, #   310
          205,  206,   54,  136,  140,   57,  211,  143,  153,   61, #   320
          131,  158,  159,   72,  161,  136,  183,  162,  163,  164, #   330
          165,  166,  167,  168,   10,   84,   85,   86,   87,  196, #   340
          197,  198,  199,  200,  201,  202,  203,  204,  205,  206, #   350
           92,   95,  136,   96,  211,   97,   98,   99,  100,  131, #   360
          102,  103,  104,   20,  106,   45,  189,  100,  110,  111, #   370
          112,  113,  183,   10,  158,  159,  118,  119,   20,   10, #   380
           10,  136,   24,   20,   21,   22,   20,  210,   10,   65, #   390
           32,   33,   34,  128,  205,  206,   75,   54,  136,   21, #   400
          211,  136,   58,   59,   61,   84,   85,   86,   87,   67, #   410
           68,   20,   54,  212,  186,   57,  188,  216,  153,   61, #   420
          158,  159,  177,  161,   55,  180,   75,  162,  163,  164, #   430
          165,  166,  167,  168,  131,   84,   85,   86,   87,  136, #   440
           70,   10,  131,  131,  136,   61,   54,  136,  136,  136, #   450
           92,   60,   48,   61,  189,   97,   98,   99,  100,   28, #   460
          102,  103,  104,  160,  106,   61,   25,   26,  110,  111, #   470
          112,  113,  159,  141,  142,  210,  118,  119,   20,  131, #   480
          150,  151,   24,  178,  136,  101,  183,  182,  180,    7, #   490
           32,   33,   34,  190,  183,  183,   62,  194,  195,  196, #   500
          197,  198,  199,  200,  201,  202,  203,  204,  205,  206, #   510
          136,  136,   20,  136,  211,   57,   24,  205,  206,   61, #   520
          181,  182,  211,  211,   32,   33,   34,   62,  154,  157, #   530
           75,  183,   44,  157,   75,   10,  157,   55,   20,   84, #   540
           85,   86,   87,   84,   85,   86,   87,  175,   20,   57, #   550
           92,  175,  131,   61,  175,   97,   98,   99,  100,  211, #   560
          102,  103,  104,  157,  106,  133,  134,   45,  110,  111, #   570
          112,  113,  100,  129,  123,  124,  118,  119,   55,   61, #   580
          105,  175,  138,  109,   92,  210,   51,  210,   10,   97, #   590
           98,   99,  100,   56,  102,  103,  104,   20,  106,   24, #   600
            7,   21,  110,  111,  112,  113,  128,   21,  131,  188, #   610
          118,  119,   20,  136,   24,   20,   24,   51,   60,  114, #   620
          116,   25,   60,   56,   32,   28,   34,  125,  126,  127, #   630
          128,  153,   61,   21,  131,   62,   21,  160,   62,  136, #   640
          162,  163,  164,  165,  166,  167,  168,  170,    1,   57, #   650
            1,    1,   21,   61,   10,  153,   21,   21,   21,   21, #   660
          183,  108,  185,   12,  162,  163,  164,  165,  166,  167, #   670
          168,   44,  195,  196,  197,  198,  199,  200,  201,  202, #   680
          203,  204,  205,  206,   92,   21,  183,  128,  211,   97, #   690
           98,   99,  100,   20,  102,  103,  104,   21,  106,   20, #   700
           20,  131,  110,  111,  112,  113,  136,   75,  205,  206, #   710
          118,  119,  153,   32,  211,   21,   84,   85,   86,   87, #   720
           21,  162,  163,  164,  165,  166,  167,  168,   21,   21, #   730
          160,   21,   15,   33,  131,   19,   18,   32,   10,  136, #   740
          170,   20,   28,   34,  131,   10,   24,   14,   12,  136, #   750
           12,   10,   15,  183,   15,  185,   14,   12,   24,  131, #   760
          214,   18,  122,  160,  136,  195,  196,  197,  198,  199, #   770
          200,  201,  202,  203,  204,  205,  206,  122,  130,   31, #   780
           61,  211,  143,  131,  143,   61,  183,  184,  185,  155, #   790
          137,   19,  131,   44,   69,  136,  183,  136,  195,  196, #   800
          197,  198,  199,  200,  201,  202,  203,  204,  205,  206, #   810
          156,  183,   61,  157,  211,  202,  203,  204,  205,  206, #   820
          136,  160,  136,  131,  211,  136,  209,   19,  136,  201, #   830
          202,  203,  204,  205,  206,  172,   63,  136,  173,  211, #   840
           64,  174,  182,   66,  183,   55,  155,  172,  174,  136, #   850
          173,  190,  160,  155,  172,  194,  195,  196,  197,  198, #   860
          199,  200,  201,  202,  203,  204,  205,  206,  137,  137, #   870
          155,  131,  211,    7,  181,  183,  136,  173,  155,   18, #   880
          174,  131,  187,  137,  192,  173,  136,  195,  196,  197, #   890
          198,  199,  200,  201,  202,  203,  204,  205,  206,  172, #   900
          160,  136,  131,  211,  174,  136,  122,  136,   50,  207, #   910
          181,  137,  137,  130,   55,  136,  131,  137,   61,  132, #   920
          139,   31,  131,  183,  132,  181,  137,   24,  181,  131, #   930
          190,  160,  137,  183,  136,  195,  196,  197,  198,  199, #   940
          200,  201,  202,  203,  204,  205,  206,  151,  131,  131, #   950
          136,  211,  136,  142,  183,  205,  206,  137,  160,  137, #   960
          131,  211,   11,  137,  130,  136,  195,  196,  197,  198, #   970
          199,  200,  201,  202,  203,  204,  205,  206,  137,  137, #   980
           18,  183,  211,  185,  213,  146,  148,  131,   35,  160, #   990
          147,   42,  136,  195,  196,  197,  198,  199,  200,  201, #  1000
          202,  203,  204,  205,  206,  152,   24,  152,  136,  211, #  1010
          207,  171,  183,  208,  208,  169,  160,  193,  208,  215, #  1020
          137,  135,  145,  208,  195,  196,  197,  198,  199,  200, #  1030
          201,  202,  203,  204,  205,  206,  217,  137,  217,  183, #  1040
          211,  176,  144,  134,  169,   61,  218,  218,  218,  218, #  1050
          218,  195,  196,  197,  198,  199,  200,  201,  202,  203, #  1060
          204,  205,  206,  131,  128,  218,  218,  211,  136,  218, #  1070
          218,  128,  218,  218,  218,  218,  218,  218,  218,  218, #  1080
          218,  218,  218,  218,  218,  218,  218,  218,  218,  153, #  1090
          131,  218,  160,  218,  218,  136,  153,  218,  162,  163, #  1100
          164,  165,  166,  167,  168,  162,  163,  164,  165,  166, #  1110
          167,  168,  218,  218,  218,  183,  131,  218,  218,  160, #  1120
          218,  136,  218,  218,  218,  218,  218,  195,  196,  197, #  1130
          198,  199,  200,  201,  202,  203,  204,  205,  206,  218, #  1140
          218,  218,  183,  211,  218,  160,  218,  218,  131,  218, #  1150
          218,  218,  218,  136,  195,  196,  197,  198,  199,  200, #  1160
          201,  202,  203,  204,  205,  206,  218,  218,  183,  128, #  1170
          211,  218,  218,  218,  218,  218,  218,  160,  218,  218, #  1180
          195,  196,  197,  198,  199,  200,  201,  202,  203,  204, #  1190
          205,  206,  131,  218,  153,  218,  211,  136,  218,  218, #  1200
          183,  218,  218,  162,  163,  164,  165,  166,  167,  168, #  1210
          218,  218,  195,  196,  197,  198,  199,  200,  201,  202, #  1220
          203,  204,  205,  206,  131,  218,  218,  218,  211,  136, #  1230
          218,  218,  218,  218,  218,  218,  218,  218,  218,  218, #  1240
          218,  218,  218,  218,  183,  218,  218,  218,  218,  218, #  1250
          218,  131,  218,  160,  218,  218,  136,  218,  197,  198, #  1260
          199,  200,  201,  202,  203,  204,  205,  206,  218,  218, #  1270
          218,  218,  211,  218,  218,  218,  183,  131,  218,  218, #  1280
          160,  218,  136,  218,  218,  218,  218,  218,  195,  196, #  1290
          197,  198,  199,  200,  201,  202,  203,  204,  205,  206, #  1300
          218,  218,  218,  183,  211,  218,  160,  218,  218,  131, #  1310
          218,  218,  218,  218,  136,  195,  196,  197,  198,  199, #  1320
          200,  201,  202,  203,  204,  205,  206,  218,  218,  183, #  1330
          218,  211,  218,  218,  218,  131,  218,  218,  160,  218, #  1340
          136,  195,  196,  197,  198,  199,  200,  201,  202,  203, #  1350
          204,  205,  206,  131,  218,  218,  218,  211,  136,  218, #  1360
          218,  183,  218,  218,  218,  218,  218,  218,  218,  218, #  1370
          218,  218,  218,  195,  196,  197,  198,  199,  200,  201, #  1380
          202,  203,  204,  205,  206,  131,  218,  183,  218,  211, #  1390
          136,  218,  218,  218,  218,  218,  218,  218,  218,  218, #  1400
          218,  218,  218,  218,  218,  183,  202,  203,  204,  205, #  1410
          206,  218,  131,  218,  160,  211,  218,  136,  218,  218, #  1420
          218,  199,  200,  201,  202,  203,  204,  205,  206,  218, #  1430
          218,  218,  218,  211,  218,  218,  218,  183,  218,  218, #  1440
          218,  160,  218,  218,  218,  218,  218,  218,  218,  195, #  1450
          196,  197,  198,  199,  200,  201,  202,  203,  204,  205, #  1460
          206,  218,  218,  218,  183,  211,    0,  218,    2,    3, #  1470
            4,    5,  218,  218,    8,    9,  195,  196,  197,  198, #  1480
          199,  200,  201,  202,  203,  204,  205,  206,  218,   23, #  1490
          131,  218,  211,   27,  218,  136,  218,  218,  218,  218, #  1500
          218,  218,  218,  218,  218,  131,  218,  218,  218,   43, #  1510
          136,  218,   46,   47,  218,  218,  218,  131,   52,  218, #  1520
          218,  218,  136,  218,  218,  218,  218,  218,  218,  218, #  1530
          218,  218,  218,  218,  218,  218,  218,  218,  218,  218, #  1540
          218,  218,  183,  218,  131,  218,  218,  218,  218,  136, #  1550
          218,  218,  218,  218,  218,  218,  218,  183,  199,  200, #  1560
          201,  202,  203,  204,  205,  206,  218,  218,  218,  183, #  1570
          211,  218,  218,  199,  200,  201,  202,  203,  204,  205, #  1580
          206,  131,  218,  218,  218,  211,  136,  201,  202,  203, #  1590
          204,  205,  206,  218,  218,  218,  183,  211,  218,  218, #  1600
          128,  218,  218,  218,  218,  218,  131,  218,  218,  218, #  1610
          218,  136,  199,  200,  201,  202,  203,  204,  205,  206, #  1620
          218,  131,  218,  218,  211,  153,  136,  218,  218,  218, #  1630
          218,  218,  218,  183,  162,  163,  164,  165,  166,  167, #  1640
          168,  218,  218,  218,  218,  218,  218,  218,  218,  199, #  1650
          200,  201,  202,  203,  204,  205,  206,  218,  183,  218, #  1660
          218,  211,  218,  218,  218,  218,  218,  218,  218,  218, #  1670
          218,  218,  218,  183,  199,  200,  201,  202,  203,  204, #  1680
          205,  206,  218,  218,  218,  218,  211,  218,  218,  199, #  1690
          200,  201,  202,  203,  204,  205,  206,  131,  218,  218, #  1700
          218,  211,  136,  218,  218,  218,  218,  218,  218,  218, #  1710
          131,  218,  218,  218,  218,  136,  218,  218,  218,  218, #  1720
          218,  218,  218,  218,  131,  218,  218,  218,  218,  136, #  1730
          218,  218,  218,  218,  218,  218,  218,  218,  218,  218, #  1740
          218,  218,  218,  131,  218,  218,  218,  218,  136,  183, #  1750
          218,  218,  218,  218,  218,  218,  131,  218,  218,  218, #  1760
          218,  136,  183,  218,  218,  199,  200,  201,  202,  203, #  1770
          204,  205,  206,  218,  218,  218,  183,  211,  199,  200, #  1780
          201,  202,  203,  204,  205,  206,  131,  218,  218,  218, #  1790
          211,  136,  218,  218,  218,  183,  203,  204,  205,  206, #  1800
          218,  218,  218,  218,  211,  218,  218,  218,  183,  218, #  1810
          218,  199,  200,  201,  202,  203,  204,  205,  206,  218, #  1820
          218,  218,  218,  211,  199,  200,  201,  202,  203,  204, #  1830
          205,  206,  218,  218,  131,  218,  211,  218,  183,  136, #  1840
          218,  218,  218,  218,  218,  218,  218,  131,  218,  218, #  1850
          218,  218,  136,  218,  199,  200,  201,  202,  203,  204, #  1860
          205,  206,  218,  218,  218,  218,  211,  218,  218,  218, #  1870
          218,  218,  218,  218,  218,  218,  218,  218,  218,  218, #  1880
          131,  218,  218,  218,  218,  136,  183,  218,  218,  218, #  1890
          218,  218,  218,  131,  218,  218,  218,  218,  136,  183, #  1900
          218,  218,  199,  200,  201,  202,  203,  204,  205,  206, #  1910
          218,  218,  218,  218,  211,  199,  200,  201,  202,  203, #  1920
          204,  205,  206,  131,  218,  218,  218,  211,  136,  218, #  1930
          218,  218,  183,  218,  218,  218,  131,  218,  218,  218, #  1940
          218,  136,  218,  218,  218,  183,  218,  218,  199,  200, #  1950
          201,  202,  203,  204,  205,  206,  218,  218,  218,  218, #  1960
          211,  199,  200,  201,  202,  203,  204,  205,  206,  218, #  1970
          218,  131,  218,  211,  218,  183,  136,  218,  218,  218, #  1980
          218,  218,  218,  218,  131,  218,  218,  218,  183,  136, #  1990
          218,  199,  200,  201,  202,  203,  204,  205,  206,  218, #  2000
          218,  218,  218,  211,  218,  218,  218,  218,  203,  204, #  2010
          205,  206,  218,  218,  218,  218,  211,  131,  218,  218, #  2020
          218,  218,  136,  183,  218,  218,  218,  218,  218,  218, #  2030
          131,  218,  218,  218,  218,  136,  183,  218,  218,  199, #  2040
          200,  201,  202,  203,  204,  205,  206,  218,  218,  218, #  2050
          218,  211,  199,  200,  201,  202,  203,  204,  205,  206, #  2060
          131,  218,  218,  218,  211,  136,  218,  218,  218,  183, #  2070
          218,  218,  218,  131,  218,  218,  218,  218,  136,  218, #  2080
          218,  218,  183,  218,  218,  199,  200,  201,  202,  203, #  2090
          204,  205,  206,  218,  218,  218,  218,  211,  199,  200, #  2100
          201,  202,  203,  204,  205,  206,  218,  218,  131,  218, #  2110
          211,  218,  183,  136,  218,  218,  218,  218,  218,  218, #  2120
          218,  131,  218,  218,  218,  183,  136,  218,  199,  200, #  2130
          201,  202,  203,  204,  205,  206,  218,  218,  218,  218, #  2140
          211,  218,  218,  218,  218,  203,  204,  205,  206,  218, #  2150
          218,  218,  218,  211,  131,  218,  218,  218,  218,  136, #  2160
          183,  218,  218,  218,  218,  218,  218,  131,  218,  218, #  2170
          218,  218,  136,  183,  218,  218,  199,  200,  201,  202, #  2180
          203,  204,  205,  206,  218,  218,  218,  218,  211,  199, #  2190
          200,  201,  202,  203,  204,  205,  206,  131,  218,  218, #  2200
          218,  211,  136,  218,  218,  218,  183,  218,  218,  218, #  2210
          218,  218,  218,  218,  218,  218,  218,  218,  218,  183, #  2220
          218,  218,  218,  200,  201,  202,  203,  204,  205,  206, #  2230
          131,  218,  218,  218,  211,  136,  200,  201,  202,  203, #  2240
          204,  205,  206,  218,  218,  131,  218,  211,  218,  183, #  2250
          136,  218,  218,  218,  218,  218,  218,  218,  218,  218, #  2260
          218,  218,  218,  218,  218,  218,  200,  201,  202,  203, #  2270
          204,  205,  206,  218,  218,  218,  218,  211,  218,  218, #  2280
          218,  218,  183,  218,  218,  218,  218,  218,  218,  218, #  2290
          218,  218,  218,  218,  218,  218,  218,  183,  218,  200, #  2300
          201,  202,  203,  204,  205,  206,  218,  218,  218,  218, #  2310
          211,  218,  218,  218,  218,  201,  202,  203,  204,  205, #  2320
          206,  218,  218,  218,  218,  211, #  2330
        ]
    YY_SHIFT_USE_DFLT = -64
    YY_SHIFT_COUNT = 356
    YY_SHIFT_MIN = -63
    YY_SHIFT_MAX = 1476
    yy_shift_ofst = [
          -64,   68,  368,  168,  368,  268,  268,  502,  502,  268, #     0
          502,  502,  502,  502,  502,  502,  502,  502,  502,  502, #    10
          502,  502,  502,  502,  502,  502,  502,  502,  468,  602, #    20
          602,  602,  602,  602,  602,  602,  602,  602,  602,  602, #    30
          602,  602,  602,  602,  602,  602,  602,  602,  602,  602, #    40
          602,  602, 1476,   43,  602,  602,  602,  602,  602,  602, #    50
          602,  602,  602,  602,  230,  230,  230,  230,  230,  230, #    60
          230,  602,  602,  602,  602,  602,  602,  602,  602,  602, #    70
          102,  102,  102,  761,  761,  243,   45,  528,  913,  761, #    80
          147,  248,  353,  243,  528,  492,  402,  379,  913,  961, #    90
          735,  735,  735,  994,  735,  761,  761,  -64,  373,  273, #   100
          194,  248,  169,    4,   42,  196,  216,  216,  -51,  451, #   110
          279,  414,  -57,   50,  352,  441,  354,   50,   50,  207, #   120
          394,  992,  992,  959,  963,  972,  734,  734,  758,  734, #   130
          961,  734,  734,  761,  761,  729,  729,  913,  734,  734, #   140
          900,  729,  900,  867,  729,  758,  734,  761,  869,  876, #   150
          876,  868,  734,  871,  734,  876,  761,  761,  787,  786, #   160
          783,  782,  734,  876,  787,  786,  783,  782,  734,  782, #   170
          734,  761,  787,  786,  783,  782,  800,  761,  787,  786, #   180
          783,  818,  761,  761,  761,  761,  735,  759,  782,  734, #   190
          729,  758,  -64,  -64,  -64,  -64,  -64,  -32,  -10,  -60, #   200
          261,  642,  469,  465,  -63,  361,  331,  170,   98,   32, #   210
          202,   71,   71,   71,   71,   71,   71,   71,   71,   71, #   220
           71,   71,   71,   71,   49,   49,   49,   49,   71,   49, #   230
           71,  197,    0,    0,    0,  223,  284,  388,  380,  -28, #   240
          132,   81,  334,  100,  -18,  -28,  -28,  -28,  144,  -28, #   250
          401,    5,  738,  753,  744,  755,  751,  749,  752,  748, #   260
          747,  743,  746,  745,  732,  719,  738,  724,  715,  731, #   270
          726,  728,  727,  691,  710,  535,  720,  718,  717,  709, #   280
          690,  704,  689,  686,  683,  637,  674,  661,  563,  648, #   290
          647,  646,  645,  654,  641,  660,  659,  657,  586,  625, #   300
          583,  622,  577,  581,  607,  572,  606,  514,  515,  568, #   310
          576,  605,  600,  585,  596,  590,  603,  587,  547,  266, #   320
          588,  545,  484,  485,  533,  482,  266,  538,  267,  266, #   330
          233,  532,  535,  376,  498,  330,  475,  444,  277,  267, #   340
          266,  233,  214,  213,  251,  124,  123, #   350
        ]
    YY_REDUCE_USE_DFLT = -129
    YY_REDUCE_COUNT = 206
    YY_REDUCE_MIN = -128
    YY_REDUCE_MAX = 2124
    yy_reduce_ofst = [
          461, -128,  -52,  671,  613,  580,  487,  313,  115,  808, #     0
          781,  750,  702, 1291, 1264, 1188, 1156, 1130, 1103, 1027, #    10
          995,  969,  942,  866,  839,  153, 1071,   33, 2000, 1987, #    20
         1939, 1909, 1896, 1863, 1850, 1802, 1772, 1759, 1726, 1713, #    30
         1665, 1635, 1622, 1589, 1576, 1500, 1485, 1460, 1423, 1384, #    40
         1369, 1232,  512,  275, 2109, 2076, 2046, 2033, 2124, 1396, #    50
          638,   -8, 1214,  623, 1482, 1051,  953,  946,  569,  488, #    60
          175, 1952, 1815, 1603, -124,  760,  513,  322,  199,  -70, #    70
          358,  321, -126,  272,  173,  187,  255,  238,   60,  226, #    80
          454,  442,  387,  385,  431,  349,  318,  315,  340,  342, #    90
          416,  389,  386,  211,  382,  323,  384,  184,  908,  908, #   100
          885,  919,  908,  910,  723,  875,  831,  829,  825,  887, #   110
          896,  893,  814,  820,  834,  850,  856,  816,  815,  813, #   120
          882,  865,  863,  848,  853,  849,  852,  851,  844,  836, #   130
          821,  832,  830,  826,  824,  828,  827,  806,  805,  799, #   140
          802,  801,  797,  791,  795,  793,  790,  789,  712,  757, #   150
          754,  794,  785,  705,  784,  739,  779,  775,  740,  722, #   160
          737,  733,  756,  703,  716,  714,  692,  725,  742,  708, #   170
          741,  723,  684,  687,  685,  701,  670,  711,  677,  675, #   180
          673,  627,  699,  696,  694,  669,  666,  664,  644,  663, #   190
          662,  658,  651,  649,  665,  650,  556, #   200
        ]
    yy_default = [
          527,  791,  791,  671,  791,  791,  791,  671,  791,  791, #     0
          773,  791,  791,  791,  791,  791,  791,  791,  791,  791, #    10
          791,  791,  791,  791,  791,  791,  791,  791,  791,  791, #    20
          791,  791,  791,  791,  791,  791,  791,  791,  791,  791, #    30
          791,  791,  791,  791,  791,  791,  791,  791,  791,  791, #    40
          791,  791,  529,  791,  791,  791,  791,  791,  791,  791, #    50
          791,  791,  791,  791,  791,  791,  791,  791,  791,  791, #    60
          791,  791,  791,  791,  791,  791,  791,  791,  791,  791, #    70
          791,  791,  791,  595,  595,  791,  791,  791,  572,  791, #    80
          564,  791,  791,  791,  791,  633,  791,  617,  791,  791, #    90
          666,  666,  666,  791,  666,  791,  791,  557,  791,  791, #   100
          626,  791,  791,  791,  791,  791,  791,  791,  750,  570, #   110
          545,  791,  777,  750,  663,  635,  626,  750,  750,  747, #   120
          791,  791,  791,  584,  579,  791,  791,  791,  568,  791, #   130
          791,  791,  791,  791,  791,  791,  791,  791,  791,  791, #   140
          566,  791,  566,  791,  791,  568,  791,  791,  747,  633, #   150
          633,  791,  791,  647,  791,  633,  791,  791,  658,  655, #   160
          649,  641,  791,  633,  658,  655,  649,  641,  791,  641, #   170
          791,  791,  658,  655,  649,  641,  791,  791,  658,  655, #   180
          649,  753,  791,  791,  791,  791,  587,  590,  641,  791, #   190
          791,  568,  557,  557,  791,  791,  775,  681,  791,  791, #   200
          791,  696,  692,  688,  791,  697,  693,  689,  685,  684, #   210
          791,  707,  706,  700,  698,  694,  690,  701,  699,  695, #   220
          691,  687,  686,  683,  712,  711,  713,  710,  708,  709, #   230
          682,  791,  721,  720,  719,  791,  791,  791,  668,  717, #   240
          648,  791,  656,  791,  783,  718,  716,  715,  791,  714, #   250
          651,  791,  571,  791,  791,  791,  549,  791,  791,  791, #   260
          791,  791,  791,  538,  791,  576,  573,  791,  791,  791, #   270
          791,  791,  791,  791,  791,  591,  791,  791,  791,  791, #   280
          791,  791,  791,  791,  791,  746,  791,  791,  791,  791, #   290
          791,  791,  791,  636,  791,  791,  791,  791,  791,  791, #   300
          791,  791,  791,  791,  791,  791,  791,  791,  791,  791, #   310
          791,  791,  791,  791,  791,  791,  791,  791,  791,  725, #   320
          659,  791,  791,  791,  791,  791,  724,  791,  727,  723, #   330
          677,  791,  596,  791,  746,  791,  791,  791,  791,  726, #   340
          722,  676,  675,  672,  791,  791,  791,  578,  583,  582, #   350
          581,  580,  585,  562,  561,  552,  554,  553,  539,  544, #   360
          543,  546,  542,  541,  540,  574,  577,  575,  563,  548, #   370
          567,  537,  565,  551,  653,  560,  559,  558,  547,  569, #   380
          588,  589,  670,  669,  765,  764,  763,  705,  704,  702, #   390
          703,  738,  737,  736,  740,  749,  748,  739,  767,  766, #   400
          643,  654,  646,  645,  644,  660,  769,  625,  624,  609, #   410
          608,  607,  627,  639,  755,  759,  758,  757,  756,  640, #   420
          638,  637,  631,  613,  620,  632,  745,  623,  622,  621, #   430
          612,  618,  634,  616,  615,  614,  611,  630,  629,  628, #   440
          652,  610,  642,  650,  673,  774,  778,  782,  781,  780, #   450
          779,  776,  772,  771,  770,  657,  606,  786,  787,  790, #   460
          789,  788,  785,  784,  768,  746,  619,  744,  743,  665, #   470
          664,  662,  661,  667,  605,  604,  603,  602,  601,  600, #   480
          599,  598,  597,  762,  761,  760,  754,  742,  752,  751, #   490
          741,  679,  594,  593,  592,  735,  734,  651,  733,  732, #   500
          731,  730,  729,  728,  680,  678,  674,  586,  536,  535, #   510
          534,  533,  532,  531,  530,  528, #   520
        ]


    # The next table maps tokens into fallback tokens.  If a construct
    # like the following:
    #
    #      %fallback ID X Y Z.
    #
    # appears in the grammer, then ID becomes a fallback token for X, Y,
    # and Z.  Whenever one of the tokens X, Y, or Z is input to the parser
    # but it does not parse, the type of the token is changed to ID and
    # the parse is retried before an error is thrown.

    yyFallback = [
          0,  #          $ => nothing
          0,  #     T_SEMI => nothing
         61,  #    K_BEGIN => L_NAME
         61,  # K_ROLLBACK => L_NAME
         61,  #   K_COMMIT => L_NAME
         61,  #   K_CREATE => L_NAME
         61,  #    K_TABLE => L_NAME
         61,  #       K_AS => L_NAME
         61,  #     K_DROP => L_NAME
         61,  #    K_ALTER => L_NAME
          0,  #    T_COMMA => nothing
         61,  #   K_RENAME => L_NAME
         61,  #       K_TO => L_NAME
         61,  #      K_SET => L_NAME
         61,  #  K_DEFAULT => L_NAME
         61,  # K_GENERATOR => L_NAME
         61,  #    K_UNSET => L_NAME
         61,  #   K_COLUMN => L_NAME
         61,  #      K_FOR => L_NAME
         61,  #    K_USING => L_NAME
          0,  #   T_LROUND => nothing
          0,  #   T_RROUND => nothing
          0,  #        ANY => nothing
         61,  # K_INITIALIZE => L_NAME
          0,  #  L_INTEGER => nothing
         61,  #    K_MODEL => L_NAME
         61,  #   K_MODELS => L_NAME
         61,  #  K_ANALYZE => L_NAME
         61,  #     K_FROM => L_NAME
         61,  #     K_TEMP => L_NAME
         61,  # K_TEMPORARY => L_NAME
         61,  #       K_IF => L_NAME
         61,  #   K_EXISTS => L_NAME
         61,  #      K_NOT => L_NAME
          0,  #    T_MINUS => nothing
         61,  # K_CHECKPOINT => L_NAME
         61,  # K_ITERATION => L_NAME
         61,  # K_ITERATIONS => L_NAME
         61,  #   K_MINUTE => L_NAME
         61,  #  K_MINUTES => L_NAME
         61,  #   K_SECOND => L_NAME
         61,  #  K_SECONDS => L_NAME
         61,  #     K_WAIT => L_NAME
         61,  # K_SIMULATE => L_NAME
         61,  #    K_GIVEN => L_NAME
          0,  #       T_EQ => nothing
         61,  #   K_SELECT => L_NAME
         61,  # K_ESTIMATE => L_NAME
         61,  #  K_COLUMNS => L_NAME
         61,  # K_PAIRWISE => L_NAME
         61,  #      K_ROW => L_NAME
         61,  #       K_BY => L_NAME
         61,  #    K_INFER => L_NAME
         61,  # K_EXPLICIT => L_NAME
          0,  #     T_STAR => nothing
         61,  #     K_WITH => L_NAME
         61,  # K_CONFIDENCE => L_NAME
         61,  #  K_PREDICT => L_NAME
         61,  # K_DISTINCT => L_NAME
         61,  #      K_ALL => L_NAME
          0,  #      T_DOT => nothing
          0,  #     L_NAME => nothing
         61,  #       K_OF => L_NAME
         61,  #    K_WHERE => L_NAME
         61,  #    K_GROUP => L_NAME
         61,  #   K_HAVING => L_NAME
         61,  #    K_ORDER => L_NAME
         61,  #      K_ASC => L_NAME
         61,  #     K_DESC => L_NAME
         61,  #    K_LIMIT => L_NAME
         61,  #   K_OFFSET => L_NAME
         61,  #       K_OR => L_NAME
         61,  #      K_AND => L_NAME
         61,  #       K_IS => L_NAME
         61,  #     K_LIKE => L_NAME
         61,  #   K_ESCAPE => L_NAME
         61,  #     K_GLOB => L_NAME
         61,  #   K_REGEXP => L_NAME
         61,  #    K_MATCH => L_NAME
         61,  #  K_BETWEEN => L_NAME
         61,  #       K_IN => L_NAME
         61,  #   K_ISNULL => L_NAME
         61,  #  K_NOTNULL => L_NAME
          0,  #      T_NEQ => nothing
          0,  #       T_LT => nothing
          0,  #      T_LEQ => nothing
          0,  #      T_GEQ => nothing
          0,  #       T_GT => nothing
          0,  #   T_BITAND => nothing
          0,  #   T_BITIOR => nothing
          0,  #   T_LSHIFT => nothing
          0,  #   T_RSHIFT => nothing
          0,  #     T_PLUS => nothing
          0,  #    T_SLASH => nothing
          0,  #  T_PERCENT => nothing
          0,  #   T_CONCAT => nothing
         61,  #  K_COLLATE => L_NAME
          0,  #   L_STRING => nothing
          0,  #   T_BITNOT => nothing
         61,  # K_PREDICTIVE => L_NAME
         61,  # K_PROBABILITY => L_NAME
         61,  #    K_VALUE => L_NAME
         61,  # K_SIMILARITY => L_NAME
         61,  # K_DEPENDENCE => L_NAME
         61,  #   K_MUTUAL => L_NAME
         61,  # K_INFORMATION => L_NAME
         61,  # K_CORRELATION => L_NAME
         61,  #   K_PVALUE => L_NAME
         61,  #  K_RESPECT => L_NAME
         61,  #  K_SAMPLES => L_NAME
          0,  #   L_NUMPAR => nothing
          0,  #   L_NAMPAR => nothing
         61,  #     K_CAST => L_NAME
          0,  #     K_CASE => nothing
         61,  #      K_END => L_NAME
          0,  #     K_WHEN => nothing
         61,  #     K_THEN => L_NAME
         61,  #     K_ELSE => L_NAME
         61,  #     K_NULL => L_NAME
          0,  #    L_FLOAT => nothing
         61,  #   K_BTABLE => L_NAME
         61,  #     K_CONF => L_NAME
        ]


    # The following structure represents a single element of the
    # parser's stack.  Information stored includes:
    #
    #   +  The state number for the parser at this level of the stack.
    #
    #   +  The value of the token stored at this level of the stack.
    #      (In other words, the "major" token.)
    #
    #   +  The semantic value stored at this level of the stack.  This is
    #      the information used by the action routines in the grammar.
    #      It is sometimes called the "minor" token.
    #
    class yyStackEntry(object):
        def __init__(
            self,
            stateno, # The state-number
            major,   # The major token value.  This is the code
                     # number for the token at this stack level
            minor,   # The user-supplied minor token value.  This
                     # is the value of the token
            ):
            self.stateno = stateno
            self.major = major
            self.minor = minor
            return


    yyTraceFILE = None
    yyTracePrompt = None

    def trace(self, TraceFILE, zTracePrompt):
        '''Turn parser tracing on by giving a stream to which to write
        the trace and a prompt to preface each trace message.  Tracing
        is turned off by making either argument None.
        '''
        self.yyTraceFILE = TraceFILE
        self.yyTracePrompt = zTracePrompt
        if self.yyTraceFILE is None:
            self.yyTracePrompt = None
        elif self.yyTracePrompt is None:
            self.yyTraceFILE = None
        return


    # For tracing shifts, the names of all terminals and nonterminals
    # are required.  The following table supplies these names
    yyTokenName = [
        "$",                   "T_SEMI",              "K_BEGIN",             "K_ROLLBACK",  
        "K_COMMIT",            "K_CREATE",            "K_TABLE",             "K_AS",        
        "K_DROP",              "K_ALTER",             "T_COMMA",             "K_RENAME",    
        "K_TO",                "K_SET",               "K_DEFAULT",           "K_GENERATOR", 
        "K_UNSET",             "K_COLUMN",            "K_FOR",               "K_USING",     
        "T_LROUND",            "T_RROUND",            "ANY",                 "K_INITIALIZE",
        "L_INTEGER",           "K_MODEL",             "K_MODELS",            "K_ANALYZE",   
        "K_FROM",              "K_TEMP",              "K_TEMPORARY",         "K_IF",        
        "K_EXISTS",            "K_NOT",               "T_MINUS",             "K_CHECKPOINT",
        "K_ITERATION",         "K_ITERATIONS",        "K_MINUTE",            "K_MINUTES",   
        "K_SECOND",            "K_SECONDS",           "K_WAIT",              "K_SIMULATE",  
        "K_GIVEN",             "T_EQ",                "K_SELECT",            "K_ESTIMATE",  
        "K_COLUMNS",           "K_PAIRWISE",          "K_ROW",               "K_BY",        
        "K_INFER",             "K_EXPLICIT",          "T_STAR",              "K_WITH",      
        "K_CONFIDENCE",        "K_PREDICT",           "K_DISTINCT",          "K_ALL",       
        "T_DOT",               "L_NAME",              "K_OF",                "K_WHERE",     
        "K_GROUP",             "K_HAVING",            "K_ORDER",             "K_ASC",       
        "K_DESC",              "K_LIMIT",             "K_OFFSET",            "K_OR",        
        "K_AND",               "K_IS",                "K_LIKE",              "K_ESCAPE",    
        "K_GLOB",              "K_REGEXP",            "K_MATCH",             "K_BETWEEN",   
        "K_IN",                "K_ISNULL",            "K_NOTNULL",           "T_NEQ",       
        "T_LT",                "T_LEQ",               "T_GEQ",               "T_GT",        
        "T_BITAND",            "T_BITIOR",            "T_LSHIFT",            "T_RSHIFT",    
        "T_PLUS",              "T_SLASH",             "T_PERCENT",           "T_CONCAT",    
        "K_COLLATE",           "L_STRING",            "T_BITNOT",            "K_PREDICTIVE",
        "K_PROBABILITY",        "K_VALUE",             "K_SIMILARITY",        "K_DEPENDENCE",
        "K_MUTUAL",            "K_INFORMATION",        "K_CORRELATION",        "K_PVALUE",    
        "K_RESPECT",           "K_SAMPLES",           "L_NUMPAR",            "L_NAMPAR",    
        "K_CAST",              "K_CASE",              "K_END",               "K_WHEN",      
        "K_THEN",              "K_ELSE",              "K_NULL",              "L_FLOAT",     
        "K_BTABLE",            "K_CONF",              "error",               "bql",         
        "phrases",             "phrase_opt",          "phrase",              "command",     
        "query",               "temp_opt",            "ifnotexists",         "table_name",  
        "ifexists",            "altertab_cmds",        "altertab_cmd",        "k_column_opt",
        "column_name",         "generator_name",        "default_opt",         "metamodel_name",
        "generator_schema",        "altergen_cmds",        "altergen_cmd",        "generator_schemum",
        "gs_token",            "anmodelset_opt",        "anlimit",             "anckpt_opt",  
        "wait_opt",            "modelset_opt",        "modelset",            "modelrange",  
        "anduration",          "simulate",            "simulate_columns",        "usingmodel_opt",
        "given_opt",           "limit",               "constraints",         "constraint",  
        "expression",          "constraints_opt",        "select",              "estimate",    
        "estby",               "estcol",              "estpairrow",          "estpaircol",  
        "infer",               "select_quant",        "select_columns",        "from_sel_opt",
        "where",               "group_by",            "order_by",            "limit_opt",   
        "from_est",            "infer_auto_columns",        "withconf_opt",        "infer_exp_columns",
        "infer_auto_column",        "as",                  "withconf",            "primary",     
        "infer_exp_column",        "select_column",        "select_tables",        "for",         
        "select_table",        "column_lists",        "expressions",         "order_keys",  
        "order_key",           "order_sense",         "expressions_opt",        "boolean_or",  
        "boolean_and",         "boolean_not",         "equality",            "ordering",    
        "bitwise",             "additive",            "multiplicative",        "concatenative",
        "collating",           "unary",               "bqlfn",               "wrt",         
        "ofwith",              "nsamples_opt",        "column_list",         "literal",     
        "type",                "case_key_opt",        "case_whens_opt",        "case_else_opt",
        "typename",            "typearg",     
        ]

    # For tracing reduce actions, the names of all rules are required.
    yyRuleName = [
        "bql ::= phrases", #   0
        "phrases ::=", #   1
        "phrases ::= phrases phrase_opt T_SEMI", #   2
        "phrase_opt ::=", #   3
        "phrase_opt ::= phrase", #   4
        "phrase ::= command", #   5
        "phrase ::= query", #   6
        "command ::= K_BEGIN", #   7
        "command ::= K_ROLLBACK", #   8
        "command ::= K_COMMIT", #   9
        "command ::= K_CREATE temp_opt K_TABLE ifnotexists table_name K_AS query", #  10
        "command ::= K_DROP K_TABLE ifexists table_name", #  11
        "command ::= K_ALTER K_TABLE table_name altertab_cmds", #  12
        "altertab_cmds ::= altertab_cmd", #  13
        "altertab_cmds ::= altertab_cmds T_COMMA altertab_cmd", #  14
        "altertab_cmd ::= K_RENAME K_TO table_name", #  15
        "altertab_cmd ::= K_RENAME k_column_opt column_name K_TO column_name", #  16
        "altertab_cmd ::= K_SET K_DEFAULT K_GENERATOR K_TO generator_name", #  17
        "altertab_cmd ::= K_UNSET K_DEFAULT K_GENERATOR", #  18
        "k_column_opt ::=", #  19
        "k_column_opt ::= K_COLUMN", #  20
        "command ::= K_CREATE default_opt K_GENERATOR generator_name ifnotexists K_FOR table_name K_USING metamodel_name T_LROUND generator_schema T_RROUND", #  21
        "command ::= K_DROP K_GENERATOR ifexists generator_name", #  22
        "command ::= K_ALTER K_GENERATOR generator_name altergen_cmds", #  23
        "default_opt ::=", #  24
        "default_opt ::= K_DEFAULT", #  25
        "altergen_cmds ::= altergen_cmd", #  26
        "altergen_cmds ::= altergen_cmds T_COMMA altergen_cmd", #  27
        "altergen_cmd ::= K_RENAME K_TO generator_name", #  28
        "generator_schema ::= generator_schemum", #  29
        "generator_schema ::= generator_schema T_COMMA generator_schemum", #  30
        "generator_schemum ::=", #  31
        "generator_schemum ::= generator_schemum gs_token", #  32
        "gs_token ::= T_LROUND generator_schemum T_RROUND", #  33
        "gs_token ::= ANY", #  34
        "command ::= K_INITIALIZE L_INTEGER K_MODEL|K_MODELS ifnotexists K_FOR generator_name", #  35
        "command ::= K_ANALYZE generator_name anmodelset_opt anlimit anckpt_opt wait_opt", #  36
        "command ::= K_DROP K_MODEL|K_MODELS modelset_opt K_FROM generator_name", #  37
        "temp_opt ::=", #  38
        "temp_opt ::= K_TEMP|K_TEMPORARY", #  39
        "ifexists ::=", #  40
        "ifexists ::= K_IF K_EXISTS", #  41
        "ifnotexists ::=", #  42
        "ifnotexists ::= K_IF K_NOT K_EXISTS", #  43
        "anmodelset_opt ::=", #  44
        "anmodelset_opt ::= K_MODEL|K_MODELS modelset", #  45
        "modelset_opt ::=", #  46
        "modelset_opt ::= modelset", #  47
        "modelset ::= modelrange", #  48
        "modelset ::= modelset T_COMMA modelrange", #  49
        "modelrange ::= L_INTEGER", #  50
        "modelrange ::= L_INTEGER T_MINUS L_INTEGER", #  51
        "anlimit ::= K_FOR anduration", #  52
        "anckpt_opt ::=", #  53
        "anckpt_opt ::= K_CHECKPOINT anduration", #  54
        "anduration ::= L_INTEGER K_ITERATION|K_ITERATIONS", #  55
        "anduration ::= L_INTEGER K_MINUTE|K_MINUTES", #  56
        "anduration ::= L_INTEGER K_SECOND|K_SECONDS", #  57
        "wait_opt ::=", #  58
        "wait_opt ::= K_WAIT", #  59
        "simulate ::= K_SIMULATE simulate_columns K_FROM generator_name usingmodel_opt given_opt limit", #  60
        "simulate ::= K_SIMULATE simulate_columns K_FROM generator_name usingmodel_opt given_opt", #  61
        "simulate_columns ::= column_name", #  62
        "simulate_columns ::= simulate_columns T_COMMA column_name", #  63
        "given_opt ::=", #  64
        "given_opt ::= K_GIVEN constraints", #  65
        "constraints ::= constraint", #  66
        "constraints ::= constraints T_COMMA constraint", #  67
        "constraint ::= column_name T_EQ expression", #  68
        "constraints_opt ::=", #  69
        "constraints_opt ::= constraints", #  70
        "query ::= select", #  71
        "query ::= estimate", #  72
        "query ::= estby", #  73
        "query ::= estcol", #  74
        "query ::= estpairrow", #  75
        "query ::= estpaircol", #  76
        "query ::= infer", #  77
        "query ::= simulate", #  78
        "select ::= K_SELECT select_quant select_columns from_sel_opt where group_by order_by limit_opt", #  79
        "estimate ::= K_ESTIMATE select_quant select_columns from_est usingmodel_opt where group_by order_by limit_opt", #  80
        "estcol ::= K_ESTIMATE K_COLUMNS error T_SEMI", #  81
        "estpairrow ::= K_ESTIMATE K_PAIRWISE K_ROW error T_SEMI", #  82
        "estpaircol ::= K_ESTIMATE K_PAIRWISE error T_SEMI", #  83
        "estby ::= K_ESTIMATE select_quant select_columns K_BY generator_name usingmodel_opt", #  84
        "infer ::= K_INFER infer_auto_columns withconf_opt K_FROM generator_name usingmodel_opt where group_by order_by limit_opt", #  85
        "infer ::= K_INFER K_EXPLICIT infer_exp_columns K_FROM generator_name usingmodel_opt where group_by order_by limit_opt", #  86
        "infer_auto_columns ::= infer_auto_column", #  87
        "infer_auto_columns ::= infer_auto_columns T_COMMA infer_auto_column", #  88
        "infer_auto_column ::= T_STAR", #  89
        "infer_auto_column ::= column_name as", #  90
        "withconf_opt ::=", #  91
        "withconf_opt ::= withconf", #  92
        "withconf ::= K_WITH K_CONFIDENCE primary", #  93
        "infer_exp_columns ::= infer_exp_column", #  94
        "infer_exp_columns ::= infer_exp_columns T_COMMA infer_exp_column", #  95
        "infer_exp_column ::= select_column", #  96
        "infer_exp_column ::= K_PREDICT column_name as K_CONFIDENCE column_name", #  97
        "select_quant ::= K_DISTINCT", #  98
        "select_quant ::= K_ALL", #  99
        "select_quant ::=", # 100
        "select_columns ::= select_column", # 101
        "select_columns ::= select_columns T_COMMA select_column", # 102
        "select_column ::= T_STAR", # 103
        "select_column ::= table_name T_DOT T_STAR", # 104
        "select_column ::= table_name T_DOT T_LROUND query T_RROUND", # 105
        "select_column ::= expression as", # 106
        "as ::=", # 107
        "as ::= K_AS L_NAME", # 108
        "from_sel_opt ::=", # 109
        "from_sel_opt ::= K_FROM select_tables", # 110
        "from_est ::= K_FROM generator_name", # 111
        "from_est ::= K_FROM K_PAIRWISE generator_name", # 112
        "from_est ::= K_FROM K_COLUMNS K_OF generator_name", # 113
        "from_est ::= K_FROM K_PAIRWISE K_COLUMNS K_OF generator_name for", # 114
        "usingmodel_opt ::=", # 115
        "usingmodel_opt ::= K_USING K_MODEL primary", # 116
        "select_tables ::= select_table", # 117
        "select_tables ::= select_tables T_COMMA select_table", # 118
        "select_table ::= table_name as", # 119
        "select_table ::= T_LROUND query T_RROUND as", # 120
        "for ::=", # 121
        "for ::= K_FOR column_lists", # 122
        "where ::=", # 123
        "where ::= K_WHERE expression", # 124
        "column_name ::= L_NAME", # 125
        "generator_name ::= L_NAME", # 126
        "metamodel_name ::= L_NAME", # 127
        "table_name ::= L_NAME", # 128
        "group_by ::=", # 129
        "group_by ::= K_GROUP K_BY expressions", # 130
        "group_by ::= K_GROUP K_BY expressions K_HAVING expression", # 131
        "order_by ::=", # 132
        "order_by ::= K_ORDER K_BY order_keys", # 133
        "order_keys ::= order_key", # 134
        "order_keys ::= order_keys T_COMMA order_key", # 135
        "order_key ::= expression order_sense", # 136
        "order_sense ::=", # 137
        "order_sense ::= K_ASC", # 138
        "order_sense ::= K_DESC", # 139
        "limit_opt ::=", # 140
        "limit_opt ::= limit", # 141
        "limit ::= K_LIMIT expression", # 142
        "limit ::= K_LIMIT expression K_OFFSET expression", # 143
        "limit ::= K_LIMIT expression T_COMMA expression", # 144
        "expressions_opt ::=", # 145
        "expressions_opt ::= expressions", # 146
        "expressions ::= expression", # 147
        "expressions ::= expressions T_COMMA expression", # 148
        "expression ::= boolean_or", # 149
        "boolean_or ::= boolean_or K_OR boolean_and", # 150
        "boolean_or ::= boolean_and", # 151
        "boolean_and ::= boolean_and K_AND boolean_not", # 152
        "boolean_and ::= boolean_not", # 153
        "boolean_not ::= K_NOT boolean_not", # 154
        "boolean_not ::= equality", # 155
        "equality ::= equality K_IS ordering", # 156
        "equality ::= equality K_IS K_NOT ordering", # 157
        "equality ::= equality K_LIKE ordering", # 158
        "equality ::= equality K_NOT K_LIKE ordering", # 159
        "equality ::= equality K_LIKE ordering K_ESCAPE ordering", # 160
        "equality ::= equality K_NOT K_LIKE ordering K_ESCAPE ordering", # 161
        "equality ::= equality K_GLOB ordering", # 162
        "equality ::= equality K_NOT K_GLOB ordering", # 163
        "equality ::= equality K_GLOB ordering K_ESCAPE ordering", # 164
        "equality ::= equality K_NOT K_GLOB ordering K_ESCAPE ordering", # 165
        "equality ::= equality K_REGEXP ordering", # 166
        "equality ::= equality K_NOT K_REGEXP ordering", # 167
        "equality ::= equality K_REGEXP ordering K_ESCAPE ordering", # 168
        "equality ::= equality K_NOT K_REGEXP ordering K_ESCAPE ordering", # 169
        "equality ::= equality K_MATCH ordering", # 170
        "equality ::= equality K_NOT K_MATCH ordering", # 171
        "equality ::= equality K_MATCH ordering K_ESCAPE ordering", # 172
        "equality ::= equality K_NOT K_MATCH ordering K_ESCAPE ordering", # 173
        "equality ::= equality K_BETWEEN ordering K_AND ordering", # 174
        "equality ::= equality K_NOT K_BETWEEN ordering K_AND ordering", # 175
        "equality ::= equality K_IN T_LROUND query T_RROUND", # 176
        "equality ::= equality K_NOT K_IN T_LROUND query T_RROUND", # 177
        "equality ::= equality K_ISNULL", # 178
        "equality ::= equality K_NOTNULL", # 179
        "equality ::= equality T_NEQ ordering", # 180
        "equality ::= equality T_EQ ordering", # 181
        "equality ::= ordering", # 182
        "ordering ::= ordering T_LT bitwise", # 183
        "ordering ::= ordering T_LEQ bitwise", # 184
        "ordering ::= ordering T_GEQ bitwise", # 185
        "ordering ::= ordering T_GT bitwise", # 186
        "ordering ::= bitwise", # 187
        "bitwise ::= bitwise T_BITAND additive", # 188
        "bitwise ::= bitwise T_BITIOR additive", # 189
        "bitwise ::= bitwise T_LSHIFT additive", # 190
        "bitwise ::= bitwise T_RSHIFT additive", # 191
        "bitwise ::= additive", # 192
        "additive ::= additive T_PLUS multiplicative", # 193
        "additive ::= additive T_MINUS multiplicative", # 194
        "additive ::= multiplicative", # 195
        "multiplicative ::= multiplicative T_STAR concatenative", # 196
        "multiplicative ::= multiplicative T_SLASH concatenative", # 197
        "multiplicative ::= multiplicative T_PERCENT concatenative", # 198
        "multiplicative ::= concatenative", # 199
        "concatenative ::= concatenative T_CONCAT collating", # 200
        "concatenative ::= collating", # 201
        "collating ::= collating K_COLLATE L_NAME|L_STRING", # 202
        "collating ::= unary", # 203
        "unary ::= T_BITNOT unary", # 204
        "unary ::= T_MINUS unary", # 205
        "unary ::= T_PLUS unary", # 206
        "unary ::= bqlfn", # 207
        "bqlfn ::= K_PREDICTIVE K_PROBABILITY K_OF column_name", # 208
        "bqlfn ::= K_PROBABILITY K_OF column_name T_EQ unary", # 209
        "bqlfn ::= K_PROBABILITY K_OF column_name T_EQ primary K_GIVEN T_LROUND constraints_opt T_RROUND", # 210
        "bqlfn ::= K_PROBABILITY K_OF K_VALUE unary", # 211
        "bqlfn ::= K_PROBABILITY K_OF K_VALUE primary K_GIVEN T_LROUND constraints_opt T_RROUND", # 212
        "bqlfn ::= K_SIMILARITY K_TO T_LROUND expression T_RROUND wrt", # 213
        "bqlfn ::= K_SIMILARITY wrt", # 214
        "bqlfn ::= K_DEPENDENCE K_PROBABILITY ofwith", # 215
        "bqlfn ::= K_MUTUAL K_INFORMATION ofwith nsamples_opt", # 216
        "bqlfn ::= K_CORRELATION ofwith", # 217
        "bqlfn ::= K_CORRELATION K_PVALUE ofwith", # 218
        "bqlfn ::= K_PREDICT column_name withconf", # 219
        "bqlfn ::= primary", # 220
        "wrt ::=", # 221
        "wrt ::= K_WITH K_RESPECT K_TO column_list", # 222
        "wrt ::= K_WITH K_RESPECT K_TO T_LROUND column_lists T_RROUND", # 223
        "ofwith ::=", # 224
        "ofwith ::= K_WITH column_name", # 225
        "ofwith ::= K_OF column_name K_WITH column_name", # 226
        "nsamples_opt ::=", # 227
        "nsamples_opt ::= K_USING primary K_SAMPLES", # 228
        "column_lists ::= column_list", # 229
        "column_lists ::= column_lists T_COMMA|K_AND column_list", # 230
        "column_list ::= T_STAR", # 231
        "column_list ::= column_name", # 232
        "column_list ::= T_LROUND query T_RROUND", # 233
        "primary ::= literal", # 234
        "primary ::= L_NUMPAR", # 235
        "primary ::= L_NAMPAR", # 236
        "primary ::= L_NAME T_LROUND expressions_opt T_RROUND", # 237
        "primary ::= L_NAME T_LROUND K_DISTINCT expressions_opt T_RROUND", # 238
        "primary ::= L_NAME T_LROUND T_STAR T_RROUND", # 239
        "primary ::= T_LROUND expression T_RROUND", # 240
        "primary ::= T_LROUND query T_RROUND", # 241
        "primary ::= K_CAST T_LROUND expression K_AS type T_RROUND", # 242
        "primary ::= K_EXISTS T_LROUND query T_RROUND", # 243
        "primary ::= column_name", # 244
        "primary ::= table_name T_DOT column_name", # 245
        "primary ::= K_CASE case_key_opt case_whens_opt case_else_opt K_END", # 246
        "case_key_opt ::=", # 247
        "case_key_opt ::= expression", # 248
        "case_whens_opt ::=", # 249
        "case_whens_opt ::= case_whens_opt K_WHEN expression K_THEN expression", # 250
        "case_else_opt ::=", # 251
        "case_else_opt ::= K_ELSE expression", # 252
        "literal ::= K_NULL", # 253
        "literal ::= L_INTEGER", # 254
        "literal ::= L_FLOAT", # 255
        "literal ::= L_STRING", # 256
        "type ::= typename", # 257
        "type ::= typename T_LROUND typearg T_RROUND", # 258
        "type ::= typename T_LROUND typearg T_COMMA typearg T_RROUND", # 259
        "typename ::= L_NAME", # 260
        "typename ::= typename L_NAME", # 261
        "typearg ::= L_INTEGER", # 262
        "typearg ::= T_PLUS L_INTEGER", # 263
        "typearg ::= T_MINUS L_INTEGER", # 264
        ]


    def __init__(self, delegate):
        self.yystack = [] # The parser's stack
        self.delegate = delegate
        return


    def yy_pop_parser_stack(self):
        """Pop the parser's stack once. Return the major token number
        for the symbol popped.
        """
        if not self.yystack:
            return 0
        yytos = self.yystack.pop()
        if self.yyTraceFILE:
            self.yyTraceFILE.write("%sPopping %s\n" % (
                self.yyTracePrompt,
                self.yyTokenName[yytos.major]))
        yymajor = yytos.major
        return yymajor


    def yy_find_shift_action(self,       # The parser
                             iLookAhead  # The look-ahead token
                             ):
        '''Find the appropriate action for a parser given the terminal
        look-ahead token iLookAhead.

        If the look-ahead token is YYNOCODE, then check to see if the
        action is independent of the look-ahead.  If it is, return the
        action, otherwise return YY_NO_ACTION.
        '''
        yyTraceFILE = self.yyTraceFILE
        stateno = self.yystack[-1].stateno
        if stateno > self.YY_SHIFT_COUNT:
            return self.yy_default[stateno]
        i = self.yy_shift_ofst[stateno]
        if i == self.YY_SHIFT_USE_DFLT:
            return self.yy_default[stateno]
        assert iLookAhead != self.YYNOCODE
        i += iLookAhead
        if i < 0 or i >= self.YY_ACTTAB_COUNT or self.yy_lookahead[i] != iLookAhead:
            if iLookAhead > 0:
                yyFallback = self.yyFallback
                yyTokenName = self.yyTokenName
                if iLookAhead < len(yyFallback):
                    iFallback = yyFallback[iLookAhead] # Fallback token
                    if iFallback != 0:
                        if yyTraceFILE:
                            yyTraceFILE.write(
                                "%sFALLBACK %s => %s\n" %
                                (self.yyTracePrompt,
                                 yyTokenName[iLookAhead], yyTokenName[iFallback]))
                        return self.yy_find_shift_action(iFallback);
                YYWILDCARD = self.YYWILDCARD
                if YYWILDCARD is not None:
                    j = i - iLookAhead + YYWILDCARD
                    # [TRC 20150122: Lemon avoids generating tests
                    # against j if they can never fail, based on
                    # compile-time values here, presumably to limit
                    # compiler warnings.  Not so easy to do in Python
                    # so we'll just skip that.]
                    if j >= 0 and j < self.YY_ACTTAB_COUNT and self.yy_lookahead[j] == YYWILDCARD:
                        if yyTraceFILE:
                            yyTraceFILE.write(
                                "%sWILDCARD %s => %s\n" %
                                (self.yyTracePrompt,
                                 yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]))
                        return self.yy_action[j];
            return self.yy_default[stateno]
        else:
            return self.yy_action[i]


    def yy_find_reduce_action(self,
                              stateno,    # Current state number
                              iLookAhead  # The look-ahead token
                              ):
        '''Find the appropriate action for a parser given the
        non-terminal look-ahead token iLookAhead.
        
        If the look-ahead token is YYNOCODE, then check to see if the
        action is independent of the look-ahead.  If it is, return the
        action, otherwise return YY_NO_ACTION.
        '''
        YYERRORSYMBOL = self.YYERRORSYMBOL
        if YYERRORSYMBOL is not None:
            if stateno > self.YY_REDUCE_COUNT:
                return self.yy_default[stateno]
        else:
            assert stateno <= self.YY_REDUCE_COUNT
        i = self.yy_reduce_ofst[stateno]
        assert i != self.YY_REDUCE_USE_DFLT
        assert iLookAhead != self.YYNOCODE
        i += iLookAhead
        if YYERRORSYMBOL is not None:
            if i < 0 or i >= self.YY_ACTTAB_COUNT or self.yy_lookahead[i] != iLookAhead:
                return self.yy_default[stateno]
        else:
            assert i >= 0 and i < self.YY_ACTTAB_COUNT
            assert self.yy_lookahead[i] == iLookAhead
        return self.yy_action[i]


    def yy_shift(self,        # The parser to be shifted
                 yyNewState,  # The new state to shift in
                 yyMajor,     # The major token to shift in
                 yyMinor      # The minor token to shift in
                 ):
        '''Perform a shift action.'''

        yytos = self.yyStackEntry(
            stateno = yyNewState,
            major = yyMajor,
            minor = yyMinor
            )
        self.yystack.append(yytos)

        yyTraceFILE = self.yyTraceFILE
        if yyTraceFILE:
            yyTraceFILE.write("%sShift %d\n" % (self.yyTracePrompt, yyNewState))
            yyTraceFILE.write("%sStack:" % self.yyTracePrompt)
            for entry in self.yystack:
                yyTraceFILE.write(" %s" % self.yyTokenName[entry.major])
            yyTraceFILE.write("\n")

        return


    # The following table contains information about every rule that
    # is used during the reduce.
    from collections import namedtuple
    yyRuleInfoEntry = namedtuple(
        'yyRuleInfoEntry',
        ('lhs',  # Symbol on the left-hand side of the rule
         'nrhs', # Number of right-hand side symbols in the rule
         ))
    yyRuleInfo = [
        yyRuleInfoEntry( 123, 1 ),
        yyRuleInfoEntry( 124, 0 ),
        yyRuleInfoEntry( 124, 3 ),
        yyRuleInfoEntry( 125, 0 ),
        yyRuleInfoEntry( 125, 1 ),
        yyRuleInfoEntry( 126, 1 ),
        yyRuleInfoEntry( 126, 1 ),
        yyRuleInfoEntry( 127, 1 ),
        yyRuleInfoEntry( 127, 1 ),
        yyRuleInfoEntry( 127, 1 ),
        yyRuleInfoEntry( 127, 7 ),
        yyRuleInfoEntry( 127, 4 ),
        yyRuleInfoEntry( 127, 4 ),
        yyRuleInfoEntry( 133, 1 ),
        yyRuleInfoEntry( 133, 3 ),
        yyRuleInfoEntry( 134, 3 ),
        yyRuleInfoEntry( 134, 5 ),
        yyRuleInfoEntry( 134, 5 ),
        yyRuleInfoEntry( 134, 3 ),
        yyRuleInfoEntry( 135, 0 ),
        yyRuleInfoEntry( 135, 1 ),
        yyRuleInfoEntry( 127, 12 ),
        yyRuleInfoEntry( 127, 4 ),
        yyRuleInfoEntry( 127, 4 ),
        yyRuleInfoEntry( 138, 0 ),
        yyRuleInfoEntry( 138, 1 ),
        yyRuleInfoEntry( 141, 1 ),
        yyRuleInfoEntry( 141, 3 ),
        yyRuleInfoEntry( 142, 3 ),
        yyRuleInfoEntry( 140, 1 ),
        yyRuleInfoEntry( 140, 3 ),
        yyRuleInfoEntry( 143, 0 ),
        yyRuleInfoEntry( 143, 2 ),
        yyRuleInfoEntry( 144, 3 ),
        yyRuleInfoEntry( 144, 1 ),
        yyRuleInfoEntry( 127, 6 ),
        yyRuleInfoEntry( 127, 6 ),
        yyRuleInfoEntry( 127, 5 ),
        yyRuleInfoEntry( 129, 0 ),
        yyRuleInfoEntry( 129, 1 ),
        yyRuleInfoEntry( 132, 0 ),
        yyRuleInfoEntry( 132, 2 ),
        yyRuleInfoEntry( 130, 0 ),
        yyRuleInfoEntry( 130, 3 ),
        yyRuleInfoEntry( 145, 0 ),
        yyRuleInfoEntry( 145, 2 ),
        yyRuleInfoEntry( 149, 0 ),
        yyRuleInfoEntry( 149, 1 ),
        yyRuleInfoEntry( 150, 1 ),
        yyRuleInfoEntry( 150, 3 ),
        yyRuleInfoEntry( 151, 1 ),
        yyRuleInfoEntry( 151, 3 ),
        yyRuleInfoEntry( 146, 2 ),
        yyRuleInfoEntry( 147, 0 ),
        yyRuleInfoEntry( 147, 2 ),
        yyRuleInfoEntry( 152, 2 ),
        yyRuleInfoEntry( 152, 2 ),
        yyRuleInfoEntry( 152, 2 ),
        yyRuleInfoEntry( 148, 0 ),
        yyRuleInfoEntry( 148, 1 ),
        yyRuleInfoEntry( 153, 7 ),
        yyRuleInfoEntry( 153, 6 ),
        yyRuleInfoEntry( 154, 1 ),
        yyRuleInfoEntry( 154, 3 ),
        yyRuleInfoEntry( 156, 0 ),
        yyRuleInfoEntry( 156, 2 ),
        yyRuleInfoEntry( 158, 1 ),
        yyRuleInfoEntry( 158, 3 ),
        yyRuleInfoEntry( 159, 3 ),
        yyRuleInfoEntry( 161, 0 ),
        yyRuleInfoEntry( 161, 1 ),
        yyRuleInfoEntry( 128, 1 ),
        yyRuleInfoEntry( 128, 1 ),
        yyRuleInfoEntry( 128, 1 ),
        yyRuleInfoEntry( 128, 1 ),
        yyRuleInfoEntry( 128, 1 ),
        yyRuleInfoEntry( 128, 1 ),
        yyRuleInfoEntry( 128, 1 ),
        yyRuleInfoEntry( 128, 1 ),
        yyRuleInfoEntry( 162, 8 ),
        yyRuleInfoEntry( 163, 9 ),
        yyRuleInfoEntry( 165, 4 ),
        yyRuleInfoEntry( 166, 5 ),
        yyRuleInfoEntry( 167, 4 ),
        yyRuleInfoEntry( 164, 6 ),
        yyRuleInfoEntry( 168, 10 ),
        yyRuleInfoEntry( 168, 10 ),
        yyRuleInfoEntry( 177, 1 ),
        yyRuleInfoEntry( 177, 3 ),
        yyRuleInfoEntry( 180, 1 ),
        yyRuleInfoEntry( 180, 2 ),
        yyRuleInfoEntry( 178, 0 ),
        yyRuleInfoEntry( 178, 1 ),
        yyRuleInfoEntry( 182, 3 ),
        yyRuleInfoEntry( 179, 1 ),
        yyRuleInfoEntry( 179, 3 ),
        yyRuleInfoEntry( 184, 1 ),
        yyRuleInfoEntry( 184, 5 ),
        yyRuleInfoEntry( 169, 1 ),
        yyRuleInfoEntry( 169, 1 ),
        yyRuleInfoEntry( 169, 0 ),
        yyRuleInfoEntry( 170, 1 ),
        yyRuleInfoEntry( 170, 3 ),
        yyRuleInfoEntry( 185, 1 ),
        yyRuleInfoEntry( 185, 3 ),
        yyRuleInfoEntry( 185, 5 ),
        yyRuleInfoEntry( 185, 2 ),
        yyRuleInfoEntry( 181, 0 ),
        yyRuleInfoEntry( 181, 2 ),
        yyRuleInfoEntry( 171, 0 ),
        yyRuleInfoEntry( 171, 2 ),
        yyRuleInfoEntry( 176, 2 ),
        yyRuleInfoEntry( 176, 3 ),
        yyRuleInfoEntry( 176, 4 ),
        yyRuleInfoEntry( 176, 6 ),
        yyRuleInfoEntry( 155, 0 ),
        yyRuleInfoEntry( 155, 3 ),
        yyRuleInfoEntry( 186, 1 ),
        yyRuleInfoEntry( 186, 3 ),
        yyRuleInfoEntry( 188, 2 ),
        yyRuleInfoEntry( 188, 4 ),
        yyRuleInfoEntry( 187, 0 ),
        yyRuleInfoEntry( 187, 2 ),
        yyRuleInfoEntry( 172, 0 ),
        yyRuleInfoEntry( 172, 2 ),
        yyRuleInfoEntry( 136, 1 ),
        yyRuleInfoEntry( 137, 1 ),
        yyRuleInfoEntry( 139, 1 ),
        yyRuleInfoEntry( 131, 1 ),
        yyRuleInfoEntry( 173, 0 ),
        yyRuleInfoEntry( 173, 3 ),
        yyRuleInfoEntry( 173, 5 ),
        yyRuleInfoEntry( 174, 0 ),
        yyRuleInfoEntry( 174, 3 ),
        yyRuleInfoEntry( 191, 1 ),
        yyRuleInfoEntry( 191, 3 ),
        yyRuleInfoEntry( 192, 2 ),
        yyRuleInfoEntry( 193, 0 ),
        yyRuleInfoEntry( 193, 1 ),
        yyRuleInfoEntry( 193, 1 ),
        yyRuleInfoEntry( 175, 0 ),
        yyRuleInfoEntry( 175, 1 ),
        yyRuleInfoEntry( 157, 2 ),
        yyRuleInfoEntry( 157, 4 ),
        yyRuleInfoEntry( 157, 4 ),
        yyRuleInfoEntry( 194, 0 ),
        yyRuleInfoEntry( 194, 1 ),
        yyRuleInfoEntry( 190, 1 ),
        yyRuleInfoEntry( 190, 3 ),
        yyRuleInfoEntry( 160, 1 ),
        yyRuleInfoEntry( 195, 3 ),
        yyRuleInfoEntry( 195, 1 ),
        yyRuleInfoEntry( 196, 3 ),
        yyRuleInfoEntry( 196, 1 ),
        yyRuleInfoEntry( 197, 2 ),
        yyRuleInfoEntry( 197, 1 ),
        yyRuleInfoEntry( 198, 3 ),
        yyRuleInfoEntry( 198, 4 ),
        yyRuleInfoEntry( 198, 3 ),
        yyRuleInfoEntry( 198, 4 ),
        yyRuleInfoEntry( 198, 5 ),
        yyRuleInfoEntry( 198, 6 ),
        yyRuleInfoEntry( 198, 3 ),
        yyRuleInfoEntry( 198, 4 ),
        yyRuleInfoEntry( 198, 5 ),
        yyRuleInfoEntry( 198, 6 ),
        yyRuleInfoEntry( 198, 3 ),
        yyRuleInfoEntry( 198, 4 ),
        yyRuleInfoEntry( 198, 5 ),
        yyRuleInfoEntry( 198, 6 ),
        yyRuleInfoEntry( 198, 3 ),
        yyRuleInfoEntry( 198, 4 ),
        yyRuleInfoEntry( 198, 5 ),
        yyRuleInfoEntry( 198, 6 ),
        yyRuleInfoEntry( 198, 5 ),
        yyRuleInfoEntry( 198, 6 ),
        yyRuleInfoEntry( 198, 5 ),
        yyRuleInfoEntry( 198, 6 ),
        yyRuleInfoEntry( 198, 2 ),
        yyRuleInfoEntry( 198, 2 ),
        yyRuleInfoEntry( 198, 3 ),
        yyRuleInfoEntry( 198, 3 ),
        yyRuleInfoEntry( 198, 1 ),
        yyRuleInfoEntry( 199, 3 ),
        yyRuleInfoEntry( 199, 3 ),
        yyRuleInfoEntry( 199, 3 ),
        yyRuleInfoEntry( 199, 3 ),
        yyRuleInfoEntry( 199, 1 ),
        yyRuleInfoEntry( 200, 3 ),
        yyRuleInfoEntry( 200, 3 ),
        yyRuleInfoEntry( 200, 3 ),
        yyRuleInfoEntry( 200, 3 ),
        yyRuleInfoEntry( 200, 1 ),
        yyRuleInfoEntry( 201, 3 ),
        yyRuleInfoEntry( 201, 3 ),
        yyRuleInfoEntry( 201, 1 ),
        yyRuleInfoEntry( 202, 3 ),
        yyRuleInfoEntry( 202, 3 ),
        yyRuleInfoEntry( 202, 3 ),
        yyRuleInfoEntry( 202, 1 ),
        yyRuleInfoEntry( 203, 3 ),
        yyRuleInfoEntry( 203, 1 ),
        yyRuleInfoEntry( 204, 3 ),
        yyRuleInfoEntry( 204, 1 ),
        yyRuleInfoEntry( 205, 2 ),
        yyRuleInfoEntry( 205, 2 ),
        yyRuleInfoEntry( 205, 2 ),
        yyRuleInfoEntry( 205, 1 ),
        yyRuleInfoEntry( 206, 4 ),
        yyRuleInfoEntry( 206, 5 ),
        yyRuleInfoEntry( 206, 9 ),
        yyRuleInfoEntry( 206, 4 ),
        yyRuleInfoEntry( 206, 8 ),
        yyRuleInfoEntry( 206, 6 ),
        yyRuleInfoEntry( 206, 2 ),
        yyRuleInfoEntry( 206, 3 ),
        yyRuleInfoEntry( 206, 4 ),
        yyRuleInfoEntry( 206, 2 ),
        yyRuleInfoEntry( 206, 3 ),
        yyRuleInfoEntry( 206, 3 ),
        yyRuleInfoEntry( 206, 1 ),
        yyRuleInfoEntry( 207, 0 ),
        yyRuleInfoEntry( 207, 4 ),
        yyRuleInfoEntry( 207, 6 ),
        yyRuleInfoEntry( 208, 0 ),
        yyRuleInfoEntry( 208, 2 ),
        yyRuleInfoEntry( 208, 4 ),
        yyRuleInfoEntry( 209, 0 ),
        yyRuleInfoEntry( 209, 3 ),
        yyRuleInfoEntry( 189, 1 ),
        yyRuleInfoEntry( 189, 3 ),
        yyRuleInfoEntry( 210, 1 ),
        yyRuleInfoEntry( 210, 1 ),
        yyRuleInfoEntry( 210, 3 ),
        yyRuleInfoEntry( 183, 1 ),
        yyRuleInfoEntry( 183, 1 ),
        yyRuleInfoEntry( 183, 1 ),
        yyRuleInfoEntry( 183, 4 ),
        yyRuleInfoEntry( 183, 5 ),
        yyRuleInfoEntry( 183, 4 ),
        yyRuleInfoEntry( 183, 3 ),
        yyRuleInfoEntry( 183, 3 ),
        yyRuleInfoEntry( 183, 6 ),
        yyRuleInfoEntry( 183, 4 ),
        yyRuleInfoEntry( 183, 1 ),
        yyRuleInfoEntry( 183, 3 ),
        yyRuleInfoEntry( 183, 5 ),
        yyRuleInfoEntry( 213, 0 ),
        yyRuleInfoEntry( 213, 1 ),
        yyRuleInfoEntry( 214, 0 ),
        yyRuleInfoEntry( 214, 5 ),
        yyRuleInfoEntry( 215, 0 ),
        yyRuleInfoEntry( 215, 2 ),
        yyRuleInfoEntry( 211, 1 ),
        yyRuleInfoEntry( 211, 1 ),
        yyRuleInfoEntry( 211, 1 ),
        yyRuleInfoEntry( 211, 1 ),
        yyRuleInfoEntry( 212, 1 ),
        yyRuleInfoEntry( 212, 4 ),
        yyRuleInfoEntry( 212, 6 ),
        yyRuleInfoEntry( 216, 1 ),
        yyRuleInfoEntry( 216, 2 ),
        yyRuleInfoEntry( 217, 1 ),
        yyRuleInfoEntry( 217, 2 ),
        yyRuleInfoEntry( 217, 2 ),
        ]


    # Action code for each rule follows.
    def action_000(self):
        # bql ::= phrases
        return self.delegate.p_bql_start(
            phrases = self.yystack[-1].minor,
            )
    def action_001(self):
        # phrases ::=
        return self.delegate.p_phrases_none(
            )
    def action_002(self):
        # phrases ::= phrases phrase_opt T_SEMI
        return self.delegate.p_phrases_some(
            phrases = self.yystack[-3].minor,
            phrase = self.yystack[-2].minor,
            )
    def action_003(self):
        # phrase_opt ::=
        return self.delegate.p_phrase_opt_none(
            )
    def action_004(self):
        # phrase_opt ::= phrase
        return self.delegate.p_phrase_opt_some(
            phrase = self.yystack[-1].minor,
            )
    def action_005(self):
        # phrase ::= command
        return self.delegate.p_phrase_command(
            c = self.yystack[-1].minor,
            )
    def action_006(self):
        # phrase ::= query
        return self.delegate.p_phrase_query(
            q = self.yystack[-1].minor,
            )
    def action_007(self):
        # command ::= K_BEGIN
        return self.delegate.p_command_begin(
            )
    def action_008(self):
        # command ::= K_ROLLBACK
        return self.delegate.p_command_rollback(
            )
    def action_009(self):
        # command ::= K_COMMIT
        return self.delegate.p_command_commit(
            )
    def action_010(self):
        # command ::= K_CREATE temp_opt K_TABLE ifnotexists table_name K_AS query
        return self.delegate.p_command_createtab_as(
            temp = self.yystack[-6].minor,
            ifnotexists = self.yystack[-4].minor,
            name = self.yystack[-3].minor,
            query = self.yystack[-1].minor,
            )
    def action_011(self):
        # command ::= K_DROP K_TABLE ifexists table_name
        return self.delegate.p_command_droptab(
            ifexists = self.yystack[-2].minor,
            name = self.yystack[-1].minor,
            )
    def action_012(self):
        # command ::= K_ALTER K_TABLE table_name altertab_cmds
        return self.delegate.p_command_altertab(
            table = self.yystack[-2].minor,
            cmds = self.yystack[-1].minor,
            )
    def action_013(self):
        # altertab_cmds ::= altertab_cmd
        return self.delegate.p_altertab_cmds_one(
            cmd = self.yystack[-1].minor,
            )
    def action_014(self):
        # altertab_cmds ::= altertab_cmds T_COMMA altertab_cmd
        return self.delegate.p_altertab_cmds_many(
            cmds = self.yystack[-3].minor,
            cmd = self.yystack[-1].minor,
            )
    def action_015(self):
        # altertab_cmd ::= K_RENAME K_TO table_name
        return self.delegate.p_altertab_cmd_renametab(
            name = self.yystack[-1].minor,
            )
    def action_016(self):
        # altertab_cmd ::= K_RENAME k_column_opt column_name K_TO column_name
        return self.delegate.p_altertab_cmd_renamecol(
            old = self.yystack[-3].minor,
            new = self.yystack[-1].minor,
            )
    def action_017(self):
        # altertab_cmd ::= K_SET K_DEFAULT K_GENERATOR K_TO generator_name
        return self.delegate.p_altertab_cmd_setdefgen(
            generator = self.yystack[-1].minor,
            )
    def action_018(self):
        # altertab_cmd ::= K_UNSET K_DEFAULT K_GENERATOR
        return self.delegate.p_altertab_cmd_unsetdefgen(
            )
    def action_019(self):
        # k_column_opt ::=
        return None
    def action_020(self):
        # k_column_opt ::= K_COLUMN
        return None
    def action_021(self):
        # command ::= K_CREATE default_opt K_GENERATOR generator_name ifnotexists K_FOR table_name K_USING metamodel_name T_LROUND generator_schema T_RROUND
        return self.delegate.p_command_creategen(
            defaultp = self.yystack[-11].minor,
            name = self.yystack[-9].minor,
            ifnotexists = self.yystack[-8].minor,
            table = self.yystack[-6].minor,
            metamodel = self.yystack[-4].minor,
            schema = self.yystack[-2].minor,
            )
    def action_022(self):
        # command ::= K_DROP K_GENERATOR ifexists generator_name
        return self.delegate.p_command_dropgen(
            ifexists = self.yystack[-2].minor,
            name = self.yystack[-1].minor,
            )
    def action_023(self):
        # command ::= K_ALTER K_GENERATOR generator_name altergen_cmds
        return self.delegate.p_command_altergen(
            generator = self.yystack[-2].minor,
            cmds = self.yystack[-1].minor,
            )
    def action_024(self):
        # default_opt ::=
        return self.delegate.p_default_opt_none(
            )
    def action_025(self):
        # default_opt ::= K_DEFAULT
        return self.delegate.p_default_opt_some(
            )
    def action_026(self):
        # altergen_cmds ::= altergen_cmd
        return self.delegate.p_altergen_cmds_one(
            cmd = self.yystack[-1].minor,
            )
    def action_027(self):
        # altergen_cmds ::= altergen_cmds T_COMMA altergen_cmd
        return self.delegate.p_altergen_cmds_many(
            cmds = self.yystack[-3].minor,
            cmd = self.yystack[-1].minor,
            )
    def action_028(self):
        # altergen_cmd ::= K_RENAME K_TO generator_name
        return self.delegate.p_altergen_cmd_renamegen(
            name = self.yystack[-1].minor,
            )
    def action_029(self):
        # generator_schema ::= generator_schemum
        return self.delegate.p_generator_schema_one(
            s = self.yystack[-1].minor,
            )
    def action_030(self):
        # generator_schema ::= generator_schema T_COMMA generator_schemum
        return self.delegate.p_generator_schema_many(
            ss = self.yystack[-3].minor,
            s = self.yystack[-1].minor,
            )
    def action_031(self):
        # generator_schemum ::=
        return self.delegate.p_generator_schemum_empty(
            )
    def action_032(self):
        # generator_schemum ::= generator_schemum gs_token
        return self.delegate.p_generator_schemum_nonempty(
            s = self.yystack[-2].minor,
            t = self.yystack[-1].minor,
            )
    def action_033(self):
        # gs_token ::= T_LROUND generator_schemum T_RROUND
        return self.delegate.p_gs_token_comp(
            s = self.yystack[-2].minor,
            )
    def action_034(self):
        # gs_token ::= ANY
        return self.delegate.p_gs_token_prim(
            t = self.yystack[-1].minor,
            )
    def action_035(self):
        # command ::= K_INITIALIZE L_INTEGER K_MODEL|K_MODELS ifnotexists K_FOR generator_name
        return self.delegate.p_command_init_models(
            n = self.yystack[-5].minor,
            ifnotexists = self.yystack[-3].minor,
            generator = self.yystack[-1].minor,
            )
    def action_036(self):
        # command ::= K_ANALYZE generator_name anmodelset_opt anlimit anckpt_opt wait_opt
        return self.delegate.p_command_analyze_models(
            generator = self.yystack[-5].minor,
            models = self.yystack[-4].minor,
            anlimit = self.yystack[-3].minor,
            anckpt = self.yystack[-2].minor,
            wait = self.yystack[-1].minor,
            )
    def action_037(self):
        # command ::= K_DROP K_MODEL|K_MODELS modelset_opt K_FROM generator_name
        return self.delegate.p_command_drop_models(
            models = self.yystack[-3].minor,
            generator = self.yystack[-1].minor,
            )
    def action_038(self):
        # temp_opt ::=
        return self.delegate.p_temp_opt_none(
            )
    def action_039(self):
        # temp_opt ::= K_TEMP|K_TEMPORARY
        return self.delegate.p_temp_opt_some(
            )
    def action_040(self):
        # ifexists ::=
        return self.delegate.p_ifexists_none(
            )
    def action_041(self):
        # ifexists ::= K_IF K_EXISTS
        return self.delegate.p_ifexists_some(
            )
    def action_042(self):
        # ifnotexists ::=
        return self.delegate.p_ifnotexists_none(
            )
    def action_043(self):
        # ifnotexists ::= K_IF K_NOT K_EXISTS
        return self.delegate.p_ifnotexists_some(
            )
    def action_044(self):
        # anmodelset_opt ::=
        return self.delegate.p_anmodelset_opt_none(
            )
    def action_045(self):
        # anmodelset_opt ::= K_MODEL|K_MODELS modelset
        return self.delegate.p_anmodelset_opt_some(
            m = self.yystack[-1].minor,
            )
    def action_046(self):
        # modelset_opt ::=
        return self.delegate.p_modelset_opt_none(
            )
    def action_047(self):
        # modelset_opt ::= modelset
        return self.delegate.p_modelset_opt_some(
            m = self.yystack[-1].minor,
            )
    def action_048(self):
        # modelset ::= modelrange
        return self.delegate.p_modelset_one(
            r = self.yystack[-1].minor,
            )
    def action_049(self):
        # modelset ::= modelset T_COMMA modelrange
        return self.delegate.p_modelset_many(
            m = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_050(self):
        # modelrange ::= L_INTEGER
        return self.delegate.p_modelrange_single(
            modelno = self.yystack[-1].minor,
            )
    def action_051(self):
        # modelrange ::= L_INTEGER T_MINUS L_INTEGER
        return self.delegate.p_modelrange_multi(
            minno = self.yystack[-3].minor,
            maxno = self.yystack[-1].minor,
            )
    def action_052(self):
        # anlimit ::= K_FOR anduration
        return self.delegate.p_anlimit_l(
            duration = self.yystack[-1].minor,
            )
    def action_053(self):
        # anckpt_opt ::=
        return self.delegate.p_anckpt_opt_none(
            )
    def action_054(self):
        # anckpt_opt ::= K_CHECKPOINT anduration
        return self.delegate.p_anckpt_opt_some(
            duration = self.yystack[-1].minor,
            )
    def action_055(self):
        # anduration ::= L_INTEGER K_ITERATION|K_ITERATIONS
        return self.delegate.p_anduration_iterations(
            n = self.yystack[-2].minor,
            )
    def action_056(self):
        # anduration ::= L_INTEGER K_MINUTE|K_MINUTES
        return self.delegate.p_anduration_minutes(
            n = self.yystack[-2].minor,
            )
    def action_057(self):
        # anduration ::= L_INTEGER K_SECOND|K_SECONDS
        return self.delegate.p_anduration_seconds(
            n = self.yystack[-2].minor,
            )
    def action_058(self):
        # wait_opt ::=
        return self.delegate.p_wait_opt_none(
            )
    def action_059(self):
        # wait_opt ::= K_WAIT
        return self.delegate.p_wait_opt_some(
            )
    def action_060(self):
        # simulate ::= K_SIMULATE simulate_columns K_FROM generator_name usingmodel_opt given_opt limit
        return self.delegate.p_simulate_s(
            cols = self.yystack[-6].minor,
            generator = self.yystack[-4].minor,
            modelno = self.yystack[-3].minor,
            constraints = self.yystack[-2].minor,
            lim = self.yystack[-1].minor,
            )
    def action_061(self):
        # simulate ::= K_SIMULATE simulate_columns K_FROM generator_name usingmodel_opt given_opt
        return self.delegate.p_simulate_nolimit(
            cols = self.yystack[-5].minor,
            generator = self.yystack[-3].minor,
            modelno = self.yystack[-2].minor,
            constraints = self.yystack[-1].minor,
            )
    def action_062(self):
        # simulate_columns ::= column_name
        return self.delegate.p_simulate_columns_one(
            col = self.yystack[-1].minor,
            )
    def action_063(self):
        # simulate_columns ::= simulate_columns T_COMMA column_name
        return self.delegate.p_simulate_columns_many(
            cols = self.yystack[-3].minor,
            col = self.yystack[-1].minor,
            )
    def action_064(self):
        # given_opt ::=
        return self.delegate.p_given_opt_none(
            )
    def action_065(self):
        # given_opt ::= K_GIVEN constraints
        return self.delegate.p_given_opt_some(
            constraints = self.yystack[-1].minor,
            )
    def action_066(self):
        # constraints ::= constraint
        return self.delegate.p_constraints_one(
            c = self.yystack[-1].minor,
            )
    def action_067(self):
        # constraints ::= constraints T_COMMA constraint
        return self.delegate.p_constraints_many(
            cs = self.yystack[-3].minor,
            c = self.yystack[-1].minor,
            )
    def action_068(self):
        # constraint ::= column_name T_EQ expression
        return self.delegate.p_constraint_c(
            col = self.yystack[-3].minor,
            value = self.yystack[-1].minor,
            )
    def action_069(self):
        # constraints_opt ::=
        return self.delegate.p_constraints_opt_none(
            )
    def action_070(self):
        # constraints_opt ::= constraints
        return self.delegate.p_constraints_opt_some(
            cs = self.yystack[-1].minor,
            )
    def action_071(self):
        # query ::= select
        return self.delegate.p_query_select(
            q = self.yystack[-1].minor,
            )
    def action_072(self):
        # query ::= estimate
        return self.delegate.p_query_estimate(
            q = self.yystack[-1].minor,
            )
    def action_073(self):
        # query ::= estby
        return self.delegate.p_query_estby(
            q = self.yystack[-1].minor,
            )
    def action_074(self):
        # query ::= estcol
        return self.delegate.p_query_estcol(
            q = self.yystack[-1].minor,
            )
    def action_075(self):
        # query ::= estpairrow
        return self.delegate.p_query_estpairrow(
            q = self.yystack[-1].minor,
            )
    def action_076(self):
        # query ::= estpaircol
        return self.delegate.p_query_estpaircol(
            q = self.yystack[-1].minor,
            )
    def action_077(self):
        # query ::= infer
        return self.delegate.p_query_infer(
            q = self.yystack[-1].minor,
            )
    def action_078(self):
        # query ::= simulate
        return self.delegate.p_query_simulate(
            q = self.yystack[-1].minor,
            )
    def action_079(self):
        # select ::= K_SELECT select_quant select_columns from_sel_opt where group_by order_by limit_opt
        return self.delegate.p_select_s(
            quant = self.yystack[-7].minor,
            cols = self.yystack[-6].minor,
            tabs = self.yystack[-5].minor,
            cond = self.yystack[-4].minor,
            grouping = self.yystack[-3].minor,
            ord = self.yystack[-2].minor,
            lim = self.yystack[-1].minor,
            )
    def action_080(self):
        # estimate ::= K_ESTIMATE select_quant select_columns from_est usingmodel_opt where group_by order_by limit_opt
        return self.delegate.p_estimate_e(
            quant = self.yystack[-8].minor,
            cols = self.yystack[-7].minor,
            tabs = self.yystack[-6].minor,
            modelno = self.yystack[-5].minor,
            cond = self.yystack[-4].minor,
            grouping = self.yystack[-3].minor,
            ord = self.yystack[-2].minor,
            lim = self.yystack[-1].minor,
            )
    def action_081(self):
        # estcol ::= K_ESTIMATE K_COLUMNS error T_SEMI
        return self.delegate.p_estcol_e(
            )
    def action_082(self):
        # estpairrow ::= K_ESTIMATE K_PAIRWISE K_ROW error T_SEMI
        return self.delegate.p_estpairrow_e(
            )
    def action_083(self):
        # estpaircol ::= K_ESTIMATE K_PAIRWISE error T_SEMI
        return self.delegate.p_estpaircol_e(
            )
    def action_084(self):
        # estby ::= K_ESTIMATE select_quant select_columns K_BY generator_name usingmodel_opt
        return self.delegate.p_estby_e(
            quant = self.yystack[-5].minor,
            cols = self.yystack[-4].minor,
            generator = self.yystack[-2].minor,
            modelno = self.yystack[-1].minor,
            )
    def action_085(self):
        # infer ::= K_INFER infer_auto_columns withconf_opt K_FROM generator_name usingmodel_opt where group_by order_by limit_opt
        return self.delegate.p_infer_auto(
            cols = self.yystack[-9].minor,
            conf = self.yystack[-8].minor,
            generator = self.yystack[-6].minor,
            modelno = self.yystack[-5].minor,
            cond = self.yystack[-4].minor,
            grouping = self.yystack[-3].minor,
            ord = self.yystack[-2].minor,
            lim = self.yystack[-1].minor,
            )
    def action_086(self):
        # infer ::= K_INFER K_EXPLICIT infer_exp_columns K_FROM generator_name usingmodel_opt where group_by order_by limit_opt
        return self.delegate.p_infer_explicit(
            cols = self.yystack[-8].minor,
            generator = self.yystack[-6].minor,
            modelno = self.yystack[-5].minor,
            cond = self.yystack[-4].minor,
            grouping = self.yystack[-3].minor,
            ord = self.yystack[-2].minor,
            lim = self.yystack[-1].minor,
            )
    def action_087(self):
        # infer_auto_columns ::= infer_auto_column
        return self.delegate.p_infer_auto_columns_one(
            c = self.yystack[-1].minor,
            )
    def action_088(self):
        # infer_auto_columns ::= infer_auto_columns T_COMMA infer_auto_column
        return self.delegate.p_infer_auto_columns_many(
            cs = self.yystack[-3].minor,
            c = self.yystack[-1].minor,
            )
    def action_089(self):
        # infer_auto_column ::= T_STAR
        return self.delegate.p_infer_auto_column_all(
            )
    def action_090(self):
        # infer_auto_column ::= column_name as
        return self.delegate.p_infer_auto_column_one(
            col = self.yystack[-2].minor,
            name = self.yystack[-1].minor,
            )
    def action_091(self):
        # withconf_opt ::=
        return self.delegate.p_withconf_opt_none(
            )
    def action_092(self):
        # withconf_opt ::= withconf
        return self.delegate.p_withconf_opt_some(
            conf = self.yystack[-1].minor,
            )
    def action_093(self):
        # withconf ::= K_WITH K_CONFIDENCE primary
        return self.delegate.p_withconf_conf(
            conf = self.yystack[-1].minor,
            )
    def action_094(self):
        # infer_exp_columns ::= infer_exp_column
        return self.delegate.p_infer_exp_columns_one(
            c = self.yystack[-1].minor,
            )
    def action_095(self):
        # infer_exp_columns ::= infer_exp_columns T_COMMA infer_exp_column
        return self.delegate.p_infer_exp_columns_many(
            cs = self.yystack[-3].minor,
            c = self.yystack[-1].minor,
            )
    def action_096(self):
        # infer_exp_column ::= select_column
        return self.delegate.p_infer_exp_column_sel(
            c = self.yystack[-1].minor,
            )
    def action_097(self):
        # infer_exp_column ::= K_PREDICT column_name as K_CONFIDENCE column_name
        return self.delegate.p_infer_exp_column_pred(
            col = self.yystack[-4].minor,
            name = self.yystack[-3].minor,
            confname = self.yystack[-1].minor,
            )
    def action_098(self):
        # select_quant ::= K_DISTINCT
        return self.delegate.p_select_quant_distinct(
            )
    def action_099(self):
        # select_quant ::= K_ALL
        return self.delegate.p_select_quant_all(
            )
    def action_100(self):
        # select_quant ::=
        return self.delegate.p_select_quant_default(
            )
    def action_101(self):
        # select_columns ::= select_column
        return self.delegate.p_select_columns_one(
            c = self.yystack[-1].minor,
            )
    def action_102(self):
        # select_columns ::= select_columns T_COMMA select_column
        return self.delegate.p_select_columns_many(
            cs = self.yystack[-3].minor,
            c = self.yystack[-1].minor,
            )
    def action_103(self):
        # select_column ::= T_STAR
        return self.delegate.p_select_column_star(
            )
    def action_104(self):
        # select_column ::= table_name T_DOT T_STAR
        return self.delegate.p_select_column_qstar(
            table = self.yystack[-3].minor,
            )
    def action_105(self):
        # select_column ::= table_name T_DOT T_LROUND query T_RROUND
        return self.delegate.p_select_column_qsub(
            table = self.yystack[-5].minor,
            q = self.yystack[-2].minor,
            )
    def action_106(self):
        # select_column ::= expression as
        return self.delegate.p_select_column_exp(
            e = self.yystack[-2].minor,
            name = self.yystack[-1].minor,
            )
    def action_107(self):
        # as ::=
        return self.delegate.p_as_none(
            )
    def action_108(self):
        # as ::= K_AS L_NAME
        return self.delegate.p_as_some(
            name = self.yystack[-1].minor,
            )
    def action_109(self):
        # from_sel_opt ::=
        return self.delegate.p_from_sel_opt_empty(
            )
    def action_110(self):
        # from_sel_opt ::= K_FROM select_tables
        return self.delegate.p_from_sel_opt_nonempty(
            tables = self.yystack[-1].minor,
            )
    def action_111(self):
        # from_est ::= K_FROM generator_name
        return self.delegate.p_from_est_row(
            name = self.yystack[-1].minor,
            )
    def action_112(self):
        # from_est ::= K_FROM K_PAIRWISE generator_name
        return self.delegate.p_from_est_pairrow(
            name = self.yystack[-1].minor,
            )
    def action_113(self):
        # from_est ::= K_FROM K_COLUMNS K_OF generator_name
        return self.delegate.p_from_est_col(
            name = self.yystack[-1].minor,
            )
    def action_114(self):
        # from_est ::= K_FROM K_PAIRWISE K_COLUMNS K_OF generator_name for
        return self.delegate.p_from_est_paircol(
            name = self.yystack[-2].minor,
            subcols = self.yystack[-1].minor,
            )
    def action_115(self):
        # usingmodel_opt ::=
        return self.delegate.p_usingmodel_opt_all(
            )
    def action_116(self):
        # usingmodel_opt ::= K_USING K_MODEL primary
        return self.delegate.p_usingmodel_opt_one(
            modelno = self.yystack[-1].minor,
            )
    def action_117(self):
        # select_tables ::= select_table
        return self.delegate.p_select_tables_one(
            t = self.yystack[-1].minor,
            )
    def action_118(self):
        # select_tables ::= select_tables T_COMMA select_table
        return self.delegate.p_select_tables_many(
            ts = self.yystack[-3].minor,
            t = self.yystack[-1].minor,
            )
    def action_119(self):
        # select_table ::= table_name as
        return self.delegate.p_select_table_named(
            table = self.yystack[-2].minor,
            name = self.yystack[-1].minor,
            )
    def action_120(self):
        # select_table ::= T_LROUND query T_RROUND as
        return self.delegate.p_select_table_subquery(
            q = self.yystack[-3].minor,
            name = self.yystack[-1].minor,
            )
    def action_121(self):
        # for ::=
        return self.delegate.p_for_none(
            )
    def action_122(self):
        # for ::= K_FOR column_lists
        return self.delegate.p_for_one(
            collist = self.yystack[-1].minor,
            )
    def action_123(self):
        # where ::=
        return self.delegate.p_where_unconditional(
            )
    def action_124(self):
        # where ::= K_WHERE expression
        return self.delegate.p_where_conditional(
            condition = self.yystack[-1].minor,
            )
    def action_125(self):
        # column_name ::= L_NAME
        return self.delegate.p_column_name_cn(
            name = self.yystack[-1].minor,
            )
    def action_126(self):
        # generator_name ::= L_NAME
        return self.delegate.p_generator_name_unqualified(
            name = self.yystack[-1].minor,
            )
    def action_127(self):
        # metamodel_name ::= L_NAME
        return self.delegate.p_metamodel_name_mn(
            name = self.yystack[-1].minor,
            )
    def action_128(self):
        # table_name ::= L_NAME
        return self.delegate.p_table_name_unqualified(
            name = self.yystack[-1].minor,
            )
    def action_129(self):
        # group_by ::=
        return self.delegate.p_group_by_none(
            )
    def action_130(self):
        # group_by ::= K_GROUP K_BY expressions
        return self.delegate.p_group_by_some(
            keys = self.yystack[-1].minor,
            )
    def action_131(self):
        # group_by ::= K_GROUP K_BY expressions K_HAVING expression
        return self.delegate.p_group_by_having(
            keys = self.yystack[-3].minor,
            cond = self.yystack[-1].minor,
            )
    def action_132(self):
        # order_by ::=
        return self.delegate.p_order_by_none(
            )
    def action_133(self):
        # order_by ::= K_ORDER K_BY order_keys
        return self.delegate.p_order_by_some(
            keys = self.yystack[-1].minor,
            )
    def action_134(self):
        # order_keys ::= order_key
        return self.delegate.p_order_keys_one(
            key = self.yystack[-1].minor,
            )
    def action_135(self):
        # order_keys ::= order_keys T_COMMA order_key
        return self.delegate.p_order_keys_many(
            keys = self.yystack[-3].minor,
            key = self.yystack[-1].minor,
            )
    def action_136(self):
        # order_key ::= expression order_sense
        return self.delegate.p_order_key_k(
            e = self.yystack[-2].minor,
            s = self.yystack[-1].minor,
            )
    def action_137(self):
        # order_sense ::=
        return self.delegate.p_order_sense_none(
            )
    def action_138(self):
        # order_sense ::= K_ASC
        return self.delegate.p_order_sense_asc(
            )
    def action_139(self):
        # order_sense ::= K_DESC
        return self.delegate.p_order_sense_desc(
            )
    def action_140(self):
        # limit_opt ::=
        return self.delegate.p_limit_opt_none(
            )
    def action_141(self):
        # limit_opt ::= limit
        return self.delegate.p_limit_opt_some(
            lim = self.yystack[-1].minor,
            )
    def action_142(self):
        # limit ::= K_LIMIT expression
        return self.delegate.p_limit_n(
            limit = self.yystack[-1].minor,
            )
    def action_143(self):
        # limit ::= K_LIMIT expression K_OFFSET expression
        return self.delegate.p_limit_offset(
            limit = self.yystack[-3].minor,
            offset = self.yystack[-1].minor,
            )
    def action_144(self):
        # limit ::= K_LIMIT expression T_COMMA expression
        return self.delegate.p_limit_comma(
            offset = self.yystack[-3].minor,
            limit = self.yystack[-1].minor,
            )
    def action_145(self):
        # expressions_opt ::=
        return self.delegate.p_expressions_opt_none(
            )
    def action_146(self):
        # expressions_opt ::= expressions
        return self.delegate.p_expressions_opt_some(
            es = self.yystack[-1].minor,
            )
    def action_147(self):
        # expressions ::= expression
        return self.delegate.p_expressions_one(
            e = self.yystack[-1].minor,
            )
    def action_148(self):
        # expressions ::= expressions T_COMMA expression
        return self.delegate.p_expressions_many(
            es = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_149(self):
        # expression ::= boolean_or
        return self.delegate.p_expression_top(
            e = self.yystack[-1].minor,
            )
    def action_150(self):
        # boolean_or ::= boolean_or K_OR boolean_and
        return self.delegate.p_boolean_or_or(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_151(self):
        # boolean_or ::= boolean_and
        return self.delegate.p_boolean_or_and(
            a = self.yystack[-1].minor,
            )
    def action_152(self):
        # boolean_and ::= boolean_and K_AND boolean_not
        return self.delegate.p_boolean_and_and(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_153(self):
        # boolean_and ::= boolean_not
        return self.delegate.p_boolean_and_not(
            n = self.yystack[-1].minor,
            )
    def action_154(self):
        # boolean_not ::= K_NOT boolean_not
        return self.delegate.p_boolean_not_not(
            n = self.yystack[-1].minor,
            )
    def action_155(self):
        # boolean_not ::= equality
        return self.delegate.p_boolean_not_equality(
            c = self.yystack[-1].minor,
            )
    def action_156(self):
        # equality ::= equality K_IS ordering
        return self.delegate.p_equality_is(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_157(self):
        # equality ::= equality K_IS K_NOT ordering
        return self.delegate.p_equality_isnot(
            l = self.yystack[-4].minor,
            r = self.yystack[-1].minor,
            )
    def action_158(self):
        # equality ::= equality K_LIKE ordering
        return self.delegate.p_equality_like(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_159(self):
        # equality ::= equality K_NOT K_LIKE ordering
        return self.delegate.p_equality_notlike(
            l = self.yystack[-4].minor,
            r = self.yystack[-1].minor,
            )
    def action_160(self):
        # equality ::= equality K_LIKE ordering K_ESCAPE ordering
        return self.delegate.p_equality_like_esc(
            l = self.yystack[-5].minor,
            r = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_161(self):
        # equality ::= equality K_NOT K_LIKE ordering K_ESCAPE ordering
        return self.delegate.p_equality_notlike_esc(
            l = self.yystack[-6].minor,
            r = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_162(self):
        # equality ::= equality K_GLOB ordering
        return self.delegate.p_equality_glob(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_163(self):
        # equality ::= equality K_NOT K_GLOB ordering
        return self.delegate.p_equality_notglob(
            l = self.yystack[-4].minor,
            r = self.yystack[-1].minor,
            )
    def action_164(self):
        # equality ::= equality K_GLOB ordering K_ESCAPE ordering
        return self.delegate.p_equality_glob_esc(
            l = self.yystack[-5].minor,
            r = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_165(self):
        # equality ::= equality K_NOT K_GLOB ordering K_ESCAPE ordering
        return self.delegate.p_equality_notglob_esc(
            l = self.yystack[-6].minor,
            r = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_166(self):
        # equality ::= equality K_REGEXP ordering
        return self.delegate.p_equality_regexp(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_167(self):
        # equality ::= equality K_NOT K_REGEXP ordering
        return self.delegate.p_equality_notregexp(
            l = self.yystack[-4].minor,
            r = self.yystack[-1].minor,
            )
    def action_168(self):
        # equality ::= equality K_REGEXP ordering K_ESCAPE ordering
        return self.delegate.p_equality_regexp_esc(
            l = self.yystack[-5].minor,
            r = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_169(self):
        # equality ::= equality K_NOT K_REGEXP ordering K_ESCAPE ordering
        return self.delegate.p_equality_notregexp_esc(
            l = self.yystack[-6].minor,
            r = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_170(self):
        # equality ::= equality K_MATCH ordering
        return self.delegate.p_equality_match(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_171(self):
        # equality ::= equality K_NOT K_MATCH ordering
        return self.delegate.p_equality_notmatch(
            l = self.yystack[-4].minor,
            r = self.yystack[-1].minor,
            )
    def action_172(self):
        # equality ::= equality K_MATCH ordering K_ESCAPE ordering
        return self.delegate.p_equality_match_esc(
            l = self.yystack[-5].minor,
            r = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_173(self):
        # equality ::= equality K_NOT K_MATCH ordering K_ESCAPE ordering
        return self.delegate.p_equality_notmatch_esc(
            l = self.yystack[-6].minor,
            r = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_174(self):
        # equality ::= equality K_BETWEEN ordering K_AND ordering
        return self.delegate.p_equality_between(
            m = self.yystack[-5].minor,
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_175(self):
        # equality ::= equality K_NOT K_BETWEEN ordering K_AND ordering
        return self.delegate.p_equality_notbetween(
            m = self.yystack[-6].minor,
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_176(self):
        # equality ::= equality K_IN T_LROUND query T_RROUND
        return self.delegate.p_equality_in(
            e = self.yystack[-5].minor,
            q = self.yystack[-2].minor,
            )
    def action_177(self):
        # equality ::= equality K_NOT K_IN T_LROUND query T_RROUND
        return self.delegate.p_equality_notin(
            e = self.yystack[-6].minor,
            q = self.yystack[-2].minor,
            )
    def action_178(self):
        # equality ::= equality K_ISNULL
        return self.delegate.p_equality_isnull(
            e = self.yystack[-2].minor,
            )
    def action_179(self):
        # equality ::= equality K_NOTNULL
        return self.delegate.p_equality_notnull(
            e = self.yystack[-2].minor,
            )
    def action_180(self):
        # equality ::= equality T_NEQ ordering
        return self.delegate.p_equality_neq(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_181(self):
        # equality ::= equality T_EQ ordering
        return self.delegate.p_equality_eq(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_182(self):
        # equality ::= ordering
        return self.delegate.p_equality_ordering(
            o = self.yystack[-1].minor,
            )
    def action_183(self):
        # ordering ::= ordering T_LT bitwise
        return self.delegate.p_ordering_lt(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_184(self):
        # ordering ::= ordering T_LEQ bitwise
        return self.delegate.p_ordering_leq(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_185(self):
        # ordering ::= ordering T_GEQ bitwise
        return self.delegate.p_ordering_geq(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_186(self):
        # ordering ::= ordering T_GT bitwise
        return self.delegate.p_ordering_gt(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_187(self):
        # ordering ::= bitwise
        return self.delegate.p_ordering_bitwise(
            b = self.yystack[-1].minor,
            )
    def action_188(self):
        # bitwise ::= bitwise T_BITAND additive
        return self.delegate.p_bitwise_and(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_189(self):
        # bitwise ::= bitwise T_BITIOR additive
        return self.delegate.p_bitwise_ior(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_190(self):
        # bitwise ::= bitwise T_LSHIFT additive
        return self.delegate.p_bitwise_lshift(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_191(self):
        # bitwise ::= bitwise T_RSHIFT additive
        return self.delegate.p_bitwise_rshift(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_192(self):
        # bitwise ::= additive
        return self.delegate.p_bitwise_additive(
            a = self.yystack[-1].minor,
            )
    def action_193(self):
        # additive ::= additive T_PLUS multiplicative
        return self.delegate.p_additive_add(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_194(self):
        # additive ::= additive T_MINUS multiplicative
        return self.delegate.p_additive_sub(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_195(self):
        # additive ::= multiplicative
        return self.delegate.p_additive_mult(
            m = self.yystack[-1].minor,
            )
    def action_196(self):
        # multiplicative ::= multiplicative T_STAR concatenative
        return self.delegate.p_multiplicative_mul(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_197(self):
        # multiplicative ::= multiplicative T_SLASH concatenative
        return self.delegate.p_multiplicative_div(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_198(self):
        # multiplicative ::= multiplicative T_PERCENT concatenative
        return self.delegate.p_multiplicative_rem(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_199(self):
        # multiplicative ::= concatenative
        return self.delegate.p_multiplicative_conc(
            c = self.yystack[-1].minor,
            )
    def action_200(self):
        # concatenative ::= concatenative T_CONCAT collating
        return self.delegate.p_concatenative_concat(
            l = self.yystack[-3].minor,
            r = self.yystack[-1].minor,
            )
    def action_201(self):
        # concatenative ::= collating
        return self.delegate.p_concatenative_collate(
            c = self.yystack[-1].minor,
            )
    def action_202(self):
        # collating ::= collating K_COLLATE L_NAME|L_STRING
        return self.delegate.p_collating_collate(
            e = self.yystack[-3].minor,
            c = self.yystack[-1].minor,
            )
    def action_203(self):
        # collating ::= unary
        return self.delegate.p_collating_unary(
            u = self.yystack[-1].minor,
            )
    def action_204(self):
        # unary ::= T_BITNOT unary
        return self.delegate.p_unary_bitwise_not(
            u = self.yystack[-1].minor,
            )
    def action_205(self):
        # unary ::= T_MINUS unary
        return self.delegate.p_unary_minus(
            u = self.yystack[-1].minor,
            )
    def action_206(self):
        # unary ::= T_PLUS unary
        return self.delegate.p_unary_plus(
            u = self.yystack[-1].minor,
            )
    def action_207(self):
        # unary ::= bqlfn
        return self.delegate.p_unary_bql(
            b = self.yystack[-1].minor,
            )
    def action_208(self):
        # bqlfn ::= K_PREDICTIVE K_PROBABILITY K_OF column_name
        return self.delegate.p_bqlfn_predprob_row(
            col = self.yystack[-1].minor,
            )
    def action_209(self):
        # bqlfn ::= K_PROBABILITY K_OF column_name T_EQ unary
        return self.delegate.p_bqlfn_prob_const(
            col = self.yystack[-3].minor,
            e = self.yystack[-1].minor,
            )
    def action_210(self):
        # bqlfn ::= K_PROBABILITY K_OF column_name T_EQ primary K_GIVEN T_LROUND constraints_opt T_RROUND
        return self.delegate.p_bqlfn_condprob_const(
            col = self.yystack[-7].minor,
            e = self.yystack[-5].minor,
            constraints = self.yystack[-2].minor,
            )
    def action_211(self):
        # bqlfn ::= K_PROBABILITY K_OF K_VALUE unary
        return self.delegate.p_bqlfn_prob_1col(
            e = self.yystack[-1].minor,
            )
    def action_212(self):
        # bqlfn ::= K_PROBABILITY K_OF K_VALUE primary K_GIVEN T_LROUND constraints_opt T_RROUND
        return self.delegate.p_bqlfn_condprob_1col(
            e = self.yystack[-5].minor,
            constraints = self.yystack[-2].minor,
            )
    def action_213(self):
        # bqlfn ::= K_SIMILARITY K_TO T_LROUND expression T_RROUND wrt
        return self.delegate.p_bqlfn_sim_1row(
            cond = self.yystack[-3].minor,
            cols = self.yystack[-1].minor,
            )
    def action_214(self):
        # bqlfn ::= K_SIMILARITY wrt
        return self.delegate.p_bqlfn_sim_2row(
            cols = self.yystack[-1].minor,
            )
    def action_215(self):
        # bqlfn ::= K_DEPENDENCE K_PROBABILITY ofwith
        return self.delegate.p_bqlfn_depprob(
            cols = self.yystack[-1].minor,
            )
    def action_216(self):
        # bqlfn ::= K_MUTUAL K_INFORMATION ofwith nsamples_opt
        return self.delegate.p_bqlfn_mutinf(
            cols = self.yystack[-2].minor,
            nsamp = self.yystack[-1].minor,
            )
    def action_217(self):
        # bqlfn ::= K_CORRELATION ofwith
        return self.delegate.p_bqlfn_correl(
            cols = self.yystack[-1].minor,
            )
    def action_218(self):
        # bqlfn ::= K_CORRELATION K_PVALUE ofwith
        return self.delegate.p_bqlfn_correl_pval(
            cols = self.yystack[-1].minor,
            )
    def action_219(self):
        # bqlfn ::= K_PREDICT column_name withconf
        return self.delegate.p_bqlfn_predict(
            col = self.yystack[-2].minor,
            conf = self.yystack[-1].minor,
            )
    def action_220(self):
        # bqlfn ::= primary
        return self.delegate.p_bqlfn_primary(
            p = self.yystack[-1].minor,
            )
    def action_221(self):
        # wrt ::=
        return self.delegate.p_wrt_none(
            )
    def action_222(self):
        # wrt ::= K_WITH K_RESPECT K_TO column_list
        return self.delegate.p_wrt_one(
            collist = self.yystack[-1].minor,
            )
    def action_223(self):
        # wrt ::= K_WITH K_RESPECT K_TO T_LROUND column_lists T_RROUND
        return self.delegate.p_wrt_some(
            collists = self.yystack[-2].minor,
            )
    def action_224(self):
        # ofwith ::=
        return self.delegate.p_ofwith_bql_2col(
            )
    def action_225(self):
        # ofwith ::= K_WITH column_name
        return self.delegate.p_ofwith_bql_1col(
            col = self.yystack[-1].minor,
            )
    def action_226(self):
        # ofwith ::= K_OF column_name K_WITH column_name
        return self.delegate.p_ofwith_bql_const(
            col1 = self.yystack[-3].minor,
            col2 = self.yystack[-1].minor,
            )
    def action_227(self):
        # nsamples_opt ::=
        return self.delegate.p_nsamples_opt_none(
            )
    def action_228(self):
        # nsamples_opt ::= K_USING primary K_SAMPLES
        return self.delegate.p_nsamples_opt_some(
            nsamples = self.yystack[-2].minor,
            )
    def action_229(self):
        # column_lists ::= column_list
        return self.delegate.p_column_lists_one(
            collist = self.yystack[-1].minor,
            )
    def action_230(self):
        # column_lists ::= column_lists T_COMMA|K_AND column_list
        return self.delegate.p_column_lists_many(
            collists = self.yystack[-3].minor,
            collist = self.yystack[-1].minor,
            )
    def action_231(self):
        # column_list ::= T_STAR
        return self.delegate.p_column_list_all(
            )
    def action_232(self):
        # column_list ::= column_name
        return self.delegate.p_column_list_column(
            col = self.yystack[-1].minor,
            )
    def action_233(self):
        # column_list ::= T_LROUND query T_RROUND
        return self.delegate.p_column_list_subquery(
            q = self.yystack[-2].minor,
            )
    def action_234(self):
        # primary ::= literal
        return self.delegate.p_primary_literal(
            v = self.yystack[-1].minor,
            )
    def action_235(self):
        # primary ::= L_NUMPAR
        return self.delegate.p_primary_numpar(
            n = self.yystack[-1].minor,
            )
    def action_236(self):
        # primary ::= L_NAMPAR
        return self.delegate.p_primary_nampar(
            n = self.yystack[-1].minor,
            )
    def action_237(self):
        # primary ::= L_NAME T_LROUND expressions_opt T_RROUND
        return self.delegate.p_primary_apply(
            fn = self.yystack[-4].minor,
            es = self.yystack[-2].minor,
            )
    def action_238(self):
        # primary ::= L_NAME T_LROUND K_DISTINCT expressions_opt T_RROUND
        return self.delegate.p_primary_apply_distinct(
            fn = self.yystack[-5].minor,
            es = self.yystack[-2].minor,
            )
    def action_239(self):
        # primary ::= L_NAME T_LROUND T_STAR T_RROUND
        return self.delegate.p_primary_apply_star(
            fn = self.yystack[-4].minor,
            )
    def action_240(self):
        # primary ::= T_LROUND expression T_RROUND
        return self.delegate.p_primary_paren(
            e = self.yystack[-2].minor,
            )
    def action_241(self):
        # primary ::= T_LROUND query T_RROUND
        return self.delegate.p_primary_subquery(
            q = self.yystack[-2].minor,
            )
    def action_242(self):
        # primary ::= K_CAST T_LROUND expression K_AS type T_RROUND
        return self.delegate.p_primary_cast(
            e = self.yystack[-4].minor,
            t = self.yystack[-2].minor,
            )
    def action_243(self):
        # primary ::= K_EXISTS T_LROUND query T_RROUND
        return self.delegate.p_primary_exists(
            q = self.yystack[-2].minor,
            )
    def action_244(self):
        # primary ::= column_name
        return self.delegate.p_primary_column(
            col = self.yystack[-1].minor,
            )
    def action_245(self):
        # primary ::= table_name T_DOT column_name
        return self.delegate.p_primary_tabcol(
            tab = self.yystack[-3].minor,
            col = self.yystack[-1].minor,
            )
    def action_246(self):
        # primary ::= K_CASE case_key_opt case_whens_opt case_else_opt K_END
        return self.delegate.p_primary_case(
            k = self.yystack[-4].minor,
            ws = self.yystack[-3].minor,
            e = self.yystack[-2].minor,
            )
    def action_247(self):
        # case_key_opt ::=
        return self.delegate.p_case_key_opt_none(
            )
    def action_248(self):
        # case_key_opt ::= expression
        return self.delegate.p_case_key_opt_some(
            k = self.yystack[-1].minor,
            )
    def action_249(self):
        # case_whens_opt ::=
        return self.delegate.p_case_whens_opt_none(
            )
    def action_250(self):
        # case_whens_opt ::= case_whens_opt K_WHEN expression K_THEN expression
        return self.delegate.p_case_whens_opt_some(
            ws = self.yystack[-5].minor,
            w = self.yystack[-3].minor,
            t = self.yystack[-1].minor,
            )
    def action_251(self):
        # case_else_opt ::=
        return self.delegate.p_case_else_opt_none(
            )
    def action_252(self):
        # case_else_opt ::= K_ELSE expression
        return self.delegate.p_case_else_opt_some(
            e = self.yystack[-1].minor,
            )
    def action_253(self):
        # literal ::= K_NULL
        return self.delegate.p_literal_null(
            )
    def action_254(self):
        # literal ::= L_INTEGER
        return self.delegate.p_literal_integer(
            i = self.yystack[-1].minor,
            )
    def action_255(self):
        # literal ::= L_FLOAT
        return self.delegate.p_literal_float(
            f = self.yystack[-1].minor,
            )
    def action_256(self):
        # literal ::= L_STRING
        return self.delegate.p_literal_string(
            s = self.yystack[-1].minor,
            )
    def action_257(self):
        # type ::= typename
        return self.delegate.p_type_name(
            n = self.yystack[-1].minor,
            )
    def action_258(self):
        # type ::= typename T_LROUND typearg T_RROUND
        return self.delegate.p_type_onearg(
            n = self.yystack[-4].minor,
            a = self.yystack[-2].minor,
            )
    def action_259(self):
        # type ::= typename T_LROUND typearg T_COMMA typearg T_RROUND
        return self.delegate.p_type_twoarg(
            n = self.yystack[-6].minor,
            a = self.yystack[-4].minor,
            b = self.yystack[-2].minor,
            )
    def action_260(self):
        # typename ::= L_NAME
        return self.delegate.p_typename_one(
            n = self.yystack[-1].minor,
            )
    def action_261(self):
        # typename ::= typename L_NAME
        return self.delegate.p_typename_many(
            tn = self.yystack[-2].minor,
            n = self.yystack[-1].minor,
            )
    def action_262(self):
        # typearg ::= L_INTEGER
        return self.delegate.p_typearg_unsigned(
            i = self.yystack[-1].minor,
            )
    def action_263(self):
        # typearg ::= T_PLUS L_INTEGER
        return self.delegate.p_typearg_positive(
            i = self.yystack[-1].minor,
            )
    def action_264(self):
        # typearg ::= T_MINUS L_INTEGER
        return self.delegate.p_typearg_negative(
            i = self.yystack[-1].minor,
            )
    yy_action_method = [
        action_000,
        action_001,
        action_002,
        action_003,
        action_004,
        action_005,
        action_006,
        action_007,
        action_008,
        action_009,
        action_010,
        action_011,
        action_012,
        action_013,
        action_014,
        action_015,
        action_016,
        action_017,
        action_018,
        action_019,
        action_020,
        action_021,
        action_022,
        action_023,
        action_024,
        action_025,
        action_026,
        action_027,
        action_028,
        action_029,
        action_030,
        action_031,
        action_032,
        action_033,
        action_034,
        action_035,
        action_036,
        action_037,
        action_038,
        action_039,
        action_040,
        action_041,
        action_042,
        action_043,
        action_044,
        action_045,
        action_046,
        action_047,
        action_048,
        action_049,
        action_050,
        action_051,
        action_052,
        action_053,
        action_054,
        action_055,
        action_056,
        action_057,
        action_058,
        action_059,
        action_060,
        action_061,
        action_062,
        action_063,
        action_064,
        action_065,
        action_066,
        action_067,
        action_068,
        action_069,
        action_070,
        action_071,
        action_072,
        action_073,
        action_074,
        action_075,
        action_076,
        action_077,
        action_078,
        action_079,
        action_080,
        action_081,
        action_082,
        action_083,
        action_084,
        action_085,
        action_086,
        action_087,
        action_088,
        action_089,
        action_090,
        action_091,
        action_092,
        action_093,
        action_094,
        action_095,
        action_096,
        action_097,
        action_098,
        action_099,
        action_100,
        action_101,
        action_102,
        action_103,
        action_104,
        action_105,
        action_106,
        action_107,
        action_108,
        action_109,
        action_110,
        action_111,
        action_112,
        action_113,
        action_114,
        action_115,
        action_116,
        action_117,
        action_118,
        action_119,
        action_120,
        action_121,
        action_122,
        action_123,
        action_124,
        action_125,
        action_126,
        action_127,
        action_128,
        action_129,
        action_130,
        action_131,
        action_132,
        action_133,
        action_134,
        action_135,
        action_136,
        action_137,
        action_138,
        action_139,
        action_140,
        action_141,
        action_142,
        action_143,
        action_144,
        action_145,
        action_146,
        action_147,
        action_148,
        action_149,
        action_150,
        action_151,
        action_152,
        action_153,
        action_154,
        action_155,
        action_156,
        action_157,
        action_158,
        action_159,
        action_160,
        action_161,
        action_162,
        action_163,
        action_164,
        action_165,
        action_166,
        action_167,
        action_168,
        action_169,
        action_170,
        action_171,
        action_172,
        action_173,
        action_174,
        action_175,
        action_176,
        action_177,
        action_178,
        action_179,
        action_180,
        action_181,
        action_182,
        action_183,
        action_184,
        action_185,
        action_186,
        action_187,
        action_188,
        action_189,
        action_190,
        action_191,
        action_192,
        action_193,
        action_194,
        action_195,
        action_196,
        action_197,
        action_198,
        action_199,
        action_200,
        action_201,
        action_202,
        action_203,
        action_204,
        action_205,
        action_206,
        action_207,
        action_208,
        action_209,
        action_210,
        action_211,
        action_212,
        action_213,
        action_214,
        action_215,
        action_216,
        action_217,
        action_218,
        action_219,
        action_220,
        action_221,
        action_222,
        action_223,
        action_224,
        action_225,
        action_226,
        action_227,
        action_228,
        action_229,
        action_230,
        action_231,
        action_232,
        action_233,
        action_234,
        action_235,
        action_236,
        action_237,
        action_238,
        action_239,
        action_240,
        action_241,
        action_242,
        action_243,
        action_244,
        action_245,
        action_246,
        action_247,
        action_248,
        action_249,
        action_250,
        action_251,
        action_252,
        action_253,
        action_254,
        action_255,
        action_256,
        action_257,
        action_258,
        action_259,
        action_260,
        action_261,
        action_262,
        action_263,
        action_264,
    ]


    def yy_reduce(self,     # The parser
                  yyruleno  # Number of the rule by which to reduce
                  ):
        '''Perform a reduce action and the shift that must immediately
        follow the reduce.'''
        
        if (self.yyTraceFILE and
            yyruleno >= 0 and yyruleno < len(self.yyRuleName)
            ):
            self.yyTraceFILE.write("%sReduce [%s].\n" % (
                self.yyTracePrompt, self.yyRuleName[yyruleno]))

        # get the action
        action = self.yy_action_method[yyruleno]

        # 'yygotominor' is the LHS of the rule reduced
        yygotominor = action(self)

        yygoto = self.yyRuleInfo[yyruleno].lhs   # The next state
        yysize = self.yyRuleInfo[yyruleno].nrhs  # Amount to pop the stack
        if yysize > 0:
            del self.yystack[-yysize:]

        # The next action
        yyact = self.yy_find_reduce_action(self.yystack[-1].stateno, yygoto)

        if yyact < self.YYNSTATE:
            self.yy_shift(yyact, yygoto, yygotominor)
        else:
            assert yyact == self.YYNSTATE + self.YYNRULE + 1
            self.yy_accept()

        return


    def yy_parse_failed(self):
        '''This method executes when the parse fails.'''

        if self.yyTraceFILE:
            self.yyTraceFILE.write("%sFail!\n" % self.yyTracePrompt)

        while self.yystack:
            self.yy_pop_parser_stack()

        self.delegate.parse_failed()

        return


    def yy_syntax_error(self, token):
        '''This method executes when a syntax error occurs.'''
        self.delegate.syntax_error(token)
        return


    def yy_accept(self):
        '''This method executes when the parser accepts.'''

        if self.yyTraceFILE:
            self.yyTraceFILE.write("%sAccept!\n" % self.yyTracePrompt)

        while self.yystack:
            self.yy_pop_parser_stack()

        self.delegate.accept()

        return


    def parse(self, tokens):
        for token in tokens:
            self.feed(token)
        self.feed((0, None))
        return


    def feed(self, token):
        '''The main parser routine.'''

        yymajor = token[0]  # The major token code number
        yyminor = token[1]  # The value for the token

        yyerrorhit = False  # True if yymajor has invoked an error

        # (re)initialize the parser, if necessary
        if not self.yystack:
            self.yyerrcnt = -1
            yytos = self.yyStackEntry(
                stateno = 0,
                major = 0,
                minor = None
                )
            self.yystack.append(yytos)

        yyendofinput = (yymajor == 0) # True if we are at the end of input
        
        if self.yyTraceFILE:
            self.yyTraceFILE.write(
                "%sInput %s\n" %
                (self.yyTracePrompt, self.yyTokenName[yymajor]))


        cond = True
        while cond:

            # The parser action.
            yyact = self.yy_find_shift_action(yymajor)

            YYNOCODE = self.YYNOCODE
            YYNSTATE = self.YYNSTATE
            YYNRULE  = self.YYNRULE

            if yyact < YYNSTATE:
                assert not yyendofinput, "Impossible to shift the $ token"
                self.yy_shift(yyact, yymajor, yyminor)
                self.yyerrcnt -= 1
                yymajor = YYNOCODE
            elif yyact < YYNSTATE + YYNRULE:
                self.yy_reduce(yyact - YYNSTATE)
            else:
                assert yyact == self.YY_ERROR_ACTION
                if self.yyTraceFILE:
                    self.yyTraceFILE.write(
                        "%sSyntax Error!\n" % self.yyTracePrompt)

                YYERRORSYMBOL = self.YYERRORSYMBOL
                if YYERRORSYMBOL is not None:
                    # A syntax error has occurred.
                    # The response to an error depends upon whether or not the
                    # grammar defines an error token "ERROR".  
                    #
                    # This is what we do if the grammar does define ERROR:
                    #
                    #  * Call the %syntax_error function.
                    #
                    #  * Begin popping the stack until we enter a state where
                    #    it is legal to shift the error symbol, then shift
                    #    the error symbol.
                    #
                    #  * Set the error count to three.
                    #
                    #  * Begin accepting and shifting new tokens.  No new error
                    #    processing will occur until three tokens have been
                    #    shifted successfully.
                    #
                    if self.yyerrcnt < 0:
                        self.yy_syntax_error(token)

                    yymx = self.yystack[-1].major
                    if yymx == YYERRORSYMBOL or yyerrorhit:
                        if self.yyTraceFILE:
                            self.yyTraceFILE.write(
                                "%sDiscard input token %s\n" % (
                                    self.yyTracePrompt,
                                    self.yyTokenName[yymajor]))
                        yymajor = YYNOCODE
                    else:
                        while self.yystack and yymx != YYERRORSYMBOL:
                            yyact = self.yy_find_reduce_action(
                                self.yystack[-1].stateno,
                                YYERRORSYMBOL
                                )
                            if yyact < YYNSTATE:
                                break
                            self.yy_pop_parser_stack()

                        if not self.yystack or yymajor == 0:
                            self.yy_parse_failed()
                            yymajor = YYNOCODE
                        elif yymx != YYERRORSYMBOL:
                            self.yy_shift(yyact, YYERRORSYMBOL, None)

                    self.yyerrcnt = 3
                    yyerrorhit = True

                else: # YYERRORSYMBOL is not defined
                    # This is what we do if the grammar does not define ERROR:
                    #
                    #  * Report an error message, and throw away the input token.
                    #
                    #  * If the input token is $, then fail the parse.
                    #
                    # As before, subsequent error messages are suppressed until
                    # three input tokens have been successfully shifted.
                    #
                    if self.yyerrcnt <= 0:
                        self.yy_syntax_error(token)

                    self.yyerrcnt = 3
                    if yyendofinput:
                        self.yy_parse_failed()

                    yymajor = YYNOCODE

            cond = yymajor != YYNOCODE and self.yystack

        return


