github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/sqlparse/sqlparser/sql.go (about)

     1  // Code generated by goyacc -o sql.go sql.y. DO NOT EDIT.
     2  
     3  //line sql.y:18
     4  package sqlparser
     5  
     6  import __yyfmt__ "fmt"
     7  
     8  //line sql.y:18
     9  
    10  func setParseTree(yylex interface{}, stmt Statement) {
    11  	yylex.(*Tokenizer).ParseTree = stmt
    12  }
    13  
    14  func setAllowComments(yylex interface{}, allow bool) {
    15  	yylex.(*Tokenizer).AllowComments = allow
    16  }
    17  
    18  func incNesting(yylex interface{}) bool {
    19  	yylex.(*Tokenizer).nesting++
    20  	if yylex.(*Tokenizer).nesting == 200 {
    21  		return true
    22  	}
    23  	return false
    24  }
    25  
    26  func decNesting(yylex interface{}) {
    27  	yylex.(*Tokenizer).nesting--
    28  }
    29  
    30  func forceEOF(yylex interface{}) {
    31  	yylex.(*Tokenizer).ForceEOF = true
    32  }
    33  
    34  //line sql.y:46
    35  type yySymType struct {
    36  	yys              int
    37  	empty            struct{}
    38  	statement        Statement
    39  	selStmt          SelectStatement
    40  	ins              *Insert
    41  	byt              byte
    42  	bytes            []byte
    43  	bytes2           [][]byte
    44  	str              string
    45  	selectExprs      SelectExprs
    46  	selectExpr       SelectExpr
    47  	columns          Columns
    48  	colName          *ColName
    49  	tableExprs       TableExprs
    50  	tableExpr        TableExpr
    51  	tableName        TableName
    52  	tableNames       TableNames
    53  	indexHints       *IndexHints
    54  	expr             Expr
    55  	exprs            Exprs
    56  	boolVal          BoolVal
    57  	colTuple         ColTuple
    58  	values           Values
    59  	valTuple         ValTuple
    60  	subquery         *Subquery
    61  	whens            []*When
    62  	when             *When
    63  	orderBy          OrderBy
    64  	order            *Order
    65  	limit            *Limit
    66  	updateExprs      UpdateExprs
    67  	updateExpr       *UpdateExpr
    68  	colIdent         ColIdent
    69  	colIdents        []ColIdent
    70  	tableIdent       TableIdent
    71  	convertType      *ConvertType
    72  	aliasedTableName *AliasedTableExpr
    73  }
    74  
    75  const LEX_ERROR = 57346
    76  const UNION = 57347
    77  const SELECT = 57348
    78  const INSERT = 57349
    79  const UPDATE = 57350
    80  const DELETE = 57351
    81  const FROM = 57352
    82  const WHERE = 57353
    83  const GROUP = 57354
    84  const HAVING = 57355
    85  const ORDER = 57356
    86  const BY = 57357
    87  const LIMIT = 57358
    88  const OFFSET = 57359
    89  const FOR = 57360
    90  const ALL = 57361
    91  const DISTINCT = 57362
    92  const AS = 57363
    93  const EXISTS = 57364
    94  const ASC = 57365
    95  const DESC = 57366
    96  const INTO = 57367
    97  const DUPLICATE = 57368
    98  const KEY = 57369
    99  const DEFAULT = 57370
   100  const SET = 57371
   101  const LOCK = 57372
   102  const VALUES = 57373
   103  const LAST_INSERT_ID = 57374
   104  const NEXT = 57375
   105  const VALUE = 57376
   106  const SHARE = 57377
   107  const MODE = 57378
   108  const SQL_NO_CACHE = 57379
   109  const SQL_CACHE = 57380
   110  const JOIN = 57381
   111  const STRAIGHT_JOIN = 57382
   112  const LEFT = 57383
   113  const RIGHT = 57384
   114  const INNER = 57385
   115  const OUTER = 57386
   116  const CROSS = 57387
   117  const NATURAL = 57388
   118  const USE = 57389
   119  const FORCE = 57390
   120  const ON = 57391
   121  const ID = 57392
   122  const HEX = 57393
   123  const STRING = 57394
   124  const INTEGRAL = 57395
   125  const FLOAT = 57396
   126  const HEXNUM = 57397
   127  const VALUE_ARG = 57398
   128  const LIST_ARG = 57399
   129  const COMMENT = 57400
   130  const NULL = 57401
   131  const TRUE = 57402
   132  const FALSE = 57403
   133  const OR = 57404
   134  const AND = 57405
   135  const NOT = 57406
   136  const BETWEEN = 57407
   137  const CASE = 57408
   138  const WHEN = 57409
   139  const THEN = 57410
   140  const ELSE = 57411
   141  const END = 57412
   142  const LE = 57413
   143  const GE = 57414
   144  const NE = 57415
   145  const NULL_SAFE_EQUAL = 57416
   146  const IS = 57417
   147  const LIKE = 57418
   148  const REGEXP = 57419
   149  const IN = 57420
   150  const SHIFT_LEFT = 57421
   151  const SHIFT_RIGHT = 57422
   152  const DIV = 57423
   153  const MOD = 57424
   154  const UNARY = 57425
   155  const COLLATE = 57426
   156  const BINARY = 57427
   157  const INTERVAL = 57428
   158  const JSON_EXTRACT_OP = 57429
   159  const JSON_UNQUOTE_EXTRACT_OP = 57430
   160  const CREATE = 57431
   161  const ALTER = 57432
   162  const DROP = 57433
   163  const RENAME = 57434
   164  const ANALYZE = 57435
   165  const TABLE = 57436
   166  const INDEX = 57437
   167  const VIEW = 57438
   168  const TO = 57439
   169  const IGNORE = 57440
   170  const IF = 57441
   171  const UNIQUE = 57442
   172  const USING = 57443
   173  const SHOW = 57444
   174  const DESCRIBE = 57445
   175  const EXPLAIN = 57446
   176  const DATE = 57447
   177  const ESCAPE = 57448
   178  const REPAIR = 57449
   179  const OPTIMIZE = 57450
   180  const TRUNCATE = 57451
   181  const DATABASES = 57452
   182  const TABLES = 57453
   183  const VITESS_KEYSPACES = 57454
   184  const VITESS_SHARDS = 57455
   185  const VSCHEMA_TABLES = 57456
   186  const INTEGER = 57457
   187  const CHARACTER = 57458
   188  const CURRENT_TIMESTAMP = 57459
   189  const DATABASE = 57460
   190  const CURRENT_DATE = 57461
   191  const CURRENT_TIME = 57462
   192  const LOCALTIME = 57463
   193  const LOCALTIMESTAMP = 57464
   194  const UTC_DATE = 57465
   195  const UTC_TIME = 57466
   196  const UTC_TIMESTAMP = 57467
   197  const REPLACE = 57468
   198  const CONVERT = 57469
   199  const CAST = 57470
   200  const GROUP_CONCAT = 57471
   201  const SEPARATOR = 57472
   202  const MATCH = 57473
   203  const AGAINST = 57474
   204  const BOOLEAN = 57475
   205  const LANGUAGE = 57476
   206  const WITH = 57477
   207  const QUERY = 57478
   208  const EXPANSION = 57479
   209  const UNUSED = 57480
   210  
   211  var yyToknames = [...]string{
   212  	"$end",
   213  	"error",
   214  	"$unk",
   215  	"LEX_ERROR",
   216  	"UNION",
   217  	"SELECT",
   218  	"INSERT",
   219  	"UPDATE",
   220  	"DELETE",
   221  	"FROM",
   222  	"WHERE",
   223  	"GROUP",
   224  	"HAVING",
   225  	"ORDER",
   226  	"BY",
   227  	"LIMIT",
   228  	"OFFSET",
   229  	"FOR",
   230  	"ALL",
   231  	"DISTINCT",
   232  	"AS",
   233  	"EXISTS",
   234  	"ASC",
   235  	"DESC",
   236  	"INTO",
   237  	"DUPLICATE",
   238  	"KEY",
   239  	"DEFAULT",
   240  	"SET",
   241  	"LOCK",
   242  	"VALUES",
   243  	"LAST_INSERT_ID",
   244  	"NEXT",
   245  	"VALUE",
   246  	"SHARE",
   247  	"MODE",
   248  	"SQL_NO_CACHE",
   249  	"SQL_CACHE",
   250  	"JOIN",
   251  	"STRAIGHT_JOIN",
   252  	"LEFT",
   253  	"RIGHT",
   254  	"INNER",
   255  	"OUTER",
   256  	"CROSS",
   257  	"NATURAL",
   258  	"USE",
   259  	"FORCE",
   260  	"ON",
   261  	"'('",
   262  	"','",
   263  	"')'",
   264  	"ID",
   265  	"HEX",
   266  	"STRING",
   267  	"INTEGRAL",
   268  	"FLOAT",
   269  	"HEXNUM",
   270  	"VALUE_ARG",
   271  	"LIST_ARG",
   272  	"COMMENT",
   273  	"NULL",
   274  	"TRUE",
   275  	"FALSE",
   276  	"OR",
   277  	"AND",
   278  	"NOT",
   279  	"'!'",
   280  	"BETWEEN",
   281  	"CASE",
   282  	"WHEN",
   283  	"THEN",
   284  	"ELSE",
   285  	"END",
   286  	"'='",
   287  	"'<'",
   288  	"'>'",
   289  	"LE",
   290  	"GE",
   291  	"NE",
   292  	"NULL_SAFE_EQUAL",
   293  	"IS",
   294  	"LIKE",
   295  	"REGEXP",
   296  	"IN",
   297  	"'|'",
   298  	"'&'",
   299  	"SHIFT_LEFT",
   300  	"SHIFT_RIGHT",
   301  	"'+'",
   302  	"'-'",
   303  	"'*'",
   304  	"'/'",
   305  	"DIV",
   306  	"'%'",
   307  	"MOD",
   308  	"'^'",
   309  	"'~'",
   310  	"UNARY",
   311  	"COLLATE",
   312  	"BINARY",
   313  	"INTERVAL",
   314  	"'.'",
   315  	"JSON_EXTRACT_OP",
   316  	"JSON_UNQUOTE_EXTRACT_OP",
   317  	"CREATE",
   318  	"ALTER",
   319  	"DROP",
   320  	"RENAME",
   321  	"ANALYZE",
   322  	"TABLE",
   323  	"INDEX",
   324  	"VIEW",
   325  	"TO",
   326  	"IGNORE",
   327  	"IF",
   328  	"UNIQUE",
   329  	"USING",
   330  	"SHOW",
   331  	"DESCRIBE",
   332  	"EXPLAIN",
   333  	"DATE",
   334  	"ESCAPE",
   335  	"REPAIR",
   336  	"OPTIMIZE",
   337  	"TRUNCATE",
   338  	"DATABASES",
   339  	"TABLES",
   340  	"VITESS_KEYSPACES",
   341  	"VITESS_SHARDS",
   342  	"VSCHEMA_TABLES",
   343  	"INTEGER",
   344  	"CHARACTER",
   345  	"CURRENT_TIMESTAMP",
   346  	"DATABASE",
   347  	"CURRENT_DATE",
   348  	"CURRENT_TIME",
   349  	"LOCALTIME",
   350  	"LOCALTIMESTAMP",
   351  	"UTC_DATE",
   352  	"UTC_TIME",
   353  	"UTC_TIMESTAMP",
   354  	"REPLACE",
   355  	"CONVERT",
   356  	"CAST",
   357  	"GROUP_CONCAT",
   358  	"SEPARATOR",
   359  	"MATCH",
   360  	"AGAINST",
   361  	"BOOLEAN",
   362  	"LANGUAGE",
   363  	"WITH",
   364  	"QUERY",
   365  	"EXPANSION",
   366  	"UNUSED",
   367  	"';'",
   368  }
   369  
   370  var yyStatenames = [...]string{}
   371  
   372  const yyEofCode = 1
   373  const yyErrCode = 2
   374  const yyInitialStackSize = 16
   375  
   376  //line yacctab:1
   377  var yyExca = [...]int{
   378  	-1, 1,
   379  	1, -1,
   380  	-2, 0,
   381  	-1, 3,
   382  	5, 21,
   383  	-2, 4,
   384  	-1, 219,
   385  	103, 335,
   386  	-2, 331,
   387  	-1, 220,
   388  	103, 336,
   389  	-2, 332,
   390  	-1, 441,
   391  	5, 21,
   392  	-2, 286,
   393  	-1, 477,
   394  	103, 338,
   395  	-2, 334,
   396  	-1, 585,
   397  	5, 22,
   398  	-2, 168,
   399  	-1, 648,
   400  	5, 22,
   401  	-2, 287,
   402  	-1, 687,
   403  	5, 21,
   404  	-2, 289,
   405  	-1, 731,
   406  	5, 22,
   407  	-2, 290,
   408  }
   409  
   410  const yyPrivate = 57344
   411  
   412  const yyLast = 3726
   413  
   414  var yyAct = [...]int{
   415  	235, 220, 400, 573, 674, 341, 692, 574, 469, 42,
   416  	673, 248, 343, 537, 540, 345, 214, 321, 188, 618,
   417  	611, 506, 295, 301, 215, 59, 554, 476, 272, 570,
   418  	87, 180, 237, 41, 325, 197, 758, 181, 753, 246,
   419  	757, 748, 756, 310, 86, 752, 677, 322, 3, 747,
   420  	209, 180, 180, 204, 46, 203, 180, 709, 250, 225,
   421  	481, 462, 464, 216, 488, 333, 530, 202, 531, 182,
   422  	183, 184, 185, 186, 48, 49, 50, 51, 486, 180,
   423  	230, 180, 222, 78, 187, 180, 349, 738, 369, 368,
   424  	378, 379, 371, 372, 373, 374, 375, 376, 377, 370,
   425  	346, 213, 380, 491, 39, 224, 332, 530, 207, 531,
   426  	77, 588, 78, 600, 532, 380, 587, 627, 586, 602,
   427  	223, 412, 234, 226, 530, 355, 531, 83, 227, 463,
   428  	228, 357, 356, 79, 233, 533, 80, 81, 82, 373,
   429  	374, 375, 376, 377, 370, 716, 743, 380, 358, 698,
   430  	539, 651, 622, 746, 739, 532, 592, 485, 487, 484,
   431  	369, 368, 378, 379, 371, 372, 373, 374, 375, 376,
   432  	377, 370, 532, 334, 380, 399, 533, 390, 391, 337,
   433  	329, 358, 357, 356, 628, 542, 701, 704, 370, 681,
   434  	229, 380, 679, 533, 489, 629, 360, 612, 336, 358,
   435  	555, 297, 634, 180, 601, 490, 599, 555, 357, 356,
   436  	180, 180, 339, 180, 371, 372, 373, 374, 375, 376,
   437  	377, 370, 513, 180, 380, 358, 59, 356, 180, 59,
   438  	359, 180, 39, 348, 180, 726, 511, 512, 510, 357,
   439  	356, 298, 509, 358, 357, 356, 499, 501, 502, 299,
   440  	303, 500, 306, 604, 605, 606, 358, 744, 427, 428,
   441  	722, 358, 330, 340, 664, 735, 236, 207, 718, 236,
   442  	616, 236, 338, 232, 650, 236, 236, 347, 545, 236,
   443  	350, 308, 236, 353, 369, 368, 378, 379, 371, 372,
   444  	373, 374, 375, 376, 377, 370, 231, 643, 380, 430,
   445  	357, 356, 59, 470, 388, 43, 571, 180, 335, 545,
   446  	180, 180, 180, 180, 18, 335, 429, 358, 646, 216,
   447  	308, 180, 458, 459, 444, 180, 616, 425, 180, 39,
   448  	593, 180, 470, 180, 180, 431, 18, 439, 616, 440,
   449  	59, 437, 616, 308, 478, 468, 581, 216, 180, 471,
   450  	475, 180, 441, 477, 180, 59, 443, 466, 39, 494,
   451  	473, 465, 456, 446, 445, 448, 447, 207, 207, 207,
   452  	207, 460, 335, 307, 271, 240, 296, 571, 352, 453,
   453  	39, 584, 207, 472, 454, 529, 76, 583, 451, 194,
   454  	207, 450, 507, 452, 449, 308, 16, 482, 18, 59,
   455  	492, 546, 755, 493, 178, 414, 415, 416, 417, 418,
   456  	419, 420, 544, 59, 557, 477, 18, 37, 20, 21,
   457  	751, 270, 508, 686, 210, 210, 218, 603, 361, 210,
   458  	534, 535, 552, 39, 30, 201, 559, 198, 199, 22,
   459  	568, 192, 39, 495, 59, 57, 567, 749, 562, 723,
   460  	460, 216, 210, 580, 210, 684, 572, 29, 210, 401,
   461  	39, 585, 563, 302, 644, 455, 410, 316, 317, 575,
   462  	479, 613, 351, 217, 238, 320, 300, 195, 196, 589,
   463  	591, 302, 189, 59, 59, 729, 239, 190, 595, 43,
   464  	577, 369, 368, 378, 379, 371, 372, 373, 374, 375,
   465  	376, 377, 370, 728, 566, 380, 262, 261, 263, 264,
   466  	265, 266, 565, 712, 267, 470, 23, 24, 26, 25,
   467  	27, 596, 474, 713, 354, 45, 47, 331, 40, 28,
   468  	31, 32, 607, 1, 33, 34, 35, 84, 614, 507,
   469  	319, 324, 496, 497, 59, 503, 504, 617, 625, 626,
   470  	480, 53, 630, 38, 547, 548, 598, 636, 551, 637,
   471  	638, 639, 640, 597, 483, 221, 180, 564, 578, 508,
   472  	426, 294, 558, 727, 560, 561, 210, 647, 648, 649,
   473  	633, 711, 632, 210, 327, 409, 210, 569, 401, 553,
   474  	652, 549, 550, 249, 59, 180, 210, 273, 36, 180,
   475  	498, 210, 645, 260, 210, 659, 257, 210, 658, 259,
   476  	258, 296, 432, 438, 362, 641, 667, 247, 241, 461,
   477  	206, 59, 304, 311, 309, 212, 205, 642, 708, 663,
   478  	737, 668, 436, 675, 36, 544, 662, 672, 477, 669,
   479  	676, 678, 193, 19, 660, 180, 344, 208, 661, 344,
   480  	671, 682, 59, 59, 685, 44, 590, 59, 59, 59,
   481  	200, 683, 59, 694, 695, 15, 696, 14, 13, 12,
   482  	11, 691, 10, 699, 700, 575, 705, 706, 9, 703,
   483  	210, 8, 218, 210, 210, 210, 210, 7, 243, 615,
   484  	714, 6, 5, 717, 457, 719, 720, 687, 210, 4,
   485  	59, 327, 207, 631, 467, 191, 210, 210, 17, 725,
   486  	218, 659, 467, 2, 0, 575, 731, 0, 59, 0,
   487  	59, 210, 433, 734, 210, 216, 0, 210, 736, 217,
   488  	730, 624, 741, 0, 0, 0, 715, 0, 745, 742,
   489  	0, 635, 0, 0, 0, 750, 312, 315, 316, 317,
   490  	313, 0, 314, 318, 754, 0, 582, 217, 0, 344,
   491  	344, 0, 401, 0, 0, 0, 0, 653, 654, 0,
   492  	0, 0, 0, 543, 467, 344, 0, 0, 543, 543,
   493  	0, 0, 543, 312, 315, 316, 317, 313, 0, 314,
   494  	318, 36, 0, 0, 0, 0, 543, 543, 543, 543,
   495  	0, 0, 0, 0, 0, 0, 323, 0, 0, 0,
   496  	0, 543, 18, 0, 218, 0, 0, 0, 0, 536,
   497  	680, 344, 342, 67, 0, 342, 0, 0, 0, 0,
   498  	0, 0, 62, 556, 0, 0, 0, 0, 75, 0,
   499  	0, 71, 66, 389, 369, 368, 378, 379, 371, 372,
   500  	373, 374, 375, 376, 377, 370, 39, 0, 380, 58,
   501  	0, 217, 0, 0, 579, 0, 0, 710, 398, 0,
   502  	0, 402, 403, 404, 405, 406, 407, 408, 0, 411,
   503  	413, 413, 413, 413, 413, 413, 413, 413, 421, 422,
   504  	423, 424, 0, 0, 0, 0, 0, 0, 0, 0,
   505  	0, 0, 442, 594, 344, 0, 208, 208, 208, 208,
   506  	0, 0, 0, 543, 740, 401, 0, 0, 0, 177,
   507  	0, 323, 0, 0, 0, 0, 0, 543, 61, 208,
   508  	70, 68, 72, 0, 0, 0, 342, 0, 64, 210,
   509  	392, 393, 394, 395, 396, 397, 0, 0, 0, 0,
   510  	0, 342, 0, 0, 0, 60, 0, 65, 74, 69,
   511  	63, 73, 0, 0, 620, 0, 0, 0, 210, 0,
   512  	0, 0, 210, 0, 0, 0, 0, 0, 0, 18,
   513  	0, 0, 0, 0, 0, 0, 0, 36, 0, 0,
   514  	67, 543, 0, 0, 0, 0, 0, 467, 543, 62,
   515  	402, 0, 0, 0, 0, 75, 0, 0, 71, 66,
   516  	0, 0, 0, 0, 344, 0, 0, 0, 210, 0,
   517  	0, 0, 0, 39, 0, 0, 179, 378, 379, 371,
   518  	372, 373, 374, 375, 376, 377, 370, 0, 576, 380,
   519  	36, 620, 0, 0, 344, 0, 0, 0, 0, 0,
   520  	0, 505, 0, 0, 514, 515, 516, 517, 518, 519,
   521  	520, 521, 522, 523, 524, 525, 526, 527, 528, 0,
   522  	0, 0, 689, 690, 67, 0, 0, 693, 693, 693,
   523  	342, 0, 344, 62, 0, 0, 177, 0, 218, 75,
   524  	0, 0, 71, 66, 0, 61, 0, 70, 68, 72,
   525  	0, 0, 0, 0, 0, 64, 0, 0, 0, 0,
   526  	58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   527  	344, 0, 60, 0, 65, 74, 69, 63, 73, 0,
   528  	0, 0, 0, 0, 0, 217, 0, 0, 732, 0,
   529  	733, 0, 623, 369, 368, 378, 379, 371, 372, 373,
   530  	374, 375, 376, 377, 370, 0, 67, 380, 0, 0,
   531  	619, 0, 0, 0, 0, 62, 0, 0, 0, 0,
   532  	177, 75, 0, 0, 71, 66, 0, 0, 0, 61,
   533  	0, 70, 68, 72, 655, 656, 657, 0, 0, 64,
   534  	0, 0, 58, 0, 621, 0, 0, 0, 0, 0,
   535  	608, 609, 610, 0, 357, 356, 60, 0, 65, 74,
   536  	69, 63, 73, 0, 0, 0, 0, 0, 0, 0,
   537  	0, 358, 368, 378, 379, 371, 372, 373, 374, 375,
   538  	376, 377, 370, 0, 0, 380, 0, 0, 0, 0,
   539  	0, 208, 0, 0, 576, 0, 0, 688, 0, 0,
   540  	0, 0, 177, 0, 0, 0, 0, 0, 342, 0,
   541  	0, 61, 0, 70, 68, 72, 0, 0, 0, 0,
   542  	0, 64, 702, 0, 0, 707, 0, 0, 0, 0,
   543  	0, 0, 0, 0, 576, 0, 36, 0, 60, 0,
   544  	65, 74, 69, 63, 73, 0, 0, 0, 0, 0,
   545  	0, 665, 666, 166, 153, 127, 168, 105, 119, 176,
   546  	120, 121, 147, 93, 135, 67, 117, 0, 108, 89,
   547  	114, 90, 106, 129, 62, 132, 104, 155, 138, 174,
   548  	75, 142, 0, 71, 66, 0, 0, 131, 160, 133,
   549  	152, 126, 148, 98, 141, 169, 118, 145, 0, 0,
   550  	0, 58, 0, 697, 0, 0, 0, 0, 0, 0,
   551  	144, 165, 116, 146, 88, 143, 0, 91, 94, 175,
   552  	163, 111, 112, 0, 0, 0, 0, 0, 0, 0,
   553  	130, 134, 149, 124, 0, 0, 0, 0, 0, 0,
   554  	721, 0, 109, 0, 140, 0, 724, 0, 95, 92,
   555  	128, 0, 0, 0, 97, 0, 110, 150, 0, 161,
   556  	125, 177, 164, 123, 122, 167, 170, 159, 107, 115,
   557  	61, 113, 70, 68, 72, 103, 162, 156, 157, 158,
   558  	64, 0, 101, 102, 99, 100, 136, 137, 171, 172,
   559  	173, 151, 96, 0, 0, 154, 139, 60, 0, 65,
   560  	74, 69, 63, 73, 166, 153, 127, 168, 105, 119,
   561  	176, 120, 121, 147, 93, 135, 67, 117, 0, 108,
   562  	89, 114, 90, 106, 129, 62, 132, 104, 155, 138,
   563  	174, 75, 142, 0, 71, 66, 0, 0, 131, 160,
   564  	133, 152, 126, 148, 98, 141, 169, 118, 145, 39,
   565  	0, 0, 58, 0, 0, 0, 0, 0, 0, 0,
   566  	0, 144, 165, 116, 146, 88, 143, 0, 91, 94,
   567  	175, 163, 111, 112, 0, 0, 0, 0, 0, 0,
   568  	0, 130, 134, 149, 124, 0, 0, 0, 0, 0,
   569  	0, 0, 0, 109, 0, 140, 0, 0, 0, 95,
   570  	92, 128, 0, 0, 0, 97, 0, 110, 150, 0,
   571  	161, 125, 177, 164, 123, 122, 167, 170, 159, 107,
   572  	115, 61, 113, 70, 68, 72, 103, 162, 156, 157,
   573  	158, 64, 0, 101, 102, 99, 100, 136, 137, 171,
   574  	172, 173, 151, 96, 0, 0, 154, 139, 60, 0,
   575  	65, 74, 69, 63, 73, 166, 153, 127, 168, 105,
   576  	119, 176, 120, 121, 147, 93, 135, 67, 117, 0,
   577  	108, 89, 114, 90, 106, 129, 62, 132, 104, 155,
   578  	138, 174, 75, 142, 0, 71, 66, 0, 0, 131,
   579  	160, 133, 152, 126, 148, 98, 141, 169, 118, 145,
   580  	0, 0, 0, 219, 0, 0, 0, 0, 0, 0,
   581  	0, 0, 144, 165, 116, 146, 88, 143, 0, 91,
   582  	94, 175, 163, 111, 112, 0, 0, 0, 0, 0,
   583  	0, 0, 130, 134, 149, 124, 0, 0, 0, 0,
   584  	0, 0, 670, 0, 109, 0, 140, 0, 0, 0,
   585  	95, 92, 128, 0, 0, 0, 97, 0, 110, 150,
   586  	0, 161, 125, 177, 164, 123, 122, 167, 170, 159,
   587  	107, 115, 61, 113, 70, 68, 72, 103, 162, 156,
   588  	157, 158, 64, 0, 101, 102, 99, 100, 136, 137,
   589  	171, 172, 173, 151, 96, 0, 0, 154, 139, 60,
   590  	0, 65, 74, 69, 63, 73, 166, 153, 127, 168,
   591  	105, 119, 176, 120, 121, 147, 93, 135, 67, 117,
   592  	0, 108, 89, 114, 90, 106, 129, 62, 132, 104,
   593  	155, 138, 174, 75, 142, 0, 71, 66, 0, 0,
   594  	131, 160, 133, 152, 126, 148, 98, 141, 169, 118,
   595  	145, 0, 0, 0, 58, 0, 0, 0, 0, 0,
   596  	0, 0, 0, 144, 165, 116, 146, 88, 143, 0,
   597  	91, 94, 175, 163, 111, 112, 0, 0, 0, 0,
   598  	0, 0, 0, 130, 134, 149, 124, 0, 0, 0,
   599  	0, 0, 0, 0, 0, 109, 0, 140, 0, 0,
   600  	0, 95, 92, 128, 0, 0, 0, 97, 0, 110,
   601  	150, 0, 161, 125, 177, 164, 123, 122, 167, 170,
   602  	159, 107, 115, 61, 113, 70, 68, 72, 103, 162,
   603  	156, 157, 158, 64, 0, 101, 102, 99, 100, 136,
   604  	137, 171, 172, 173, 151, 96, 0, 0, 154, 139,
   605  	60, 0, 65, 74, 69, 63, 73, 166, 153, 127,
   606  	168, 105, 119, 176, 120, 121, 147, 93, 135, 67,
   607  	117, 0, 108, 89, 114, 90, 106, 129, 62, 132,
   608  	104, 155, 138, 174, 75, 142, 0, 71, 66, 0,
   609  	0, 131, 160, 133, 152, 126, 148, 98, 141, 169,
   610  	118, 145, 0, 0, 0, 219, 0, 0, 0, 0,
   611  	0, 0, 0, 0, 144, 165, 116, 146, 88, 143,
   612  	0, 91, 94, 175, 163, 111, 112, 0, 0, 0,
   613  	0, 0, 0, 0, 130, 134, 149, 124, 0, 0,
   614  	0, 0, 0, 0, 0, 0, 109, 0, 140, 0,
   615  	0, 0, 95, 92, 128, 0, 0, 0, 97, 0,
   616  	110, 150, 0, 161, 125, 177, 164, 123, 122, 167,
   617  	170, 159, 107, 115, 61, 113, 70, 68, 72, 103,
   618  	162, 156, 157, 158, 64, 0, 101, 102, 99, 100,
   619  	136, 137, 171, 172, 173, 151, 96, 0, 0, 154,
   620  	139, 60, 0, 65, 74, 69, 63, 73, 166, 153,
   621  	127, 168, 105, 119, 176, 120, 121, 147, 93, 135,
   622  	67, 117, 0, 108, 89, 114, 90, 106, 129, 62,
   623  	132, 104, 155, 138, 174, 75, 142, 0, 71, 66,
   624  	0, 0, 131, 160, 133, 152, 126, 148, 98, 141,
   625  	169, 118, 145, 0, 0, 0, 179, 0, 0, 0,
   626  	0, 0, 0, 0, 0, 144, 165, 116, 146, 88,
   627  	143, 0, 91, 94, 175, 163, 111, 112, 0, 0,
   628  	0, 0, 0, 0, 0, 130, 134, 149, 124, 0,
   629  	0, 0, 0, 0, 0, 0, 0, 109, 0, 140,
   630  	0, 0, 0, 95, 92, 128, 0, 0, 0, 97,
   631  	0, 110, 150, 0, 161, 125, 177, 164, 123, 122,
   632  	167, 170, 159, 107, 115, 61, 113, 70, 68, 72,
   633  	103, 162, 156, 157, 158, 64, 0, 101, 102, 99,
   634  	100, 136, 137, 171, 172, 173, 151, 96, 0, 0,
   635  	154, 139, 60, 0, 65, 74, 69, 63, 73, 166,
   636  	153, 127, 168, 105, 119, 176, 120, 121, 147, 93,
   637  	135, 67, 117, 0, 108, 89, 114, 90, 106, 129,
   638  	62, 132, 104, 155, 138, 174, 75, 142, 0, 71,
   639  	66, 0, 0, 131, 160, 133, 152, 126, 148, 98,
   640  	141, 169, 118, 145, 0, 0, 0, 85, 0, 0,
   641  	0, 0, 0, 0, 0, 0, 144, 165, 116, 146,
   642  	88, 143, 0, 91, 94, 175, 163, 111, 112, 0,
   643  	0, 0, 0, 0, 0, 0, 130, 134, 149, 124,
   644  	0, 0, 0, 0, 0, 0, 0, 0, 109, 0,
   645  	140, 0, 0, 0, 95, 92, 128, 0, 0, 0,
   646  	97, 0, 110, 150, 0, 161, 125, 177, 164, 123,
   647  	122, 167, 170, 159, 107, 115, 61, 113, 70, 68,
   648  	72, 103, 162, 156, 157, 158, 64, 0, 101, 102,
   649  	99, 100, 136, 137, 171, 172, 173, 151, 96, 0,
   650  	0, 154, 139, 60, 0, 65, 74, 69, 63, 73,
   651  	67, 0, 0, 538, 0, 245, 0, 0, 0, 62,
   652  	0, 244, 0, 0, 281, 75, 0, 0, 71, 66,
   653  	0, 0, 0, 0, 274, 275, 0, 0, 0, 0,
   654  	0, 0, 0, 39, 0, 0, 219, 262, 261, 263,
   655  	264, 265, 266, 0, 0, 267, 268, 269, 0, 0,
   656  	242, 255, 0, 280, 0, 0, 0, 0, 0, 0,
   657  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   658  	0, 0, 0, 252, 253, 541, 0, 0, 0, 292,
   659  	0, 254, 0, 0, 251, 256, 0, 0, 0, 0,
   660  	0, 0, 0, 0, 0, 0, 177, 0, 0, 290,
   661  	0, 0, 0, 0, 0, 61, 0, 70, 68, 72,
   662  	0, 0, 0, 0, 0, 64, 0, 282, 291, 288,
   663  	289, 286, 287, 285, 284, 283, 293, 276, 277, 279,
   664  	0, 278, 60, 0, 65, 74, 69, 63, 73, 67,
   665  	0, 0, 0, 0, 245, 0, 0, 0, 62, 0,
   666  	244, 0, 0, 281, 75, 0, 0, 71, 66, 0,
   667  	0, 0, 0, 274, 275, 0, 0, 0, 0, 0,
   668  	0, 0, 39, 0, 0, 219, 262, 261, 263, 264,
   669  	265, 266, 0, 0, 267, 268, 269, 0, 0, 242,
   670  	255, 0, 280, 0, 0, 0, 0, 0, 0, 0,
   671  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   672  	0, 0, 252, 253, 541, 0, 0, 0, 292, 0,
   673  	254, 0, 0, 251, 256, 0, 0, 0, 0, 0,
   674  	0, 0, 0, 0, 0, 177, 0, 0, 290, 0,
   675  	0, 0, 0, 0, 61, 0, 70, 68, 72, 0,
   676  	0, 0, 0, 0, 64, 0, 282, 291, 288, 289,
   677  	286, 287, 285, 284, 283, 293, 276, 277, 279, 0,
   678  	278, 60, 0, 65, 74, 69, 63, 73, 67, 0,
   679  	0, 0, 0, 245, 0, 0, 0, 62, 0, 244,
   680  	0, 0, 281, 75, 0, 0, 71, 66, 0, 0,
   681  	0, 0, 274, 275, 0, 0, 0, 0, 0, 0,
   682  	0, 39, 0, 236, 219, 262, 261, 263, 264, 265,
   683  	266, 0, 0, 267, 268, 269, 0, 0, 242, 255,
   684  	0, 280, 0, 0, 0, 0, 0, 0, 0, 0,
   685  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   686  	0, 252, 253, 0, 0, 0, 0, 292, 0, 254,
   687  	0, 0, 251, 256, 0, 0, 0, 0, 0, 0,
   688  	0, 0, 0, 0, 177, 0, 0, 290, 0, 0,
   689  	0, 0, 0, 61, 0, 70, 68, 72, 0, 0,
   690  	0, 0, 0, 64, 0, 282, 291, 288, 289, 286,
   691  	287, 285, 284, 283, 293, 276, 277, 279, 18, 278,
   692  	60, 0, 65, 74, 69, 63, 73, 0, 0, 67,
   693  	0, 0, 0, 0, 245, 0, 0, 0, 62, 0,
   694  	244, 0, 0, 281, 75, 0, 0, 71, 66, 0,
   695  	0, 0, 0, 274, 275, 0, 0, 0, 0, 0,
   696  	0, 0, 39, 0, 0, 219, 262, 261, 263, 264,
   697  	265, 266, 0, 0, 267, 268, 269, 0, 0, 242,
   698  	255, 0, 280, 0, 0, 0, 0, 0, 0, 0,
   699  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   700  	0, 0, 252, 253, 0, 0, 0, 0, 292, 0,
   701  	254, 0, 0, 251, 256, 0, 0, 0, 0, 0,
   702  	0, 0, 0, 0, 0, 177, 0, 0, 290, 0,
   703  	0, 0, 0, 0, 61, 0, 70, 68, 72, 0,
   704  	0, 0, 0, 0, 64, 0, 282, 291, 288, 289,
   705  	286, 287, 285, 284, 283, 293, 276, 277, 279, 0,
   706  	278, 60, 0, 65, 74, 69, 63, 73, 67, 0,
   707  	0, 0, 0, 245, 0, 0, 0, 62, 0, 244,
   708  	0, 0, 281, 75, 0, 0, 71, 66, 0, 0,
   709  	0, 0, 274, 275, 0, 0, 0, 0, 0, 0,
   710  	0, 39, 0, 0, 219, 262, 261, 263, 264, 265,
   711  	266, 0, 0, 267, 268, 269, 0, 0, 242, 255,
   712  	0, 280, 0, 0, 0, 0, 0, 0, 0, 0,
   713  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   714  	0, 252, 253, 0, 0, 0, 0, 292, 0, 254,
   715  	0, 0, 251, 256, 0, 0, 0, 0, 0, 0,
   716  	0, 0, 0, 0, 177, 0, 0, 290, 0, 0,
   717  	0, 0, 0, 61, 0, 70, 68, 72, 0, 0,
   718  	0, 0, 0, 64, 0, 282, 291, 288, 289, 286,
   719  	287, 285, 284, 283, 293, 276, 277, 279, 67, 278,
   720  	60, 0, 65, 74, 69, 63, 73, 62, 0, 0,
   721  	0, 0, 281, 75, 0, 0, 71, 66, 0, 0,
   722  	0, 0, 274, 275, 0, 0, 0, 0, 0, 0,
   723  	0, 39, 0, 0, 219, 262, 261, 263, 264, 265,
   724  	266, 0, 0, 267, 268, 269, 0, 0, 67, 255,
   725  	0, 280, 0, 0, 0, 0, 0, 62, 0, 0,
   726  	0, 0, 0, 75, 0, 0, 71, 66, 0, 0,
   727  	0, 252, 253, 0, 0, 0, 0, 292, 0, 254,
   728  	0, 0, 251, 256, 58, 0, 0, 0, 0, 0,
   729  	0, 0, 0, 0, 177, 0, 55, 290, 0, 0,
   730  	0, 0, 0, 61, 0, 70, 68, 72, 0, 0,
   731  	0, 0, 0, 64, 0, 282, 291, 288, 289, 286,
   732  	287, 285, 284, 283, 293, 276, 277, 279, 67, 278,
   733  	60, 0, 65, 74, 69, 63, 73, 62, 0, 0,
   734  	0, 0, 52, 75, 54, 0, 71, 66, 56, 0,
   735  	0, 0, 0, 61, 0, 70, 68, 72, 0, 0,
   736  	0, 0, 0, 64, 58, 0, 0, 434, 0, 0,
   737  	435, 0, 67, 0, 0, 0, 326, 0, 0, 0,
   738  	60, 62, 65, 74, 69, 63, 73, 75, 0, 0,
   739  	71, 66, 0, 0, 0, 0, 0, 0, 0, 0,
   740  	0, 0, 0, 0, 0, 0, 0, 0, 179, 0,
   741  	328, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   742  	0, 0, 0, 67, 177, 0, 0, 0, 0, 0,
   743  	0, 0, 62, 61, 0, 70, 68, 72, 75, 0,
   744  	0, 71, 66, 64, 0, 0, 0, 0, 0, 0,
   745  	0, 0, 0, 0, 0, 0, 39, 0, 0, 179,
   746  	60, 0, 65, 74, 69, 63, 73, 67, 177, 0,
   747  	0, 0, 0, 0, 0, 0, 62, 61, 0, 70,
   748  	68, 72, 75, 0, 0, 71, 66, 64, 0, 0,
   749  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   750  	0, 0, 0, 58, 60, 621, 65, 74, 69, 63,
   751  	73, 0, 0, 0, 0, 0, 0, 0, 67, 177,
   752  	0, 0, 0, 0, 0, 0, 0, 62, 61, 0,
   753  	70, 68, 72, 75, 67, 0, 71, 66, 64, 0,
   754  	0, 0, 305, 62, 0, 0, 0, 0, 0, 75,
   755  	0, 0, 71, 66, 179, 60, 328, 65, 74, 69,
   756  	63, 73, 0, 177, 211, 0, 0, 0, 0, 0,
   757  	179, 67, 61, 0, 70, 68, 72, 0, 0, 0,
   758  	62, 0, 64, 0, 0, 0, 75, 0, 0, 71,
   759  	66, 0, 0, 0, 0, 0, 0, 0, 0, 60,
   760  	0, 65, 74, 69, 63, 73, 0, 179, 0, 0,
   761  	0, 0, 0, 0, 177, 0, 0, 0, 0, 0,
   762  	0, 0, 0, 61, 0, 70, 68, 72, 0, 67,
   763  	177, 0, 0, 64, 0, 0, 0, 0, 62, 61,
   764  	0, 70, 68, 72, 75, 0, 0, 71, 66, 64,
   765  	60, 0, 65, 74, 69, 63, 73, 0, 0, 0,
   766  	0, 0, 0, 0, 0, 58, 60, 177, 65, 74,
   767  	69, 63, 73, 0, 67, 0, 61, 0, 70, 68,
   768  	72, 0, 0, 62, 0, 0, 64, 0, 0, 75,
   769  	0, 0, 71, 66, 0, 0, 0, 0, 0, 0,
   770  	0, 0, 0, 60, 0, 65, 74, 69, 63, 73,
   771  	219, 67, 0, 0, 0, 0, 0, 0, 0, 0,
   772  	62, 0, 0, 0, 0, 177, 75, 0, 0, 71,
   773  	66, 0, 0, 0, 61, 0, 70, 68, 72, 0,
   774  	0, 0, 0, 0, 64, 0, 0, 179, 0, 0,
   775  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   776  	0, 60, 0, 65, 74, 69, 63, 73, 0, 0,
   777  	177, 0, 0, 0, 0, 0, 0, 0, 0, 61,
   778  	0, 70, 68, 72, 0, 0, 0, 0, 0, 64,
   779  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   780  	0, 0, 0, 0, 0, 0, 60, 177, 65, 74,
   781  	69, 63, 73, 0, 0, 0, 61, 0, 70, 68,
   782  	72, 0, 0, 0, 0, 0, 64, 0, 0, 0,
   783  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   784  	0, 0, 364, 60, 367, 65, 74, 69, 63, 73,
   785  	381, 382, 383, 384, 385, 386, 387, 0, 365, 366,
   786  	363, 369, 368, 378, 379, 371, 372, 373, 374, 375,
   787  	376, 377, 370, 0, 0, 380,
   788  }
   789  
   790  var yyPact = [...]int{
   791  	410, -1000, -123, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   792  	-1000, -1000, -1000, -1000, -1000, -1000, 475, 520, -1000, -1000,
   793  	-1000, -1000, -1000, 3081, -3, 22, 25, 16, 2204, 3544,
   794  	-1000, -1000, -1000, -1000, -1000, -1000, 330, -1000, -1000, -1000,
   795  	-1000, -1000, 466, 472, 383, 458, 400, -1000, -32, 3256,
   796  	3404, 3507, -34, 8, 3544, -84, -1000, -1000, -1000, -1000,
   797  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   798  	-1000, -1000, -1000, -1000, -1000, -1000, 12, 3544, -1000, 3544,
   799  	-36, 243, -36, 3544, -1000, -1000, -1000, -1000, -1000, -1000,
   800  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   801  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   802  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   803  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   804  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   805  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   806  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   807  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   808  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   809  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, 224, 456, 2901,
   810  	2901, 475, -1000, 330, -1000, -1000, -1000, 443, -1000, -1000,
   811  	189, 3367, 344, 744, -1000, -1000, -1000, 454, 973, 3205,
   812  	77, 3544, 55, -1000, 264, -1000, 123, -1000, 76, -1000,
   813  	-1000, 3544, 145, 210, 1449, -13, 3544, 1449, -28, 3544,
   814  	450, 329, 3544, -1000, -1000, -1000, -1000, -1000, 516, 40,
   815  	179, -1000, 2901, 3625, -1000, 279, -1000, -1000, 73, -1000,
   816  	-1000, 3031, 3031, 3031, 3031, 3031, 3031, -1000, -1000, -1000,
   817  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   818  	279, 72, -1000, 2762, 279, 279, 279, 279, 279, 279,
   819  	2901, 279, 279, 279, 279, 279, 279, 279, 279, 279,
   820  	279, 279, 279, 279, 276, -1000, 235, 466, 224, 400,
   821  	3161, 301, -1000, -1000, 308, 3544, -1000, 3507, 3256, 3256,
   822  	3256, 3256, -1000, 355, 352, -1000, 349, 340, 426, 3544,
   823  	-1000, 230, 224, 973, 14, -1000, 3351, -1000, -1000, 2053,
   824  	504, 3256, 3544, -1000, -1000, 3507, 2901, 1902, 1449, 448,
   825  	-58, -1000, -1000, -1000, -1000, -1000, 3544, 50, -1000, 3544,
   826  	-1000, -1000, 3544, 1449, -1000, 408, 2901, 2901, 184, 2901,
   827  	2901, 99, 3031, 182, 153, 3031, 3031, 3031, 3031, 3031,
   828  	3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031, 3031,
   829  	71, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 330,
   830  	452, 452, 15, 15, 15, 15, 15, 1057, 2343, 1902,
   831  	227, 143, 2762, 2482, 2482, 2901, 2901, 2482, 461, 136,
   832  	143, 3462, -1000, 224, -1000, -1000, -1000, -1000, -1000, -1000,
   833  	-1000, 2482, 2482, 2482, 2482, 2901, -1000, -1000, -1000, 456,
   834  	-1000, 461, 494, -1000, 415, 409, 2482, -1000, 328, 3507,
   835  	279, -1000, 806, -1000, 321, 744, 297, 707, -1000, -1000,
   836  	-1000, -1000, 348, -1000, 342, -1000, -1000, -1000, -1000, -1000,
   837  	224, -1000, 6, 4, -1, -1000, -1000, -1000, -1000, 475,
   838  	2901, 292, -1000, -1000, 143, -1000, 53, -1000, -1000, -1000,
   839  	281, 3462, 1449, -1000, 92, -1000, -1000, -1000, -1000, -1000,
   840  	-1000, -1000, -1000, -1000, -1000, 391, 99, 161, -1000, -1000,
   841  	191, -1000, -1000, 143, 143, 758, -1000, -1000, -1000, -1000,
   842  	182, 3031, 3031, 3031, 74, 758, 405, 939, 1135, 15,
   843  	47, 47, 91, 91, 91, 91, 91, 124, 124, -1000,
   844  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, 224, 2482, 275,
   845  	-1000, -1000, 1139, 49, 279, 2901, -1000, 219, 219, 66,
   846  	174, 219, 2482, 129, -1000, 2901, 224, -1000, 219, 224,
   847  	219, 219, -1000, -1000, 3544, -1000, -1000, -1000, -1000, 287,
   848  	-1000, 438, 257, 267, -1000, -1000, 2621, 224, 223, 48,
   849  	475, 2901, 2901, -1000, -1000, -1000, 279, 279, 279, 466,
   850  	143, -1000, 1751, 3544, -1000, -1000, -1000, 3544, -1000, -1000,
   851  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 74, 758,
   852  	198, -1000, 3031, 3031, -1000, 219, 2482, -1000, -1000, 3300,
   853  	-1000, -1000, 1600, 2482, 143, -1000, -1000, 71, 71, 71,
   854  	-103, 291, 118, -1000, 2901, 117, -1000, -1000, -1000, -1000,
   855  	-1000, -1000, 504, 3256, 428, -1000, 279, -1000, -1000, 392,
   856  	3462, 3462, 466, 143, 143, 3462, 3462, 3462, -1000, -1000,
   857  	1449, -1000, -1000, -1000, 3031, 758, 758, -1000, -1000, -1000,
   858  	-1000, 46, 224, 224, 54, 224, 224, 279, -90, -1000,
   859  	143, 2901, 501, 269, 515, -1000, 279, -1000, 330, 42,
   860  	-1000, -1000, 217, -1000, 217, 217, -1000, 758, 1298, -1000,
   861  	-1000, -1000, 204, -1000, 420, -1000, -1000, 3031, 224, 180,
   862  	143, 490, 470, 3507, 267, 224, 3462, -1000, 3462, -1000,
   863  	-1000, -1000, 214, 71, 2, -1000, -1000, -1000, 2901, 2901,
   864  	264, -1000, -1000, -1000, 13, 201, -1000, 224, 3, -112,
   865  	143, 258, -1000, 418, 224, -1000, 384, -106, -116, 71,
   866  	-1000, -1000, 366, -1000, -1000, -110, -113, -118, -1000,
   867  }
   868  
   869  var yyPgo = [...]int{
   870  	0, 713, 47, 396, 708, 705, 699, 692, 691, 687,
   871  	681, 678, 672, 670, 669, 668, 667, 665, 54, 660,
   872  	655, 643, 23, 632, 35, 630, 628, 20, 150, 13,
   873  	14, 185, 627, 17, 55, 53, 626, 625, 624, 43,
   874  	623, 50, 622, 620, 619, 6, 8, 618, 617, 614,
   875  	613, 39, 688, 612, 610, 609, 606, 603, 600, 21,
   876  	2, 3, 28, 7, 593, 58, 11, 589, 26, 585,
   877  	582, 581, 573, 9, 571, 22, 570, 18, 32, 568,
   878  	29, 16, 24, 567, 386, 190, 565, 564, 563, 556,
   879  	551, 550, 15, 1, 421, 12, 19, 547, 374, 27,
   880  	34, 541, 540, 37, 5, 4, 10, 537, 533, 528,
   881  	597, 0, 527, 526, 121,
   882  }
   883  
   884  var yyR1 = [...]int{
   885  	0, 108, 109, 109, 1, 1, 1, 1, 1, 1,
   886  	1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
   887  	3, 4, 4, 5, 5, 6, 6, 21, 21, 7,
   888  	8, 8, 112, 112, 37, 37, 9, 10, 10, 10,
   889  	10, 11, 11, 11, 11, 12, 13, 13, 13, 14,
   890  	107, 107, 107, 15, 16, 17, 17, 17, 17, 17,
   891  	17, 113, 18, 19, 19, 20, 20, 20, 24, 24,
   892  	24, 22, 22, 23, 23, 29, 29, 28, 28, 30,
   893  	30, 30, 30, 97, 97, 97, 96, 96, 32, 32,
   894  	33, 33, 34, 34, 35, 35, 35, 43, 36, 36,
   895  	36, 36, 102, 102, 101, 101, 101, 100, 100, 38,
   896  	38, 38, 38, 39, 39, 39, 39, 40, 40, 42,
   897  	42, 41, 41, 44, 44, 44, 44, 45, 45, 46,
   898  	46, 31, 31, 31, 31, 31, 31, 31, 48, 48,
   899  	47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
   900  	58, 58, 58, 58, 58, 58, 49, 49, 49, 49,
   901  	49, 49, 49, 27, 27, 59, 59, 59, 65, 60,
   902  	60, 105, 105, 105, 105, 52, 52, 52, 52, 52,
   903  	52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
   904  	52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
   905  	52, 52, 52, 52, 52, 56, 56, 56, 54, 54,
   906  	54, 54, 54, 54, 54, 54, 54, 55, 55, 55,
   907  	55, 55, 55, 55, 55, 114, 114, 57, 57, 57,
   908  	57, 25, 25, 25, 25, 25, 106, 106, 106, 106,
   909  	106, 106, 106, 106, 69, 69, 26, 26, 67, 67,
   910  	68, 70, 70, 66, 66, 66, 51, 51, 51, 51,
   911  	51, 51, 51, 53, 53, 53, 71, 71, 72, 72,
   912  	73, 73, 74, 74, 75, 76, 76, 76, 77, 77,
   913  	77, 77, 78, 78, 78, 50, 50, 50, 50, 50,
   914  	50, 79, 79, 79, 79, 80, 80, 61, 61, 63,
   915  	63, 62, 64, 81, 81, 82, 83, 83, 85, 85,
   916  	86, 86, 84, 84, 87, 87, 87, 87, 87, 87,
   917  	87, 88, 88, 88, 89, 89, 90, 90, 90, 91,
   918  	91, 94, 94, 95, 95, 98, 98, 99, 99, 92,
   919  	92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
   920  	92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
   921  	92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
   922  	92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
   923  	92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
   924  	92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
   925  	92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
   926  	92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
   927  	92, 92, 92, 92, 92, 92, 92, 92, 93, 93,
   928  	93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
   929  	93, 93, 93, 93, 93, 110, 111, 103, 104, 104,
   930  	104,
   931  }
   932  
   933  var yyR2 = [...]int{
   934  	0, 2, 0, 1, 1, 1, 1, 1, 1, 1,
   935  	1, 1, 1, 1, 1, 1, 1, 4, 6, 7,
   936  	10, 1, 3, 1, 3, 6, 7, 1, 1, 8,
   937  	7, 6, 1, 1, 1, 3, 3, 5, 8, 4,
   938  	6, 6, 7, 7, 4, 5, 4, 5, 5, 3,
   939  	1, 1, 1, 3, 2, 2, 2, 2, 2, 2,
   940  	2, 0, 2, 0, 2, 1, 2, 2, 0, 1,
   941  	1, 0, 1, 0, 1, 0, 1, 1, 3, 1,
   942  	2, 3, 5, 0, 1, 2, 1, 1, 0, 2,
   943  	1, 3, 1, 1, 1, 3, 3, 3, 3, 5,
   944  	5, 3, 0, 1, 0, 1, 2, 1, 1, 1,
   945  	2, 2, 1, 2, 3, 2, 3, 2, 2, 2,
   946  	1, 1, 3, 0, 5, 5, 5, 1, 3, 0,
   947  	2, 1, 3, 3, 2, 3, 1, 1, 1, 1,
   948  	3, 3, 4, 4, 5, 3, 4, 5, 6, 2,
   949  	1, 2, 1, 2, 1, 2, 1, 1, 1, 1,
   950  	1, 1, 1, 0, 2, 1, 1, 1, 3, 1,
   951  	3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   952  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   953  	3, 3, 3, 3, 3, 2, 2, 2, 2, 2,
   954  	3, 1, 1, 1, 1, 4, 5, 6, 4, 4,
   955  	6, 6, 6, 9, 7, 5, 4, 2, 2, 2,
   956  	2, 2, 2, 2, 2, 0, 2, 4, 4, 4,
   957  	4, 0, 3, 4, 7, 3, 1, 2, 4, 5,
   958  	7, 2, 4, 6, 0, 1, 0, 2, 1, 2,
   959  	4, 0, 2, 1, 3, 5, 1, 1, 1, 1,
   960  	1, 1, 1, 1, 2, 2, 0, 3, 0, 2,
   961  	0, 3, 1, 3, 2, 0, 1, 1, 0, 2,
   962  	4, 4, 0, 2, 4, 2, 1, 3, 5, 4,
   963  	6, 1, 3, 3, 5, 0, 5, 1, 3, 1,
   964  	2, 3, 1, 1, 3, 3, 1, 1, 0, 2,
   965  	0, 3, 0, 1, 1, 1, 1, 1, 1, 1,
   966  	1, 0, 1, 1, 1, 1, 0, 1, 1, 0,
   967  	2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   968  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   969  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   970  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   971  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   972  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   973  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   974  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   975  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   976  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   977  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
   978  	1, 1, 1, 1, 1, 1, 1, 0, 0, 1,
   979  	1,
   980  }
   981  
   982  var yyChk = [...]int{
   983  	-1000, -108, -1, -2, -6, -7, -8, -9, -10, -11,
   984  	-12, -13, -14, -15, -16, -17, -3, -4, 6, -21,
   985  	8, 9, 29, 106, 107, 109, 108, 110, 119, 47,
   986  	24, 120, 121, 124, 125, 126, -110, 7, 143, 50,
   987  	-109, 156, -73, 14, -20, 5, -18, -113, -18, -18,
   988  	-18, -18, 111, -90, 113, 65, 117, -94, 53, -93,
   989  	149, 122, 26, 154, 132, 151, 36, 17, 125, 153,
   990  	124, 35, 126, 155, 152, 32, -84, 113, 115, 111,
   991  	111, 112, 113, 111, -107, 53, -92, -93, 66, 21,
   992  	23, 69, 101, 15, 70, 100, 144, 106, 45, 136,
   993  	137, 134, 135, 127, 28, 9, 24, 120, 20, 94,
   994  	108, 73, 74, 123, 22, 121, 64, 18, 48, 10,
   995  	12, 13, 116, 115, 85, 112, 43, 7, 102, 25,
   996  	82, 39, 27, 41, 83, 16, 138, 139, 30, 148,
   997  	96, 46, 33, 67, 62, 49, 65, 14, 44, 84,
   998  	109, 143, 42, 6, 147, 29, 129, 130, 131, 119,
   999  	40, 111, 128, 72, 114, 63, 5, 117, 8, 47,
  1000  	118, 140, 141, 142, 31, 71, 11, 113, -98, 53,
  1001  	-93, -103, -103, -103, -103, -103, -103, -2, -77, 16,
  1002  	15, -5, -3, -110, 6, 19, 20, -24, 37, 38,
  1003  	-19, -84, -33, -34, -35, -36, -43, -65, -110, -41,
  1004  	-98, 10, -37, -41, -81, -82, -66, -94, -98, 53,
  1005  	-93, -86, 116, 112, -41, 143, 111, -41, -41, -85,
  1006  	116, 53, -85, -41, -103, -111, 52, -78, 18, 30,
  1007  	-31, -47, 67, -52, 28, 22, -51, -48, -66, -64,
  1008  	-65, 101, 90, 91, 98, 68, 102, -56, -54, -55,
  1009  	-57, 55, 54, 56, 57, 58, 59, 62, 63, 64,
  1010  	-94, -98, -62, -110, 41, 42, 144, 145, 148, 146,
  1011  	70, 31, 134, 142, 141, 140, 138, 139, 136, 137,
  1012  	116, 135, 96, 143, -74, -75, -31, -73, -2, -18,
  1013  	33, -22, 20, 61, -42, 25, -41, 29, 51, -38,
  1014  	-39, -40, 39, 43, 45, 40, 41, 42, 46, -102,
  1015  	21, -33, -2, -110, -101, -100, 21, -98, 55, 103,
  1016  	-41, -112, 51, 10, 118, 51, 75, 103, -41, 67,
  1017  	53, -104, -110, -95, -94, -92, 113, -41, -104, 114,
  1018  	-41, 22, 49, -41, 8, 85, 66, 65, 82, 51,
  1019  	17, -31, -49, 85, 67, 83, 84, 69, 87, 86,
  1020  	97, 90, 91, 92, 93, 94, 95, 96, 88, 89,
  1021  	100, 75, 76, 77, 78, 79, 80, 81, -65, -110,
  1022  	104, 105, -52, -52, -52, -52, -52, -52, -110, 103,
  1023  	-60, -31, -110, -110, -110, -110, -110, -110, -110, -69,
  1024  	-31, -110, -114, -110, -114, -114, -114, -114, -114, -114,
  1025  	-114, -110, -110, -110, -110, 51, -76, 23, 24, -77,
  1026  	-111, -24, -53, -94, 56, 59, -23, 40, -50, 29,
  1027  	31, -2, -110, -41, -81, -34, -35, -34, -35, 39,
  1028  	39, 39, 44, 39, 44, 39, -39, -98, -111, -111,
  1029  	-2, -44, 47, 115, 48, -100, -99, -98, -92, -46,
  1030  	11, -33, -41, -82, -31, -95, -99, -92, -104, 22,
  1031  	-91, 118, -41, -87, 109, 107, 28, 108, 14, 144,
  1032  	155, 53, -41, -41, -104, 35, -31, -31, -58, 62,
  1033  	67, 63, 64, -31, -31, -52, -59, -62, -65, 60,
  1034  	85, 83, 84, 69, -52, -52, -52, -52, -52, -52,
  1035  	-52, -52, -52, -52, -52, -52, -52, -52, -52, -105,
  1036  	53, 55, 101, 122, -51, -51, -94, -29, 20, -28,
  1037  	-30, 92, -31, -98, -95, 51, -111, -28, -28, -31,
  1038  	-31, -28, -22, -67, -68, 71, -94, -111, -28, -29,
  1039  	-28, -28, -75, -78, -83, 18, 10, 31, 31, -28,
  1040  	-80, 49, -81, -61, -63, -62, -110, -2, -79, -94,
  1041  	-46, 49, 49, 39, 39, -111, 112, 112, 112, -73,
  1042  	-31, -46, 103, 49, -94, -104, -103, -88, -89, 114,
  1043  	21, 112, 27, 36, 62, 63, 64, -59, -52, -52,
  1044  	-52, -27, 123, 66, -111, -28, 51, -97, -96, 21,
  1045  	-94, 55, 103, -110, -31, -111, -111, 51, 118, 21,
  1046  	-111, -28, -70, -68, 73, -31, -111, -111, -111, -111,
  1047  	-111, -41, -32, 10, 26, -80, 51, -111, -111, -111,
  1048  	51, 103, -73, -31, -31, -110, -110, -110, -77, -95,
  1049  	-41, -41, -103, -27, 66, -52, -52, -111, -30, -96,
  1050  	92, -99, -29, -106, -105, -105, -106, 149, -73, 74,
  1051  	-31, 72, -46, -33, 27, -63, 31, -2, -110, -94,
  1052  	-94, -77, -45, -94, -45, -45, -104, -52, 103, -111,
  1053  	-111, 132, -110, -105, 133, -111, -111, -110, -26, 147,
  1054  	-31, -71, 12, 8, -61, -2, 103, -111, 51, -111,
  1055  	-111, 92, 56, 29, -52, -111, 55, -72, 13, 15,
  1056  	-81, -111, -94, -94, -111, 51, -105, -25, 85, 152,
  1057  	-31, -60, -105, 133, 56, -111, 150, 46, 153, 29,
  1058  	-111, 36, 151, 154, -105, 36, 152, 153, 154,
  1059  }
  1060  
  1061  var yyDef = [...]int{
  1062  	0, -2, 2, -2, 5, 6, 7, 8, 9, 10,
  1063  	11, 12, 13, 14, 15, 16, 270, 0, 61, 61,
  1064  	61, 61, 61, 326, 312, 0, 0, 0, 0, 0,
  1065  	447, 447, 447, 447, 447, 447, 0, 27, 28, 445,
  1066  	1, 3, 278, 0, 0, 65, 68, 63, 312, 0,
  1067  	0, 0, 310, 0, 442, 0, 327, 328, 331, 332,
  1068  	428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
  1069  	438, 439, 440, 441, 443, 444, 0, 0, 313, 0,
  1070  	308, 0, 308, 0, 447, 50, 51, 52, 339, 340,
  1071  	341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
  1072  	351, 352, 353, 354, 355, 356, 357, 358, 359, 360,
  1073  	361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
  1074  	371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
  1075  	381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
  1076  	391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
  1077  	401, 402, 403, 404, 405, 406, 407, 408, 409, 410,
  1078  	411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
  1079  	421, 422, 423, 424, 425, 426, 427, 442, 54, 335,
  1080  	336, 55, 56, 57, 58, 59, 60, 21, 282, 0,
  1081  	0, 270, 23, 0, 61, 66, 67, 71, 69, 70,
  1082  	62, 0, 0, 90, 92, 93, 94, 102, 0, 104,
  1083  	121, 0, 0, 34, 36, 303, 0, 253, 0, -2,
  1084  	-2, 0, 0, 0, 448, 0, 0, 448, 0, 0,
  1085  	0, 0, 0, 49, 53, 22, 446, 17, 0, 0,
  1086  	279, 131, 0, 136, 137, 0, 175, 176, 177, 178,
  1087  	179, 0, 0, 0, 0, 0, 0, 201, 202, 203,
  1088  	204, 256, 257, 258, 259, 260, 261, 262, 138, 139,
  1089  	253, 0, 302, 0, 0, 0, 0, 0, 0, 0,
  1090  	244, 0, 225, 225, 225, 225, 225, 225, 225, 225,
  1091  	0, 0, 0, 0, 271, 272, 275, 278, 21, 68,
  1092  	0, 73, 72, 64, 0, 0, 120, 0, 0, 0,
  1093  	0, 0, 109, 0, 0, 112, 0, 0, 0, 0,
  1094  	103, 0, 21, 0, 123, 105, 0, 107, 108, 0,
  1095  	129, 0, 0, 32, 33, 0, 0, 0, 448, 0,
  1096  	329, 39, 449, 450, 333, 334, 0, 0, 44, 0,
  1097  	46, 309, 0, 448, 283, 0, 0, 0, 0, 0,
  1098  	0, 134, 0, 0, 0, 0, 0, 0, 0, 0,
  1099  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1100  	0, 156, 157, 158, 159, 160, 161, 162, 149, 0,
  1101  	0, 0, 195, 196, 197, 198, 199, 0, 75, 0,
  1102  	0, 169, 0, 0, 0, 0, 0, 0, 71, 0,
  1103  	245, 0, 217, 0, 218, 219, 220, 221, 222, 223,
  1104  	224, 0, 75, 0, 0, 0, 274, 276, 277, 282,
  1105  	24, 71, 0, 263, 0, 0, 0, 74, 295, 0,
  1106  	0, -2, 0, 119, 129, 91, 98, 0, 101, 110,
  1107  	111, 113, 0, 115, 0, 117, 118, 95, 96, 168,
  1108  	21, 97, 0, 0, 0, 106, 122, 337, 338, 270,
  1109  	0, 129, 35, 304, 305, 254, 0, -2, 37, 311,
  1110  	0, 0, 448, 447, 321, 314, 315, 316, 317, 318,
  1111  	319, 320, 45, 47, 48, 0, 132, 133, 135, 150,
  1112  	0, 152, 154, 280, 281, 140, 141, 165, 166, 167,
  1113  	0, 0, 0, 0, 163, 145, 0, 180, 181, 182,
  1114  	183, 184, 185, 186, 187, 188, 189, 190, 191, 194,
  1115  	171, 172, 173, 174, 192, 193, 200, 0, 0, 76,
  1116  	77, 79, 83, 0, 254, 0, 301, 0, 0, 0,
  1117  	0, 0, 0, 251, 248, 0, 0, 226, 0, 0,
  1118  	0, 0, 273, 18, 0, 306, 307, 264, 265, 88,
  1119  	25, 0, 295, 285, 297, 299, 0, 21, 0, 291,
  1120  	270, 0, 0, 114, 116, -2, 0, 0, 0, 278,
  1121  	130, 31, 0, 0, 330, 40, 41, 0, 447, 322,
  1122  	323, 324, 325, 284, 151, 153, 155, 142, 163, 146,
  1123  	0, 143, 0, 0, 205, 0, 0, 80, 84, 0,
  1124  	86, 87, 0, 75, 170, 208, 209, 0, 0, 0,
  1125  	0, 270, 0, 249, 0, 0, 216, 227, 228, 229,
  1126  	230, 19, 129, 0, 0, 26, 0, 300, -2, 0,
  1127  	0, 0, 278, 99, 100, 0, 0, 0, 30, 255,
  1128  	448, 42, 43, 144, 0, 164, 147, 206, 78, 85,
  1129  	81, 0, 0, 0, 236, 0, 0, 0, 246, 215,
  1130  	252, 0, 266, 89, 0, 298, 0, -2, 0, 293,
  1131  	292, 29, 0, 127, 0, 0, 38, 148, 0, 207,
  1132  	210, 237, 0, 241, 0, 212, 211, 0, 0, 0,
  1133  	250, 268, 0, 0, 288, 21, 0, 124, 0, 125,
  1134  	126, 82, 0, 0, 231, 214, 247, 20, 0, 0,
  1135  	296, -2, 294, 128, 238, 0, 242, 0, 0, 0,
  1136  	269, 267, 239, 0, 0, 213, 0, 0, 0, 0,
  1137  	243, 232, 0, 235, 240, 233, 0, 0, 234,
  1138  }
  1139  
  1140  var yyTok1 = [...]int{
  1141  	1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1142  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1143  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1144  	3, 3, 3, 68, 3, 3, 3, 95, 87, 3,
  1145  	50, 52, 92, 90, 51, 91, 103, 93, 3, 3,
  1146  	3, 3, 3, 3, 3, 3, 3, 3, 3, 156,
  1147  	76, 75, 77, 3, 3, 3, 3, 3, 3, 3,
  1148  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1149  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1150  	3, 3, 3, 3, 97, 3, 3, 3, 3, 3,
  1151  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1152  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1153  	3, 3, 3, 3, 86, 3, 98,
  1154  }
  1155  
  1156  var yyTok2 = [...]int{
  1157  	2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
  1158  	12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
  1159  	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
  1160  	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
  1161  	42, 43, 44, 45, 46, 47, 48, 49, 53, 54,
  1162  	55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
  1163  	65, 66, 67, 69, 70, 71, 72, 73, 74, 78,
  1164  	79, 80, 81, 82, 83, 84, 85, 88, 89, 94,
  1165  	96, 99, 100, 101, 102, 104, 105, 106, 107, 108,
  1166  	109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
  1167  	119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
  1168  	129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
  1169  	139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
  1170  	149, 150, 151, 152, 153, 154, 155,
  1171  }
  1172  
  1173  var yyTok3 = [...]int{
  1174  	0,
  1175  }
  1176  
  1177  var yyErrorMessages = [...]struct {
  1178  	state int
  1179  	token int
  1180  	msg   string
  1181  }{}
  1182  
  1183  //line yaccpar:1
  1184  
  1185  /*	parser for yacc output	*/
  1186  
  1187  var (
  1188  	yyDebug        = 0
  1189  	yyErrorVerbose = false
  1190  )
  1191  
  1192  type yyLexer interface {
  1193  	Lex(lval *yySymType) int
  1194  	Error(s string)
  1195  }
  1196  
  1197  type yyParser interface {
  1198  	Parse(yyLexer) int
  1199  	Lookahead() int
  1200  }
  1201  
  1202  type yyParserImpl struct {
  1203  	lval  yySymType
  1204  	stack [yyInitialStackSize]yySymType
  1205  	char  int
  1206  }
  1207  
  1208  func (p *yyParserImpl) Lookahead() int {
  1209  	return p.char
  1210  }
  1211  
  1212  func yyNewParser() yyParser {
  1213  	return &yyParserImpl{}
  1214  }
  1215  
  1216  const yyFlag = -1000
  1217  
  1218  func yyTokname(c int) string {
  1219  	if c >= 1 && c-1 < len(yyToknames) {
  1220  		if yyToknames[c-1] != "" {
  1221  			return yyToknames[c-1]
  1222  		}
  1223  	}
  1224  	return __yyfmt__.Sprintf("tok-%v", c)
  1225  }
  1226  
  1227  func yyStatname(s int) string {
  1228  	if s >= 0 && s < len(yyStatenames) {
  1229  		if yyStatenames[s] != "" {
  1230  			return yyStatenames[s]
  1231  		}
  1232  	}
  1233  	return __yyfmt__.Sprintf("state-%v", s)
  1234  }
  1235  
  1236  func yyErrorMessage(state, lookAhead int) string {
  1237  	const TOKSTART = 4
  1238  
  1239  	if !yyErrorVerbose {
  1240  		return "syntax error"
  1241  	}
  1242  
  1243  	for _, e := range yyErrorMessages {
  1244  		if e.state == state && e.token == lookAhead {
  1245  			return "syntax error: " + e.msg
  1246  		}
  1247  	}
  1248  
  1249  	res := "syntax error: unexpected " + yyTokname(lookAhead)
  1250  
  1251  	// To match Bison, suggest at most four expected tokens.
  1252  	expected := make([]int, 0, 4)
  1253  
  1254  	// Look for shiftable tokens.
  1255  	base := yyPact[state]
  1256  	for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
  1257  		if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
  1258  			if len(expected) == cap(expected) {
  1259  				return res
  1260  			}
  1261  			expected = append(expected, tok)
  1262  		}
  1263  	}
  1264  
  1265  	if yyDef[state] == -2 {
  1266  		i := 0
  1267  		for yyExca[i] != -1 || yyExca[i+1] != state {
  1268  			i += 2
  1269  		}
  1270  
  1271  		// Look for tokens that we accept or reduce.
  1272  		for i += 2; yyExca[i] >= 0; i += 2 {
  1273  			tok := yyExca[i]
  1274  			if tok < TOKSTART || yyExca[i+1] == 0 {
  1275  				continue
  1276  			}
  1277  			if len(expected) == cap(expected) {
  1278  				return res
  1279  			}
  1280  			expected = append(expected, tok)
  1281  		}
  1282  
  1283  		// If the default action is to accept or reduce, give up.
  1284  		if yyExca[i+1] != 0 {
  1285  			return res
  1286  		}
  1287  	}
  1288  
  1289  	for i, tok := range expected {
  1290  		if i == 0 {
  1291  			res += ", expecting "
  1292  		} else {
  1293  			res += " or "
  1294  		}
  1295  		res += yyTokname(tok)
  1296  	}
  1297  	return res
  1298  }
  1299  
  1300  func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
  1301  	token = 0
  1302  	char = lex.Lex(lval)
  1303  	if char <= 0 {
  1304  		token = yyTok1[0]
  1305  		goto out
  1306  	}
  1307  	if char < len(yyTok1) {
  1308  		token = yyTok1[char]
  1309  		goto out
  1310  	}
  1311  	if char >= yyPrivate {
  1312  		if char < yyPrivate+len(yyTok2) {
  1313  			token = yyTok2[char-yyPrivate]
  1314  			goto out
  1315  		}
  1316  	}
  1317  	for i := 0; i < len(yyTok3); i += 2 {
  1318  		token = yyTok3[i+0]
  1319  		if token == char {
  1320  			token = yyTok3[i+1]
  1321  			goto out
  1322  		}
  1323  	}
  1324  
  1325  out:
  1326  	if token == 0 {
  1327  		token = yyTok2[1] /* unknown char */
  1328  	}
  1329  	if yyDebug >= 3 {
  1330  		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
  1331  	}
  1332  	return char, token
  1333  }
  1334  
  1335  func yyParse(yylex yyLexer) int {
  1336  	return yyNewParser().Parse(yylex)
  1337  }
  1338  
  1339  func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
  1340  	var yyn int
  1341  	var yyVAL yySymType
  1342  	var yyDollar []yySymType
  1343  	_ = yyDollar // silence set and not used
  1344  	yyS := yyrcvr.stack[:]
  1345  
  1346  	Nerrs := 0   /* number of errors */
  1347  	Errflag := 0 /* error recovery flag */
  1348  	yystate := 0
  1349  	yyrcvr.char = -1
  1350  	yytoken := -1 // yyrcvr.char translated into internal numbering
  1351  	defer func() {
  1352  		// Make sure we report no lookahead when not parsing.
  1353  		yystate = -1
  1354  		yyrcvr.char = -1
  1355  		yytoken = -1
  1356  	}()
  1357  	yyp := -1
  1358  	goto yystack
  1359  
  1360  ret0:
  1361  	return 0
  1362  
  1363  ret1:
  1364  	return 1
  1365  
  1366  yystack:
  1367  	/* put a state and value onto the stack */
  1368  	if yyDebug >= 4 {
  1369  		__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
  1370  	}
  1371  
  1372  	yyp++
  1373  	if yyp >= len(yyS) {
  1374  		nyys := make([]yySymType, len(yyS)*2)
  1375  		copy(nyys, yyS)
  1376  		yyS = nyys
  1377  	}
  1378  	yyS[yyp] = yyVAL
  1379  	yyS[yyp].yys = yystate
  1380  
  1381  yynewstate:
  1382  	yyn = yyPact[yystate]
  1383  	if yyn <= yyFlag {
  1384  		goto yydefault /* simple state */
  1385  	}
  1386  	if yyrcvr.char < 0 {
  1387  		yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
  1388  	}
  1389  	yyn += yytoken
  1390  	if yyn < 0 || yyn >= yyLast {
  1391  		goto yydefault
  1392  	}
  1393  	yyn = yyAct[yyn]
  1394  	if yyChk[yyn] == yytoken { /* valid shift */
  1395  		yyrcvr.char = -1
  1396  		yytoken = -1
  1397  		yyVAL = yyrcvr.lval
  1398  		yystate = yyn
  1399  		if Errflag > 0 {
  1400  			Errflag--
  1401  		}
  1402  		goto yystack
  1403  	}
  1404  
  1405  yydefault:
  1406  	/* default state action */
  1407  	yyn = yyDef[yystate]
  1408  	if yyn == -2 {
  1409  		if yyrcvr.char < 0 {
  1410  			yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
  1411  		}
  1412  
  1413  		/* look through exception table */
  1414  		xi := 0
  1415  		for {
  1416  			if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
  1417  				break
  1418  			}
  1419  			xi += 2
  1420  		}
  1421  		for xi += 2; ; xi += 2 {
  1422  			yyn = yyExca[xi+0]
  1423  			if yyn < 0 || yyn == yytoken {
  1424  				break
  1425  			}
  1426  		}
  1427  		yyn = yyExca[xi+1]
  1428  		if yyn < 0 {
  1429  			goto ret0
  1430  		}
  1431  	}
  1432  	if yyn == 0 {
  1433  		/* error ... attempt to resume parsing */
  1434  		switch Errflag {
  1435  		case 0: /* brand new error */
  1436  			yylex.Error(yyErrorMessage(yystate, yytoken))
  1437  			Nerrs++
  1438  			if yyDebug >= 1 {
  1439  				__yyfmt__.Printf("%s", yyStatname(yystate))
  1440  				__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
  1441  			}
  1442  			fallthrough
  1443  
  1444  		case 1, 2: /* incompletely recovered error ... try again */
  1445  			Errflag = 3
  1446  
  1447  			/* find a state where "error" is a legal shift action */
  1448  			for yyp >= 0 {
  1449  				yyn = yyPact[yyS[yyp].yys] + yyErrCode
  1450  				if yyn >= 0 && yyn < yyLast {
  1451  					yystate = yyAct[yyn] /* simulate a shift of "error" */
  1452  					if yyChk[yystate] == yyErrCode {
  1453  						goto yystack
  1454  					}
  1455  				}
  1456  
  1457  				/* the current p has no shift on "error", pop stack */
  1458  				if yyDebug >= 2 {
  1459  					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
  1460  				}
  1461  				yyp--
  1462  			}
  1463  			/* there is no state on the stack with an error shift ... abort */
  1464  			goto ret1
  1465  
  1466  		case 3: /* no shift yet; clobber input char */
  1467  			if yyDebug >= 2 {
  1468  				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
  1469  			}
  1470  			if yytoken == yyEofCode {
  1471  				goto ret1
  1472  			}
  1473  			yyrcvr.char = -1
  1474  			yytoken = -1
  1475  			goto yynewstate /* try again in the same state */
  1476  		}
  1477  	}
  1478  
  1479  	/* reduction by production yyn */
  1480  	if yyDebug >= 2 {
  1481  		__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
  1482  	}
  1483  
  1484  	yynt := yyn
  1485  	yypt := yyp
  1486  	_ = yypt // guard against "declared and not used"
  1487  
  1488  	yyp -= yyR2[yyn]
  1489  	// yyp is now the index of $0. Perform the default action. Iff the
  1490  	// reduced production is ε, $1 is possibly out of range.
  1491  	if yyp+1 >= len(yyS) {
  1492  		nyys := make([]yySymType, len(yyS)*2)
  1493  		copy(nyys, yyS)
  1494  		yyS = nyys
  1495  	}
  1496  	yyVAL = yyS[yyp+1]
  1497  
  1498  	/* consult goto table to find next state */
  1499  	yyn = yyR1[yyn]
  1500  	yyg := yyPgo[yyn]
  1501  	yyj := yyg + yyS[yyp].yys + 1
  1502  
  1503  	if yyj >= yyLast {
  1504  		yystate = yyAct[yyg]
  1505  	} else {
  1506  		yystate = yyAct[yyj]
  1507  		if yyChk[yystate] != -yyn {
  1508  			yystate = yyAct[yyg]
  1509  		}
  1510  	}
  1511  	// dummy call; replaced with literal code
  1512  	switch yynt {
  1513  
  1514  	case 1:
  1515  		yyDollar = yyS[yypt-2 : yypt+1]
  1516  //line sql.y:216
  1517  		{
  1518  			setParseTree(yylex, yyDollar[1].statement)
  1519  		}
  1520  	case 2:
  1521  		yyDollar = yyS[yypt-0 : yypt+1]
  1522  //line sql.y:221
  1523  		{
  1524  		}
  1525  	case 3:
  1526  		yyDollar = yyS[yypt-1 : yypt+1]
  1527  //line sql.y:222
  1528  		{
  1529  		}
  1530  	case 4:
  1531  		yyDollar = yyS[yypt-1 : yypt+1]
  1532  //line sql.y:226
  1533  		{
  1534  			yyVAL.statement = yyDollar[1].selStmt
  1535  		}
  1536  	case 17:
  1537  		yyDollar = yyS[yypt-4 : yypt+1]
  1538  //line sql.y:244
  1539  		{
  1540  			sel := yyDollar[1].selStmt.(*Select)
  1541  			sel.OrderBy = yyDollar[2].orderBy
  1542  			sel.Limit = yyDollar[3].limit
  1543  			sel.Lock = yyDollar[4].str
  1544  			yyVAL.selStmt = sel
  1545  		}
  1546  	case 18:
  1547  		yyDollar = yyS[yypt-6 : yypt+1]
  1548  //line sql.y:252
  1549  		{
  1550  			yyVAL.selStmt = &Union{Type: yyDollar[2].str, Left: yyDollar[1].selStmt, Right: yyDollar[3].selStmt, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].str}
  1551  		}
  1552  	case 19:
  1553  		yyDollar = yyS[yypt-7 : yypt+1]
  1554  //line sql.y:256
  1555  		{
  1556  			yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, SelectExprs: SelectExprs{Nextval{Expr: yyDollar[5].expr}}, From: TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}}
  1557  		}
  1558  	case 20:
  1559  		yyDollar = yyS[yypt-10 : yypt+1]
  1560  //line sql.y:263
  1561  		{
  1562  			yyVAL.selStmt = &Select{Comments: Comments(yyDollar[2].bytes2), Cache: yyDollar[3].str, Distinct: yyDollar[4].str, Hints: yyDollar[5].str, SelectExprs: yyDollar[6].selectExprs, From: yyDollar[7].tableExprs, Where: NewWhere(WhereStr, yyDollar[8].expr), GroupBy: GroupBy(yyDollar[9].exprs), Having: NewWhere(HavingStr, yyDollar[10].expr)}
  1563  		}
  1564  	case 21:
  1565  		yyDollar = yyS[yypt-1 : yypt+1]
  1566  //line sql.y:269
  1567  		{
  1568  			yyVAL.selStmt = yyDollar[1].selStmt
  1569  		}
  1570  	case 22:
  1571  		yyDollar = yyS[yypt-3 : yypt+1]
  1572  //line sql.y:273
  1573  		{
  1574  			yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt}
  1575  		}
  1576  	case 23:
  1577  		yyDollar = yyS[yypt-1 : yypt+1]
  1578  //line sql.y:279
  1579  		{
  1580  			yyVAL.selStmt = yyDollar[1].selStmt
  1581  		}
  1582  	case 24:
  1583  		yyDollar = yyS[yypt-3 : yypt+1]
  1584  //line sql.y:283
  1585  		{
  1586  			yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt}
  1587  		}
  1588  	case 25:
  1589  		yyDollar = yyS[yypt-6 : yypt+1]
  1590  //line sql.y:290
  1591  		{
  1592  			// insert_data returns a *Insert pre-filled with Columns & Values
  1593  			ins := yyDollar[5].ins
  1594  			ins.Action = yyDollar[1].str
  1595  			ins.Comments = yyDollar[2].bytes2
  1596  			ins.Ignore = yyDollar[3].str
  1597  			ins.Table = yyDollar[4].tableName
  1598  			ins.OnDup = OnDup(yyDollar[6].updateExprs)
  1599  			yyVAL.statement = ins
  1600  		}
  1601  	case 26:
  1602  		yyDollar = yyS[yypt-7 : yypt+1]
  1603  //line sql.y:301
  1604  		{
  1605  			cols := make(Columns, 0, len(yyDollar[6].updateExprs))
  1606  			vals := make(ValTuple, 0, len(yyDollar[7].updateExprs))
  1607  			for _, updateList := range yyDollar[6].updateExprs {
  1608  				cols = append(cols, updateList.Name.Name)
  1609  				vals = append(vals, updateList.Expr)
  1610  			}
  1611  			yyVAL.statement = &Insert{Action: yyDollar[1].str, Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].str, Table: yyDollar[4].tableName, Columns: cols, Rows: Values{vals}, OnDup: OnDup(yyDollar[7].updateExprs)}
  1612  		}
  1613  	case 27:
  1614  		yyDollar = yyS[yypt-1 : yypt+1]
  1615  //line sql.y:313
  1616  		{
  1617  			yyVAL.str = InsertStr
  1618  		}
  1619  	case 28:
  1620  		yyDollar = yyS[yypt-1 : yypt+1]
  1621  //line sql.y:317
  1622  		{
  1623  			yyVAL.str = ReplaceStr
  1624  		}
  1625  	case 29:
  1626  		yyDollar = yyS[yypt-8 : yypt+1]
  1627  //line sql.y:323
  1628  		{
  1629  			yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), TableExprs: yyDollar[3].tableExprs, Exprs: yyDollar[5].updateExprs, Where: NewWhere(WhereStr, yyDollar[6].expr), OrderBy: yyDollar[7].orderBy, Limit: yyDollar[8].limit}
  1630  		}
  1631  	case 30:
  1632  		yyDollar = yyS[yypt-7 : yypt+1]
  1633  //line sql.y:329
  1634  		{
  1635  			yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[4].tableName}}, Where: NewWhere(WhereStr, yyDollar[5].expr), OrderBy: yyDollar[6].orderBy, Limit: yyDollar[7].limit}
  1636  		}
  1637  	case 31:
  1638  		yyDollar = yyS[yypt-6 : yypt+1]
  1639  //line sql.y:333
  1640  		{
  1641  			yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Targets: yyDollar[3].tableNames, TableExprs: yyDollar[5].tableExprs, Where: NewWhere(WhereStr, yyDollar[6].expr)}
  1642  		}
  1643  	case 32:
  1644  		yyDollar = yyS[yypt-1 : yypt+1]
  1645  //line sql.y:338
  1646  		{
  1647  		}
  1648  	case 33:
  1649  		yyDollar = yyS[yypt-1 : yypt+1]
  1650  //line sql.y:339
  1651  		{
  1652  		}
  1653  	case 34:
  1654  		yyDollar = yyS[yypt-1 : yypt+1]
  1655  //line sql.y:343
  1656  		{
  1657  			yyVAL.tableNames = TableNames{yyDollar[1].tableName}
  1658  		}
  1659  	case 35:
  1660  		yyDollar = yyS[yypt-3 : yypt+1]
  1661  //line sql.y:347
  1662  		{
  1663  			yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName)
  1664  		}
  1665  	case 36:
  1666  		yyDollar = yyS[yypt-3 : yypt+1]
  1667  //line sql.y:353
  1668  		{
  1669  			yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].updateExprs}
  1670  		}
  1671  	case 37:
  1672  		yyDollar = yyS[yypt-5 : yypt+1]
  1673  //line sql.y:359
  1674  		{
  1675  			yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[4].tableName}
  1676  		}
  1677  	case 38:
  1678  		yyDollar = yyS[yypt-8 : yypt+1]
  1679  //line sql.y:363
  1680  		{
  1681  			// Change this to an alter statement
  1682  			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[7].tableName, NewName: yyDollar[7].tableName}
  1683  		}
  1684  	case 39:
  1685  		yyDollar = yyS[yypt-4 : yypt+1]
  1686  //line sql.y:368
  1687  		{
  1688  			yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[3].tableName.ToViewName()}
  1689  		}
  1690  	case 40:
  1691  		yyDollar = yyS[yypt-6 : yypt+1]
  1692  //line sql.y:372
  1693  		{
  1694  			yyVAL.statement = &DDL{Action: CreateStr, NewName: yyDollar[5].tableName.ToViewName()}
  1695  		}
  1696  	case 41:
  1697  		yyDollar = yyS[yypt-6 : yypt+1]
  1698  //line sql.y:378
  1699  		{
  1700  			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName}
  1701  		}
  1702  	case 42:
  1703  		yyDollar = yyS[yypt-7 : yypt+1]
  1704  //line sql.y:382
  1705  		{
  1706  			// Change this to a rename statement
  1707  			yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[4].tableName, NewName: yyDollar[7].tableName}
  1708  		}
  1709  	case 43:
  1710  		yyDollar = yyS[yypt-7 : yypt+1]
  1711  //line sql.y:387
  1712  		{
  1713  			// Rename an index can just be an alter
  1714  			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[4].tableName, NewName: yyDollar[4].tableName}
  1715  		}
  1716  	case 44:
  1717  		yyDollar = yyS[yypt-4 : yypt+1]
  1718  //line sql.y:392
  1719  		{
  1720  			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName.ToViewName(), NewName: yyDollar[3].tableName.ToViewName()}
  1721  		}
  1722  	case 45:
  1723  		yyDollar = yyS[yypt-5 : yypt+1]
  1724  //line sql.y:398
  1725  		{
  1726  			yyVAL.statement = &DDL{Action: RenameStr, Table: yyDollar[3].tableName, NewName: yyDollar[5].tableName}
  1727  		}
  1728  	case 46:
  1729  		yyDollar = yyS[yypt-4 : yypt+1]
  1730  //line sql.y:404
  1731  		{
  1732  			var exists bool
  1733  			if yyDollar[3].byt != 0 {
  1734  				exists = true
  1735  			}
  1736  			yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName, IfExists: exists}
  1737  		}
  1738  	case 47:
  1739  		yyDollar = yyS[yypt-5 : yypt+1]
  1740  //line sql.y:412
  1741  		{
  1742  			// Change this to an alter statement
  1743  			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[5].tableName, NewName: yyDollar[5].tableName}
  1744  		}
  1745  	case 48:
  1746  		yyDollar = yyS[yypt-5 : yypt+1]
  1747  //line sql.y:417
  1748  		{
  1749  			var exists bool
  1750  			if yyDollar[3].byt != 0 {
  1751  				exists = true
  1752  			}
  1753  			yyVAL.statement = &DDL{Action: DropStr, Table: yyDollar[4].tableName.ToViewName(), IfExists: exists}
  1754  		}
  1755  	case 49:
  1756  		yyDollar = yyS[yypt-3 : yypt+1]
  1757  //line sql.y:427
  1758  		{
  1759  			yyVAL.statement = &DDL{Action: AlterStr, Table: yyDollar[3].tableName, NewName: yyDollar[3].tableName}
  1760  		}
  1761  	case 50:
  1762  		yyDollar = yyS[yypt-1 : yypt+1]
  1763  //line sql.y:433
  1764  		{
  1765  			yyVAL.str = ShowUnsupportedStr
  1766  		}
  1767  	case 51:
  1768  		yyDollar = yyS[yypt-1 : yypt+1]
  1769  //line sql.y:437
  1770  		{
  1771  			switch v := string(yyDollar[1].bytes); v {
  1772  			case ShowDatabasesStr, ShowTablesStr, ShowKeyspacesStr, ShowShardsStr, ShowVSchemaTablesStr:
  1773  				yyVAL.str = v
  1774  			default:
  1775  				yyVAL.str = ShowUnsupportedStr
  1776  			}
  1777  		}
  1778  	case 52:
  1779  		yyDollar = yyS[yypt-1 : yypt+1]
  1780  //line sql.y:446
  1781  		{
  1782  			yyVAL.str = ShowUnsupportedStr
  1783  		}
  1784  	case 53:
  1785  		yyDollar = yyS[yypt-3 : yypt+1]
  1786  //line sql.y:452
  1787  		{
  1788  			yyVAL.statement = &Show{Type: yyDollar[2].str}
  1789  		}
  1790  	case 54:
  1791  		yyDollar = yyS[yypt-2 : yypt+1]
  1792  //line sql.y:458
  1793  		{
  1794  			yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent}
  1795  		}
  1796  	case 55:
  1797  		yyDollar = yyS[yypt-2 : yypt+1]
  1798  //line sql.y:464
  1799  		{
  1800  			yyVAL.statement = &OtherRead{}
  1801  		}
  1802  	case 56:
  1803  		yyDollar = yyS[yypt-2 : yypt+1]
  1804  //line sql.y:468
  1805  		{
  1806  			yyVAL.statement = &OtherRead{}
  1807  		}
  1808  	case 57:
  1809  		yyDollar = yyS[yypt-2 : yypt+1]
  1810  //line sql.y:472
  1811  		{
  1812  			yyVAL.statement = &OtherRead{}
  1813  		}
  1814  	case 58:
  1815  		yyDollar = yyS[yypt-2 : yypt+1]
  1816  //line sql.y:476
  1817  		{
  1818  			yyVAL.statement = &OtherAdmin{}
  1819  		}
  1820  	case 59:
  1821  		yyDollar = yyS[yypt-2 : yypt+1]
  1822  //line sql.y:480
  1823  		{
  1824  			yyVAL.statement = &OtherAdmin{}
  1825  		}
  1826  	case 60:
  1827  		yyDollar = yyS[yypt-2 : yypt+1]
  1828  //line sql.y:484
  1829  		{
  1830  			yyVAL.statement = &OtherAdmin{}
  1831  		}
  1832  	case 61:
  1833  		yyDollar = yyS[yypt-0 : yypt+1]
  1834  //line sql.y:489
  1835  		{
  1836  			setAllowComments(yylex, true)
  1837  		}
  1838  	case 62:
  1839  		yyDollar = yyS[yypt-2 : yypt+1]
  1840  //line sql.y:493
  1841  		{
  1842  			yyVAL.bytes2 = yyDollar[2].bytes2
  1843  			setAllowComments(yylex, false)
  1844  		}
  1845  	case 63:
  1846  		yyDollar = yyS[yypt-0 : yypt+1]
  1847  //line sql.y:499
  1848  		{
  1849  			yyVAL.bytes2 = nil
  1850  		}
  1851  	case 64:
  1852  		yyDollar = yyS[yypt-2 : yypt+1]
  1853  //line sql.y:503
  1854  		{
  1855  			yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes)
  1856  		}
  1857  	case 65:
  1858  		yyDollar = yyS[yypt-1 : yypt+1]
  1859  //line sql.y:509
  1860  		{
  1861  			yyVAL.str = UnionStr
  1862  		}
  1863  	case 66:
  1864  		yyDollar = yyS[yypt-2 : yypt+1]
  1865  //line sql.y:513
  1866  		{
  1867  			yyVAL.str = UnionAllStr
  1868  		}
  1869  	case 67:
  1870  		yyDollar = yyS[yypt-2 : yypt+1]
  1871  //line sql.y:517
  1872  		{
  1873  			yyVAL.str = UnionDistinctStr
  1874  		}
  1875  	case 68:
  1876  		yyDollar = yyS[yypt-0 : yypt+1]
  1877  //line sql.y:522
  1878  		{
  1879  			yyVAL.str = ""
  1880  		}
  1881  	case 69:
  1882  		yyDollar = yyS[yypt-1 : yypt+1]
  1883  //line sql.y:526
  1884  		{
  1885  			yyVAL.str = SQLNoCacheStr
  1886  		}
  1887  	case 70:
  1888  		yyDollar = yyS[yypt-1 : yypt+1]
  1889  //line sql.y:530
  1890  		{
  1891  			yyVAL.str = SQLCacheStr
  1892  		}
  1893  	case 71:
  1894  		yyDollar = yyS[yypt-0 : yypt+1]
  1895  //line sql.y:535
  1896  		{
  1897  			yyVAL.str = ""
  1898  		}
  1899  	case 72:
  1900  		yyDollar = yyS[yypt-1 : yypt+1]
  1901  //line sql.y:539
  1902  		{
  1903  			yyVAL.str = DistinctStr
  1904  		}
  1905  	case 73:
  1906  		yyDollar = yyS[yypt-0 : yypt+1]
  1907  //line sql.y:544
  1908  		{
  1909  			yyVAL.str = ""
  1910  		}
  1911  	case 74:
  1912  		yyDollar = yyS[yypt-1 : yypt+1]
  1913  //line sql.y:548
  1914  		{
  1915  			yyVAL.str = StraightJoinHint
  1916  		}
  1917  	case 75:
  1918  		yyDollar = yyS[yypt-0 : yypt+1]
  1919  //line sql.y:553
  1920  		{
  1921  			yyVAL.selectExprs = nil
  1922  		}
  1923  	case 76:
  1924  		yyDollar = yyS[yypt-1 : yypt+1]
  1925  //line sql.y:557
  1926  		{
  1927  			yyVAL.selectExprs = yyDollar[1].selectExprs
  1928  		}
  1929  	case 77:
  1930  		yyDollar = yyS[yypt-1 : yypt+1]
  1931  //line sql.y:563
  1932  		{
  1933  			yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr}
  1934  		}
  1935  	case 78:
  1936  		yyDollar = yyS[yypt-3 : yypt+1]
  1937  //line sql.y:567
  1938  		{
  1939  			yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr)
  1940  		}
  1941  	case 79:
  1942  		yyDollar = yyS[yypt-1 : yypt+1]
  1943  //line sql.y:573
  1944  		{
  1945  			yyVAL.selectExpr = &StarExpr{}
  1946  		}
  1947  	case 80:
  1948  		yyDollar = yyS[yypt-2 : yypt+1]
  1949  //line sql.y:577
  1950  		{
  1951  			yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent}
  1952  		}
  1953  	case 81:
  1954  		yyDollar = yyS[yypt-3 : yypt+1]
  1955  //line sql.y:581
  1956  		{
  1957  			yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}}
  1958  		}
  1959  	case 82:
  1960  		yyDollar = yyS[yypt-5 : yypt+1]
  1961  //line sql.y:585
  1962  		{
  1963  			yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}}
  1964  		}
  1965  	case 83:
  1966  		yyDollar = yyS[yypt-0 : yypt+1]
  1967  //line sql.y:590
  1968  		{
  1969  			yyVAL.colIdent = ColIdent{}
  1970  		}
  1971  	case 84:
  1972  		yyDollar = yyS[yypt-1 : yypt+1]
  1973  //line sql.y:594
  1974  		{
  1975  			yyVAL.colIdent = yyDollar[1].colIdent
  1976  		}
  1977  	case 85:
  1978  		yyDollar = yyS[yypt-2 : yypt+1]
  1979  //line sql.y:598
  1980  		{
  1981  			yyVAL.colIdent = yyDollar[2].colIdent
  1982  		}
  1983  	case 87:
  1984  		yyDollar = yyS[yypt-1 : yypt+1]
  1985  //line sql.y:605
  1986  		{
  1987  			yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
  1988  		}
  1989  	case 88:
  1990  		yyDollar = yyS[yypt-0 : yypt+1]
  1991  //line sql.y:610
  1992  		{
  1993  			yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}}
  1994  		}
  1995  	case 89:
  1996  		yyDollar = yyS[yypt-2 : yypt+1]
  1997  //line sql.y:614
  1998  		{
  1999  			yyVAL.tableExprs = yyDollar[2].tableExprs
  2000  		}
  2001  	case 90:
  2002  		yyDollar = yyS[yypt-1 : yypt+1]
  2003  //line sql.y:620
  2004  		{
  2005  			yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr}
  2006  		}
  2007  	case 91:
  2008  		yyDollar = yyS[yypt-3 : yypt+1]
  2009  //line sql.y:624
  2010  		{
  2011  			yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr)
  2012  		}
  2013  	case 94:
  2014  		yyDollar = yyS[yypt-1 : yypt+1]
  2015  //line sql.y:634
  2016  		{
  2017  			yyVAL.tableExpr = yyDollar[1].aliasedTableName
  2018  		}
  2019  	case 95:
  2020  		yyDollar = yyS[yypt-3 : yypt+1]
  2021  //line sql.y:638
  2022  		{
  2023  			yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].subquery, As: yyDollar[3].tableIdent}
  2024  		}
  2025  	case 96:
  2026  		yyDollar = yyS[yypt-3 : yypt+1]
  2027  //line sql.y:642
  2028  		{
  2029  			yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs}
  2030  		}
  2031  	case 97:
  2032  		yyDollar = yyS[yypt-3 : yypt+1]
  2033  //line sql.y:648
  2034  		{
  2035  			yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints}
  2036  		}
  2037  	case 98:
  2038  		yyDollar = yyS[yypt-3 : yypt+1]
  2039  //line sql.y:661
  2040  		{
  2041  			yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr}
  2042  		}
  2043  	case 99:
  2044  		yyDollar = yyS[yypt-5 : yypt+1]
  2045  //line sql.y:665
  2046  		{
  2047  			yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].expr}
  2048  		}
  2049  	case 100:
  2050  		yyDollar = yyS[yypt-5 : yypt+1]
  2051  //line sql.y:669
  2052  		{
  2053  			yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr, On: yyDollar[5].expr}
  2054  		}
  2055  	case 101:
  2056  		yyDollar = yyS[yypt-3 : yypt+1]
  2057  //line sql.y:673
  2058  		{
  2059  			yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].str, RightExpr: yyDollar[3].tableExpr}
  2060  		}
  2061  	case 102:
  2062  		yyDollar = yyS[yypt-0 : yypt+1]
  2063  //line sql.y:678
  2064  		{
  2065  			yyVAL.empty = struct{}{}
  2066  		}
  2067  	case 103:
  2068  		yyDollar = yyS[yypt-1 : yypt+1]
  2069  //line sql.y:680
  2070  		{
  2071  			yyVAL.empty = struct{}{}
  2072  		}
  2073  	case 104:
  2074  		yyDollar = yyS[yypt-0 : yypt+1]
  2075  //line sql.y:683
  2076  		{
  2077  			yyVAL.tableIdent = NewTableIdent("")
  2078  		}
  2079  	case 105:
  2080  		yyDollar = yyS[yypt-1 : yypt+1]
  2081  //line sql.y:687
  2082  		{
  2083  			yyVAL.tableIdent = yyDollar[1].tableIdent
  2084  		}
  2085  	case 106:
  2086  		yyDollar = yyS[yypt-2 : yypt+1]
  2087  //line sql.y:691
  2088  		{
  2089  			yyVAL.tableIdent = yyDollar[2].tableIdent
  2090  		}
  2091  	case 108:
  2092  		yyDollar = yyS[yypt-1 : yypt+1]
  2093  //line sql.y:698
  2094  		{
  2095  			yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
  2096  		}
  2097  	case 109:
  2098  		yyDollar = yyS[yypt-1 : yypt+1]
  2099  //line sql.y:704
  2100  		{
  2101  			yyVAL.str = JoinStr
  2102  		}
  2103  	case 110:
  2104  		yyDollar = yyS[yypt-2 : yypt+1]
  2105  //line sql.y:708
  2106  		{
  2107  			yyVAL.str = JoinStr
  2108  		}
  2109  	case 111:
  2110  		yyDollar = yyS[yypt-2 : yypt+1]
  2111  //line sql.y:712
  2112  		{
  2113  			yyVAL.str = JoinStr
  2114  		}
  2115  	case 112:
  2116  		yyDollar = yyS[yypt-1 : yypt+1]
  2117  //line sql.y:716
  2118  		{
  2119  			yyVAL.str = StraightJoinStr
  2120  		}
  2121  	case 113:
  2122  		yyDollar = yyS[yypt-2 : yypt+1]
  2123  //line sql.y:722
  2124  		{
  2125  			yyVAL.str = LeftJoinStr
  2126  		}
  2127  	case 114:
  2128  		yyDollar = yyS[yypt-3 : yypt+1]
  2129  //line sql.y:726
  2130  		{
  2131  			yyVAL.str = LeftJoinStr
  2132  		}
  2133  	case 115:
  2134  		yyDollar = yyS[yypt-2 : yypt+1]
  2135  //line sql.y:730
  2136  		{
  2137  			yyVAL.str = RightJoinStr
  2138  		}
  2139  	case 116:
  2140  		yyDollar = yyS[yypt-3 : yypt+1]
  2141  //line sql.y:734
  2142  		{
  2143  			yyVAL.str = RightJoinStr
  2144  		}
  2145  	case 117:
  2146  		yyDollar = yyS[yypt-2 : yypt+1]
  2147  //line sql.y:740
  2148  		{
  2149  			yyVAL.str = NaturalJoinStr
  2150  		}
  2151  	case 118:
  2152  		yyDollar = yyS[yypt-2 : yypt+1]
  2153  //line sql.y:744
  2154  		{
  2155  			if yyDollar[2].str == LeftJoinStr {
  2156  				yyVAL.str = NaturalLeftJoinStr
  2157  			} else {
  2158  				yyVAL.str = NaturalRightJoinStr
  2159  			}
  2160  		}
  2161  	case 119:
  2162  		yyDollar = yyS[yypt-2 : yypt+1]
  2163  //line sql.y:754
  2164  		{
  2165  			yyVAL.tableName = yyDollar[2].tableName
  2166  		}
  2167  	case 120:
  2168  		yyDollar = yyS[yypt-1 : yypt+1]
  2169  //line sql.y:758
  2170  		{
  2171  			yyVAL.tableName = yyDollar[1].tableName
  2172  		}
  2173  	case 121:
  2174  		yyDollar = yyS[yypt-1 : yypt+1]
  2175  //line sql.y:764
  2176  		{
  2177  			yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent}
  2178  		}
  2179  	case 122:
  2180  		yyDollar = yyS[yypt-3 : yypt+1]
  2181  //line sql.y:768
  2182  		{
  2183  			yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}
  2184  		}
  2185  	case 123:
  2186  		yyDollar = yyS[yypt-0 : yypt+1]
  2187  //line sql.y:773
  2188  		{
  2189  			yyVAL.indexHints = nil
  2190  		}
  2191  	case 124:
  2192  		yyDollar = yyS[yypt-5 : yypt+1]
  2193  //line sql.y:777
  2194  		{
  2195  			yyVAL.indexHints = &IndexHints{Type: UseStr, Indexes: yyDollar[4].colIdents}
  2196  		}
  2197  	case 125:
  2198  		yyDollar = yyS[yypt-5 : yypt+1]
  2199  //line sql.y:781
  2200  		{
  2201  			yyVAL.indexHints = &IndexHints{Type: IgnoreStr, Indexes: yyDollar[4].colIdents}
  2202  		}
  2203  	case 126:
  2204  		yyDollar = yyS[yypt-5 : yypt+1]
  2205  //line sql.y:785
  2206  		{
  2207  			yyVAL.indexHints = &IndexHints{Type: ForceStr, Indexes: yyDollar[4].colIdents}
  2208  		}
  2209  	case 127:
  2210  		yyDollar = yyS[yypt-1 : yypt+1]
  2211  //line sql.y:791
  2212  		{
  2213  			yyVAL.colIdents = []ColIdent{yyDollar[1].colIdent}
  2214  		}
  2215  	case 128:
  2216  		yyDollar = yyS[yypt-3 : yypt+1]
  2217  //line sql.y:795
  2218  		{
  2219  			yyVAL.colIdents = append(yyDollar[1].colIdents, yyDollar[3].colIdent)
  2220  		}
  2221  	case 129:
  2222  		yyDollar = yyS[yypt-0 : yypt+1]
  2223  //line sql.y:800
  2224  		{
  2225  			yyVAL.expr = nil
  2226  		}
  2227  	case 130:
  2228  		yyDollar = yyS[yypt-2 : yypt+1]
  2229  //line sql.y:804
  2230  		{
  2231  			yyVAL.expr = yyDollar[2].expr
  2232  		}
  2233  	case 131:
  2234  		yyDollar = yyS[yypt-1 : yypt+1]
  2235  //line sql.y:810
  2236  		{
  2237  			yyVAL.expr = yyDollar[1].expr
  2238  		}
  2239  	case 132:
  2240  		yyDollar = yyS[yypt-3 : yypt+1]
  2241  //line sql.y:814
  2242  		{
  2243  			yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
  2244  		}
  2245  	case 133:
  2246  		yyDollar = yyS[yypt-3 : yypt+1]
  2247  //line sql.y:818
  2248  		{
  2249  			yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
  2250  		}
  2251  	case 134:
  2252  		yyDollar = yyS[yypt-2 : yypt+1]
  2253  //line sql.y:822
  2254  		{
  2255  			yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr}
  2256  		}
  2257  	case 135:
  2258  		yyDollar = yyS[yypt-3 : yypt+1]
  2259  //line sql.y:826
  2260  		{
  2261  			yyVAL.expr = &IsExpr{Operator: yyDollar[3].str, Expr: yyDollar[1].expr}
  2262  		}
  2263  	case 136:
  2264  		yyDollar = yyS[yypt-1 : yypt+1]
  2265  //line sql.y:830
  2266  		{
  2267  			yyVAL.expr = yyDollar[1].expr
  2268  		}
  2269  	case 137:
  2270  		yyDollar = yyS[yypt-1 : yypt+1]
  2271  //line sql.y:834
  2272  		{
  2273  			yyVAL.expr = &Default{}
  2274  		}
  2275  	case 138:
  2276  		yyDollar = yyS[yypt-1 : yypt+1]
  2277  //line sql.y:840
  2278  		{
  2279  			yyVAL.boolVal = BoolVal(true)
  2280  		}
  2281  	case 139:
  2282  		yyDollar = yyS[yypt-1 : yypt+1]
  2283  //line sql.y:844
  2284  		{
  2285  			yyVAL.boolVal = BoolVal(false)
  2286  		}
  2287  	case 140:
  2288  		yyDollar = yyS[yypt-3 : yypt+1]
  2289  //line sql.y:850
  2290  		{
  2291  			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].str, Right: yyDollar[3].expr}
  2292  		}
  2293  	case 141:
  2294  		yyDollar = yyS[yypt-3 : yypt+1]
  2295  //line sql.y:854
  2296  		{
  2297  			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InStr, Right: yyDollar[3].colTuple}
  2298  		}
  2299  	case 142:
  2300  		yyDollar = yyS[yypt-4 : yypt+1]
  2301  //line sql.y:858
  2302  		{
  2303  			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInStr, Right: yyDollar[4].colTuple}
  2304  		}
  2305  	case 143:
  2306  		yyDollar = yyS[yypt-4 : yypt+1]
  2307  //line sql.y:862
  2308  		{
  2309  			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeStr, Right: yyDollar[3].expr, Escape: yyDollar[4].expr}
  2310  		}
  2311  	case 144:
  2312  		yyDollar = yyS[yypt-5 : yypt+1]
  2313  //line sql.y:866
  2314  		{
  2315  			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeStr, Right: yyDollar[4].expr, Escape: yyDollar[5].expr}
  2316  		}
  2317  	case 145:
  2318  		yyDollar = yyS[yypt-3 : yypt+1]
  2319  //line sql.y:870
  2320  		{
  2321  			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpStr, Right: yyDollar[3].expr}
  2322  		}
  2323  	case 146:
  2324  		yyDollar = yyS[yypt-4 : yypt+1]
  2325  //line sql.y:874
  2326  		{
  2327  			yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpStr, Right: yyDollar[4].expr}
  2328  		}
  2329  	case 147:
  2330  		yyDollar = yyS[yypt-5 : yypt+1]
  2331  //line sql.y:878
  2332  		{
  2333  			yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenStr, From: yyDollar[3].expr, To: yyDollar[5].expr}
  2334  		}
  2335  	case 148:
  2336  		yyDollar = yyS[yypt-6 : yypt+1]
  2337  //line sql.y:882
  2338  		{
  2339  			yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenStr, From: yyDollar[4].expr, To: yyDollar[6].expr}
  2340  		}
  2341  	case 149:
  2342  		yyDollar = yyS[yypt-2 : yypt+1]
  2343  //line sql.y:886
  2344  		{
  2345  			yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery}
  2346  		}
  2347  	case 150:
  2348  		yyDollar = yyS[yypt-1 : yypt+1]
  2349  //line sql.y:892
  2350  		{
  2351  			yyVAL.str = IsNullStr
  2352  		}
  2353  	case 151:
  2354  		yyDollar = yyS[yypt-2 : yypt+1]
  2355  //line sql.y:896
  2356  		{
  2357  			yyVAL.str = IsNotNullStr
  2358  		}
  2359  	case 152:
  2360  		yyDollar = yyS[yypt-1 : yypt+1]
  2361  //line sql.y:900
  2362  		{
  2363  			yyVAL.str = IsTrueStr
  2364  		}
  2365  	case 153:
  2366  		yyDollar = yyS[yypt-2 : yypt+1]
  2367  //line sql.y:904
  2368  		{
  2369  			yyVAL.str = IsNotTrueStr
  2370  		}
  2371  	case 154:
  2372  		yyDollar = yyS[yypt-1 : yypt+1]
  2373  //line sql.y:908
  2374  		{
  2375  			yyVAL.str = IsFalseStr
  2376  		}
  2377  	case 155:
  2378  		yyDollar = yyS[yypt-2 : yypt+1]
  2379  //line sql.y:912
  2380  		{
  2381  			yyVAL.str = IsNotFalseStr
  2382  		}
  2383  	case 156:
  2384  		yyDollar = yyS[yypt-1 : yypt+1]
  2385  //line sql.y:918
  2386  		{
  2387  			yyVAL.str = EqualStr
  2388  		}
  2389  	case 157:
  2390  		yyDollar = yyS[yypt-1 : yypt+1]
  2391  //line sql.y:922
  2392  		{
  2393  			yyVAL.str = LessThanStr
  2394  		}
  2395  	case 158:
  2396  		yyDollar = yyS[yypt-1 : yypt+1]
  2397  //line sql.y:926
  2398  		{
  2399  			yyVAL.str = GreaterThanStr
  2400  		}
  2401  	case 159:
  2402  		yyDollar = yyS[yypt-1 : yypt+1]
  2403  //line sql.y:930
  2404  		{
  2405  			yyVAL.str = LessEqualStr
  2406  		}
  2407  	case 160:
  2408  		yyDollar = yyS[yypt-1 : yypt+1]
  2409  //line sql.y:934
  2410  		{
  2411  			yyVAL.str = GreaterEqualStr
  2412  		}
  2413  	case 161:
  2414  		yyDollar = yyS[yypt-1 : yypt+1]
  2415  //line sql.y:938
  2416  		{
  2417  			yyVAL.str = NotEqualStr
  2418  		}
  2419  	case 162:
  2420  		yyDollar = yyS[yypt-1 : yypt+1]
  2421  //line sql.y:942
  2422  		{
  2423  			yyVAL.str = NullSafeEqualStr
  2424  		}
  2425  	case 163:
  2426  		yyDollar = yyS[yypt-0 : yypt+1]
  2427  //line sql.y:947
  2428  		{
  2429  			yyVAL.expr = nil
  2430  		}
  2431  	case 164:
  2432  		yyDollar = yyS[yypt-2 : yypt+1]
  2433  //line sql.y:951
  2434  		{
  2435  			yyVAL.expr = yyDollar[2].expr
  2436  		}
  2437  	case 165:
  2438  		yyDollar = yyS[yypt-1 : yypt+1]
  2439  //line sql.y:957
  2440  		{
  2441  			yyVAL.colTuple = yyDollar[1].valTuple
  2442  		}
  2443  	case 166:
  2444  		yyDollar = yyS[yypt-1 : yypt+1]
  2445  //line sql.y:961
  2446  		{
  2447  			yyVAL.colTuple = yyDollar[1].subquery
  2448  		}
  2449  	case 167:
  2450  		yyDollar = yyS[yypt-1 : yypt+1]
  2451  //line sql.y:965
  2452  		{
  2453  			yyVAL.colTuple = ListArg(yyDollar[1].bytes)
  2454  		}
  2455  	case 168:
  2456  		yyDollar = yyS[yypt-3 : yypt+1]
  2457  //line sql.y:971
  2458  		{
  2459  			yyVAL.subquery = &Subquery{yyDollar[2].selStmt}
  2460  		}
  2461  	case 169:
  2462  		yyDollar = yyS[yypt-1 : yypt+1]
  2463  //line sql.y:977
  2464  		{
  2465  			yyVAL.exprs = Exprs{yyDollar[1].expr}
  2466  		}
  2467  	case 170:
  2468  		yyDollar = yyS[yypt-3 : yypt+1]
  2469  //line sql.y:981
  2470  		{
  2471  			yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr)
  2472  		}
  2473  	case 171:
  2474  		yyDollar = yyS[yypt-1 : yypt+1]
  2475  //line sql.y:987
  2476  		{
  2477  			yyVAL.str = string(yyDollar[1].bytes)
  2478  		}
  2479  	case 172:
  2480  		yyDollar = yyS[yypt-1 : yypt+1]
  2481  //line sql.y:991
  2482  		{
  2483  			yyVAL.str = string(yyDollar[1].bytes)
  2484  		}
  2485  	case 173:
  2486  		yyDollar = yyS[yypt-1 : yypt+1]
  2487  //line sql.y:995
  2488  		{
  2489  			yyVAL.str = string(yyDollar[1].bytes)
  2490  		}
  2491  	case 174:
  2492  		yyDollar = yyS[yypt-1 : yypt+1]
  2493  //line sql.y:999
  2494  		{
  2495  			yyVAL.str = string(yyDollar[1].bytes)
  2496  		}
  2497  	case 175:
  2498  		yyDollar = yyS[yypt-1 : yypt+1]
  2499  //line sql.y:1005
  2500  		{
  2501  			yyVAL.expr = yyDollar[1].expr
  2502  		}
  2503  	case 176:
  2504  		yyDollar = yyS[yypt-1 : yypt+1]
  2505  //line sql.y:1009
  2506  		{
  2507  			yyVAL.expr = yyDollar[1].boolVal
  2508  		}
  2509  	case 177:
  2510  		yyDollar = yyS[yypt-1 : yypt+1]
  2511  //line sql.y:1013
  2512  		{
  2513  			yyVAL.expr = yyDollar[1].colName
  2514  		}
  2515  	case 178:
  2516  		yyDollar = yyS[yypt-1 : yypt+1]
  2517  //line sql.y:1017
  2518  		{
  2519  			yyVAL.expr = yyDollar[1].expr
  2520  		}
  2521  	case 179:
  2522  		yyDollar = yyS[yypt-1 : yypt+1]
  2523  //line sql.y:1021
  2524  		{
  2525  			yyVAL.expr = yyDollar[1].subquery
  2526  		}
  2527  	case 180:
  2528  		yyDollar = yyS[yypt-3 : yypt+1]
  2529  //line sql.y:1025
  2530  		{
  2531  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndStr, Right: yyDollar[3].expr}
  2532  		}
  2533  	case 181:
  2534  		yyDollar = yyS[yypt-3 : yypt+1]
  2535  //line sql.y:1029
  2536  		{
  2537  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrStr, Right: yyDollar[3].expr}
  2538  		}
  2539  	case 182:
  2540  		yyDollar = yyS[yypt-3 : yypt+1]
  2541  //line sql.y:1033
  2542  		{
  2543  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorStr, Right: yyDollar[3].expr}
  2544  		}
  2545  	case 183:
  2546  		yyDollar = yyS[yypt-3 : yypt+1]
  2547  //line sql.y:1037
  2548  		{
  2549  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusStr, Right: yyDollar[3].expr}
  2550  		}
  2551  	case 184:
  2552  		yyDollar = yyS[yypt-3 : yypt+1]
  2553  //line sql.y:1041
  2554  		{
  2555  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusStr, Right: yyDollar[3].expr}
  2556  		}
  2557  	case 185:
  2558  		yyDollar = yyS[yypt-3 : yypt+1]
  2559  //line sql.y:1045
  2560  		{
  2561  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultStr, Right: yyDollar[3].expr}
  2562  		}
  2563  	case 186:
  2564  		yyDollar = yyS[yypt-3 : yypt+1]
  2565  //line sql.y:1049
  2566  		{
  2567  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivStr, Right: yyDollar[3].expr}
  2568  		}
  2569  	case 187:
  2570  		yyDollar = yyS[yypt-3 : yypt+1]
  2571  //line sql.y:1053
  2572  		{
  2573  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivStr, Right: yyDollar[3].expr}
  2574  		}
  2575  	case 188:
  2576  		yyDollar = yyS[yypt-3 : yypt+1]
  2577  //line sql.y:1057
  2578  		{
  2579  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr}
  2580  		}
  2581  	case 189:
  2582  		yyDollar = yyS[yypt-3 : yypt+1]
  2583  //line sql.y:1061
  2584  		{
  2585  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModStr, Right: yyDollar[3].expr}
  2586  		}
  2587  	case 190:
  2588  		yyDollar = yyS[yypt-3 : yypt+1]
  2589  //line sql.y:1065
  2590  		{
  2591  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftStr, Right: yyDollar[3].expr}
  2592  		}
  2593  	case 191:
  2594  		yyDollar = yyS[yypt-3 : yypt+1]
  2595  //line sql.y:1069
  2596  		{
  2597  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightStr, Right: yyDollar[3].expr}
  2598  		}
  2599  	case 192:
  2600  		yyDollar = yyS[yypt-3 : yypt+1]
  2601  //line sql.y:1073
  2602  		{
  2603  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr}
  2604  		}
  2605  	case 193:
  2606  		yyDollar = yyS[yypt-3 : yypt+1]
  2607  //line sql.y:1077
  2608  		{
  2609  			yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr}
  2610  		}
  2611  	case 194:
  2612  		yyDollar = yyS[yypt-3 : yypt+1]
  2613  //line sql.y:1081
  2614  		{
  2615  			yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str}
  2616  		}
  2617  	case 195:
  2618  		yyDollar = yyS[yypt-2 : yypt+1]
  2619  //line sql.y:1085
  2620  		{
  2621  			yyVAL.expr = &UnaryExpr{Operator: BinaryStr, Expr: yyDollar[2].expr}
  2622  		}
  2623  	case 196:
  2624  		yyDollar = yyS[yypt-2 : yypt+1]
  2625  //line sql.y:1089
  2626  		{
  2627  			if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal {
  2628  				yyVAL.expr = num
  2629  			} else {
  2630  				yyVAL.expr = &UnaryExpr{Operator: UPlusStr, Expr: yyDollar[2].expr}
  2631  			}
  2632  		}
  2633  	case 197:
  2634  		yyDollar = yyS[yypt-2 : yypt+1]
  2635  //line sql.y:1097
  2636  		{
  2637  			if num, ok := yyDollar[2].expr.(*SQLVal); ok && num.Type == IntVal {
  2638  				// Handle double negative
  2639  				if num.Val[0] == '-' {
  2640  					num.Val = num.Val[1:]
  2641  					yyVAL.expr = num
  2642  				} else {
  2643  					yyVAL.expr = NewIntVal(append([]byte("-"), num.Val...))
  2644  				}
  2645  			} else {
  2646  				yyVAL.expr = &UnaryExpr{Operator: UMinusStr, Expr: yyDollar[2].expr}
  2647  			}
  2648  		}
  2649  	case 198:
  2650  		yyDollar = yyS[yypt-2 : yypt+1]
  2651  //line sql.y:1111
  2652  		{
  2653  			yyVAL.expr = &UnaryExpr{Operator: TildaStr, Expr: yyDollar[2].expr}
  2654  		}
  2655  	case 199:
  2656  		yyDollar = yyS[yypt-2 : yypt+1]
  2657  //line sql.y:1115
  2658  		{
  2659  			yyVAL.expr = &UnaryExpr{Operator: BangStr, Expr: yyDollar[2].expr}
  2660  		}
  2661  	case 200:
  2662  		yyDollar = yyS[yypt-3 : yypt+1]
  2663  //line sql.y:1119
  2664  		{
  2665  			// This rule prevents the usage of INTERVAL
  2666  			// as a function. If support is needed for that,
  2667  			// we'll need to revisit this. The solution
  2668  			// will be non-trivial because of grammar conflicts.
  2669  			yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent}
  2670  		}
  2671  	case 205:
  2672  		yyDollar = yyS[yypt-4 : yypt+1]
  2673  //line sql.y:1137
  2674  		{
  2675  			yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs}
  2676  		}
  2677  	case 206:
  2678  		yyDollar = yyS[yypt-5 : yypt+1]
  2679  //line sql.y:1141
  2680  		{
  2681  			yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs}
  2682  		}
  2683  	case 207:
  2684  		yyDollar = yyS[yypt-6 : yypt+1]
  2685  //line sql.y:1145
  2686  		{
  2687  			yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs}
  2688  		}
  2689  	case 208:
  2690  		yyDollar = yyS[yypt-4 : yypt+1]
  2691  //line sql.y:1155
  2692  		{
  2693  			yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs}
  2694  		}
  2695  	case 209:
  2696  		yyDollar = yyS[yypt-4 : yypt+1]
  2697  //line sql.y:1159
  2698  		{
  2699  			yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs}
  2700  		}
  2701  	case 210:
  2702  		yyDollar = yyS[yypt-6 : yypt+1]
  2703  //line sql.y:1163
  2704  		{
  2705  			yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
  2706  		}
  2707  	case 211:
  2708  		yyDollar = yyS[yypt-6 : yypt+1]
  2709  //line sql.y:1167
  2710  		{
  2711  			yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
  2712  		}
  2713  	case 212:
  2714  		yyDollar = yyS[yypt-6 : yypt+1]
  2715  //line sql.y:1171
  2716  		{
  2717  			yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str}
  2718  		}
  2719  	case 213:
  2720  		yyDollar = yyS[yypt-9 : yypt+1]
  2721  //line sql.y:1175
  2722  		{
  2723  			yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].str}
  2724  		}
  2725  	case 214:
  2726  		yyDollar = yyS[yypt-7 : yypt+1]
  2727  //line sql.y:1179
  2728  		{
  2729  			yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].str, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str}
  2730  		}
  2731  	case 215:
  2732  		yyDollar = yyS[yypt-5 : yypt+1]
  2733  //line sql.y:1183
  2734  		{
  2735  			yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr}
  2736  		}
  2737  	case 216:
  2738  		yyDollar = yyS[yypt-4 : yypt+1]
  2739  //line sql.y:1187
  2740  		{
  2741  			yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colIdent}
  2742  		}
  2743  	case 217:
  2744  		yyDollar = yyS[yypt-2 : yypt+1]
  2745  //line sql.y:1197
  2746  		{
  2747  			yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")}
  2748  		}
  2749  	case 218:
  2750  		yyDollar = yyS[yypt-2 : yypt+1]
  2751  //line sql.y:1201
  2752  		{
  2753  			yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")}
  2754  		}
  2755  	case 219:
  2756  		yyDollar = yyS[yypt-2 : yypt+1]
  2757  //line sql.y:1205
  2758  		{
  2759  			yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")}
  2760  		}
  2761  	case 220:
  2762  		yyDollar = yyS[yypt-2 : yypt+1]
  2763  //line sql.y:1209
  2764  		{
  2765  			yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")}
  2766  		}
  2767  	case 221:
  2768  		yyDollar = yyS[yypt-2 : yypt+1]
  2769  //line sql.y:1214
  2770  		{
  2771  			yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")}
  2772  		}
  2773  	case 222:
  2774  		yyDollar = yyS[yypt-2 : yypt+1]
  2775  //line sql.y:1219
  2776  		{
  2777  			yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")}
  2778  		}
  2779  	case 223:
  2780  		yyDollar = yyS[yypt-2 : yypt+1]
  2781  //line sql.y:1224
  2782  		{
  2783  			yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")}
  2784  		}
  2785  	case 224:
  2786  		yyDollar = yyS[yypt-2 : yypt+1]
  2787  //line sql.y:1229
  2788  		{
  2789  			yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")}
  2790  		}
  2791  	case 227:
  2792  		yyDollar = yyS[yypt-4 : yypt+1]
  2793  //line sql.y:1243
  2794  		{
  2795  			yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs}
  2796  		}
  2797  	case 228:
  2798  		yyDollar = yyS[yypt-4 : yypt+1]
  2799  //line sql.y:1247
  2800  		{
  2801  			yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs}
  2802  		}
  2803  	case 229:
  2804  		yyDollar = yyS[yypt-4 : yypt+1]
  2805  //line sql.y:1251
  2806  		{
  2807  			yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs}
  2808  		}
  2809  	case 230:
  2810  		yyDollar = yyS[yypt-4 : yypt+1]
  2811  //line sql.y:1255
  2812  		{
  2813  			yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs}
  2814  		}
  2815  	case 231:
  2816  		yyDollar = yyS[yypt-0 : yypt+1]
  2817  //line sql.y:1261
  2818  		{
  2819  			yyVAL.str = ""
  2820  		}
  2821  	case 232:
  2822  		yyDollar = yyS[yypt-3 : yypt+1]
  2823  //line sql.y:1265
  2824  		{
  2825  			yyVAL.str = BooleanModeStr
  2826  		}
  2827  	case 233:
  2828  		yyDollar = yyS[yypt-4 : yypt+1]
  2829  //line sql.y:1269
  2830  		{
  2831  			yyVAL.str = NaturalLanguageModeStr
  2832  		}
  2833  	case 234:
  2834  		yyDollar = yyS[yypt-7 : yypt+1]
  2835  //line sql.y:1273
  2836  		{
  2837  			yyVAL.str = NaturalLanguageModeWithQueryExpansionStr
  2838  		}
  2839  	case 235:
  2840  		yyDollar = yyS[yypt-3 : yypt+1]
  2841  //line sql.y:1277
  2842  		{
  2843  			yyVAL.str = QueryExpansionStr
  2844  		}
  2845  	case 236:
  2846  		yyDollar = yyS[yypt-1 : yypt+1]
  2847  //line sql.y:1284
  2848  		{
  2849  			yyVAL.convertType = &ConvertType{Type: yyDollar[1].str}
  2850  		}
  2851  	case 237:
  2852  		yyDollar = yyS[yypt-2 : yypt+1]
  2853  //line sql.y:1288
  2854  		{
  2855  			yyVAL.convertType = &ConvertType{Type: yyDollar[1].str}
  2856  		}
  2857  	case 238:
  2858  		yyDollar = yyS[yypt-4 : yypt+1]
  2859  //line sql.y:1292
  2860  		{
  2861  			yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Length: NewIntVal(yyDollar[3].bytes)}
  2862  		}
  2863  	case 239:
  2864  		yyDollar = yyS[yypt-5 : yypt+1]
  2865  //line sql.y:1296
  2866  		{
  2867  			yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Length: NewIntVal(yyDollar[3].bytes), Charset: yyDollar[5].str}
  2868  		}
  2869  	case 240:
  2870  		yyDollar = yyS[yypt-7 : yypt+1]
  2871  //line sql.y:1300
  2872  		{
  2873  			yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Length: NewIntVal(yyDollar[3].bytes), Charset: yyDollar[7].str, Operator: CharacterSetStr}
  2874  		}
  2875  	case 241:
  2876  		yyDollar = yyS[yypt-2 : yypt+1]
  2877  //line sql.y:1304
  2878  		{
  2879  			yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Charset: yyDollar[2].str}
  2880  		}
  2881  	case 242:
  2882  		yyDollar = yyS[yypt-4 : yypt+1]
  2883  //line sql.y:1308
  2884  		{
  2885  			yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Charset: yyDollar[4].str, Operator: CharacterSetStr}
  2886  		}
  2887  	case 243:
  2888  		yyDollar = yyS[yypt-6 : yypt+1]
  2889  //line sql.y:1312
  2890  		{
  2891  			yyVAL.convertType = &ConvertType{Type: yyDollar[1].str, Length: NewIntVal(yyDollar[3].bytes), Scale: NewIntVal(yyDollar[5].bytes)}
  2892  		}
  2893  	case 244:
  2894  		yyDollar = yyS[yypt-0 : yypt+1]
  2895  //line sql.y:1317
  2896  		{
  2897  			yyVAL.expr = nil
  2898  		}
  2899  	case 245:
  2900  		yyDollar = yyS[yypt-1 : yypt+1]
  2901  //line sql.y:1321
  2902  		{
  2903  			yyVAL.expr = yyDollar[1].expr
  2904  		}
  2905  	case 246:
  2906  		yyDollar = yyS[yypt-0 : yypt+1]
  2907  //line sql.y:1326
  2908  		{
  2909  			yyVAL.str = string("")
  2910  		}
  2911  	case 247:
  2912  		yyDollar = yyS[yypt-2 : yypt+1]
  2913  //line sql.y:1330
  2914  		{
  2915  			yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'"
  2916  		}
  2917  	case 248:
  2918  		yyDollar = yyS[yypt-1 : yypt+1]
  2919  //line sql.y:1336
  2920  		{
  2921  			yyVAL.whens = []*When{yyDollar[1].when}
  2922  		}
  2923  	case 249:
  2924  		yyDollar = yyS[yypt-2 : yypt+1]
  2925  //line sql.y:1340
  2926  		{
  2927  			yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when)
  2928  		}
  2929  	case 250:
  2930  		yyDollar = yyS[yypt-4 : yypt+1]
  2931  //line sql.y:1346
  2932  		{
  2933  			yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr}
  2934  		}
  2935  	case 251:
  2936  		yyDollar = yyS[yypt-0 : yypt+1]
  2937  //line sql.y:1351
  2938  		{
  2939  			yyVAL.expr = nil
  2940  		}
  2941  	case 252:
  2942  		yyDollar = yyS[yypt-2 : yypt+1]
  2943  //line sql.y:1355
  2944  		{
  2945  			yyVAL.expr = yyDollar[2].expr
  2946  		}
  2947  	case 253:
  2948  		yyDollar = yyS[yypt-1 : yypt+1]
  2949  //line sql.y:1361
  2950  		{
  2951  			yyVAL.colName = &ColName{Name: yyDollar[1].colIdent}
  2952  		}
  2953  	case 254:
  2954  		yyDollar = yyS[yypt-3 : yypt+1]
  2955  //line sql.y:1365
  2956  		{
  2957  			yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent}
  2958  		}
  2959  	case 255:
  2960  		yyDollar = yyS[yypt-5 : yypt+1]
  2961  //line sql.y:1369
  2962  		{
  2963  			yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent}
  2964  		}
  2965  	case 256:
  2966  		yyDollar = yyS[yypt-1 : yypt+1]
  2967  //line sql.y:1375
  2968  		{
  2969  			yyVAL.expr = NewStrVal(yyDollar[1].bytes)
  2970  		}
  2971  	case 257:
  2972  		yyDollar = yyS[yypt-1 : yypt+1]
  2973  //line sql.y:1379
  2974  		{
  2975  			yyVAL.expr = NewHexVal(yyDollar[1].bytes)
  2976  		}
  2977  	case 258:
  2978  		yyDollar = yyS[yypt-1 : yypt+1]
  2979  //line sql.y:1383
  2980  		{
  2981  			yyVAL.expr = NewIntVal(yyDollar[1].bytes)
  2982  		}
  2983  	case 259:
  2984  		yyDollar = yyS[yypt-1 : yypt+1]
  2985  //line sql.y:1387
  2986  		{
  2987  			yyVAL.expr = NewFloatVal(yyDollar[1].bytes)
  2988  		}
  2989  	case 260:
  2990  		yyDollar = yyS[yypt-1 : yypt+1]
  2991  //line sql.y:1391
  2992  		{
  2993  			yyVAL.expr = NewHexNum(yyDollar[1].bytes)
  2994  		}
  2995  	case 261:
  2996  		yyDollar = yyS[yypt-1 : yypt+1]
  2997  //line sql.y:1395
  2998  		{
  2999  			v := NewValArg(yyDollar[1].bytes)
  3000  			v.Seq = yylex.(*Tokenizer).posVarIndex
  3001  			yyVAL.expr = v
  3002  		}
  3003  	case 262:
  3004  		yyDollar = yyS[yypt-1 : yypt+1]
  3005  //line sql.y:1401
  3006  		{
  3007  			yyVAL.expr = &NullVal{}
  3008  		}
  3009  	case 263:
  3010  		yyDollar = yyS[yypt-1 : yypt+1]
  3011  //line sql.y:1407
  3012  		{
  3013  			// TODO(sougou): Deprecate this construct.
  3014  			if yyDollar[1].colIdent.Lowered() != "value" {
  3015  				yylex.Error("expecting value after next")
  3016  				return 1
  3017  			}
  3018  			yyVAL.expr = NewIntVal([]byte("1"))
  3019  		}
  3020  	case 264:
  3021  		yyDollar = yyS[yypt-2 : yypt+1]
  3022  //line sql.y:1416
  3023  		{
  3024  			yyVAL.expr = NewIntVal(yyDollar[1].bytes)
  3025  		}
  3026  	case 265:
  3027  		yyDollar = yyS[yypt-2 : yypt+1]
  3028  //line sql.y:1420
  3029  		{
  3030  			v := NewValArg(yyDollar[1].bytes)
  3031  			v.Seq = yylex.(*Tokenizer).posVarIndex
  3032  			yyVAL.expr = v
  3033  		}
  3034  	case 266:
  3035  		yyDollar = yyS[yypt-0 : yypt+1]
  3036  //line sql.y:1427
  3037  		{
  3038  			yyVAL.exprs = nil
  3039  		}
  3040  	case 267:
  3041  		yyDollar = yyS[yypt-3 : yypt+1]
  3042  //line sql.y:1431
  3043  		{
  3044  			yyVAL.exprs = yyDollar[3].exprs
  3045  		}
  3046  	case 268:
  3047  		yyDollar = yyS[yypt-0 : yypt+1]
  3048  //line sql.y:1436
  3049  		{
  3050  			yyVAL.expr = nil
  3051  		}
  3052  	case 269:
  3053  		yyDollar = yyS[yypt-2 : yypt+1]
  3054  //line sql.y:1440
  3055  		{
  3056  			yyVAL.expr = yyDollar[2].expr
  3057  		}
  3058  	case 270:
  3059  		yyDollar = yyS[yypt-0 : yypt+1]
  3060  //line sql.y:1445
  3061  		{
  3062  			yyVAL.orderBy = nil
  3063  		}
  3064  	case 271:
  3065  		yyDollar = yyS[yypt-3 : yypt+1]
  3066  //line sql.y:1449
  3067  		{
  3068  			yyVAL.orderBy = yyDollar[3].orderBy
  3069  		}
  3070  	case 272:
  3071  		yyDollar = yyS[yypt-1 : yypt+1]
  3072  //line sql.y:1455
  3073  		{
  3074  			yyVAL.orderBy = OrderBy{yyDollar[1].order}
  3075  		}
  3076  	case 273:
  3077  		yyDollar = yyS[yypt-3 : yypt+1]
  3078  //line sql.y:1459
  3079  		{
  3080  			yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order)
  3081  		}
  3082  	case 274:
  3083  		yyDollar = yyS[yypt-2 : yypt+1]
  3084  //line sql.y:1465
  3085  		{
  3086  			yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].str}
  3087  		}
  3088  	case 275:
  3089  		yyDollar = yyS[yypt-0 : yypt+1]
  3090  //line sql.y:1470
  3091  		{
  3092  			yyVAL.str = AscScr
  3093  		}
  3094  	case 276:
  3095  		yyDollar = yyS[yypt-1 : yypt+1]
  3096  //line sql.y:1474
  3097  		{
  3098  			yyVAL.str = AscScr
  3099  		}
  3100  	case 277:
  3101  		yyDollar = yyS[yypt-1 : yypt+1]
  3102  //line sql.y:1478
  3103  		{
  3104  			yyVAL.str = DescScr
  3105  		}
  3106  	case 278:
  3107  		yyDollar = yyS[yypt-0 : yypt+1]
  3108  //line sql.y:1483
  3109  		{
  3110  			yyVAL.limit = nil
  3111  		}
  3112  	case 279:
  3113  		yyDollar = yyS[yypt-2 : yypt+1]
  3114  //line sql.y:1487
  3115  		{
  3116  			yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr}
  3117  		}
  3118  	case 280:
  3119  		yyDollar = yyS[yypt-4 : yypt+1]
  3120  //line sql.y:1491
  3121  		{
  3122  			yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr}
  3123  		}
  3124  	case 281:
  3125  		yyDollar = yyS[yypt-4 : yypt+1]
  3126  //line sql.y:1495
  3127  		{
  3128  			yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr}
  3129  		}
  3130  	case 282:
  3131  		yyDollar = yyS[yypt-0 : yypt+1]
  3132  //line sql.y:1500
  3133  		{
  3134  			yyVAL.str = ""
  3135  		}
  3136  	case 283:
  3137  		yyDollar = yyS[yypt-2 : yypt+1]
  3138  //line sql.y:1504
  3139  		{
  3140  			yyVAL.str = ForUpdateStr
  3141  		}
  3142  	case 284:
  3143  		yyDollar = yyS[yypt-4 : yypt+1]
  3144  //line sql.y:1508
  3145  		{
  3146  			yyVAL.str = ShareModeStr
  3147  		}
  3148  	case 285:
  3149  		yyDollar = yyS[yypt-2 : yypt+1]
  3150  //line sql.y:1521
  3151  		{
  3152  			yyVAL.ins = &Insert{Rows: yyDollar[2].values}
  3153  		}
  3154  	case 286:
  3155  		yyDollar = yyS[yypt-1 : yypt+1]
  3156  //line sql.y:1525
  3157  		{
  3158  			yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt}
  3159  		}
  3160  	case 287:
  3161  		yyDollar = yyS[yypt-3 : yypt+1]
  3162  //line sql.y:1529
  3163  		{
  3164  			// Drop the redundant parenthesis.
  3165  			yyVAL.ins = &Insert{Rows: yyDollar[2].selStmt}
  3166  		}
  3167  	case 288:
  3168  		yyDollar = yyS[yypt-5 : yypt+1]
  3169  //line sql.y:1534
  3170  		{
  3171  			yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values}
  3172  		}
  3173  	case 289:
  3174  		yyDollar = yyS[yypt-4 : yypt+1]
  3175  //line sql.y:1538
  3176  		{
  3177  			yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt}
  3178  		}
  3179  	case 290:
  3180  		yyDollar = yyS[yypt-6 : yypt+1]
  3181  //line sql.y:1542
  3182  		{
  3183  			// Drop the redundant parenthesis.
  3184  			yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].selStmt}
  3185  		}
  3186  	case 291:
  3187  		yyDollar = yyS[yypt-1 : yypt+1]
  3188  //line sql.y:1549
  3189  		{
  3190  			yyVAL.columns = Columns{yyDollar[1].colIdent}
  3191  		}
  3192  	case 292:
  3193  		yyDollar = yyS[yypt-3 : yypt+1]
  3194  //line sql.y:1553
  3195  		{
  3196  			yyVAL.columns = Columns{yyDollar[3].colIdent}
  3197  		}
  3198  	case 293:
  3199  		yyDollar = yyS[yypt-3 : yypt+1]
  3200  //line sql.y:1557
  3201  		{
  3202  			yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent)
  3203  		}
  3204  	case 294:
  3205  		yyDollar = yyS[yypt-5 : yypt+1]
  3206  //line sql.y:1561
  3207  		{
  3208  			yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent)
  3209  		}
  3210  	case 295:
  3211  		yyDollar = yyS[yypt-0 : yypt+1]
  3212  //line sql.y:1566
  3213  		{
  3214  			yyVAL.updateExprs = nil
  3215  		}
  3216  	case 296:
  3217  		yyDollar = yyS[yypt-5 : yypt+1]
  3218  //line sql.y:1570
  3219  		{
  3220  			yyVAL.updateExprs = yyDollar[5].updateExprs
  3221  		}
  3222  	case 297:
  3223  		yyDollar = yyS[yypt-1 : yypt+1]
  3224  //line sql.y:1576
  3225  		{
  3226  			yyVAL.values = Values{yyDollar[1].valTuple}
  3227  		}
  3228  	case 298:
  3229  		yyDollar = yyS[yypt-3 : yypt+1]
  3230  //line sql.y:1580
  3231  		{
  3232  			yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple)
  3233  		}
  3234  	case 299:
  3235  		yyDollar = yyS[yypt-1 : yypt+1]
  3236  //line sql.y:1586
  3237  		{
  3238  			yyVAL.valTuple = yyDollar[1].valTuple
  3239  		}
  3240  	case 300:
  3241  		yyDollar = yyS[yypt-2 : yypt+1]
  3242  //line sql.y:1590
  3243  		{
  3244  			yyVAL.valTuple = ValTuple{}
  3245  		}
  3246  	case 301:
  3247  		yyDollar = yyS[yypt-3 : yypt+1]
  3248  //line sql.y:1596
  3249  		{
  3250  			yyVAL.valTuple = ValTuple(yyDollar[2].exprs)
  3251  		}
  3252  	case 302:
  3253  		yyDollar = yyS[yypt-1 : yypt+1]
  3254  //line sql.y:1602
  3255  		{
  3256  			if len(yyDollar[1].valTuple) == 1 {
  3257  				yyVAL.expr = &ParenExpr{yyDollar[1].valTuple[0]}
  3258  			} else {
  3259  				yyVAL.expr = yyDollar[1].valTuple
  3260  			}
  3261  		}
  3262  	case 303:
  3263  		yyDollar = yyS[yypt-1 : yypt+1]
  3264  //line sql.y:1612
  3265  		{
  3266  			yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr}
  3267  		}
  3268  	case 304:
  3269  		yyDollar = yyS[yypt-3 : yypt+1]
  3270  //line sql.y:1616
  3271  		{
  3272  			yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr)
  3273  		}
  3274  	case 305:
  3275  		yyDollar = yyS[yypt-3 : yypt+1]
  3276  //line sql.y:1622
  3277  		{
  3278  			yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr}
  3279  		}
  3280  	case 308:
  3281  		yyDollar = yyS[yypt-0 : yypt+1]
  3282  //line sql.y:1631
  3283  		{
  3284  			yyVAL.byt = 0
  3285  		}
  3286  	case 309:
  3287  		yyDollar = yyS[yypt-2 : yypt+1]
  3288  //line sql.y:1633
  3289  		{
  3290  			yyVAL.byt = 1
  3291  		}
  3292  	case 310:
  3293  		yyDollar = yyS[yypt-0 : yypt+1]
  3294  //line sql.y:1636
  3295  		{
  3296  			yyVAL.empty = struct{}{}
  3297  		}
  3298  	case 311:
  3299  		yyDollar = yyS[yypt-3 : yypt+1]
  3300  //line sql.y:1638
  3301  		{
  3302  			yyVAL.empty = struct{}{}
  3303  		}
  3304  	case 312:
  3305  		yyDollar = yyS[yypt-0 : yypt+1]
  3306  //line sql.y:1641
  3307  		{
  3308  			yyVAL.str = ""
  3309  		}
  3310  	case 313:
  3311  		yyDollar = yyS[yypt-1 : yypt+1]
  3312  //line sql.y:1643
  3313  		{
  3314  			yyVAL.str = IgnoreStr
  3315  		}
  3316  	case 314:
  3317  		yyDollar = yyS[yypt-1 : yypt+1]
  3318  //line sql.y:1647
  3319  		{
  3320  			yyVAL.empty = struct{}{}
  3321  		}
  3322  	case 315:
  3323  		yyDollar = yyS[yypt-1 : yypt+1]
  3324  //line sql.y:1649
  3325  		{
  3326  			yyVAL.empty = struct{}{}
  3327  		}
  3328  	case 316:
  3329  		yyDollar = yyS[yypt-1 : yypt+1]
  3330  //line sql.y:1651
  3331  		{
  3332  			yyVAL.empty = struct{}{}
  3333  		}
  3334  	case 317:
  3335  		yyDollar = yyS[yypt-1 : yypt+1]
  3336  //line sql.y:1653
  3337  		{
  3338  			yyVAL.empty = struct{}{}
  3339  		}
  3340  	case 318:
  3341  		yyDollar = yyS[yypt-1 : yypt+1]
  3342  //line sql.y:1655
  3343  		{
  3344  			yyVAL.empty = struct{}{}
  3345  		}
  3346  	case 319:
  3347  		yyDollar = yyS[yypt-1 : yypt+1]
  3348  //line sql.y:1657
  3349  		{
  3350  			yyVAL.empty = struct{}{}
  3351  		}
  3352  	case 320:
  3353  		yyDollar = yyS[yypt-1 : yypt+1]
  3354  //line sql.y:1659
  3355  		{
  3356  			yyVAL.empty = struct{}{}
  3357  		}
  3358  	case 321:
  3359  		yyDollar = yyS[yypt-0 : yypt+1]
  3360  //line sql.y:1662
  3361  		{
  3362  			yyVAL.empty = struct{}{}
  3363  		}
  3364  	case 322:
  3365  		yyDollar = yyS[yypt-1 : yypt+1]
  3366  //line sql.y:1664
  3367  		{
  3368  			yyVAL.empty = struct{}{}
  3369  		}
  3370  	case 323:
  3371  		yyDollar = yyS[yypt-1 : yypt+1]
  3372  //line sql.y:1666
  3373  		{
  3374  			yyVAL.empty = struct{}{}
  3375  		}
  3376  	case 324:
  3377  		yyDollar = yyS[yypt-1 : yypt+1]
  3378  //line sql.y:1670
  3379  		{
  3380  			yyVAL.empty = struct{}{}
  3381  		}
  3382  	case 325:
  3383  		yyDollar = yyS[yypt-1 : yypt+1]
  3384  //line sql.y:1672
  3385  		{
  3386  			yyVAL.empty = struct{}{}
  3387  		}
  3388  	case 326:
  3389  		yyDollar = yyS[yypt-0 : yypt+1]
  3390  //line sql.y:1675
  3391  		{
  3392  			yyVAL.empty = struct{}{}
  3393  		}
  3394  	case 327:
  3395  		yyDollar = yyS[yypt-1 : yypt+1]
  3396  //line sql.y:1677
  3397  		{
  3398  			yyVAL.empty = struct{}{}
  3399  		}
  3400  	case 328:
  3401  		yyDollar = yyS[yypt-1 : yypt+1]
  3402  //line sql.y:1679
  3403  		{
  3404  			yyVAL.empty = struct{}{}
  3405  		}
  3406  	case 329:
  3407  		yyDollar = yyS[yypt-0 : yypt+1]
  3408  //line sql.y:1682
  3409  		{
  3410  			yyVAL.empty = struct{}{}
  3411  		}
  3412  	case 330:
  3413  		yyDollar = yyS[yypt-2 : yypt+1]
  3414  //line sql.y:1684
  3415  		{
  3416  			yyVAL.empty = struct{}{}
  3417  		}
  3418  	case 331:
  3419  		yyDollar = yyS[yypt-1 : yypt+1]
  3420  //line sql.y:1688
  3421  		{
  3422  			yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
  3423  		}
  3424  	case 332:
  3425  		yyDollar = yyS[yypt-1 : yypt+1]
  3426  //line sql.y:1692
  3427  		{
  3428  			yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
  3429  		}
  3430  	case 334:
  3431  		yyDollar = yyS[yypt-1 : yypt+1]
  3432  //line sql.y:1699
  3433  		{
  3434  			yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
  3435  		}
  3436  	case 335:
  3437  		yyDollar = yyS[yypt-1 : yypt+1]
  3438  //line sql.y:1705
  3439  		{
  3440  			yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
  3441  		}
  3442  	case 336:
  3443  		yyDollar = yyS[yypt-1 : yypt+1]
  3444  //line sql.y:1709
  3445  		{
  3446  			yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
  3447  		}
  3448  	case 338:
  3449  		yyDollar = yyS[yypt-1 : yypt+1]
  3450  //line sql.y:1716
  3451  		{
  3452  			yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
  3453  		}
  3454  	case 445:
  3455  		yyDollar = yyS[yypt-1 : yypt+1]
  3456  //line sql.y:1847
  3457  		{
  3458  			if incNesting(yylex) {
  3459  				yylex.Error("max nesting level reached")
  3460  				return 1
  3461  			}
  3462  		}
  3463  	case 446:
  3464  		yyDollar = yyS[yypt-1 : yypt+1]
  3465  //line sql.y:1856
  3466  		{
  3467  			decNesting(yylex)
  3468  		}
  3469  	case 447:
  3470  		yyDollar = yyS[yypt-0 : yypt+1]
  3471  //line sql.y:1861
  3472  		{
  3473  			forceEOF(yylex)
  3474  		}
  3475  	case 448:
  3476  		yyDollar = yyS[yypt-0 : yypt+1]
  3477  //line sql.y:1866
  3478  		{
  3479  			forceEOF(yylex)
  3480  		}
  3481  	case 449:
  3482  		yyDollar = yyS[yypt-1 : yypt+1]
  3483  //line sql.y:1870
  3484  		{
  3485  			forceEOF(yylex)
  3486  		}
  3487  	case 450:
  3488  		yyDollar = yyS[yypt-1 : yypt+1]
  3489  //line sql.y:1874
  3490  		{
  3491  			forceEOF(yylex)
  3492  		}
  3493  	}
  3494  	goto yystack /* stack new state and value */
  3495  }