github.com/mithrandie/csvq@v1.18.1/lib/parser/parser.go (about)

     1  // Code generated by goyacc -o lib/parser/parser.go -v lib/parser/parser.output lib/parser/parser.y. DO NOT EDIT.
     2  
     3  //line lib/parser/parser.y:2
     4  package parser
     5  
     6  import __yyfmt__ "fmt"
     7  
     8  //line lib/parser/parser.y:2
     9  
    10  import (
    11  	"strconv"
    12  	"strings"
    13  
    14  	"github.com/mithrandie/csvq/lib/value"
    15  )
    16  
    17  //line lib/parser/parser.y:12
    18  type yySymType struct {
    19  	yys         int
    20  	program     []Statement
    21  	statement   Statement
    22  	queryexpr   QueryExpression
    23  	queryexprs  []QueryExpression
    24  	expression  Expression
    25  	expressions []Expression
    26  	identifier  Identifier
    27  	table       Table
    28  	variable    Variable
    29  	variables   []Variable
    30  	varassign   VariableAssignment
    31  	varassigns  []VariableAssignment
    32  	envvar      EnvironmentVariable
    33  	flag        Flag
    34  	updateset   UpdateSet
    35  	updatesets  []UpdateSet
    36  	columndef   ColumnDefault
    37  	columndefs  []ColumnDefault
    38  	elseif      []ElseIf
    39  	elseexpr    Else
    40  	casewhen    []CaseWhen
    41  	caseelse    CaseElse
    42  	fetchpos    FetchPosition
    43  	replaceval  ReplaceValue
    44  	replacevals []ReplaceValue
    45  	token       Token
    46  	bool        bool
    47  }
    48  
    49  const IDENTIFIER = 57346
    50  const STRING = 57347
    51  const INTEGER = 57348
    52  const FLOAT = 57349
    53  const BOOLEAN = 57350
    54  const TERNARY = 57351
    55  const DATETIME = 57352
    56  const VARIABLE = 57353
    57  const FLAG = 57354
    58  const ENVIRONMENT_VARIABLE = 57355
    59  const RUNTIME_INFORMATION = 57356
    60  const EXTERNAL_COMMAND = 57357
    61  const PLACEHOLDER = 57358
    62  const CONSTANT = 57359
    63  const TABLE_FUNCTION = 57360
    64  const URL = 57361
    65  const SELECT = 57362
    66  const FROM = 57363
    67  const UPDATE = 57364
    68  const SET = 57365
    69  const UNSET = 57366
    70  const DELETE = 57367
    71  const WHERE = 57368
    72  const INSERT = 57369
    73  const INTO = 57370
    74  const VALUES = 57371
    75  const REPLACE = 57372
    76  const AS = 57373
    77  const DUAL = 57374
    78  const STDIN = 57375
    79  const RECURSIVE = 57376
    80  const CREATE = 57377
    81  const ADD = 57378
    82  const DROP = 57379
    83  const ALTER = 57380
    84  const TABLE = 57381
    85  const FIRST = 57382
    86  const LAST = 57383
    87  const AFTER = 57384
    88  const BEFORE = 57385
    89  const DEFAULT = 57386
    90  const RENAME = 57387
    91  const TO = 57388
    92  const VIEW = 57389
    93  const ORDER = 57390
    94  const GROUP = 57391
    95  const HAVING = 57392
    96  const BY = 57393
    97  const ASC = 57394
    98  const DESC = 57395
    99  const LIMIT = 57396
   100  const OFFSET = 57397
   101  const PERCENT = 57398
   102  const JOIN = 57399
   103  const INNER = 57400
   104  const OUTER = 57401
   105  const LEFT = 57402
   106  const RIGHT = 57403
   107  const FULL = 57404
   108  const CROSS = 57405
   109  const ON = 57406
   110  const USING = 57407
   111  const NATURAL = 57408
   112  const LATERAL = 57409
   113  const UNION = 57410
   114  const INTERSECT = 57411
   115  const EXCEPT = 57412
   116  const ALL = 57413
   117  const ANY = 57414
   118  const EXISTS = 57415
   119  const IN = 57416
   120  const AND = 57417
   121  const OR = 57418
   122  const NOT = 57419
   123  const BETWEEN = 57420
   124  const LIKE = 57421
   125  const IS = 57422
   126  const NULL = 57423
   127  const DISTINCT = 57424
   128  const WITH = 57425
   129  const RANGE = 57426
   130  const UNBOUNDED = 57427
   131  const PRECEDING = 57428
   132  const FOLLOWING = 57429
   133  const CURRENT = 57430
   134  const ROW = 57431
   135  const CASE = 57432
   136  const IF = 57433
   137  const ELSEIF = 57434
   138  const WHILE = 57435
   139  const WHEN = 57436
   140  const THEN = 57437
   141  const ELSE = 57438
   142  const DO = 57439
   143  const END = 57440
   144  const DECLARE = 57441
   145  const CURSOR = 57442
   146  const FOR = 57443
   147  const FETCH = 57444
   148  const OPEN = 57445
   149  const CLOSE = 57446
   150  const DISPOSE = 57447
   151  const PREPARE = 57448
   152  const NEXT = 57449
   153  const PRIOR = 57450
   154  const ABSOLUTE = 57451
   155  const RELATIVE = 57452
   156  const SEPARATOR = 57453
   157  const PARTITION = 57454
   158  const OVER = 57455
   159  const COMMIT = 57456
   160  const ROLLBACK = 57457
   161  const CONTINUE = 57458
   162  const BREAK = 57459
   163  const EXIT = 57460
   164  const ECHO = 57461
   165  const PRINT = 57462
   166  const PRINTF = 57463
   167  const SOURCE = 57464
   168  const EXECUTE = 57465
   169  const CHDIR = 57466
   170  const PWD = 57467
   171  const RELOAD = 57468
   172  const REMOVE = 57469
   173  const SYNTAX = 57470
   174  const TRIGGER = 57471
   175  const FUNCTION = 57472
   176  const AGGREGATE = 57473
   177  const BEGIN = 57474
   178  const RETURN = 57475
   179  const IGNORE = 57476
   180  const WITHIN = 57477
   181  const VAR = 57478
   182  const SHOW = 57479
   183  const TIES = 57480
   184  const NULLS = 57481
   185  const ROWS = 57482
   186  const ONLY = 57483
   187  const CSV = 57484
   188  const JSON = 57485
   189  const JSONL = 57486
   190  const FIXED = 57487
   191  const LTSV = 57488
   192  const CSV_INLINE = 57489
   193  const JSON_INLINE = 57490
   194  const JSON_TABLE = 57491
   195  const JSON_ROW = 57492
   196  const SUBSTRING = 57493
   197  const COUNT = 57494
   198  const JSON_OBJECT = 57495
   199  const AGGREGATE_FUNCTION = 57496
   200  const LIST_FUNCTION = 57497
   201  const ANALYTIC_FUNCTION = 57498
   202  const FUNCTION_NTH = 57499
   203  const FUNCTION_WITH_INS = 57500
   204  const COMPARISON_OP = 57501
   205  const STRING_OP = 57502
   206  const SUBSTITUTION_OP = 57503
   207  const UMINUS = 57504
   208  const UPLUS = 57505
   209  
   210  var yyToknames = [...]string{
   211  	"$end",
   212  	"error",
   213  	"$unk",
   214  	"IDENTIFIER",
   215  	"STRING",
   216  	"INTEGER",
   217  	"FLOAT",
   218  	"BOOLEAN",
   219  	"TERNARY",
   220  	"DATETIME",
   221  	"VARIABLE",
   222  	"FLAG",
   223  	"ENVIRONMENT_VARIABLE",
   224  	"RUNTIME_INFORMATION",
   225  	"EXTERNAL_COMMAND",
   226  	"PLACEHOLDER",
   227  	"CONSTANT",
   228  	"TABLE_FUNCTION",
   229  	"URL",
   230  	"SELECT",
   231  	"FROM",
   232  	"UPDATE",
   233  	"SET",
   234  	"UNSET",
   235  	"DELETE",
   236  	"WHERE",
   237  	"INSERT",
   238  	"INTO",
   239  	"VALUES",
   240  	"REPLACE",
   241  	"AS",
   242  	"DUAL",
   243  	"STDIN",
   244  	"RECURSIVE",
   245  	"CREATE",
   246  	"ADD",
   247  	"DROP",
   248  	"ALTER",
   249  	"TABLE",
   250  	"FIRST",
   251  	"LAST",
   252  	"AFTER",
   253  	"BEFORE",
   254  	"DEFAULT",
   255  	"RENAME",
   256  	"TO",
   257  	"VIEW",
   258  	"ORDER",
   259  	"GROUP",
   260  	"HAVING",
   261  	"BY",
   262  	"ASC",
   263  	"DESC",
   264  	"LIMIT",
   265  	"OFFSET",
   266  	"PERCENT",
   267  	"JOIN",
   268  	"INNER",
   269  	"OUTER",
   270  	"LEFT",
   271  	"RIGHT",
   272  	"FULL",
   273  	"CROSS",
   274  	"ON",
   275  	"USING",
   276  	"NATURAL",
   277  	"LATERAL",
   278  	"UNION",
   279  	"INTERSECT",
   280  	"EXCEPT",
   281  	"ALL",
   282  	"ANY",
   283  	"EXISTS",
   284  	"IN",
   285  	"AND",
   286  	"OR",
   287  	"NOT",
   288  	"BETWEEN",
   289  	"LIKE",
   290  	"IS",
   291  	"NULL",
   292  	"DISTINCT",
   293  	"WITH",
   294  	"RANGE",
   295  	"UNBOUNDED",
   296  	"PRECEDING",
   297  	"FOLLOWING",
   298  	"CURRENT",
   299  	"ROW",
   300  	"CASE",
   301  	"IF",
   302  	"ELSEIF",
   303  	"WHILE",
   304  	"WHEN",
   305  	"THEN",
   306  	"ELSE",
   307  	"DO",
   308  	"END",
   309  	"DECLARE",
   310  	"CURSOR",
   311  	"FOR",
   312  	"FETCH",
   313  	"OPEN",
   314  	"CLOSE",
   315  	"DISPOSE",
   316  	"PREPARE",
   317  	"NEXT",
   318  	"PRIOR",
   319  	"ABSOLUTE",
   320  	"RELATIVE",
   321  	"SEPARATOR",
   322  	"PARTITION",
   323  	"OVER",
   324  	"COMMIT",
   325  	"ROLLBACK",
   326  	"CONTINUE",
   327  	"BREAK",
   328  	"EXIT",
   329  	"ECHO",
   330  	"PRINT",
   331  	"PRINTF",
   332  	"SOURCE",
   333  	"EXECUTE",
   334  	"CHDIR",
   335  	"PWD",
   336  	"RELOAD",
   337  	"REMOVE",
   338  	"SYNTAX",
   339  	"TRIGGER",
   340  	"FUNCTION",
   341  	"AGGREGATE",
   342  	"BEGIN",
   343  	"RETURN",
   344  	"IGNORE",
   345  	"WITHIN",
   346  	"VAR",
   347  	"SHOW",
   348  	"TIES",
   349  	"NULLS",
   350  	"ROWS",
   351  	"ONLY",
   352  	"CSV",
   353  	"JSON",
   354  	"JSONL",
   355  	"FIXED",
   356  	"LTSV",
   357  	"CSV_INLINE",
   358  	"JSON_INLINE",
   359  	"JSON_TABLE",
   360  	"JSON_ROW",
   361  	"SUBSTRING",
   362  	"COUNT",
   363  	"JSON_OBJECT",
   364  	"AGGREGATE_FUNCTION",
   365  	"LIST_FUNCTION",
   366  	"ANALYTIC_FUNCTION",
   367  	"FUNCTION_NTH",
   368  	"FUNCTION_WITH_INS",
   369  	"COMPARISON_OP",
   370  	"STRING_OP",
   371  	"SUBSTITUTION_OP",
   372  	"UMINUS",
   373  	"UPLUS",
   374  	"';'",
   375  	"'='",
   376  	"'-'",
   377  	"'+'",
   378  	"'*'",
   379  	"'/'",
   380  	"'%'",
   381  	"'!'",
   382  	"'('",
   383  	"')'",
   384  	"','",
   385  	"'.'",
   386  }
   387  
   388  var yyStatenames = [...]string{}
   389  
   390  const yyEofCode = 1
   391  const yyErrCode = 2
   392  const yyInitialStackSize = 16
   393  
   394  //line lib/parser/parser.y:2837
   395  
   396  func SetDebugLevel(level int, verbose bool) {
   397  	yyDebug = level
   398  	yyErrorVerbose = verbose
   399  }
   400  
   401  func Parse(s string, sourceFile string, forPrepared bool, ansiQuotes bool) ([]Statement, int, error) {
   402  	l := new(Lexer)
   403  	l.Init(s, sourceFile, forPrepared, ansiQuotes)
   404  	yyParse(l)
   405  	return l.program, l.HolderNumber(), l.err
   406  }
   407  
   408  //line yacctab:1
   409  var yyExca = [...]int{
   410  	-1, 0,
   411  	1, 1,
   412  	-2, 221,
   413  	-1, 1,
   414  	1, -1,
   415  	-2, 0,
   416  	-1, 21,
   417  	1, 26,
   418  	92, 26,
   419  	94, 26,
   420  	96, 26,
   421  	98, 26,
   422  	164, 26,
   423  	-2, 240,
   424  	-1, 27,
   425  	68, 189,
   426  	69, 189,
   427  	70, 189,
   428  	-2, 201,
   429  	-1, 35,
   430  	1, 78,
   431  	92, 78,
   432  	94, 78,
   433  	96, 78,
   434  	98, 78,
   435  	164, 78,
   436  	-2, 253,
   437  	-1, 61,
   438  	68, 190,
   439  	69, 190,
   440  	70, 190,
   441  	-2, 245,
   442  	-1, 123,
   443  	22, 221,
   444  	25, 221,
   445  	27, 221,
   446  	-2, 1,
   447  	-1, 137,
   448  	68, 189,
   449  	69, 189,
   450  	70, 189,
   451  	-2, 201,
   452  	-1, 177,
   453  	1, 123,
   454  	92, 123,
   455  	94, 123,
   456  	96, 123,
   457  	98, 123,
   458  	164, 123,
   459  	-2, 234,
   460  	-1, 178,
   461  	1, 164,
   462  	92, 164,
   463  	94, 164,
   464  	96, 164,
   465  	98, 164,
   466  	164, 164,
   467  	-2, 240,
   468  	-1, 183,
   469  	1, 157,
   470  	92, 157,
   471  	94, 157,
   472  	96, 157,
   473  	98, 157,
   474  	164, 157,
   475  	-2, 240,
   476  	-1, 184,
   477  	1, 158,
   478  	92, 158,
   479  	94, 158,
   480  	96, 158,
   481  	98, 158,
   482  	164, 158,
   483  	-2, 240,
   484  	-1, 185,
   485  	1, 159,
   486  	92, 159,
   487  	94, 159,
   488  	96, 159,
   489  	98, 159,
   490  	164, 159,
   491  	-2, 240,
   492  	-1, 186,
   493  	1, 162,
   494  	92, 162,
   495  	94, 162,
   496  	96, 162,
   497  	98, 162,
   498  	164, 162,
   499  	-2, 234,
   500  	-1, 187,
   501  	1, 163,
   502  	92, 163,
   503  	94, 163,
   504  	96, 163,
   505  	98, 163,
   506  	164, 163,
   507  	-2, 240,
   508  	-1, 190,
   509  	1, 170,
   510  	92, 170,
   511  	94, 170,
   512  	96, 170,
   513  	98, 170,
   514  	164, 170,
   515  	-2, 234,
   516  	-1, 191,
   517  	1, 171,
   518  	92, 171,
   519  	94, 171,
   520  	96, 171,
   521  	98, 171,
   522  	164, 171,
   523  	-2, 240,
   524  	-1, 257,
   525  	92, 1,
   526  	96, 1,
   527  	98, 1,
   528  	-2, 221,
   529  	-1, 282,
   530  	172, 362,
   531  	-2, 489,
   532  	-1, 283,
   533  	172, 363,
   534  	-2, 490,
   535  	-1, 284,
   536  	172, 364,
   537  	-2, 491,
   538  	-1, 285,
   539  	172, 365,
   540  	-2, 492,
   541  	-1, 286,
   542  	172, 366,
   543  	-2, 493,
   544  	-1, 297,
   545  	57, 510,
   546  	-2, 425,
   547  	-1, 334,
   548  	4, 145,
   549  	138, 145,
   550  	139, 145,
   551  	140, 145,
   552  	142, 145,
   553  	143, 145,
   554  	144, 145,
   555  	145, 145,
   556  	146, 145,
   557  	-2, 240,
   558  	-1, 335,
   559  	4, 146,
   560  	138, 146,
   561  	139, 146,
   562  	140, 146,
   563  	142, 146,
   564  	143, 146,
   565  	144, 146,
   566  	145, 146,
   567  	146, 146,
   568  	-2, 240,
   569  	-1, 345,
   570  	1, 175,
   571  	92, 175,
   572  	94, 175,
   573  	96, 175,
   574  	98, 175,
   575  	164, 175,
   576  	-2, 240,
   577  	-1, 352,
   578  	98, 4,
   579  	-2, 221,
   580  	-1, 371,
   581  	74, 0,
   582  	78, 0,
   583  	79, 0,
   584  	80, 0,
   585  	159, 0,
   586  	165, 0,
   587  	-2, 281,
   588  	-1, 372,
   589  	74, 0,
   590  	78, 0,
   591  	79, 0,
   592  	80, 0,
   593  	159, 0,
   594  	165, 0,
   595  	-2, 283,
   596  	-1, 381,
   597  	74, 0,
   598  	78, 0,
   599  	79, 0,
   600  	80, 0,
   601  	159, 0,
   602  	165, 0,
   603  	-2, 293,
   604  	-1, 420,
   605  	98, 1,
   606  	-2, 221,
   607  	-1, 427,
   608  	1, 211,
   609  	55, 211,
   610  	83, 211,
   611  	92, 211,
   612  	94, 211,
   613  	96, 211,
   614  	98, 211,
   615  	101, 211,
   616  	141, 211,
   617  	164, 211,
   618  	173, 211,
   619  	-2, 240,
   620  	-1, 428,
   621  	1, 216,
   622  	92, 216,
   623  	94, 216,
   624  	96, 216,
   625  	98, 216,
   626  	101, 216,
   627  	102, 216,
   628  	164, 216,
   629  	173, 216,
   630  	-2, 240,
   631  	-1, 459,
   632  	68, 190,
   633  	69, 190,
   634  	70, 190,
   635  	-2, 382,
   636  	-1, 480,
   637  	1, 80,
   638  	92, 80,
   639  	94, 80,
   640  	96, 80,
   641  	98, 80,
   642  	164, 80,
   643  	-2, 240,
   644  	-1, 481,
   645  	1, 81,
   646  	92, 81,
   647  	94, 81,
   648  	96, 81,
   649  	98, 81,
   650  	164, 81,
   651  	-2, 234,
   652  	-1, 482,
   653  	1, 82,
   654  	92, 82,
   655  	94, 82,
   656  	96, 82,
   657  	98, 82,
   658  	164, 82,
   659  	-2, 240,
   660  	-1, 483,
   661  	1, 83,
   662  	92, 83,
   663  	94, 83,
   664  	96, 83,
   665  	98, 83,
   666  	164, 83,
   667  	-2, 234,
   668  	-1, 484,
   669  	1, 150,
   670  	92, 150,
   671  	94, 150,
   672  	96, 150,
   673  	98, 150,
   674  	164, 150,
   675  	-2, 234,
   676  	-1, 485,
   677  	1, 151,
   678  	92, 151,
   679  	94, 151,
   680  	96, 151,
   681  	98, 151,
   682  	164, 151,
   683  	-2, 240,
   684  	-1, 486,
   685  	1, 152,
   686  	92, 152,
   687  	94, 152,
   688  	96, 152,
   689  	98, 152,
   690  	164, 152,
   691  	-2, 234,
   692  	-1, 487,
   693  	1, 153,
   694  	92, 153,
   695  	94, 153,
   696  	96, 153,
   697  	98, 153,
   698  	164, 153,
   699  	-2, 240,
   700  	-1, 490,
   701  	1, 118,
   702  	92, 118,
   703  	94, 118,
   704  	96, 118,
   705  	98, 118,
   706  	164, 118,
   707  	174, 118,
   708  	-2, 240,
   709  	-1, 495,
   710  	1, 423,
   711  	92, 423,
   712  	94, 423,
   713  	96, 423,
   714  	98, 423,
   715  	164, 423,
   716  	-2, 240,
   717  	-1, 502,
   718  	1, 176,
   719  	92, 176,
   720  	94, 176,
   721  	96, 176,
   722  	98, 176,
   723  	164, 176,
   724  	-2, 240,
   725  	-1, 534,
   726  	74, 0,
   727  	78, 0,
   728  	79, 0,
   729  	80, 0,
   730  	159, 0,
   731  	165, 0,
   732  	-2, 294,
   733  	-1, 560,
   734  	98, 1,
   735  	-2, 221,
   736  	-1, 567,
   737  	94, 1,
   738  	96, 1,
   739  	98, 1,
   740  	-2, 221,
   741  	-1, 597,
   742  	173, 358,
   743  	174, 358,
   744  	-2, 234,
   745  	-1, 615,
   746  	57, 510,
   747  	-2, 385,
   748  	-1, 655,
   749  	22, 221,
   750  	25, 221,
   751  	27, 221,
   752  	-2, 4,
   753  	-1, 658,
   754  	98, 4,
   755  	-2, 221,
   756  	-1, 659,
   757  	98, 4,
   758  	-2, 221,
   759  	-1, 684,
   760  	173, 263,
   761  	174, 263,
   762  	-2, 190,
   763  	-1, 760,
   764  	92, 4,
   765  	96, 4,
   766  	98, 4,
   767  	-2, 221,
   768  	-1, 765,
   769  	98, 4,
   770  	-2, 221,
   771  	-1, 766,
   772  	98, 4,
   773  	-2, 221,
   774  	-1, 792,
   775  	92, 1,
   776  	96, 1,
   777  	98, 1,
   778  	-2, 221,
   779  	-1, 829,
   780  	20, 521,
   781  	83, 521,
   782  	172, 521,
   783  	-2, 87,
   784  	-1, 837,
   785  	1, 95,
   786  	92, 95,
   787  	94, 95,
   788  	96, 95,
   789  	98, 95,
   790  	164, 95,
   791  	-2, 234,
   792  	-1, 838,
   793  	1, 96,
   794  	92, 96,
   795  	94, 96,
   796  	96, 96,
   797  	98, 96,
   798  	164, 96,
   799  	-2, 240,
   800  	-1, 842,
   801  	98, 6,
   802  	-2, 221,
   803  	-1, 848,
   804  	173, 129,
   805  	174, 129,
   806  	-2, 240,
   807  	-1, 853,
   808  	98, 4,
   809  	-2, 221,
   810  	-1, 923,
   811  	98, 6,
   812  	-2, 221,
   813  	-1, 924,
   814  	98, 6,
   815  	-2, 221,
   816  	-1, 928,
   817  	98, 4,
   818  	-2, 221,
   819  	-1, 932,
   820  	94, 4,
   821  	96, 4,
   822  	98, 4,
   823  	-2, 221,
   824  	-1, 973,
   825  	22, 221,
   826  	25, 221,
   827  	27, 221,
   828  	-2, 6,
   829  	-1, 980,
   830  	164, 62,
   831  	-2, 240,
   832  	-1, 1014,
   833  	92, 6,
   834  	96, 6,
   835  	98, 6,
   836  	-2, 221,
   837  	-1, 1017,
   838  	98, 8,
   839  	-2, 221,
   840  	-1, 1024,
   841  	98, 6,
   842  	-2, 221,
   843  	-1, 1027,
   844  	92, 4,
   845  	96, 4,
   846  	98, 4,
   847  	-2, 221,
   848  	-1, 1041,
   849  	98, 6,
   850  	-2, 221,
   851  	-1, 1066,
   852  	98, 6,
   853  	-2, 221,
   854  	-1, 1070,
   855  	94, 6,
   856  	96, 6,
   857  	98, 6,
   858  	-2, 221,
   859  	-1, 1072,
   860  	22, 221,
   861  	25, 221,
   862  	27, 221,
   863  	-2, 8,
   864  	-1, 1075,
   865  	98, 8,
   866  	-2, 221,
   867  	-1, 1076,
   868  	98, 8,
   869  	-2, 221,
   870  	-1, 1095,
   871  	92, 8,
   872  	96, 8,
   873  	98, 8,
   874  	-2, 221,
   875  	-1, 1100,
   876  	98, 8,
   877  	-2, 221,
   878  	-1, 1101,
   879  	98, 8,
   880  	-2, 221,
   881  	-1, 1112,
   882  	92, 6,
   883  	96, 6,
   884  	98, 6,
   885  	-2, 221,
   886  	-1, 1117,
   887  	98, 8,
   888  	-2, 221,
   889  	-1, 1132,
   890  	98, 8,
   891  	-2, 221,
   892  	-1, 1136,
   893  	94, 8,
   894  	96, 8,
   895  	98, 8,
   896  	-2, 221,
   897  	-1, 1156,
   898  	92, 8,
   899  	96, 8,
   900  	98, 8,
   901  	-2, 221,
   902  }
   903  
   904  const yyPrivate = 57344
   905  
   906  const yyLast = 4162
   907  
   908  var yyAct = [...]int{
   909  	126, 61, 1131, 1096, 1130, 1065, 1104, 1043, 1064, 511,
   910  	927, 429, 503, 761, 1015, 203, 926, 68, 813, 623,
   911  	311, 132, 559, 863, 204, 734, 739, 265, 682, 143,
   912  	643, 939, 301, 862, 626, 510, 26, 646, 292, 605,
   913  	645, 589, 614, 697, 266, 262, 146, 494, 861, 639,
   914  	99, 156, 156, 573, 159, 488, 610, 263, 275, 135,
   915  	740, 444, 558, 364, 509, 25, 449, 448, 296, 367,
   916  	289, 273, 85, 84, 188, 61, 550, 358, 1, 27,
   917  	247, 211, 236, 72, 153, 235, 337, 303, 255, 1018,
   918  	236, 112, 78, 528, 202, 197, 235, 215, 1054, 353,
   919  	343, 250, 236, 901, 902, 235, 111, 80, 137, 80,
   920  	903, 904, 887, 888, 753, 754, 80, 517, 1061, 157,
   921  	122, 165, 710, 711, 61, 1037, 61, 833, 822, 786,
   922  	134, 21, 181, 452, 80, 453, 454, 455, 447, 751,
   923  	750, 450, 112, 959, 747, 143, 258, 731, 728, 305,
   924  	727, 712, 80, 261, 124, 80, 80, 707, 80, 26,
   925  	80, 905, 653, 294, 884, 295, 650, 103, 580, 270,
   926  	79, 526, 79, 354, 178, 442, 194, 179, 180, 79,
   927  	183, 184, 185, 187, 436, 191, 194, 362, 25, 354,
   928  	317, 1036, 291, 236, 708, 1034, 235, 79, 354, 354,
   929  	143, 290, 256, 1033, 1032, 196, 112, 201, 452, 342,
   930  	453, 454, 455, 447, 1030, 79, 450, 354, 79, 79,
   931  	357, 79, 356, 79, 380, 113, 114, 115, 274, 116,
   932  	117, 118, 119, 120, 80, 122, 140, 913, 312, 142,
   933  	315, 139, 1012, 121, 141, 1011, 380, 380, 627, 451,
   934  	1010, 80, 316, 1009, 21, 1005, 196, 1000, 61, 144,
   935  	586, 144, 599, 505, 3, 379, 524, 998, 144, 227,
   936  	226, 228, 229, 230, 378, 997, 113, 114, 115, 137,
   937  	116, 117, 118, 119, 120, 996, 144, 360, 361, 305,
   938  	121, 995, 297, 26, 971, 952, 405, 406, 432, 950,
   939  	1050, 373, 398, 459, 144, 334, 335, 144, 144, 144,
   940  	144, 150, 379, 80, 79, 949, 938, 925, 433, 889,
   941  	886, 859, 25, 619, 345, 835, 127, 35, 832, 642,
   942  	443, 829, 826, 810, 394, 156, 416, 399, 400, 401,
   943  	113, 114, 115, 803, 116, 117, 118, 119, 120, 785,
   944  	768, 749, 746, 61, 730, 709, 675, 440, 674, 143,
   945  	434, 143, 143, 673, 672, 501, 670, 636, 548, 600,
   946  	515, 547, 295, 546, 633, 439, 541, 380, 539, 553,
   947  	61, 537, 477, 380, 380, 463, 144, 3, 21, 625,
   948  	499, 500, 417, 493, 350, 424, 464, 112, 427, 428,
   949  	197, 551, 473, 587, 1049, 351, 217, 525, 380, 552,
   950  	552, 552, 227, 226, 228, 229, 230, 349, 103, 961,
   951  	953, 61, 951, 496, 497, 947, 937, 533, 907, 498,
   952  	893, 871, 869, 535, 536, 143, 868, 867, 520, 865,
   953  	520, 520, 305, 839, 523, 782, 530, 529, 780, 779,
   954  	35, 519, 305, 521, 522, 149, 26, 770, 549, 480,
   955  	482, 485, 487, 490, 713, 144, 685, 662, 490, 495,
   956  	544, 622, 585, 495, 495, 479, 143, 502, 143, 601,
   957  	228, 229, 230, 21, 617, 25, 554, 555, 478, 462,
   958  	438, 437, 556, 154, 149, 260, 648, 595, 254, 563,
   959  	244, 290, 243, 465, 242, 604, 241, 652, 593, 295,
   960  	602, 240, 239, 603, 238, 237, 331, 613, 612, 1072,
   961  	973, 3, 655, 476, 274, 123, 249, 318, 194, 629,
   962  	657, 113, 114, 115, 411, 116, 117, 118, 119, 120,
   963  	574, 699, 591, 329, 1060, 783, 578, 781, 701, 145,
   964  	798, 21, 684, 679, 1024, 924, 778, 923, 842, 677,
   965  	877, 61, 570, 875, 259, 630, 776, 864, 61, 596,
   966  	426, 1101, 624, 575, 680, 663, 632, 634, 777, 154,
   967  	678, 320, 775, 687, 35, 103, 774, 380, 143, 771,
   968  	664, 745, 700, 621, 676, 458, 26, 579, 666, 698,
   969  	669, 1004, 683, 26, 962, 584, 412, 705, 245, 305,
   970  	305, 475, 686, 425, 246, 704, 225, 305, 1155, 1145,
   971  	714, 161, 690, 1140, 576, 25, 1139, 143, 718, 571,
   972  	1134, 1120, 25, 1119, 319, 330, 706, 683, 656, 691,
   973  	1111, 715, 729, 1087, 716, 1079, 695, 703, 1071, 726,
   974  	172, 173, 1068, 742, 1026, 1023, 61, 1022, 984, 61,
   975  	61, 972, 328, 143, 321, 322, 936, 935, 759, 930,
   976  	725, 763, 764, 856, 160, 732, 855, 791, 689, 35,
   977  	162, 654, 380, 564, 3, 562, 1133, 1100, 271, 1076,
   978  	1132, 21, 692, 1075, 624, 1067, 1017, 766, 21, 1066,
   979  	696, 757, 765, 659, 163, 929, 755, 624, 658, 928,
   980  	1132, 561, 352, 1117, 310, 560, 248, 170, 171, 174,
   981  	175, 305, 1066, 305, 305, 305, 1041, 928, 305, 624,
   982  	853, 560, 784, 809, 422, 420, 1156, 1136, 112, 1112,
   983  	624, 794, 797, 802, 615, 804, 1095, 35, 811, 805,
   984  	796, 828, 793, 812, 1070, 816, 1027, 1014, 28, 932,
   985  	617, 61, 792, 760, 567, 461, 61, 61, 648, 847,
   986  	823, 808, 648, 851, 257, 1158, 1114, 1097, 857, 858,
   987  	1029, 490, 1016, 795, 495, 850, 21, 380, 844, 21,
   988  	21, 845, 846, 61, 762, 418, 264, 841, 1152, 1151,
   989  	1138, 393, 395, 873, 143, 1137, 873, 402, 403, 404,
   990  	1093, 991, 990, 872, 591, 878, 876, 934, 933, 305,
   991  	624, 305, 305, 305, 3, 758, 1159, 143, 26, 874,
   992  	1133, 3, 1067, 199, 883, 894, 895, 683, 624, 891,
   993  	882, 143, 929, 61, 830, 831, 561, 1154, 1128, 1110,
   994  	1057, 896, 1025, 897, 61, 617, 880, 25, 909, 825,
   995  	910, 790, 314, 1149, 908, 900, 931, 1091, 1105, 1105,
   996  	1084, 881, 113, 114, 115, 838, 116, 117, 118, 119,
   997  	120, 472, 988, 848, 199, 380, 693, 35, 911, 1127,
   998  	143, 21, 1109, 854, 35, 873, 21, 21, 1125, 1126,
   999  	305, 719, 721, 199, 955, 948, 380, 1153, 1124, 143,
  1000  	1108, 956, 1107, 957, 942, 964, 944, 945, 946, 788,
  1001  	109, 216, 249, 21, 61, 61, 424, 969, 467, 61,
  1002  	1123, 681, 965, 61, 968, 683, 359, 978, 143, 977,
  1003  	975, 986, 1082, 963, 985, 989, 979, 1142, 1103, 1083,
  1004  	1106, 1106, 1085, 376, 1055, 1019, 683, 375, 377, 538,
  1005  	380, 518, 994, 408, 542, 543, 545, 407, 355, 628,
  1006  	410, 409, 209, 21, 61, 383, 382, 873, 890, 999,
  1007  	827, 1007, 35, 338, 21, 35, 35, 1002, 1006, 208,
  1008  	209, 210, 110, 814, 815, 1021, 332, 1020, 611, 821,
  1009  	1001, 724, 594, 1028, 452, 1031, 453, 454, 455, 447,
  1010  	683, 723, 450, 143, 624, 61, 817, 819, 61, 452,
  1011  	615, 453, 454, 455, 609, 61, 608, 1051, 61, 452,
  1012  	268, 453, 454, 267, 268, 993, 941, 143, 380, 607,
  1013  	1058, 269, 61, 606, 870, 445, 136, 940, 974, 744,
  1014  	743, 339, 976, 980, 21, 21, 3, 752, 741, 21,
  1015  	987, 199, 380, 21, 800, 801, 1063, 61, 624, 1080,
  1016  	1074, 61, 152, 61, 1088, 151, 61, 61, 69, 112,
  1017  	1094, 415, 1051, 1098, 1099, 1051, 1051, 35, 683, 214,
  1018  	1086, 983, 35, 35, 627, 860, 61, 735, 736, 737,
  1019  	738, 61, 61, 1115, 21, 1051, 915, 1113, 1121, 1122,
  1020  	1051, 1051, 683, 61, 898, 615, 164, 166, 61, 35,
  1021  	849, 843, 840, 748, 651, 1135, 491, 1051, 287, 272,
  1022  	1143, 293, 148, 61, 1035, 1144, 1146, 61, 199, 147,
  1023  	1147, 435, 1051, 920, 1150, 21, 1051, 1042, 21, 1008,
  1024  	702, 568, 148, 441, 1157, 21, 341, 61, 21, 340,
  1025  	854, 981, 982, 1161, 1160, 336, 1051, 104, 471, 35,
  1026  	107, 5, 21, 107, 104, 103, 207, 492, 1073, 313,
  1027  	35, 468, 469, 213, 71, 70, 155, 915, 915, 1116,
  1028  	470, 1040, 852, 199, 419, 10, 9, 21, 1090, 590,
  1029  	8, 21, 7, 21, 421, 65, 21, 21, 365, 299,
  1030  	298, 1013, 304, 113, 114, 115, 306, 116, 117, 118,
  1031  	119, 120, 276, 281, 920, 920, 21, 1141, 1118, 1102,
  1032  	1081, 21, 21, 1059, 199, 64, 199, 915, 94, 63,
  1033  	62, 67, 59, 21, 66, 1042, 198, 919, 21, 60,
  1034  	35, 35, 1039, 799, 581, 35, 430, 58, 212, 35,
  1035  	86, 577, 1056, 21, 1148, 572, 569, 21, 6, 20,
  1036  	19, 73, 169, 17, 920, 647, 807, 644, 915, 1069,
  1037  	16, 1045, 489, 15, 14, 133, 11, 21, 915, 1118,
  1038  	18, 13, 12, 1046, 916, 1044, 112, 198, 392, 914,
  1039  	35, 506, 504, 4, 1089, 915, 2, 0, 1092, 0,
  1040  	199, 0, 0, 0, 189, 920, 198, 0, 0, 0,
  1041  	0, 0, 0, 0, 0, 920, 0, 0, 919, 919,
  1042  	915, 0, 29, 0, 915, 195, 1045, 0, 0, 1045,
  1043  	1045, 35, 920, 0, 35, 0, 199, 0, 233, 234,
  1044  	1129, 35, 0, 0, 35, 0, 0, 0, 0, 1045,
  1045  	0, 138, 251, 252, 1045, 1045, 0, 920, 35, 0,
  1046  	0, 920, 112, 0, 0, 0, 915, 0, 919, 0,
  1047  	0, 1045, 0, 0, 0, 199, 195, 0, 0, 0,
  1048  	0, 0, 133, 35, 0, 0, 1045, 35, 0, 35,
  1049  	1045, 122, 35, 35, 0, 0, 0, 200, 0, 0,
  1050  	189, 0, 0, 920, 0, 0, 0, 0, 0, 919,
  1051  	1045, 199, 35, 0, 0, 0, 0, 35, 35, 919,
  1052  	113, 114, 115, 0, 116, 117, 118, 119, 120, 35,
  1053  	0, 0, 0, 0, 35, 0, 919, 0, 0, 0,
  1054  	0, 0, 0, 958, 112, 347, 0, 0, 200, 35,
  1055  	369, 0, 0, 35, 0, 0, 0, 966, 0, 967,
  1056  	0, 919, 0, 0, 198, 919, 366, 200, 370, 371,
  1057  	372, 457, 374, 35, 0, 381, 0, 384, 385, 386,
  1058  	387, 388, 389, 390, 0, 0, 0, 189, 396, 366,
  1059  	0, 0, 0, 189, 189, 189, 113, 114, 115, 0,
  1060  	116, 117, 118, 119, 120, 413, 0, 919, 0, 0,
  1061  	0, 189, 0, 0, 0, 423, 0, 0, 0, 0,
  1062  	431, 452, 200, 453, 454, 455, 447, 814, 815, 450,
  1063  	0, 0, 0, 0, 0, 0, 112, 0, 0, 0,
  1064  	0, 198, 0, 0, 446, 0, 0, 0, 0, 0,
  1065  	279, 278, 199, 288, 0, 0, 0, 89, 0, 0,
  1066  	0, 0, 0, 0, 0, 280, 0, 189, 0, 474,
  1067  	0, 0, 0, 0, 0, 199, 0, 0, 113, 114,
  1068  	115, 0, 116, 117, 118, 119, 120, 0, 0, 199,
  1069  	112, 0, 158, 0, 0, 189, 588, 167, 168, 0,
  1070  	176, 177, 0, 0, 279, 278, 182, 0, 0, 0,
  1071  	186, 0, 190, 0, 192, 193, 0, 0, 300, 280,
  1072  	0, 0, 0, 0, 0, 200, 532, 0, 534, 0,
  1073  	189, 0, 0, 0, 0, 0, 0, 637, 199, 641,
  1074  	0, 0, 0, 0, 0, 189, 0, 0, 0, 0,
  1075  	189, 189, 189, 616, 0, 0, 0, 199, 0, 0,
  1076  	0, 0, 0, 0, 0, 0, 253, 0, 0, 423,
  1077  	113, 114, 115, 565, 116, 117, 118, 119, 120, 0,
  1078  	0, 200, 0, 200, 200, 0, 199, 0, 189, 540,
  1079  	0, 0, 0, 0, 0, 0, 0, 0, 277, 0,
  1080  	277, 0, 200, 0, 0, 0, 277, 0, 277, 0,
  1081  	277, 0, 0, 198, 0, 0, 0, 0, 323, 324,
  1082  	326, 327, 0, 0, 113, 114, 115, 333, 282, 283,
  1083  	284, 285, 286, 307, 308, 309, 0, 0, 0, 0,
  1084  	0, 0, 223, 232, 231, 222, 221, 224, 220, 198,
  1085  	0, 0, 0, 0, 0, 0, 112, 200, 302, 133,
  1086  	0, 199, 0, 0, 107, 0, 112, 0, 0, 0,
  1087  	0, 363, 0, 368, 0, 0, 0, 366, 0, 0,
  1088  	279, 278, 667, 0, 0, 199, 0, 112, 733, 0,
  1089  	0, 671, 0, 391, 0, 280, 368, 0, 200, 0,
  1090  	200, 279, 278, 80, 0, 0, 0, 0, 688, 0,
  1091  	0, 0, 0, 414, 0, 300, 280, 694, 0, 0,
  1092  	0, 0, 0, 0, 767, 0, 0, 218, 217, 0,
  1093  	277, 431, 0, 219, 227, 226, 228, 229, 230, 0,
  1094  	0, 0, 344, 0, 0, 277, 277, 0, 223, 232,
  1095  	231, 222, 221, 224, 220, 0, 456, 717, 189, 0,
  1096  	277, 0, 0, 460, 0, 0, 79, 0, 0, 0,
  1097  	0, 466, 0, 0, 200, 0, 0, 0, 223, 232,
  1098  	231, 222, 221, 224, 220, 0, 481, 483, 484, 486,
  1099  	113, 114, 115, 0, 116, 117, 118, 119, 120, 277,
  1100  	113, 114, 115, 0, 116, 117, 118, 119, 120, 0,
  1101  	200, 514, 0, 516, 0, 0, 0, 0, 112, 769,
  1102  	392, 113, 114, 115, 0, 282, 283, 284, 285, 286,
  1103  	307, 308, 309, 218, 217, 0, 787, 0, 0, 219,
  1104  	227, 226, 228, 229, 230, 0, 0, 348, 344, 200,
  1105  	0, 0, 0, 112, 0, 302, 0, 0, 0, 806,
  1106  	0, 0, 189, 218, 217, 885, 112, 279, 278, 219,
  1107  	227, 226, 228, 229, 230, 112, 0, 0, 879, 0,
  1108  	0, 300, 280, 0, 0, 200, 0, 0, 906, 279,
  1109  	278, 0, 834, 592, 277, 325, 597, 0, 0, 277,
  1110  	277, 0, 912, 300, 280, 0, 0, 0, 0, 277,
  1111  	0, 0, 0, 423, 0, 618, 899, 460, 0, 620,
  1112  	0, 0, 0, 592, 866, 0, 631, 592, 592, 635,
  1113  	0, 0, 0, 638, 640, 0, 0, 649, 820, 0,
  1114  	0, 0, 223, 232, 231, 222, 221, 224, 220, 0,
  1115  	0, 960, 113, 114, 115, 0, 116, 117, 118, 119,
  1116  	120, 112, 0, 0, 0, 892, 0, 0, 103, 773,
  1117  	970, 0, 0, 0, 0, 660, 661, 0, 0, 112,
  1118  	0, 0, 0, 640, 368, 665, 391, 113, 114, 115,
  1119  	0, 282, 283, 284, 285, 286, 307, 308, 309, 992,
  1120  	113, 114, 115, 0, 116, 117, 118, 119, 120, 113,
  1121  	114, 115, 0, 282, 283, 284, 285, 286, 307, 308,
  1122  	309, 302, 0, 0, 0, 0, 200, 218, 217, 0,
  1123  	954, 0, 0, 219, 227, 226, 228, 229, 230, 189,
  1124  	0, 772, 0, 302, 0, 592, 0, 0, 0, 200,
  1125  	0, 0, 0, 189, 0, 189, 0, 0, 592, 0,
  1126  	0, 0, 0, 200, 0, 0, 277, 277, 0, 133,
  1127  	0, 0, 0, 0, 1038, 0, 0, 0, 0, 0,
  1128  	592, 0, 0, 640, 0, 0, 0, 0, 631, 0,
  1129  	0, 592, 189, 0, 0, 113, 114, 115, 1062, 116,
  1130  	117, 118, 119, 120, 0, 0, 0, 0, 0, 756,
  1131  	0, 0, 200, 113, 114, 115, 0, 116, 117, 118,
  1132  	119, 120, 0, 0, 0, 0, 0, 0, 112, 0,
  1133  	0, 200, 0, 0, 0, 0, 0, 0, 0, 0,
  1134  	0, 0, 279, 278, 431, 0, 0, 0, 0, 0,
  1135  	0, 0, 0, 0, 0, 0, 300, 280, 223, 232,
  1136  	200, 222, 221, 224, 220, 592, 0, 423, 0, 0,
  1137  	277, 592, 0, 0, 0, 0, 0, 0, 0, 0,
  1138  	0, 277, 277, 0, 0, 277, 824, 0, 0, 592,
  1139  	0, 818, 0, 0, 0, 592, 592, 0, 0, 133,
  1140  	0, 836, 837, 0, 0, 640, 0, 0, 112, 81,
  1141  	82, 83, 0, 109, 0, 103, 107, 104, 105, 22,
  1142  	75, 106, 0, 0, 80, 0, 0, 37, 38, 0,
  1143  	0, 0, 0, 0, 30, 200, 0, 122, 0, 31,
  1144  	46, 0, 32, 218, 217, 0, 0, 0, 423, 219,
  1145  	227, 226, 228, 229, 230, 0, 0, 0, 0, 200,
  1146  	0, 0, 113, 114, 115, 0, 282, 283, 284, 285,
  1147  	286, 307, 308, 309, 0, 0, 0, 100, 0, 277,
  1148  	277, 101, 0, 0, 0, 110, 112, 79, 0, 0,
  1149  	0, 631, 0, 0, 1048, 1047, 302, 921, 0, 0,
  1150  	279, 278, 0, 34, 108, 0, 41, 39, 40, 36,
  1151  	42, 0, 0, 0, 300, 280, 0, 0, 44, 45,
  1152  	512, 513, 0, 49, 50, 51, 52, 43, 54, 55,
  1153  	56, 47, 53, 57, 0, 0, 0, 922, 0, 0,
  1154  	33, 48, 113, 114, 115, 0, 116, 117, 118, 119,
  1155  	120, 640, 0, 0, 121, 90, 93, 91, 92, 95,
  1156  	96, 97, 98, 0, 0, 592, 0, 0, 0, 0,
  1157  	87, 88, 0, 0, 0, 102, 74, 0, 0, 0,
  1158  	0, 0, 0, 112, 81, 82, 83, 0, 109, 0,
  1159  	103, 107, 104, 105, 22, 75, 106, 0, 0, 80,
  1160  	0, 0, 37, 38, 0, 0, 0, 0, 0, 30,
  1161  	0, 0, 122, 0, 31, 46, 0, 32, 0, 592,
  1162  	113, 114, 115, 0, 282, 283, 284, 285, 286, 307,
  1163  	308, 309, 0, 0, 0, 0, 0, 0, 0, 0,
  1164  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1165  	0, 0, 100, 0, 302, 0, 101, 0, 0, 112,
  1166  	110, 0, 79, 0, 0, 0, 0, 0, 0, 508,
  1167  	507, 0, 76, 279, 278, 0, 1052, 1053, 34, 108,
  1168  	0, 41, 39, 40, 36, 42, 0, 0, 280, 0,
  1169  	0, 0, 0, 44, 45, 512, 513, 77, 49, 50,
  1170  	51, 52, 43, 54, 55, 56, 47, 53, 57, 0,
  1171  	0, 0, 1077, 1078, 0, 33, 48, 113, 114, 115,
  1172  	0, 116, 117, 118, 119, 120, 0, 0, 0, 121,
  1173  	90, 93, 91, 92, 95, 96, 97, 98, 0, 0,
  1174  	0, 0, 0, 0, 0, 87, 88, 0, 0, 0,
  1175  	102, 74, 112, 81, 82, 83, 0, 109, 0, 103,
  1176  	107, 104, 105, 22, 75, 106, 0, 0, 80, 0,
  1177  	0, 37, 38, 0, 0, 0, 0, 0, 30, 0,
  1178  	0, 122, 0, 31, 46, 0, 32, 0, 0, 0,
  1179  	0, 0, 0, 113, 114, 115, 0, 282, 283, 284,
  1180  	285, 286, 0, 0, 0, 0, 0, 0, 0, 0,
  1181  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1182  	0, 100, 0, 0, 0, 101, 0, 0, 0, 110,
  1183  	0, 79, 0, 0, 0, 0, 0, 0, 918, 917,
  1184  	0, 921, 0, 0, 0, 0, 0, 34, 108, 0,
  1185  	41, 39, 40, 36, 42, 0, 0, 0, 0, 0,
  1186  	0, 0, 44, 45, 0, 0, 0, 49, 50, 51,
  1187  	52, 43, 54, 55, 56, 47, 53, 57, 0, 0,
  1188  	0, 922, 0, 0, 33, 48, 113, 114, 115, 0,
  1189  	116, 117, 118, 119, 120, 0, 0, 0, 121, 90,
  1190  	93, 91, 92, 95, 96, 97, 98, 0, 0, 0,
  1191  	0, 0, 0, 0, 87, 88, 0, 0, 0, 102,
  1192  	74, 112, 81, 82, 83, 0, 109, 0, 103, 107,
  1193  	104, 105, 22, 75, 106, 0, 0, 80, 0, 0,
  1194  	37, 38, 0, 0, 0, 0, 0, 30, 0, 0,
  1195  	122, 0, 31, 46, 0, 32, 0, 0, 0, 0,
  1196  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1197  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1198  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1199  	100, 0, 0, 0, 101, 0, 0, 0, 110, 0,
  1200  	79, 0, 0, 0, 0, 0, 0, 24, 23, 0,
  1201  	76, 0, 0, 0, 0, 0, 34, 108, 0, 41,
  1202  	39, 40, 36, 42, 0, 0, 0, 0, 0, 0,
  1203  	0, 44, 45, 0, 0, 77, 49, 50, 51, 52,
  1204  	43, 54, 55, 56, 47, 53, 57, 0, 0, 0,
  1205  	0, 0, 0, 33, 48, 113, 114, 115, 0, 116,
  1206  	117, 118, 119, 120, 0, 0, 0, 121, 90, 93,
  1207  	91, 92, 95, 96, 97, 98, 0, 0, 0, 0,
  1208  	0, 0, 0, 87, 88, 0, 0, 0, 102, 74,
  1209  	112, 81, 82, 83, 0, 109, 0, 103, 107, 104,
  1210  	105, 0, 75, 106, 0, 0, 0, 0, 0, 0,
  1211  	0, 0, 0, 0, 0, 0, 129, 0, 0, 122,
  1212  	223, 232, 231, 222, 221, 224, 220, 0, 0, 0,
  1213  	0, 112, 81, 82, 83, 0, 109, 0, 103, 107,
  1214  	104, 105, 0, 75, 106, 279, 278, 0, 0, 0,
  1215  	0, 0, 0, 0, 0, 0, 0, 129, 0, 100,
  1216  	598, 0, 0, 101, 0, 0, 0, 110, 0, 0,
  1217  	0, 0, 0, 0, 0, 0, 131, 128, 0, 0,
  1218  	0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
  1219  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1220  	100, 0, 0, 0, 101, 218, 217, 0, 110, 0,
  1221  	0, 219, 227, 226, 228, 229, 230, 131, 128, 0,
  1222  	557, 0, 130, 0, 113, 114, 115, 108, 116, 117,
  1223  	118, 119, 120, 0, 0, 0, 121, 90, 93, 91,
  1224  	92, 95, 96, 97, 98, 223, 232, 231, 222, 221,
  1225  	224, 220, 87, 88, 369, 0, 0, 102, 74, 397,
  1226  	0, 0, 0, 130, 0, 113, 114, 115, 0, 116,
  1227  	117, 118, 119, 120, 0, 0, 0, 121, 90, 93,
  1228  	91, 92, 95, 96, 97, 98, 0, 0, 0, 0,
  1229  	0, 0, 0, 87, 88, 0, 0, 0, 102, 74,
  1230  	112, 81, 82, 83, 0, 109, 0, 103, 107, 104,
  1231  	105, 0, 75, 106, 0, 0, 80, 0, 0, 0,
  1232  	0, 0, 0, 0, 0, 0, 129, 0, 0, 122,
  1233  	218, 217, 0, 0, 0, 0, 219, 227, 226, 228,
  1234  	229, 230, 0, 0, 0, 344, 0, 0, 0, 0,
  1235  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1236  	0, 0, 0, 0, 0, 0, 0, 0, 0, 100,
  1237  	0, 0, 0, 101, 0, 0, 0, 110, 0, 79,
  1238  	0, 0, 0, 0, 0, 0, 131, 128, 0, 0,
  1239  	0, 0, 112, 81, 82, 83, 108, 109, 0, 103,
  1240  	107, 104, 105, 0, 75, 106, 0, 0, 0, 0,
  1241  	0, 0, 0, 0, 0, 0, 0, 0, 129, 0,
  1242  	0, 122, 0, 0, 0, 0, 0, 0, 0, 0,
  1243  	0, 0, 130, 0, 113, 114, 115, 0, 116, 117,
  1244  	118, 119, 120, 0, 0, 0, 121, 90, 93, 91,
  1245  	92, 95, 96, 97, 98, 0, 0, 0, 0, 0,
  1246  	0, 100, 87, 88, 0, 101, 0, 102, 74, 110,
  1247  	0, 0, 0, 0, 0, 0, 0, 0, 131, 128,
  1248  	0, 0, 0, 0, 0, 0, 0, 206, 108, 112,
  1249  	81, 82, 83, 0, 109, 0, 103, 107, 104, 105,
  1250  	0, 75, 106, 0, 0, 0, 0, 0, 0, 0,
  1251  	0, 0, 0, 0, 0, 129, 0, 0, 122, 0,
  1252  	0, 0, 0, 0, 205, 0, 113, 114, 115, 0,
  1253  	116, 117, 118, 119, 120, 0, 0, 0, 121, 90,
  1254  	93, 91, 92, 95, 96, 97, 98, 0, 0, 0,
  1255  	0, 0, 0, 0, 87, 88, 0, 0, 100, 102,
  1256  	74, 0, 101, 0, 0, 0, 110, 0, 0, 0,
  1257  	0, 0, 0, 0, 0, 131, 128, 0, 0, 0,
  1258  	0, 112, 81, 82, 83, 108, 109, 0, 103, 107,
  1259  	104, 105, 0, 75, 106, 0, 0, 0, 0, 0,
  1260  	0, 0, 0, 0, 0, 0, 0, 129, 0, 0,
  1261  	122, 0, 223, 232, 231, 222, 221, 224, 220, 0,
  1262  	0, 130, 0, 113, 114, 115, 0, 116, 117, 118,
  1263  	119, 120, 0, 0, 0, 121, 90, 93, 91, 92,
  1264  	95, 96, 97, 98, 0, 0, 0, 0, 0, 0,
  1265  	100, 87, 88, 369, 101, 0, 102, 74, 110, 216,
  1266  	0, 0, 0, 0, 0, 0, 0, 131, 128, 0,
  1267  	0, 0, 0, 112, 81, 82, 83, 108, 109, 0,
  1268  	103, 107, 104, 105, 0, 75, 106, 0, 0, 0,
  1269  	0, 0, 0, 0, 0, 0, 0, 218, 217, 129,
  1270  	0, 0, 122, 219, 227, 226, 228, 229, 230, 0,
  1271  	0, 1003, 0, 130, 0, 113, 114, 115, 0, 116,
  1272  	117, 118, 119, 120, 0, 0, 0, 121, 90, 93,
  1273  	91, 92, 95, 96, 97, 98, 0, 0, 0, 0,
  1274  	0, 0, 100, 87, 88, 0, 101, 0, 102, 74,
  1275  	110, 0, 0, 0, 0, 0, 0, 0, 0, 131,
  1276  	128, 0, 0, 0, 0, 112, 81, 82, 83, 108,
  1277  	109, 0, 103, 107, 104, 105, 0, 75, 106, 0,
  1278  	0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1279  	0, 129, 0, 0, 122, 0, 223, 232, 231, 222,
  1280  	221, 224, 220, 0, 0, 130, 0, 113, 114, 115,
  1281  	0, 116, 117, 118, 119, 120, 112, 0, 0, 121,
  1282  	90, 93, 91, 92, 95, 96, 97, 98, 0, 0,
  1283  	279, 278, 0, 0, 100, 87, 88, 0, 101, 0,
  1284  	102, 74, 110, 0, 300, 280, 0, 0, 0, 0,
  1285  	0, 131, 128, 0, 0, 0, 0, 112, 81, 346,
  1286  	83, 108, 109, 0, 103, 107, 104, 105, 0, 75,
  1287  	106, 0, 0, 0, 0, 0, 0, 0, 0, 722,
  1288  	0, 218, 217, 129, 0, 0, 122, 219, 227, 226,
  1289  	228, 229, 230, 0, 0, 943, 0, 130, 0, 113,
  1290  	114, 115, 0, 116, 117, 118, 119, 120, 112, 0,
  1291  	0, 121, 90, 93, 91, 92, 95, 96, 97, 98,
  1292  	0, 0, 279, 278, 0, 0, 100, 87, 88, 0,
  1293  	101, 0, 102, 125, 110, 0, 300, 280, 0, 0,
  1294  	0, 0, 0, 131, 128, 0, 0, 0, 0, 0,
  1295  	113, 114, 115, 108, 282, 283, 284, 285, 286, 307,
  1296  	308, 309, 0, 0, 0, 0, 0, 0, 0, 0,
  1297  	0, 720, 223, 232, 231, 222, 221, 224, 220, 0,
  1298  	0, 0, 0, 0, 302, 0, 0, 0, 0, 130,
  1299  	0, 113, 114, 115, 0, 116, 117, 118, 119, 120,
  1300  	0, 0, 0, 121, 90, 93, 91, 92, 95, 96,
  1301  	97, 98, 582, 583, 0, 0, 0, 0, 0, 87,
  1302  	88, 0, 0, 0, 102, 74, 0, 0, 0, 0,
  1303  	0, 0, 0, 0, 223, 232, 231, 222, 221, 224,
  1304  	220, 0, 113, 114, 115, 0, 282, 283, 284, 285,
  1305  	286, 307, 308, 309, 0, 0, 0, 218, 217, 527,
  1306  	0, 0, 0, 219, 227, 226, 228, 229, 230, 0,
  1307  	0, 789, 0, 0, 0, 0, 302, 223, 232, 231,
  1308  	222, 221, 224, 220, 0, 0, 0, 0, 0, 223,
  1309  	232, 231, 222, 221, 224, 220, 0, 418, 0, 0,
  1310  	0, 0, 223, 232, 231, 222, 221, 224, 220, 0,
  1311  	566, 0, 0, 0, 0, 0, 0, 0, 223, 218,
  1312  	217, 222, 221, 224, 220, 219, 227, 226, 228, 229,
  1313  	230, 223, 232, 231, 222, 221, 224, 220, 0, 0,
  1314  	0, 0, 0, 223, 668, 231, 222, 221, 224, 220,
  1315  	0, 0, 0, 0, 0, 223, 531, 231, 222, 221,
  1316  	224, 220, 218, 217, 0, 0, 0, 0, 219, 227,
  1317  	226, 228, 229, 230, 218, 217, 0, 0, 0, 0,
  1318  	219, 227, 226, 228, 229, 230, 0, 218, 217, 0,
  1319  	0, 0, 0, 219, 227, 226, 228, 229, 230, 0,
  1320  	0, 0, 0, 218, 217, 0, 0, 0, 0, 219,
  1321  	227, 226, 228, 229, 230, 0, 218, 217, 0, 0,
  1322  	0, 0, 219, 227, 226, 228, 229, 230, 218, 217,
  1323  	0, 0, 0, 0, 219, 227, 226, 228, 229, 230,
  1324  	218, 217, 0, 0, 0, 0, 219, 227, 226, 228,
  1325  	229, 230,
  1326  }
  1327  
  1328  var yyPact = [...]int{
  1329  	2827, -1000, 361, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  1330  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  1331  	-1000, -1000, -1000, 3671, 3579, -1000, -1000, 998, 214, 1111,
  1332  	283, 1036, 1033, 407, 2067, -1000, 574, 1161, 1154, 2085,
  1333  	2085, 610, 2085, 3579, -1000, -1000, 3579, 3579, 1762, 3579,
  1334  	3579, 3579, 3579, 3579, 3579, -1000, 2085, 2085, -1000, -1000,
  1335  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 367, -1000,
  1336  	-1000, -1000, -1000, -1000, 3206, -1000, 3298, 1170, 921, 1055,
  1337  	839, -1000, -1000, -1000, -1000, -1000, 3967, 3579, 3579, -90,
  1338  	343, 342, 340, 339, -1000, 334, 332, 330, 328, 449,
  1339  	137, 3579, 3579, -1000, -1000, -1000, -1000, -1000, 2085, -1000,
  1340  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  1341  	-1000, 326, -87, 2827, 679, 3206, -1000, -1000, 323, 322,
  1342  	321, 3579, 702, 3967, -1000, 979, 990, 998, 1111, 1101,
  1343  	2565, 1100, 1542, -1000, 136, 1131, 1105, 1164, 2392, 3579,
  1344  	2565, 771, 2565, -1000, 839, 16, 366, -1000, 534, -1000,
  1345  	2085, 1972, 2085, 2085, 497, 470, -1000, 931, -1000, 2085,
  1346  	-1000, -1000, -1000, -1000, 3579, 3579, 1144, 21, 918, 1005,
  1347  	1138, -1000, 1135, -1000, -1000, 35, -90, -1000, -1000, 3081,
  1348  	-90, -1000, -1000, 3763, 3579, 1784, 244, 221, 232, 293,
  1349  	1131, 615, 25, 894, 1164, 321, -1000, -1000, 865, 865,
  1350  	865, -1000, 13, 2085, -1000, 3395, -1000, 3579, 3579, 3579,
  1351  	845, 3579, 879, 93, 3579, 904, 3579, 3579, 3579, 3579,
  1352  	3579, 3579, 3579, -1000, -1000, 1924, 3487, 3579, 2996, 839,
  1353  	839, 839, 3579, 3579, 3579, 93, 93, 889, 899, -1000,
  1354  	-1000, 3954, -1000, 454, 3579, 1075, -1000, 2827, 221, 219,
  1355  	3579, 701, 639, 638, 3579, 512, 468, 3579, 3579, 3579,
  1356  	979, 1131, 2565, 1118, 10, -1000, -1000, -1000, -1000, 319,
  1357  	-1000, 318, -1000, -1000, -1000, -1000, -1000, 2565, 2392, 1132,
  1358  	1, 1105, 996, 3579, -1000, -1, -1000, 75, 1450, -1000,
  1359  	-1000, -1000, 1793, -1000, -1000, 734, 317, -1000, -1000, -1000,
  1360  	212, -1000, 331, 2085, 851, 1145, 3579, 1164, 3579, 510,
  1361  	351, 316, 303, -1000, -1000, -1000, -1000, -1000, 3579, 3579,
  1362  	3579, 3579, 3579, 1098, -1000, -1000, 1172, 3579, 3579, 1158,
  1363  	1158, 2565, 3579, 3579, 3579, -1000, 3579, 3967, -1000, -1000,
  1364  	-1000, -1000, 2489, 2085, 1164, 2085, 43, 887, 293, -1000,
  1365  	293, 293, 1055, 235, -1000, -3, 3938, -1000, -82, -1000,
  1366  	103, 246, 246, 911, 3991, 3579, 93, 3579, -1000, 3206,
  1367  	-1000, 246, 93, 93, 312, 312, -1000, -1000, -1000, 2194,
  1368  	3954, -1000, -1000, 208, 3579, 205, 1678, -1000, 203, 3579,
  1369  	3395, 3579, 200, 198, 195, -1000, -1000, 93, 229, 229,
  1370  	229, 845, -1000, 2956, -1000, -1000, 619, -1000, 3579, 587,
  1371  	2827, 585, 3579, 3925, 669, 1129, 522, 484, 457, -1000,
  1372  	-6, 3870, 504, 1105, 231, 1368, 2565, 3579, 3037, 197,
  1373  	1105, 2392, 1772, 996, 993, 988, 3967, 969, 967, 939,
  1374  	961, 1596, -1000, -1000, -1000, -1000, -1000, 2085, 150, 734,
  1375  	-1000, 2085, 3579, -1000, 299, 1368, 217, 896, 393, 202,
  1376  	1368, 2085, 194, -1000, 3967, 138, 2085, 136, 156, 2085,
  1377  	-1000, -90, -1000, -90, -90, -1000, -90, -1000, -1000, -8,
  1378  	1093, 1164, -1000, -1000, -1000, -12, -1000, -1000, -1000, -1000,
  1379  	-1000, -1000, -1000, 583, 358, -1000, -1000, 3671, 3579, -1000,
  1380  	-1000, -1000, -1000, -1000, 611, -1000, 606, 2085, 2085, 903,
  1381  	-1000, -1000, 903, -1000, 295, 2085, 3395, 2085, 1292, -1000,
  1382  	-1000, 3579, 3979, -1000, 246, -1000, -1000, 487, 193, -1000,
  1383  	3579, -1000, 191, 190, 185, 183, 481, 446, 440, 856,
  1384  	-1000, 140, -1000, 294, -1000, -1000, 509, 3579, 580, 635,
  1385  	2827, 3579, 796, -1000, -1000, 3967, 3579, 2827, -1000, 3579,
  1386  	-1000, -1000, 458, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
  1387  	3579, 409, -1000, -1000, 1128, 996, 93, 87, -1000, 1131,
  1388  	-17, 29, -79, -1000, 182, -51, -23, -90, -87, 292,
  1389  	1368, -1000, 1105, -1000, 993, -1000, 3579, 3579, 3814, 3722,
  1390  	954, -1000, 944, 939, -1000, 946, 137, -24, -1000, -1000,
  1391  	-1000, -26, 1368, 181, -27, 2085, 136, -1000, -1000, 1057,
  1392  	2085, 1014, -1000, 1368, 1004, 1003, 478, -1000, -1000, 179,
  1393  	-30, -1000, 1092, 178, -34, -1000, -1000, -35, 1013, -59,
  1394  	3579, 2085, -1000, 3579, 732, 2489, 668, 700, 2489, 2489,
  1395  	605, 600, 136, 177, -1000, -1000, -1000, 3954, 3579, 285,
  1396  	476, 1978, 473, 469, 453, 443, 277, 276, 408, 273,
  1397  	406, 93, 176, -45, -1000, 3579, -1000, 835, 3808, 770,
  1398  	579, -1000, 667, -1000, 3913, 689, 484, 975, -1000, 412,
  1399  	-1000, 1024, -1000, 993, -1000, 170, 1105, 1368, 3579, -1000,
  1400  	-1000, 3579, 1772, 1368, 160, -1000, 998, 3967, -1000, 971,
  1401  	137, 1473, 137, 2234, 1981, 942, -46, 1596, 3579, 159,
  1402  	915, 1368, 158, -1000, -1000, -1000, -1000, 1368, 1368, 155,
  1403  	-47, 3579, 152, 2085, 3579, 271, 1091, 2085, 426, 1090,
  1404  	1164, 1164, 3579, 1089, 1164, -1000, -1000, -1000, -1000, -1000,
  1405  	2489, 634, 3579, 578, 575, 2489, 2489, 148, 1064, 3954,
  1406  	455, 267, -1000, 3579, 265, 264, 260, 995, 259, 455,
  1407  	455, 450, 455, 447, -1000, -1000, 93, 1814, -1000, -1000,
  1408  	-1000, 765, 2827, -1000, -1000, 3579, 458, -1000, -1000, -1000,
  1409  	-1000, -1000, 998, 135, -1000, -1000, 3967, 147, -61, 146,
  1410  	913, 979, -1000, -1000, 3579, 258, 929, 1473, 137, 971,
  1411  	137, 1959, 1596, -1000, -70, -63, 132, 256, -1000, 1063,
  1412  	-1000, -1000, 1057, 2085, 3967, -1000, -1000, -90, -1000, 455,
  1413  	136, -1000, 2658, 425, -1000, -1000, -1000, 1013, -1000, 423,
  1414  	144, 613, 571, 2489, 664, 725, 724, 569, 568, -1000,
  1415  	254, 143, -1000, 999, 985, 455, 3632, 455, 455, 455,
  1416  	253, 455, 142, 998, 126, 250, 122, 248, -1000, 3579,
  1417  	-1000, 754, -1000, 979, 93, -1000, -1000, -1000, 3579, 114,
  1418  	247, 503, 3967, 2085, -1000, -1000, 929, -1000, 971, 137,
  1419  	-1000, -1000, 3579, -1000, 3579, 93, -1000, 1368, 136, -1000,
  1420  	-1000, 121, -1000, 563, 356, -1000, -1000, 3671, 3579, -1000,
  1421  	-1000, 3298, 3579, 2658, 2658, 1060, 560, 631, 2489, 3579,
  1422  	792, -1000, 2489, -1000, -1000, 719, 718, 136, -1000, -1000,
  1423  	984, 3579, 118, -1000, 112, 102, 94, 998, 84, -1000,
  1424  	-1000, 455, -1000, 455, 3448, -1000, 500, -1000, 82, 93,
  1425  	-1000, 1368, 1127, 80, -1000, -1000, 77, 72, -1000, 69,
  1426  	-1000, -1000, -1000, 2658, 662, 688, 599, 15, 881, 1164,
  1427  	-1000, 559, 557, 422, 761, 556, -1000, 661, -1000, 686,
  1428  	-1000, -1000, 41, 3579, -1000, -1000, -1000, -1000, -1000, 31,
  1429  	-1000, 30, 22, -1000, 1112, -1000, -1000, 18, -1000, -1000,
  1430  	-1000, -1000, 96, -1000, 2658, 630, 3579, 2314, 2085, 2085,
  1431  	24, 880, -1000, -1000, 2658, -1000, 759, 2489, -1000, 3579,
  1432  	-1000, 404, -1000, -1000, -1000, -1000, 89, 93, -1000, 603,
  1433  	554, 2658, 659, 550, 355, -1000, -1000, 3671, 3579, -1000,
  1434  	-1000, -1000, 596, 592, 2085, 2085, 547, -1000, 750, -1000,
  1435  	864, 93, -1000, -1000, 545, 626, 2658, 3579, 777, -1000,
  1436  	2658, 717, 2314, 651, 683, 2314, 2314, 590, 474, -1000,
  1437  	-1000, -1000, 863, 826, 824, 803, -1000, 758, 542, -1000,
  1438  	644, -1000, 682, -1000, -1000, 2314, 617, 3579, 535, 533,
  1439  	2314, 2314, 855, 822, -1000, 812, 800, -1000, -1000, -1000,
  1440  	-1000, 757, 2658, -1000, 3579, 594, 532, 2314, 642, 712,
  1441  	707, 528, 525, 862, -1000, -1000, -1000, -1000, -1000, 740,
  1442  	521, 614, 2314, 3579, 773, -1000, 2314, -1000, -1000, 706,
  1443  	705, -1000, 820, -1000, -1000, 756, 520, -1000, 641, -1000,
  1444  	681, -1000, -1000, -1000, -1000, 735, 2314, -1000, 3579, -1000,
  1445  	738, -1000,
  1446  }
  1447  
  1448  var yyPgo = [...]int{
  1449  	0, 78, 12, 237, 7, 263, 9, 1306, 64, 24,
  1450  	35, 1303, 1302, 1301, 1299, 404, 300, 1295, 1294, 1293,
  1451  	1292, 1291, 1290, 1286, 60, 26, 25, 1284, 1283, 1282,
  1452  	55, 1280, 37, 1277, 1275, 40, 30, 1273, 1272, 1271,
  1453  	1270, 1269, 1171, 1268, 79, 92, 1332, 549, 46, 38,
  1454  	61, 39, 31, 27, 43, 1266, 1265, 53, 1261, 44,
  1455  	758, 1258, 81, 1257, 73, 72, 106, 1260, 130, 69,
  1456  	50, 28, 11, 1256, 1254, 1253, 0, 1249, 76, 1244,
  1457  	1242, 1241, 564, 1240, 1239, 1238, 1235, 33, 48, 23,
  1458  	1233, 1230, 6, 1229, 1227, 58, 1223, 1222, 1216, 1212,
  1459  	87, 70, 71, 1210, 32, 42, 292, 1209, 18, 1208,
  1460  	1205, 21, 57, 1204, 19, 20, 47, 68, 49, 63,
  1461  	1202, 1200, 1199, 41, 1196, 1195, 22, 62, 10, 16,
  1462  	5, 8, 2, 4, 45, 1194, 13, 1192, 14, 1191,
  1463  	3, 1189, 1567, 17, 15, 326, 1186, 84, 1078, 1185,
  1464  	1184, 83, 97, 80, 67, 56, 66, 77, 1183, 34,
  1465  	616, 1179,
  1466  }
  1467  
  1468  var yyR1 = [...]int{
  1469  	0, 1, 1, 1, 2, 2, 3, 3, 4, 4,
  1470  	5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
  1471  	5, 5, 5, 5, 5, 5, 5, 5, 6, 6,
  1472  	7, 7, 8, 8, 8, 8, 8, 9, 9, 10,
  1473  	10, 12, 12, 11, 11, 11, 11, 11, 13, 13,
  1474  	13, 13, 13, 13, 14, 14, 15, 15, 15, 15,
  1475  	15, 16, 16, 17, 17, 18, 18, 18, 18, 18,
  1476  	19, 19, 19, 19, 19, 19, 20, 20, 20, 20,
  1477  	21, 21, 21, 21, 21, 22, 22, 23, 23, 23,
  1478  	23, 23, 23, 23, 23, 23, 23, 24, 24, 25,
  1479  	25, 26, 26, 26, 26, 26, 27, 27, 27, 27,
  1480  	27, 27, 27, 28, 28, 28, 28, 28, 29, 29,
  1481  	30, 30, 31, 31, 31, 31, 32, 33, 33, 34,
  1482  	35, 35, 36, 36, 36, 37, 37, 37, 37, 37,
  1483  	38, 38, 38, 38, 38, 38, 38, 39, 39, 39,
  1484  	40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  1485  	40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
  1486  	40, 40, 40, 40, 41, 41, 41, 42, 42, 42,
  1487  	42, 43, 43, 43, 43, 44, 44, 44, 44, 45,
  1488  	45, 46, 47, 48, 48, 49, 49, 50, 50, 51,
  1489  	51, 52, 52, 53, 53, 53, 54, 54, 54, 55,
  1490  	55, 56, 56, 57, 57, 57, 58, 58, 58, 59,
  1491  	59, 60, 60, 61, 61, 62, 62, 63, 63, 63,
  1492  	63, 63, 64, 65, 66, 66, 66, 66, 66, 67,
  1493  	67, 67, 68, 68, 68, 68, 68, 68, 68, 68,
  1494  	68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
  1495  	68, 69, 70, 70, 70, 71, 71, 72, 72, 73,
  1496  	73, 74, 74, 74, 75, 75, 76, 77, 78, 78,
  1497  	78, 79, 79, 79, 79, 79, 79, 79, 79, 79,
  1498  	79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
  1499  	80, 80, 80, 80, 80, 80, 80, 81, 81, 81,
  1500  	81, 82, 82, 83, 83, 83, 83, 83, 83, 83,
  1501  	83, 84, 84, 84, 84, 84, 84, 85, 85, 86,
  1502  	86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
  1503  	86, 87, 88, 88, 89, 89, 90, 90, 91, 91,
  1504  	91, 92, 92, 92, 93, 93, 94, 94, 95, 95,
  1505  	95, 95, 96, 96, 96, 96, 96, 98, 98, 98,
  1506  	97, 97, 97, 97, 99, 99, 99, 99, 100, 100,
  1507  	103, 103, 104, 104, 104, 105, 105, 105, 105, 106,
  1508  	106, 106, 106, 106, 106, 106, 107, 107, 107, 107,
  1509  	107, 107, 107, 107, 107, 107, 108, 108, 109, 109,
  1510  	109, 109, 110, 111, 111, 112, 112, 113, 113, 114,
  1511  	114, 115, 115, 116, 116, 117, 117, 101, 101, 102,
  1512  	102, 118, 118, 119, 119, 120, 120, 120, 120, 121,
  1513  	122, 123, 123, 124, 124, 124, 124, 124, 124, 124,
  1514  	124, 125, 125, 126, 126, 127, 127, 128, 128, 129,
  1515  	129, 130, 130, 131, 131, 132, 132, 133, 133, 134,
  1516  	134, 135, 135, 136, 136, 137, 137, 138, 138, 139,
  1517  	139, 140, 140, 141, 141, 142, 142, 142, 142, 142,
  1518  	142, 142, 142, 142, 143, 144, 144, 145, 146, 146,
  1519  	147, 147, 148, 149, 150, 151, 152, 152, 153, 153,
  1520  	154, 154, 155, 155, 156, 156, 156, 157, 157, 158,
  1521  	158, 159, 159, 160, 160, 161, 161,
  1522  }
  1523  
  1524  var yyR2 = [...]int{
  1525  	0, 0, 1, 3, 0, 3, 0, 3, 0, 3,
  1526  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1527  	1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1528  	1, 1, 6, 8, 8, 9, 9, 1, 1, 1,
  1529  	2, 1, 1, 7, 8, 6, 1, 1, 7, 8,
  1530  	6, 1, 1, 1, 1, 1, 6, 8, 8, 9,
  1531  	9, 1, 2, 1, 1, 7, 8, 6, 1, 1,
  1532  	7, 8, 6, 1, 1, 1, 2, 2, 1, 2,
  1533  	4, 4, 4, 4, 2, 1, 1, 7, 9, 6,
  1534  	6, 8, 5, 7, 7, 7, 7, 1, 3, 1,
  1535  	3, 0, 1, 1, 2, 2, 5, 5, 2, 4,
  1536  	2, 3, 5, 6, 8, 5, 3, 3, 1, 3,
  1537  	1, 3, 4, 2, 4, 3, 1, 1, 3, 3,
  1538  	1, 3, 1, 1, 3, 9, 10, 10, 12, 3,
  1539  	0, 1, 1, 1, 1, 2, 2, 5, 6, 3,
  1540  	4, 4, 4, 4, 4, 4, 2, 2, 2, 2,
  1541  	4, 4, 2, 2, 2, 4, 1, 2, 2, 4,
  1542  	2, 2, 1, 2, 2, 3, 4, 3, 5, 4,
  1543  	6, 8, 10, 9, 11, 5, 4, 4, 4, 1,
  1544  	1, 3, 2, 0, 2, 0, 2, 0, 3, 0,
  1545  	2, 0, 3, 1, 6, 5, 0, 1, 2, 1,
  1546  	1, 0, 1, 1, 1, 1, 0, 1, 1, 0,
  1547  	3, 0, 2, 6, 9, 1, 3, 1, 1, 1,
  1548  	1, 1, 1, 1, 1, 3, 3, 3, 3, 1,
  1549  	1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
  1550  	1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
  1551  	1, 1, 3, 1, 6, 1, 3, 1, 3, 2,
  1552  	4, 0, 1, 1, 1, 1, 3, 3, 3, 1,
  1553  	6, 3, 3, 3, 3, 4, 4, 5, 6, 6,
  1554  	3, 4, 4, 3, 4, 4, 4, 4, 4, 2,
  1555  	3, 3, 3, 3, 3, 2, 2, 3, 3, 2,
  1556  	2, 0, 1, 4, 4, 6, 8, 3, 4, 4,
  1557  	4, 5, 5, 5, 5, 5, 1, 5, 10, 8,
  1558  	9, 9, 9, 9, 9, 9, 8, 8, 10, 8,
  1559  	10, 2, 1, 5, 0, 3, 2, 5, 2, 2,
  1560  	2, 2, 2, 2, 2, 1, 2, 1, 1, 1,
  1561  	4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
  1562  	4, 6, 6, 8, 6, 8, 6, 8, 1, 1,
  1563  	1, 1, 1, 2, 3, 1, 2, 3, 4, 1,
  1564  	2, 3, 1, 1, 1, 3, 4, 5, 6, 5,
  1565  	6, 5, 6, 7, 6, 7, 2, 4, 1, 3,
  1566  	1, 3, 5, 0, 1, 4, 5, 0, 2, 1,
  1567  	3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
  1568  	3, 1, 3, 1, 3, 6, 9, 5, 8, 7,
  1569  	3, 1, 3, 10, 13, 9, 12, 9, 12, 8,
  1570  	11, 5, 6, 4, 5, 0, 2, 4, 5, 0,
  1571  	2, 4, 5, 0, 2, 4, 5, 0, 2, 4,
  1572  	5, 0, 2, 4, 5, 0, 2, 4, 5, 0,
  1573  	2, 4, 5, 0, 2, 1, 1, 1, 1, 1,
  1574  	1, 1, 1, 1, 1, 1, 3, 3, 1, 3,
  1575  	1, 3, 1, 1, 1, 1, 0, 1, 0, 1,
  1576  	0, 1, 0, 1, 1, 1, 1, 0, 1, 0,
  1577  	1, 0, 1, 1, 1, 0, 3,
  1578  }
  1579  
  1580  var yyChk = [...]int{
  1581  	-1000, -1, -7, -5, -11, -42, -43, -120, -121, -124,
  1582  	-125, -23, -20, -21, -27, -28, -31, -37, -22, -40,
  1583  	-41, -68, 15, 91, 90, -8, -10, -44, -60, -46,
  1584  	30, 35, 38, 136, 99, -145, 105, 23, 24, 103,
  1585  	104, 102, 106, 123, 114, 115, 36, 127, 137, 119,
  1586  	120, 121, 122, 128, 124, 125, 126, 129, -63, -80,
  1587  	-77, -76, -83, -84, -86, -110, -79, -81, -143, -148,
  1588  	-149, -150, -151, -39, 172, 16, 93, 118, -45, 83,
  1589  	20, 5, 6, 7, -64, -65, -67, 166, 167, -142,
  1590  	151, 153, 154, 152, -85, 155, 156, 157, 158, -70,
  1591  	73, 77, 171, 11, 13, 14, 17, 12, 100, 9,
  1592  	81, -66, 4, 138, 139, 140, 142, 143, 144, 145,
  1593  	146, 150, 33, 164, -68, 172, -76, -145, 91, 30,
  1594  	136, 90, -111, -67, -68, -52, 48, -44, -46, 27,
  1595  	22, 30, 25, -76, 172, -47, -48, 28, 21, 172,
  1596  	28, 39, 39, -147, 172, -146, -143, -147, -142, -143,
  1597  	100, 47, 106, 130, -148, -151, -148, -142, -142, -38,
  1598  	107, 108, 40, 41, 109, 110, -142, -142, -68, -68,
  1599  	-68, -151, -142, -68, -68, -68, -142, -68, -115, -67,
  1600  	-142, -68, -142, -142, 161, -67, -68, -115, -42, -60,
  1601  	-46, -68, -143, -144, -9, 136, 99, 6, 68, 69,
  1602  	70, -62, -61, -158, 34, -152, 82, 160, 159, 165,
  1603  	80, 78, 77, 74, 79, -160, 167, 166, 168, 169,
  1604  	170, 76, 75, -67, -67, 175, 172, 172, 172, 172,
  1605  	172, 172, 172, 172, 172, 159, 165, -153, -160, 77,
  1606  	-76, -67, -67, -142, 172, 175, -1, 95, -115, -82,
  1607  	172, -111, -134, -112, 94, -53, -59, 54, 55, 51,
  1608  	-52, -47, 28, -102, -100, -95, -97, -142, 19, 18,
  1609  	33, -96, 142, 143, 144, 145, 146, 28, 21, -101,
  1610  	-95, -48, -49, 26, -144, -143, -117, -106, -103, -107,
  1611  	32, -104, 172, -100, -99, -76, -98, 147, 148, 149,
  1612  	-82, -115, -100, -161, 91, -100, -152, 174, 161, 100,
  1613  	47, 130, 131, -142, -142, 33, -142, -142, 165, 46,
  1614  	165, 46, 65, -142, -68, -68, 21, 65, 65, 46,
  1615  	21, 21, 174, 65, 174, -68, 6, -67, 173, 173,
  1616  	173, 173, 97, 74, 174, 74, -143, -144, -157, 71,
  1617  	-157, -157, 174, -142, -119, -109, -67, -69, -142, 168,
  1618  	-67, -67, -67, -153, -67, 78, 74, 79, -70, 172,
  1619  	-76, -67, 72, 71, -67, -67, -67, -67, -67, -67,
  1620  	-67, -142, 6, -82, -152, -82, -67, 173, -119, -152,
  1621  	-152, -152, -82, -82, -82, -70, -70, 78, 74, 72,
  1622  	71, 80, 152, -67, -142, 6, -1, 173, 94, -135,
  1623  	96, -113, 96, -67, -68, 101, 102, -68, -68, -72,
  1624  	-73, -67, -53, -48, -100, 23, 174, 172, 172, -100,
  1625  	-117, 21, 174, -49, -50, 49, -67, 63, -154, -156,
  1626  	66, 174, 58, 60, 61, 62, -142, 31, -106, -76,
  1627  	-142, 31, 172, 173, 65, 172, -142, 77, 36, 37,
  1628  	45, 23, -82, -147, -67, 101, 172, 31, 172, 172,
  1629  	-68, -142, -68, -142, -142, -68, -142, -68, -30, -29,
  1630  	-68, 28, 5, -30, -116, -68, -151, -151, -100, -116,
  1631  	-116, -115, -68, -2, -12, -5, -13, 91, 90, -8,
  1632  	-10, -6, 116, 117, -142, -144, -142, 74, 74, -45,
  1633  	-44, -45, -45, -62, 31, 172, 174, 31, 175, -64,
  1634  	-65, 75, -67, -70, -67, -70, -70, 173, -82, 173,
  1635  	21, 173, -82, -82, -69, -82, 173, 173, 173, -70,
  1636  	-78, 172, -76, 150, -78, -78, -153, 174, -127, -126,
  1637  	96, 92, 98, -1, 98, -67, 95, 95, 22, -55,
  1638  	40, 107, -56, -57, 56, 89, 140, -58, 89, 140,
  1639  	174, -74, 52, 53, 101, -49, 29, 172, -42, -123,
  1640  	-122, -66, -142, -102, -82, -95, -68, -142, 33, 65,
  1641  	172, -49, -117, -101, -50, -51, 50, 51, 57, 57,
  1642  	-155, 59, -154, -156, -105, -106, 67, -104, -142, 173,
  1643  	-142, -68, 172, -114, -66, 172, -159, 31, 73, -24,
  1644  	172, -142, -66, 172, -66, -142, 173, -42, -142, -118,
  1645  	-142, -42, 173, -36, -33, -35, -32, -34, -143, -142,
  1646  	174, 31, -144, 174, 98, 164, -68, -111, 97, 97,
  1647  	-142, -142, 172, -118, -119, -142, -69, -67, 75, 113,
  1648  	173, -67, 173, 173, 173, 173, 113, 113, 134, 113,
  1649  	134, 75, -71, -70, -76, 172, 103, 74, -67, 98,
  1650  	-127, -1, -68, 90, -67, -1, -68, -54, 141, 83,
  1651  	-72, 139, 22, -50, -71, -114, -48, 174, 165, 173,
  1652  	173, 174, 174, 172, -114, -49, -51, -67, -115, -106,
  1653  	67, -106, 67, 57, 57, -155, -104, 174, 174, -114,
  1654  	173, 174, -118, -42, -26, 40, 41, 42, 43, -25,
  1655  	-24, 44, -114, 46, 46, 113, 173, 174, 31, 173,
  1656  	174, 174, 44, 173, 174, -30, -142, -116, 93, -2,
  1657  	95, -136, 94, -2, -2, 97, 97, -42, 173, -67,
  1658  	172, 113, 173, 101, 113, 113, 113, 135, 113, 172,
  1659  	172, 139, 172, 139, -70, 173, 174, -67, 84, 173,
  1660  	91, 98, 95, -112, -134, 94, -57, -59, 138, -75,
  1661  	40, 41, -51, 173, -49, -123, -67, -82, -95, -114,
  1662  	173, -52, -104, -108, 64, 65, -104, -106, 67, -106,
  1663  	67, 57, 174, -105, -142, -68, 173, 65, -114, 173,
  1664  	-66, -66, 173, 174, -67, 173, -142, -142, -68, 172,
  1665  	31, -118, 132, 31, -32, -35, -35, -143, -68, 31,
  1666  	-36, -2, -137, 96, -68, 98, 98, -2, -2, 173,
  1667  	31, -88, -87, -89, 112, 172, -67, 172, 172, 172,
  1668  	49, 172, -87, -89, -88, 113, -87, 113, -71, 174,
  1669  	91, -1, -54, -52, 29, -42, 173, 173, 174, 173,
  1670  	65, -53, -67, 172, -108, -108, -104, -104, -106, 67,
  1671  	-105, 173, 174, 173, 174, 29, -42, 172, -159, -26,
  1672  	-25, -88, -42, -3, -14, -5, -18, 91, 90, -15,
  1673  	-16, 93, 133, 132, 132, 173, -129, -128, 96, 92,
  1674  	98, -2, 95, 93, 93, 98, 98, 172, 173, -52,
  1675  	48, 51, -88, 173, -88, -88, -88, 172, -87, 173,
  1676  	173, 172, 173, 172, -67, -126, -53, -71, -82, 29,
  1677  	-42, 172, 101, -118, -108, -104, -82, -82, -71, -114,
  1678  	-42, 173, 98, 164, -68, -111, -68, -143, -144, -9,
  1679  	-68, -3, -3, 31, 98, -129, -2, -68, 90, -2,
  1680  	93, 93, -42, 51, -115, 173, 173, 173, 173, -52,
  1681  	173, -88, -87, 173, 101, 173, -71, -114, 22, 173,
  1682  	173, 173, 173, -3, 95, -138, 94, 97, 74, 74,
  1683  	-143, -144, 98, 98, 132, 91, 98, 95, -136, 94,
  1684  	173, -72, 173, 173, 173, 22, 173, 29, -42, -3,
  1685  	-139, 96, -68, -4, -17, -5, -19, 91, 90, -15,
  1686  	-16, -6, -142, -142, 74, 74, -3, 91, -2, -90,
  1687  	140, 29, -42, -71, -131, -130, 96, 92, 98, -3,
  1688  	95, 98, 164, -68, -111, 97, 97, -142, -142, 98,
  1689  	-128, -91, 78, 85, 6, 88, -71, 98, -131, -3,
  1690  	-68, 90, -3, 93, -4, 95, -140, 94, -4, -4,
  1691  	97, 97, -93, 85, -92, 6, 88, 86, 86, 89,
  1692  	91, 98, 95, -138, 94, -4, -141, 96, -68, 98,
  1693  	98, -4, -4, 75, 86, 86, 87, 89, 91, -3,
  1694  	-133, -132, 96, 92, 98, -4, 95, 93, 93, 98,
  1695  	98, -94, 85, -92, -130, 98, -133, -4, -68, 90,
  1696  	-4, 93, 93, 87, 91, 98, 95, -140, 94, 91,
  1697  	-4, -132,
  1698  }
  1699  
  1700  var yyDef = [...]int{
  1701  	-2, -2, 2, 30, 31, 10, 11, 12, 13, 14,
  1702  	15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
  1703  	25, -2, 27, 0, 413, 46, 47, -2, 0, 193,
  1704  	0, 0, 0, 0, 0, -2, 0, 0, 0, 0,
  1705  	0, 140, 0, 0, 85, 86, 0, 0, 0, 0,
  1706  	0, 0, 0, 166, 0, 172, 0, 0, 242, 243,
  1707  	244, -2, 246, 247, 248, 249, 250, 251, 252, 254,
  1708  	255, 256, 257, 258, 0, 260, 0, 39, 0, 519,
  1709  	506, 227, 228, 229, 230, 231, 0, 0, 0, 234,
  1710  	0, 0, 0, 0, 326, 0, 0, 0, 0, 508,
  1711  	0, 0, 0, 494, 502, 503, 504, 505, 0, 232,
  1712  	233, 239, 485, 486, 487, 488, 489, 490, 491, 492,
  1713  	493, 0, 0, -2, 240, 311, 245, 253, 0, 0,
  1714  	0, 413, 0, 414, 240, 219, 0, -2, 193, 0,
  1715  	0, 0, 0, 190, 0, 193, 195, 0, 0, 311,
  1716  	0, 525, 0, 76, 506, 500, 498, 77, 0, 79,
  1717  	0, 0, 0, 0, 0, 0, 84, 108, 110, 0,
  1718  	141, 142, 143, 144, 0, 0, 0, -2, -2, 240,
  1719  	240, 156, 168, -2, -2, -2, -2, -2, 167, 421,
  1720  	-2, -2, 173, 174, 0, 0, 240, 0, 0, 0,
  1721  	193, 240, 252, 0, 0, 37, 38, 40, 517, 517,
  1722  	517, 222, 225, 0, 520, 0, 507, 0, 523, 524,
  1723  	508, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  1724  	0, 0, 0, 305, 306, 0, 311, 311, 0, 506,
  1725  	506, 506, 311, 311, 311, 523, 524, 0, 0, 509,
  1726  	299, 309, 310, 0, 0, 0, 3, -2, 0, 0,
  1727  	311, 0, 471, 417, 0, 177, 203, 0, 0, 0,
  1728  	219, 193, 0, 0, 429, 378, 379, 358, 359, 0,
  1729  	361, 0, -2, -2, -2, -2, -2, 0, 0, 0,
  1730  	427, 195, 197, 0, 192, 495, 194, -2, 389, 392,
  1731  	393, 394, 0, 380, 381, 382, 0, 367, 368, 369,
  1732  	0, 312, 0, 0, 0, 0, 311, 0, 0, 0,
  1733  	0, 0, 0, 111, 116, 117, 125, 139, 0, 0,
  1734  	0, 0, 0, 0, -2, -2, 0, 0, 0, 0,
  1735  	0, 0, 0, 0, 0, -2, 228, 497, 241, 259,
  1736  	262, 276, -2, 0, 0, 0, 0, 0, 0, 518,
  1737  	0, 0, 519, 0, 191, 433, 408, 410, 234, 261,
  1738  	277, -2, -2, 0, 0, 0, 0, 0, 290, 0,
  1739  	263, -2, 0, 0, 300, 301, 302, 303, 304, 307,
  1740  	308, 235, 237, 0, 311, 0, 421, 317, 0, 311,
  1741  	311, 311, 0, 0, 0, 282, 284, 0, 0, 0,
  1742  	0, 508, 149, 0, 236, 238, 455, 319, 0, 0,
  1743  	-2, 0, 0, 0, 240, 0, 0, -2, -2, 202,
  1744  	267, 271, 179, 195, 0, 0, 0, 311, 0, 0,
  1745  	195, 0, 0, 197, 199, 0, 196, 0, 0, 512,
  1746  	510, 0, 511, 514, 515, 516, 390, 0, 510, -2,
  1747  	383, 0, 0, 320, 0, 0, 521, 0, 0, 0,
  1748  	0, 0, 0, 501, 499, 0, 0, 0, 0, 0,
  1749  	-2, -2, -2, -2, -2, -2, -2, -2, 109, 120,
  1750  	-2, 0, 122, 124, 165, -2, 154, 155, 169, 160,
  1751  	161, 422, -2, 0, 0, 41, 42, 0, 413, 51,
  1752  	52, 53, 28, 29, 0, 496, 0, 0, 0, 186,
  1753  	189, 187, 188, 226, 0, 0, 0, 0, 0, 285,
  1754  	286, 0, 0, 291, -2, 295, 297, 313, 0, 314,
  1755  	0, 318, 0, 0, 0, 0, 0, 0, 0, 0,
  1756  	292, 0, 279, 0, 296, 298, 0, 0, 0, 455,
  1757  	-2, 0, 0, 472, 412, 418, 0, -2, 178, 0,
  1758  	209, 210, 206, 212, 213, 214, 215, 220, 217, 218,
  1759  	0, 269, 272, 273, 0, 197, 0, 0, 437, 193,
  1760  	441, 0, 234, 430, 0, 0, 240, -2, 361, 0,
  1761  	0, 451, 195, 428, 199, 185, 0, 0, 0, 0,
  1762  	0, 513, 0, 512, 426, -2, 0, 394, 391, 395,
  1763  	384, 240, 0, 0, 419, 0, 0, 522, 526, 101,
  1764  	0, 97, 92, 0, 0, 0, 323, 106, 107, 0,
  1765  	431, 115, 0, 0, 132, 133, 127, 130, 126, 0,
  1766  	0, 0, 112, 0, 0, -2, 240, 0, -2, -2,
  1767  	0, 0, 0, 0, 434, 409, 411, 287, 0, 0,
  1768  	321, 0, 322, 324, 325, 327, 0, 0, 0, 0,
  1769  	0, 0, 0, 265, -2, 0, 147, 0, 0, 0,
  1770  	0, 456, 240, 45, 415, 469, 240, 219, 207, 0,
  1771  	268, 0, 180, 199, 435, 0, 195, 0, 0, 360,
  1772  	370, 311, 0, 0, 0, 452, 201, 200, 198, 396,
  1773  	0, 510, 0, 0, 0, 0, 386, 0, 0, 0,
  1774  	0, 0, 0, 89, 90, 102, 103, 0, 0, 0,
  1775  	99, 0, 0, 0, 0, 0, 113, 0, 0, 0,
  1776  	0, 0, 0, 0, 0, 121, 119, 424, 32, 5,
  1777  	-2, 475, 0, 0, 0, -2, -2, 0, 0, 288,
  1778  	344, 0, 315, 0, 0, 0, 0, 0, 0, 344,
  1779  	344, 0, 344, 0, 289, 278, 0, 0, 148, 264,
  1780  	43, 0, -2, 416, 470, 0, 206, 205, 208, 270,
  1781  	274, 275, 201, 0, 439, 442, 440, 0, 0, 0,
  1782  	0, 219, 401, 397, 0, 0, 0, 510, 0, 399,
  1783  	0, 0, 0, 387, 234, 240, 0, 0, 420, -2,
  1784  	104, 105, 101, 0, 98, 93, 94, -2, -2, 344,
  1785  	0, 432, -2, 0, 128, 134, 131, 0, -2, 0,
  1786  	0, 459, 0, -2, 240, 0, 0, 0, 0, 223,
  1787  	0, 0, 342, 201, 0, 344, 0, 344, 344, 344,
  1788  	0, 344, 0, 201, 0, 0, 0, 0, 266, 0,
  1789  	44, 453, 204, 219, 0, 438, 371, 372, 311, 0,
  1790  	0, 181, 406, 0, 402, 398, 0, 404, 400, 0,
  1791  	388, 374, 311, 376, 311, 0, 449, 0, 0, 91,
  1792  	100, 0, 114, 0, 0, 54, 55, 0, 413, 68,
  1793  	69, 0, 61, -2, -2, 0, 0, 459, -2, 0,
  1794  	0, 476, -2, 33, 34, 0, 0, 0, 329, 341,
  1795  	0, 0, 0, 316, 0, 0, 0, 201, 0, 336,
  1796  	337, 344, 339, 344, 0, 454, 183, 436, 0, 0,
  1797  	445, 0, 0, 0, 403, 405, 0, 0, 447, 0,
  1798  	88, 332, 135, -2, 240, 0, 240, 252, 0, 0,
  1799  	-2, 0, 0, 0, 0, 0, 460, 240, 50, 473,
  1800  	35, 36, 0, 0, 345, 330, 331, 333, 334, 0,
  1801  	335, 0, 0, 280, 0, 373, 443, 0, 182, 407,
  1802  	375, 377, 0, 7, -2, 479, 0, -2, 0, 0,
  1803  	0, 0, 136, 137, -2, 48, 0, -2, 474, 0,
  1804  	224, 202, 328, 338, 340, 184, 0, 0, 450, 463,
  1805  	0, -2, 240, 0, 0, 63, 64, 0, 413, 73,
  1806  	74, 75, 0, 0, 0, 0, 0, 49, 457, 343,
  1807  	0, 0, 446, 448, 0, 463, -2, 0, 0, 480,
  1808  	-2, 0, -2, 240, 0, -2, -2, 0, 0, 138,
  1809  	458, 346, 0, 0, 0, 0, 444, 0, 0, 464,
  1810  	240, 67, 477, 56, 9, -2, 483, 0, 0, 0,
  1811  	-2, -2, 0, 0, 355, 0, 0, 348, 349, 350,
  1812  	65, 0, -2, 478, 0, 467, 0, -2, 240, 0,
  1813  	0, 0, 0, 0, 354, 351, 352, 353, 66, 461,
  1814  	0, 467, -2, 0, 0, 484, -2, 57, 58, 0,
  1815  	0, 347, 0, 357, 462, 0, 0, 468, 240, 72,
  1816  	481, 59, 60, 356, 70, 0, -2, 482, 0, 71,
  1817  	465, 466,
  1818  }
  1819  
  1820  var yyTok1 = [...]int{
  1821  	1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1822  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1823  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
  1824  	3, 3, 3, 171, 3, 3, 3, 170, 3, 3,
  1825  	172, 173, 168, 167, 174, 166, 175, 169, 3, 3,
  1826  	3, 3, 3, 3, 3, 3, 3, 3, 3, 164,
  1827  	3, 165,
  1828  }
  1829  
  1830  var yyTok2 = [...]int{
  1831  	2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
  1832  	12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
  1833  	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
  1834  	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
  1835  	42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
  1836  	52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
  1837  	62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
  1838  	72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
  1839  	82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
  1840  	92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
  1841  	102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
  1842  	112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
  1843  	122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
  1844  	132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
  1845  	142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
  1846  	152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
  1847  	162, 163,
  1848  }
  1849  
  1850  var yyTok3 = [...]int{
  1851  	0,
  1852  }
  1853  
  1854  var yyErrorMessages = [...]struct {
  1855  	state int
  1856  	token int
  1857  	msg   string
  1858  }{}
  1859  
  1860  //line yaccpar:1
  1861  
  1862  /*	parser for yacc output	*/
  1863  
  1864  var (
  1865  	yyDebug        = 0
  1866  	yyErrorVerbose = false
  1867  )
  1868  
  1869  type yyLexer interface {
  1870  	Lex(lval *yySymType) int
  1871  	Error(s string)
  1872  }
  1873  
  1874  type yyParser interface {
  1875  	Parse(yyLexer) int
  1876  	Lookahead() int
  1877  }
  1878  
  1879  type yyParserImpl struct {
  1880  	lval  yySymType
  1881  	stack [yyInitialStackSize]yySymType
  1882  	char  int
  1883  }
  1884  
  1885  func (p *yyParserImpl) Lookahead() int {
  1886  	return p.char
  1887  }
  1888  
  1889  func yyNewParser() yyParser {
  1890  	return &yyParserImpl{}
  1891  }
  1892  
  1893  const yyFlag = -1000
  1894  
  1895  func yyTokname(c int) string {
  1896  	if c >= 1 && c-1 < len(yyToknames) {
  1897  		if yyToknames[c-1] != "" {
  1898  			return yyToknames[c-1]
  1899  		}
  1900  	}
  1901  	return __yyfmt__.Sprintf("tok-%v", c)
  1902  }
  1903  
  1904  func yyStatname(s int) string {
  1905  	if s >= 0 && s < len(yyStatenames) {
  1906  		if yyStatenames[s] != "" {
  1907  			return yyStatenames[s]
  1908  		}
  1909  	}
  1910  	return __yyfmt__.Sprintf("state-%v", s)
  1911  }
  1912  
  1913  func yyErrorMessage(state, lookAhead int) string {
  1914  	const TOKSTART = 4
  1915  
  1916  	if !yyErrorVerbose {
  1917  		return "syntax error"
  1918  	}
  1919  
  1920  	for _, e := range yyErrorMessages {
  1921  		if e.state == state && e.token == lookAhead {
  1922  			return "syntax error: " + e.msg
  1923  		}
  1924  	}
  1925  
  1926  	res := "syntax error: unexpected " + yyTokname(lookAhead)
  1927  
  1928  	// To match Bison, suggest at most four expected tokens.
  1929  	expected := make([]int, 0, 4)
  1930  
  1931  	// Look for shiftable tokens.
  1932  	base := yyPact[state]
  1933  	for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
  1934  		if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
  1935  			if len(expected) == cap(expected) {
  1936  				return res
  1937  			}
  1938  			expected = append(expected, tok)
  1939  		}
  1940  	}
  1941  
  1942  	if yyDef[state] == -2 {
  1943  		i := 0
  1944  		for yyExca[i] != -1 || yyExca[i+1] != state {
  1945  			i += 2
  1946  		}
  1947  
  1948  		// Look for tokens that we accept or reduce.
  1949  		for i += 2; yyExca[i] >= 0; i += 2 {
  1950  			tok := yyExca[i]
  1951  			if tok < TOKSTART || yyExca[i+1] == 0 {
  1952  				continue
  1953  			}
  1954  			if len(expected) == cap(expected) {
  1955  				return res
  1956  			}
  1957  			expected = append(expected, tok)
  1958  		}
  1959  
  1960  		// If the default action is to accept or reduce, give up.
  1961  		if yyExca[i+1] != 0 {
  1962  			return res
  1963  		}
  1964  	}
  1965  
  1966  	for i, tok := range expected {
  1967  		if i == 0 {
  1968  			res += ", expecting "
  1969  		} else {
  1970  			res += " or "
  1971  		}
  1972  		res += yyTokname(tok)
  1973  	}
  1974  	return res
  1975  }
  1976  
  1977  func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
  1978  	token = 0
  1979  	char = lex.Lex(lval)
  1980  	if char <= 0 {
  1981  		token = yyTok1[0]
  1982  		goto out
  1983  	}
  1984  	if char < len(yyTok1) {
  1985  		token = yyTok1[char]
  1986  		goto out
  1987  	}
  1988  	if char >= yyPrivate {
  1989  		if char < yyPrivate+len(yyTok2) {
  1990  			token = yyTok2[char-yyPrivate]
  1991  			goto out
  1992  		}
  1993  	}
  1994  	for i := 0; i < len(yyTok3); i += 2 {
  1995  		token = yyTok3[i+0]
  1996  		if token == char {
  1997  			token = yyTok3[i+1]
  1998  			goto out
  1999  		}
  2000  	}
  2001  
  2002  out:
  2003  	if token == 0 {
  2004  		token = yyTok2[1] /* unknown char */
  2005  	}
  2006  	if yyDebug >= 3 {
  2007  		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
  2008  	}
  2009  	return char, token
  2010  }
  2011  
  2012  func yyParse(yylex yyLexer) int {
  2013  	return yyNewParser().Parse(yylex)
  2014  }
  2015  
  2016  func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
  2017  	var yyn int
  2018  	var yyVAL yySymType
  2019  	var yyDollar []yySymType
  2020  	_ = yyDollar // silence set and not used
  2021  	yyS := yyrcvr.stack[:]
  2022  
  2023  	Nerrs := 0   /* number of errors */
  2024  	Errflag := 0 /* error recovery flag */
  2025  	yystate := 0
  2026  	yyrcvr.char = -1
  2027  	yytoken := -1 // yyrcvr.char translated into internal numbering
  2028  	defer func() {
  2029  		// Make sure we report no lookahead when not parsing.
  2030  		yystate = -1
  2031  		yyrcvr.char = -1
  2032  		yytoken = -1
  2033  	}()
  2034  	yyp := -1
  2035  	goto yystack
  2036  
  2037  ret0:
  2038  	return 0
  2039  
  2040  ret1:
  2041  	return 1
  2042  
  2043  yystack:
  2044  	/* put a state and value onto the stack */
  2045  	if yyDebug >= 4 {
  2046  		__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
  2047  	}
  2048  
  2049  	yyp++
  2050  	if yyp >= len(yyS) {
  2051  		nyys := make([]yySymType, len(yyS)*2)
  2052  		copy(nyys, yyS)
  2053  		yyS = nyys
  2054  	}
  2055  	yyS[yyp] = yyVAL
  2056  	yyS[yyp].yys = yystate
  2057  
  2058  yynewstate:
  2059  	yyn = yyPact[yystate]
  2060  	if yyn <= yyFlag {
  2061  		goto yydefault /* simple state */
  2062  	}
  2063  	if yyrcvr.char < 0 {
  2064  		yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
  2065  	}
  2066  	yyn += yytoken
  2067  	if yyn < 0 || yyn >= yyLast {
  2068  		goto yydefault
  2069  	}
  2070  	yyn = yyAct[yyn]
  2071  	if yyChk[yyn] == yytoken { /* valid shift */
  2072  		yyrcvr.char = -1
  2073  		yytoken = -1
  2074  		yyVAL = yyrcvr.lval
  2075  		yystate = yyn
  2076  		if Errflag > 0 {
  2077  			Errflag--
  2078  		}
  2079  		goto yystack
  2080  	}
  2081  
  2082  yydefault:
  2083  	/* default state action */
  2084  	yyn = yyDef[yystate]
  2085  	if yyn == -2 {
  2086  		if yyrcvr.char < 0 {
  2087  			yyrcvr.char, yytoken = yylex1(yylex, &yyrcvr.lval)
  2088  		}
  2089  
  2090  		/* look through exception table */
  2091  		xi := 0
  2092  		for {
  2093  			if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
  2094  				break
  2095  			}
  2096  			xi += 2
  2097  		}
  2098  		for xi += 2; ; xi += 2 {
  2099  			yyn = yyExca[xi+0]
  2100  			if yyn < 0 || yyn == yytoken {
  2101  				break
  2102  			}
  2103  		}
  2104  		yyn = yyExca[xi+1]
  2105  		if yyn < 0 {
  2106  			goto ret0
  2107  		}
  2108  	}
  2109  	if yyn == 0 {
  2110  		/* error ... attempt to resume parsing */
  2111  		switch Errflag {
  2112  		case 0: /* brand new error */
  2113  			yylex.Error(yyErrorMessage(yystate, yytoken))
  2114  			Nerrs++
  2115  			if yyDebug >= 1 {
  2116  				__yyfmt__.Printf("%s", yyStatname(yystate))
  2117  				__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
  2118  			}
  2119  			fallthrough
  2120  
  2121  		case 1, 2: /* incompletely recovered error ... try again */
  2122  			Errflag = 3
  2123  
  2124  			/* find a state where "error" is a legal shift action */
  2125  			for yyp >= 0 {
  2126  				yyn = yyPact[yyS[yyp].yys] + yyErrCode
  2127  				if yyn >= 0 && yyn < yyLast {
  2128  					yystate = yyAct[yyn] /* simulate a shift of "error" */
  2129  					if yyChk[yystate] == yyErrCode {
  2130  						goto yystack
  2131  					}
  2132  				}
  2133  
  2134  				/* the current p has no shift on "error", pop stack */
  2135  				if yyDebug >= 2 {
  2136  					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
  2137  				}
  2138  				yyp--
  2139  			}
  2140  			/* there is no state on the stack with an error shift ... abort */
  2141  			goto ret1
  2142  
  2143  		case 3: /* no shift yet; clobber input char */
  2144  			if yyDebug >= 2 {
  2145  				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
  2146  			}
  2147  			if yytoken == yyEofCode {
  2148  				goto ret1
  2149  			}
  2150  			yyrcvr.char = -1
  2151  			yytoken = -1
  2152  			goto yynewstate /* try again in the same state */
  2153  		}
  2154  	}
  2155  
  2156  	/* reduction by production yyn */
  2157  	if yyDebug >= 2 {
  2158  		__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
  2159  	}
  2160  
  2161  	yynt := yyn
  2162  	yypt := yyp
  2163  	_ = yypt // guard against "declared and not used"
  2164  
  2165  	yyp -= yyR2[yyn]
  2166  	// yyp is now the index of $0. Perform the default action. Iff the
  2167  	// reduced production is ε, $1 is possibly out of range.
  2168  	if yyp+1 >= len(yyS) {
  2169  		nyys := make([]yySymType, len(yyS)*2)
  2170  		copy(nyys, yyS)
  2171  		yyS = nyys
  2172  	}
  2173  	yyVAL = yyS[yyp+1]
  2174  
  2175  	/* consult goto table to find next state */
  2176  	yyn = yyR1[yyn]
  2177  	yyg := yyPgo[yyn]
  2178  	yyj := yyg + yyS[yyp].yys + 1
  2179  
  2180  	if yyj >= yyLast {
  2181  		yystate = yyAct[yyg]
  2182  	} else {
  2183  		yystate = yyAct[yyj]
  2184  		if yyChk[yystate] != -yyn {
  2185  			yystate = yyAct[yyg]
  2186  		}
  2187  	}
  2188  	// dummy call; replaced with literal code
  2189  	switch yynt {
  2190  
  2191  	case 1:
  2192  		yyDollar = yyS[yypt-0 : yypt+1]
  2193  //line lib/parser/parser.y:254
  2194  		{
  2195  			yyVAL.program = nil
  2196  			yylex.(*Lexer).program = yyVAL.program
  2197  		}
  2198  	case 2:
  2199  		yyDollar = yyS[yypt-1 : yypt+1]
  2200  //line lib/parser/parser.y:259
  2201  		{
  2202  			yyVAL.program = []Statement{yyDollar[1].statement}
  2203  			yylex.(*Lexer).program = yyVAL.program
  2204  		}
  2205  	case 3:
  2206  		yyDollar = yyS[yypt-3 : yypt+1]
  2207  //line lib/parser/parser.y:264
  2208  		{
  2209  			yyVAL.program = append([]Statement{yyDollar[1].statement}, yyDollar[3].program...)
  2210  			yylex.(*Lexer).program = yyVAL.program
  2211  		}
  2212  	case 4:
  2213  		yyDollar = yyS[yypt-0 : yypt+1]
  2214  //line lib/parser/parser.y:271
  2215  		{
  2216  			yyVAL.program = nil
  2217  		}
  2218  	case 5:
  2219  		yyDollar = yyS[yypt-3 : yypt+1]
  2220  //line lib/parser/parser.y:275
  2221  		{
  2222  			yyVAL.program = append([]Statement{yyDollar[1].statement}, yyDollar[3].program...)
  2223  		}
  2224  	case 6:
  2225  		yyDollar = yyS[yypt-0 : yypt+1]
  2226  //line lib/parser/parser.y:281
  2227  		{
  2228  			yyVAL.program = nil
  2229  		}
  2230  	case 7:
  2231  		yyDollar = yyS[yypt-3 : yypt+1]
  2232  //line lib/parser/parser.y:285
  2233  		{
  2234  			yyVAL.program = append([]Statement{yyDollar[1].statement}, yyDollar[3].program...)
  2235  		}
  2236  	case 8:
  2237  		yyDollar = yyS[yypt-0 : yypt+1]
  2238  //line lib/parser/parser.y:291
  2239  		{
  2240  			yyVAL.program = nil
  2241  		}
  2242  	case 9:
  2243  		yyDollar = yyS[yypt-3 : yypt+1]
  2244  //line lib/parser/parser.y:295
  2245  		{
  2246  			yyVAL.program = append([]Statement{yyDollar[1].statement}, yyDollar[3].program...)
  2247  		}
  2248  	case 10:
  2249  		yyDollar = yyS[yypt-1 : yypt+1]
  2250  //line lib/parser/parser.y:301
  2251  		{
  2252  			yyVAL.statement = yyDollar[1].queryexpr
  2253  		}
  2254  	case 11:
  2255  		yyDollar = yyS[yypt-1 : yypt+1]
  2256  //line lib/parser/parser.y:305
  2257  		{
  2258  			yyVAL.statement = yyDollar[1].queryexpr
  2259  		}
  2260  	case 12:
  2261  		yyDollar = yyS[yypt-1 : yypt+1]
  2262  //line lib/parser/parser.y:309
  2263  		{
  2264  			yyVAL.statement = yyDollar[1].expression
  2265  		}
  2266  	case 13:
  2267  		yyDollar = yyS[yypt-1 : yypt+1]
  2268  //line lib/parser/parser.y:313
  2269  		{
  2270  			yyVAL.statement = yyDollar[1].expression
  2271  		}
  2272  	case 14:
  2273  		yyDollar = yyS[yypt-1 : yypt+1]
  2274  //line lib/parser/parser.y:317
  2275  		{
  2276  			yyVAL.statement = yyDollar[1].expression
  2277  		}
  2278  	case 15:
  2279  		yyDollar = yyS[yypt-1 : yypt+1]
  2280  //line lib/parser/parser.y:321
  2281  		{
  2282  			yyVAL.statement = yyDollar[1].expression
  2283  		}
  2284  	case 16:
  2285  		yyDollar = yyS[yypt-1 : yypt+1]
  2286  //line lib/parser/parser.y:325
  2287  		{
  2288  			yyVAL.statement = yyDollar[1].statement
  2289  		}
  2290  	case 17:
  2291  		yyDollar = yyS[yypt-1 : yypt+1]
  2292  //line lib/parser/parser.y:329
  2293  		{
  2294  			yyVAL.statement = yyDollar[1].statement
  2295  		}
  2296  	case 18:
  2297  		yyDollar = yyS[yypt-1 : yypt+1]
  2298  //line lib/parser/parser.y:333
  2299  		{
  2300  			yyVAL.statement = yyDollar[1].statement
  2301  		}
  2302  	case 19:
  2303  		yyDollar = yyS[yypt-1 : yypt+1]
  2304  //line lib/parser/parser.y:337
  2305  		{
  2306  			yyVAL.statement = yyDollar[1].statement
  2307  		}
  2308  	case 20:
  2309  		yyDollar = yyS[yypt-1 : yypt+1]
  2310  //line lib/parser/parser.y:341
  2311  		{
  2312  			yyVAL.statement = yyDollar[1].statement
  2313  		}
  2314  	case 21:
  2315  		yyDollar = yyS[yypt-1 : yypt+1]
  2316  //line lib/parser/parser.y:345
  2317  		{
  2318  			yyVAL.statement = yyDollar[1].statement
  2319  		}
  2320  	case 22:
  2321  		yyDollar = yyS[yypt-1 : yypt+1]
  2322  //line lib/parser/parser.y:349
  2323  		{
  2324  			yyVAL.statement = yyDollar[1].statement
  2325  		}
  2326  	case 23:
  2327  		yyDollar = yyS[yypt-1 : yypt+1]
  2328  //line lib/parser/parser.y:353
  2329  		{
  2330  			yyVAL.statement = yyDollar[1].statement
  2331  		}
  2332  	case 24:
  2333  		yyDollar = yyS[yypt-1 : yypt+1]
  2334  //line lib/parser/parser.y:357
  2335  		{
  2336  			yyVAL.statement = yyDollar[1].statement
  2337  		}
  2338  	case 25:
  2339  		yyDollar = yyS[yypt-1 : yypt+1]
  2340  //line lib/parser/parser.y:361
  2341  		{
  2342  			yyVAL.statement = yyDollar[1].statement
  2343  		}
  2344  	case 26:
  2345  		yyDollar = yyS[yypt-1 : yypt+1]
  2346  //line lib/parser/parser.y:365
  2347  		{
  2348  			yyVAL.statement = yyDollar[1].queryexpr
  2349  		}
  2350  	case 27:
  2351  		yyDollar = yyS[yypt-1 : yypt+1]
  2352  //line lib/parser/parser.y:369
  2353  		{
  2354  			yyVAL.statement = ExternalCommand{BaseExpr: NewBaseExpr(yyDollar[1].token), Command: yyDollar[1].token.Literal}
  2355  		}
  2356  	case 28:
  2357  		yyDollar = yyS[yypt-1 : yypt+1]
  2358  //line lib/parser/parser.y:375
  2359  		{
  2360  			yyVAL.statement = FlowControl{Token: yyDollar[1].token.Token}
  2361  		}
  2362  	case 29:
  2363  		yyDollar = yyS[yypt-1 : yypt+1]
  2364  //line lib/parser/parser.y:379
  2365  		{
  2366  			yyVAL.statement = FlowControl{Token: yyDollar[1].token.Token}
  2367  		}
  2368  	case 30:
  2369  		yyDollar = yyS[yypt-1 : yypt+1]
  2370  //line lib/parser/parser.y:385
  2371  		{
  2372  			yyVAL.statement = yyDollar[1].statement
  2373  		}
  2374  	case 31:
  2375  		yyDollar = yyS[yypt-1 : yypt+1]
  2376  //line lib/parser/parser.y:389
  2377  		{
  2378  			yyVAL.statement = yyDollar[1].statement
  2379  		}
  2380  	case 32:
  2381  		yyDollar = yyS[yypt-6 : yypt+1]
  2382  //line lib/parser/parser.y:395
  2383  		{
  2384  			yyVAL.statement = While{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}
  2385  		}
  2386  	case 33:
  2387  		yyDollar = yyS[yypt-8 : yypt+1]
  2388  //line lib/parser/parser.y:399
  2389  		{
  2390  			yyVAL.statement = WhileInCursor{Variables: []Variable{yyDollar[2].variable}, Cursor: yyDollar[4].identifier, Statements: yyDollar[6].program}
  2391  		}
  2392  	case 34:
  2393  		yyDollar = yyS[yypt-8 : yypt+1]
  2394  //line lib/parser/parser.y:403
  2395  		{
  2396  			yyVAL.statement = WhileInCursor{Variables: yyDollar[2].variables, Cursor: yyDollar[4].identifier, Statements: yyDollar[6].program}
  2397  		}
  2398  	case 35:
  2399  		yyDollar = yyS[yypt-9 : yypt+1]
  2400  //line lib/parser/parser.y:407
  2401  		{
  2402  			yyVAL.statement = WhileInCursor{WithDeclaration: true, Variables: []Variable{yyDollar[3].variable}, Cursor: yyDollar[5].identifier, Statements: yyDollar[7].program}
  2403  		}
  2404  	case 36:
  2405  		yyDollar = yyS[yypt-9 : yypt+1]
  2406  //line lib/parser/parser.y:411
  2407  		{
  2408  			yyVAL.statement = WhileInCursor{WithDeclaration: true, Variables: yyDollar[3].variables, Cursor: yyDollar[5].identifier, Statements: yyDollar[7].program}
  2409  		}
  2410  	case 37:
  2411  		yyDollar = yyS[yypt-1 : yypt+1]
  2412  //line lib/parser/parser.y:417
  2413  		{
  2414  			yyVAL.token = yyDollar[1].token
  2415  		}
  2416  	case 38:
  2417  		yyDollar = yyS[yypt-1 : yypt+1]
  2418  //line lib/parser/parser.y:421
  2419  		{
  2420  			yyVAL.token = yyDollar[1].token
  2421  		}
  2422  	case 39:
  2423  		yyDollar = yyS[yypt-1 : yypt+1]
  2424  //line lib/parser/parser.y:427
  2425  		{
  2426  			yyVAL.statement = Exit{}
  2427  		}
  2428  	case 40:
  2429  		yyDollar = yyS[yypt-2 : yypt+1]
  2430  //line lib/parser/parser.y:431
  2431  		{
  2432  			yyVAL.statement = Exit{Code: value.NewIntegerFromString(yyDollar[2].token.Literal)}
  2433  		}
  2434  	case 41:
  2435  		yyDollar = yyS[yypt-1 : yypt+1]
  2436  //line lib/parser/parser.y:437
  2437  		{
  2438  			yyVAL.statement = yyDollar[1].statement
  2439  		}
  2440  	case 42:
  2441  		yyDollar = yyS[yypt-1 : yypt+1]
  2442  //line lib/parser/parser.y:441
  2443  		{
  2444  			yyVAL.statement = yyDollar[1].statement
  2445  		}
  2446  	case 43:
  2447  		yyDollar = yyS[yypt-7 : yypt+1]
  2448  //line lib/parser/parser.y:447
  2449  		{
  2450  			yyVAL.statement = If{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program, Else: yyDollar[5].elseexpr}
  2451  		}
  2452  	case 44:
  2453  		yyDollar = yyS[yypt-8 : yypt+1]
  2454  //line lib/parser/parser.y:451
  2455  		{
  2456  			yyVAL.statement = If{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program, ElseIf: yyDollar[5].elseif, Else: yyDollar[6].elseexpr}
  2457  		}
  2458  	case 45:
  2459  		yyDollar = yyS[yypt-6 : yypt+1]
  2460  //line lib/parser/parser.y:455
  2461  		{
  2462  			yyVAL.statement = Case{Value: yyDollar[2].queryexpr, When: yyDollar[3].casewhen, Else: yyDollar[4].caseelse}
  2463  		}
  2464  	case 46:
  2465  		yyDollar = yyS[yypt-1 : yypt+1]
  2466  //line lib/parser/parser.y:459
  2467  		{
  2468  			yyVAL.statement = yyDollar[1].statement
  2469  		}
  2470  	case 47:
  2471  		yyDollar = yyS[yypt-1 : yypt+1]
  2472  //line lib/parser/parser.y:463
  2473  		{
  2474  			yyVAL.statement = yyDollar[1].statement
  2475  		}
  2476  	case 48:
  2477  		yyDollar = yyS[yypt-7 : yypt+1]
  2478  //line lib/parser/parser.y:469
  2479  		{
  2480  			yyVAL.statement = If{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program, Else: yyDollar[5].elseexpr}
  2481  		}
  2482  	case 49:
  2483  		yyDollar = yyS[yypt-8 : yypt+1]
  2484  //line lib/parser/parser.y:473
  2485  		{
  2486  			yyVAL.statement = If{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program, ElseIf: yyDollar[5].elseif, Else: yyDollar[6].elseexpr}
  2487  		}
  2488  	case 50:
  2489  		yyDollar = yyS[yypt-6 : yypt+1]
  2490  //line lib/parser/parser.y:477
  2491  		{
  2492  			yyVAL.statement = Case{Value: yyDollar[2].queryexpr, When: yyDollar[3].casewhen, Else: yyDollar[4].caseelse}
  2493  		}
  2494  	case 51:
  2495  		yyDollar = yyS[yypt-1 : yypt+1]
  2496  //line lib/parser/parser.y:481
  2497  		{
  2498  			yyVAL.statement = yyDollar[1].statement
  2499  		}
  2500  	case 52:
  2501  		yyDollar = yyS[yypt-1 : yypt+1]
  2502  //line lib/parser/parser.y:485
  2503  		{
  2504  			yyVAL.statement = yyDollar[1].statement
  2505  		}
  2506  	case 53:
  2507  		yyDollar = yyS[yypt-1 : yypt+1]
  2508  //line lib/parser/parser.y:489
  2509  		{
  2510  			yyVAL.statement = yyDollar[1].statement
  2511  		}
  2512  	case 54:
  2513  		yyDollar = yyS[yypt-1 : yypt+1]
  2514  //line lib/parser/parser.y:495
  2515  		{
  2516  			yyVAL.statement = yyDollar[1].statement
  2517  		}
  2518  	case 55:
  2519  		yyDollar = yyS[yypt-1 : yypt+1]
  2520  //line lib/parser/parser.y:499
  2521  		{
  2522  			yyVAL.statement = yyDollar[1].statement
  2523  		}
  2524  	case 56:
  2525  		yyDollar = yyS[yypt-6 : yypt+1]
  2526  //line lib/parser/parser.y:505
  2527  		{
  2528  			yyVAL.statement = While{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}
  2529  		}
  2530  	case 57:
  2531  		yyDollar = yyS[yypt-8 : yypt+1]
  2532  //line lib/parser/parser.y:509
  2533  		{
  2534  			yyVAL.statement = WhileInCursor{Variables: []Variable{yyDollar[2].variable}, Cursor: yyDollar[4].identifier, Statements: yyDollar[6].program}
  2535  		}
  2536  	case 58:
  2537  		yyDollar = yyS[yypt-8 : yypt+1]
  2538  //line lib/parser/parser.y:513
  2539  		{
  2540  			yyVAL.statement = WhileInCursor{Variables: yyDollar[2].variables, Cursor: yyDollar[4].identifier, Statements: yyDollar[6].program}
  2541  		}
  2542  	case 59:
  2543  		yyDollar = yyS[yypt-9 : yypt+1]
  2544  //line lib/parser/parser.y:517
  2545  		{
  2546  			yyVAL.statement = WhileInCursor{WithDeclaration: true, Variables: []Variable{yyDollar[3].variable}, Cursor: yyDollar[5].identifier, Statements: yyDollar[7].program}
  2547  		}
  2548  	case 60:
  2549  		yyDollar = yyS[yypt-9 : yypt+1]
  2550  //line lib/parser/parser.y:521
  2551  		{
  2552  			yyVAL.statement = WhileInCursor{WithDeclaration: true, Variables: yyDollar[3].variables, Cursor: yyDollar[5].identifier, Statements: yyDollar[7].program}
  2553  		}
  2554  	case 61:
  2555  		yyDollar = yyS[yypt-1 : yypt+1]
  2556  //line lib/parser/parser.y:527
  2557  		{
  2558  			yyVAL.statement = Return{Value: NewNullValue()}
  2559  		}
  2560  	case 62:
  2561  		yyDollar = yyS[yypt-2 : yypt+1]
  2562  //line lib/parser/parser.y:531
  2563  		{
  2564  			yyVAL.statement = Return{Value: yyDollar[2].queryexpr}
  2565  		}
  2566  	case 63:
  2567  		yyDollar = yyS[yypt-1 : yypt+1]
  2568  //line lib/parser/parser.y:537
  2569  		{
  2570  			yyVAL.statement = yyDollar[1].statement
  2571  		}
  2572  	case 64:
  2573  		yyDollar = yyS[yypt-1 : yypt+1]
  2574  //line lib/parser/parser.y:541
  2575  		{
  2576  			yyVAL.statement = yyDollar[1].statement
  2577  		}
  2578  	case 65:
  2579  		yyDollar = yyS[yypt-7 : yypt+1]
  2580  //line lib/parser/parser.y:547
  2581  		{
  2582  			yyVAL.statement = If{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program, Else: yyDollar[5].elseexpr}
  2583  		}
  2584  	case 66:
  2585  		yyDollar = yyS[yypt-8 : yypt+1]
  2586  //line lib/parser/parser.y:551
  2587  		{
  2588  			yyVAL.statement = If{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program, ElseIf: yyDollar[5].elseif, Else: yyDollar[6].elseexpr}
  2589  		}
  2590  	case 67:
  2591  		yyDollar = yyS[yypt-6 : yypt+1]
  2592  //line lib/parser/parser.y:555
  2593  		{
  2594  			yyVAL.statement = Case{Value: yyDollar[2].queryexpr, When: yyDollar[3].casewhen, Else: yyDollar[4].caseelse}
  2595  		}
  2596  	case 68:
  2597  		yyDollar = yyS[yypt-1 : yypt+1]
  2598  //line lib/parser/parser.y:559
  2599  		{
  2600  			yyVAL.statement = yyDollar[1].statement
  2601  		}
  2602  	case 69:
  2603  		yyDollar = yyS[yypt-1 : yypt+1]
  2604  //line lib/parser/parser.y:563
  2605  		{
  2606  			yyVAL.statement = yyDollar[1].statement
  2607  		}
  2608  	case 70:
  2609  		yyDollar = yyS[yypt-7 : yypt+1]
  2610  //line lib/parser/parser.y:569
  2611  		{
  2612  			yyVAL.statement = If{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program, Else: yyDollar[5].elseexpr}
  2613  		}
  2614  	case 71:
  2615  		yyDollar = yyS[yypt-8 : yypt+1]
  2616  //line lib/parser/parser.y:573
  2617  		{
  2618  			yyVAL.statement = If{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program, ElseIf: yyDollar[5].elseif, Else: yyDollar[6].elseexpr}
  2619  		}
  2620  	case 72:
  2621  		yyDollar = yyS[yypt-6 : yypt+1]
  2622  //line lib/parser/parser.y:577
  2623  		{
  2624  			yyVAL.statement = Case{Value: yyDollar[2].queryexpr, When: yyDollar[3].casewhen, Else: yyDollar[4].caseelse}
  2625  		}
  2626  	case 73:
  2627  		yyDollar = yyS[yypt-1 : yypt+1]
  2628  //line lib/parser/parser.y:581
  2629  		{
  2630  			yyVAL.statement = yyDollar[1].statement
  2631  		}
  2632  	case 74:
  2633  		yyDollar = yyS[yypt-1 : yypt+1]
  2634  //line lib/parser/parser.y:585
  2635  		{
  2636  			yyVAL.statement = yyDollar[1].statement
  2637  		}
  2638  	case 75:
  2639  		yyDollar = yyS[yypt-1 : yypt+1]
  2640  //line lib/parser/parser.y:589
  2641  		{
  2642  			yyVAL.statement = yyDollar[1].statement
  2643  		}
  2644  	case 76:
  2645  		yyDollar = yyS[yypt-2 : yypt+1]
  2646  //line lib/parser/parser.y:595
  2647  		{
  2648  			yyVAL.statement = VariableDeclaration{Assignments: yyDollar[2].varassigns}
  2649  		}
  2650  	case 77:
  2651  		yyDollar = yyS[yypt-2 : yypt+1]
  2652  //line lib/parser/parser.y:599
  2653  		{
  2654  			yyVAL.statement = VariableDeclaration{Assignments: yyDollar[2].varassigns}
  2655  		}
  2656  	case 78:
  2657  		yyDollar = yyS[yypt-1 : yypt+1]
  2658  //line lib/parser/parser.y:603
  2659  		{
  2660  			yyVAL.statement = yyDollar[1].queryexpr
  2661  		}
  2662  	case 79:
  2663  		yyDollar = yyS[yypt-2 : yypt+1]
  2664  //line lib/parser/parser.y:607
  2665  		{
  2666  			yyVAL.statement = DisposeVariable{Variable: yyDollar[2].variable}
  2667  		}
  2668  	case 80:
  2669  		yyDollar = yyS[yypt-4 : yypt+1]
  2670  //line lib/parser/parser.y:613
  2671  		{
  2672  			yyVAL.statement = SetEnvVar{EnvVar: yyDollar[2].envvar, Value: yyDollar[4].queryexpr}
  2673  		}
  2674  	case 81:
  2675  		yyDollar = yyS[yypt-4 : yypt+1]
  2676  //line lib/parser/parser.y:617
  2677  		{
  2678  			yyVAL.statement = SetEnvVar{EnvVar: yyDollar[2].envvar, Value: yyDollar[4].identifier}
  2679  		}
  2680  	case 82:
  2681  		yyDollar = yyS[yypt-4 : yypt+1]
  2682  //line lib/parser/parser.y:621
  2683  		{
  2684  			yyVAL.statement = SetEnvVar{EnvVar: yyDollar[2].envvar, Value: yyDollar[4].queryexpr}
  2685  		}
  2686  	case 83:
  2687  		yyDollar = yyS[yypt-4 : yypt+1]
  2688  //line lib/parser/parser.y:625
  2689  		{
  2690  			yyVAL.statement = SetEnvVar{EnvVar: yyDollar[2].envvar, Value: yyDollar[4].identifier}
  2691  		}
  2692  	case 84:
  2693  		yyDollar = yyS[yypt-2 : yypt+1]
  2694  //line lib/parser/parser.y:629
  2695  		{
  2696  			yyVAL.statement = UnsetEnvVar{EnvVar: yyDollar[2].envvar}
  2697  		}
  2698  	case 85:
  2699  		yyDollar = yyS[yypt-1 : yypt+1]
  2700  //line lib/parser/parser.y:635
  2701  		{
  2702  			yyVAL.statement = TransactionControl{BaseExpr: NewBaseExpr(yyDollar[1].token), Token: yyDollar[1].token.Token}
  2703  		}
  2704  	case 86:
  2705  		yyDollar = yyS[yypt-1 : yypt+1]
  2706  //line lib/parser/parser.y:639
  2707  		{
  2708  			yyVAL.statement = TransactionControl{BaseExpr: NewBaseExpr(yyDollar[1].token), Token: yyDollar[1].token.Token}
  2709  		}
  2710  	case 87:
  2711  		yyDollar = yyS[yypt-7 : yypt+1]
  2712  //line lib/parser/parser.y:645
  2713  		{
  2714  			yyVAL.statement = CreateTable{Table: yyDollar[4].identifier, Fields: yyDollar[6].queryexprs, IfNotExists: yyDollar[3].bool}
  2715  		}
  2716  	case 88:
  2717  		yyDollar = yyS[yypt-9 : yypt+1]
  2718  //line lib/parser/parser.y:649
  2719  		{
  2720  			yyVAL.statement = CreateTable{Table: yyDollar[4].identifier, Fields: yyDollar[6].queryexprs, Query: yyDollar[9].queryexpr, IfNotExists: yyDollar[3].bool}
  2721  		}
  2722  	case 89:
  2723  		yyDollar = yyS[yypt-6 : yypt+1]
  2724  //line lib/parser/parser.y:653
  2725  		{
  2726  			yyVAL.statement = CreateTable{Table: yyDollar[4].identifier, Query: yyDollar[6].queryexpr, IfNotExists: yyDollar[3].bool}
  2727  		}
  2728  	case 90:
  2729  		yyDollar = yyS[yypt-6 : yypt+1]
  2730  //line lib/parser/parser.y:657
  2731  		{
  2732  			yyVAL.statement = AddColumns{Table: yyDollar[3].queryexpr, Columns: []ColumnDefault{yyDollar[5].columndef}, Position: yyDollar[6].expression}
  2733  		}
  2734  	case 91:
  2735  		yyDollar = yyS[yypt-8 : yypt+1]
  2736  //line lib/parser/parser.y:661
  2737  		{
  2738  			yyVAL.statement = AddColumns{Table: yyDollar[3].queryexpr, Columns: yyDollar[6].columndefs, Position: yyDollar[8].expression}
  2739  		}
  2740  	case 92:
  2741  		yyDollar = yyS[yypt-5 : yypt+1]
  2742  //line lib/parser/parser.y:665
  2743  		{
  2744  			yyVAL.statement = DropColumns{Table: yyDollar[3].queryexpr, Columns: []QueryExpression{yyDollar[5].queryexpr}}
  2745  		}
  2746  	case 93:
  2747  		yyDollar = yyS[yypt-7 : yypt+1]
  2748  //line lib/parser/parser.y:669
  2749  		{
  2750  			yyVAL.statement = DropColumns{Table: yyDollar[3].queryexpr, Columns: yyDollar[6].queryexprs}
  2751  		}
  2752  	case 94:
  2753  		yyDollar = yyS[yypt-7 : yypt+1]
  2754  //line lib/parser/parser.y:673
  2755  		{
  2756  			yyVAL.statement = RenameColumn{Table: yyDollar[3].queryexpr, Old: yyDollar[5].queryexpr, New: yyDollar[7].identifier}
  2757  		}
  2758  	case 95:
  2759  		yyDollar = yyS[yypt-7 : yypt+1]
  2760  //line lib/parser/parser.y:677
  2761  		{
  2762  			yyVAL.statement = SetTableAttribute{BaseExpr: NewBaseExpr(yyDollar[1].token), Table: yyDollar[3].queryexpr, Attribute: yyDollar[5].identifier, Value: yyDollar[7].identifier}
  2763  		}
  2764  	case 96:
  2765  		yyDollar = yyS[yypt-7 : yypt+1]
  2766  //line lib/parser/parser.y:681
  2767  		{
  2768  			yyVAL.statement = SetTableAttribute{BaseExpr: NewBaseExpr(yyDollar[1].token), Table: yyDollar[3].queryexpr, Attribute: yyDollar[5].identifier, Value: yyDollar[7].queryexpr}
  2769  		}
  2770  	case 97:
  2771  		yyDollar = yyS[yypt-1 : yypt+1]
  2772  //line lib/parser/parser.y:687
  2773  		{
  2774  			yyVAL.columndef = ColumnDefault{Column: yyDollar[1].identifier}
  2775  		}
  2776  	case 98:
  2777  		yyDollar = yyS[yypt-3 : yypt+1]
  2778  //line lib/parser/parser.y:691
  2779  		{
  2780  			yyVAL.columndef = ColumnDefault{Column: yyDollar[1].identifier, Value: yyDollar[3].queryexpr}
  2781  		}
  2782  	case 99:
  2783  		yyDollar = yyS[yypt-1 : yypt+1]
  2784  //line lib/parser/parser.y:697
  2785  		{
  2786  			yyVAL.columndefs = []ColumnDefault{yyDollar[1].columndef}
  2787  		}
  2788  	case 100:
  2789  		yyDollar = yyS[yypt-3 : yypt+1]
  2790  //line lib/parser/parser.y:701
  2791  		{
  2792  			yyVAL.columndefs = append([]ColumnDefault{yyDollar[1].columndef}, yyDollar[3].columndefs...)
  2793  		}
  2794  	case 101:
  2795  		yyDollar = yyS[yypt-0 : yypt+1]
  2796  //line lib/parser/parser.y:707
  2797  		{
  2798  			yyVAL.expression = nil
  2799  		}
  2800  	case 102:
  2801  		yyDollar = yyS[yypt-1 : yypt+1]
  2802  //line lib/parser/parser.y:711
  2803  		{
  2804  			yyVAL.expression = ColumnPosition{Position: yyDollar[1].token}
  2805  		}
  2806  	case 103:
  2807  		yyDollar = yyS[yypt-1 : yypt+1]
  2808  //line lib/parser/parser.y:715
  2809  		{
  2810  			yyVAL.expression = ColumnPosition{Position: yyDollar[1].token}
  2811  		}
  2812  	case 104:
  2813  		yyDollar = yyS[yypt-2 : yypt+1]
  2814  //line lib/parser/parser.y:719
  2815  		{
  2816  			yyVAL.expression = ColumnPosition{Position: yyDollar[1].token, Column: yyDollar[2].queryexpr}
  2817  		}
  2818  	case 105:
  2819  		yyDollar = yyS[yypt-2 : yypt+1]
  2820  //line lib/parser/parser.y:723
  2821  		{
  2822  			yyVAL.expression = ColumnPosition{Position: yyDollar[1].token, Column: yyDollar[2].queryexpr}
  2823  		}
  2824  	case 106:
  2825  		yyDollar = yyS[yypt-5 : yypt+1]
  2826  //line lib/parser/parser.y:729
  2827  		{
  2828  			yyVAL.statement = CursorDeclaration{Cursor: yyDollar[2].identifier, Query: yyDollar[5].queryexpr.(SelectQuery)}
  2829  		}
  2830  	case 107:
  2831  		yyDollar = yyS[yypt-5 : yypt+1]
  2832  //line lib/parser/parser.y:733
  2833  		{
  2834  			yyVAL.statement = CursorDeclaration{Cursor: yyDollar[2].identifier, Statement: yyDollar[5].identifier}
  2835  		}
  2836  	case 108:
  2837  		yyDollar = yyS[yypt-2 : yypt+1]
  2838  //line lib/parser/parser.y:737
  2839  		{
  2840  			yyVAL.statement = OpenCursor{Cursor: yyDollar[2].identifier}
  2841  		}
  2842  	case 109:
  2843  		yyDollar = yyS[yypt-4 : yypt+1]
  2844  //line lib/parser/parser.y:741
  2845  		{
  2846  			yyVAL.statement = OpenCursor{Cursor: yyDollar[2].identifier, Values: yyDollar[4].replacevals}
  2847  		}
  2848  	case 110:
  2849  		yyDollar = yyS[yypt-2 : yypt+1]
  2850  //line lib/parser/parser.y:745
  2851  		{
  2852  			yyVAL.statement = CloseCursor{Cursor: yyDollar[2].identifier}
  2853  		}
  2854  	case 111:
  2855  		yyDollar = yyS[yypt-3 : yypt+1]
  2856  //line lib/parser/parser.y:749
  2857  		{
  2858  			yyVAL.statement = DisposeCursor{Cursor: yyDollar[3].identifier}
  2859  		}
  2860  	case 112:
  2861  		yyDollar = yyS[yypt-5 : yypt+1]
  2862  //line lib/parser/parser.y:753
  2863  		{
  2864  			yyVAL.statement = FetchCursor{Position: yyDollar[2].fetchpos, Cursor: yyDollar[3].identifier, Variables: yyDollar[5].variables}
  2865  		}
  2866  	case 113:
  2867  		yyDollar = yyS[yypt-6 : yypt+1]
  2868  //line lib/parser/parser.y:759
  2869  		{
  2870  			yyVAL.statement = ViewDeclaration{View: yyDollar[2].identifier, Fields: yyDollar[5].queryexprs}
  2871  		}
  2872  	case 114:
  2873  		yyDollar = yyS[yypt-8 : yypt+1]
  2874  //line lib/parser/parser.y:763
  2875  		{
  2876  			yyVAL.statement = ViewDeclaration{View: yyDollar[2].identifier, Fields: yyDollar[5].queryexprs, Query: yyDollar[8].queryexpr}
  2877  		}
  2878  	case 115:
  2879  		yyDollar = yyS[yypt-5 : yypt+1]
  2880  //line lib/parser/parser.y:767
  2881  		{
  2882  			yyVAL.statement = ViewDeclaration{View: yyDollar[2].identifier, Query: yyDollar[5].queryexpr}
  2883  		}
  2884  	case 116:
  2885  		yyDollar = yyS[yypt-3 : yypt+1]
  2886  //line lib/parser/parser.y:771
  2887  		{
  2888  			yyVAL.statement = DisposeView{View: yyDollar[3].identifier}
  2889  		}
  2890  	case 117:
  2891  		yyDollar = yyS[yypt-3 : yypt+1]
  2892  //line lib/parser/parser.y:775
  2893  		{
  2894  			yyVAL.statement = DisposeView{View: Stdin{BaseExpr: NewBaseExpr(yyDollar[3].token)}}
  2895  		}
  2896  	case 118:
  2897  		yyDollar = yyS[yypt-1 : yypt+1]
  2898  //line lib/parser/parser.y:781
  2899  		{
  2900  			yyVAL.replaceval = ReplaceValue{Value: yyDollar[1].queryexpr}
  2901  		}
  2902  	case 119:
  2903  		yyDollar = yyS[yypt-3 : yypt+1]
  2904  //line lib/parser/parser.y:785
  2905  		{
  2906  			yyVAL.replaceval = ReplaceValue{Value: yyDollar[1].queryexpr, Name: yyDollar[3].identifier}
  2907  		}
  2908  	case 120:
  2909  		yyDollar = yyS[yypt-1 : yypt+1]
  2910  //line lib/parser/parser.y:791
  2911  		{
  2912  			yyVAL.replacevals = []ReplaceValue{yyDollar[1].replaceval}
  2913  		}
  2914  	case 121:
  2915  		yyDollar = yyS[yypt-3 : yypt+1]
  2916  //line lib/parser/parser.y:795
  2917  		{
  2918  			yyVAL.replacevals = append([]ReplaceValue{yyDollar[1].replaceval}, yyDollar[3].replacevals...)
  2919  		}
  2920  	case 122:
  2921  		yyDollar = yyS[yypt-4 : yypt+1]
  2922  //line lib/parser/parser.y:801
  2923  		{
  2924  			yyVAL.statement = StatementPreparation{Name: yyDollar[2].identifier, Statement: value.NewString(yyDollar[4].token.Literal)}
  2925  		}
  2926  	case 123:
  2927  		yyDollar = yyS[yypt-2 : yypt+1]
  2928  //line lib/parser/parser.y:805
  2929  		{
  2930  			yyVAL.statement = ExecuteStatement{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[2].identifier}
  2931  		}
  2932  	case 124:
  2933  		yyDollar = yyS[yypt-4 : yypt+1]
  2934  //line lib/parser/parser.y:809
  2935  		{
  2936  			yyVAL.statement = ExecuteStatement{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[2].identifier, Values: yyDollar[4].replacevals}
  2937  		}
  2938  	case 125:
  2939  		yyDollar = yyS[yypt-3 : yypt+1]
  2940  //line lib/parser/parser.y:813
  2941  		{
  2942  			yyVAL.statement = DisposeStatement{Name: yyDollar[3].identifier}
  2943  		}
  2944  	case 126:
  2945  		yyDollar = yyS[yypt-1 : yypt+1]
  2946  //line lib/parser/parser.y:819
  2947  		{
  2948  			yyVAL.varassign = VariableAssignment{Variable: yyDollar[1].variable}
  2949  		}
  2950  	case 127:
  2951  		yyDollar = yyS[yypt-1 : yypt+1]
  2952  //line lib/parser/parser.y:825
  2953  		{
  2954  			yyVAL.varassigns = []VariableAssignment{yyDollar[1].varassign}
  2955  		}
  2956  	case 128:
  2957  		yyDollar = yyS[yypt-3 : yypt+1]
  2958  //line lib/parser/parser.y:829
  2959  		{
  2960  			yyVAL.varassigns = append(yyDollar[1].varassigns, yyDollar[3].varassign)
  2961  		}
  2962  	case 129:
  2963  		yyDollar = yyS[yypt-3 : yypt+1]
  2964  //line lib/parser/parser.y:835
  2965  		{
  2966  			yyVAL.varassign = VariableAssignment{Variable: yyDollar[1].variable, Value: yyDollar[3].queryexpr}
  2967  		}
  2968  	case 130:
  2969  		yyDollar = yyS[yypt-1 : yypt+1]
  2970  //line lib/parser/parser.y:841
  2971  		{
  2972  			yyVAL.varassigns = []VariableAssignment{yyDollar[1].varassign}
  2973  		}
  2974  	case 131:
  2975  		yyDollar = yyS[yypt-3 : yypt+1]
  2976  //line lib/parser/parser.y:845
  2977  		{
  2978  			yyVAL.varassigns = append([]VariableAssignment{yyDollar[1].varassign}, yyDollar[3].varassigns...)
  2979  		}
  2980  	case 132:
  2981  		yyDollar = yyS[yypt-1 : yypt+1]
  2982  //line lib/parser/parser.y:851
  2983  		{
  2984  			yyVAL.varassigns = yyDollar[1].varassigns
  2985  		}
  2986  	case 133:
  2987  		yyDollar = yyS[yypt-1 : yypt+1]
  2988  //line lib/parser/parser.y:855
  2989  		{
  2990  			yyVAL.varassigns = yyDollar[1].varassigns
  2991  		}
  2992  	case 134:
  2993  		yyDollar = yyS[yypt-3 : yypt+1]
  2994  //line lib/parser/parser.y:859
  2995  		{
  2996  			yyVAL.varassigns = append(yyDollar[1].varassigns, yyDollar[3].varassigns...)
  2997  		}
  2998  	case 135:
  2999  		yyDollar = yyS[yypt-9 : yypt+1]
  3000  //line lib/parser/parser.y:865
  3001  		{
  3002  			yyVAL.statement = FunctionDeclaration{Name: yyDollar[2].identifier, Statements: yyDollar[8].program}
  3003  		}
  3004  	case 136:
  3005  		yyDollar = yyS[yypt-10 : yypt+1]
  3006  //line lib/parser/parser.y:869
  3007  		{
  3008  			yyVAL.statement = FunctionDeclaration{Name: yyDollar[2].identifier, Parameters: yyDollar[5].varassigns, Statements: yyDollar[9].program}
  3009  		}
  3010  	case 137:
  3011  		yyDollar = yyS[yypt-10 : yypt+1]
  3012  //line lib/parser/parser.y:873
  3013  		{
  3014  			yyVAL.statement = AggregateDeclaration{Name: yyDollar[2].identifier, Cursor: yyDollar[5].identifier, Statements: yyDollar[9].program}
  3015  		}
  3016  	case 138:
  3017  		yyDollar = yyS[yypt-12 : yypt+1]
  3018  //line lib/parser/parser.y:877
  3019  		{
  3020  			yyVAL.statement = AggregateDeclaration{Name: yyDollar[2].identifier, Cursor: yyDollar[5].identifier, Parameters: yyDollar[7].varassigns, Statements: yyDollar[11].program}
  3021  		}
  3022  	case 139:
  3023  		yyDollar = yyS[yypt-3 : yypt+1]
  3024  //line lib/parser/parser.y:881
  3025  		{
  3026  			yyVAL.statement = DisposeFunction{Name: yyDollar[3].identifier}
  3027  		}
  3028  	case 140:
  3029  		yyDollar = yyS[yypt-0 : yypt+1]
  3030  //line lib/parser/parser.y:887
  3031  		{
  3032  			yyVAL.fetchpos = FetchPosition{}
  3033  		}
  3034  	case 141:
  3035  		yyDollar = yyS[yypt-1 : yypt+1]
  3036  //line lib/parser/parser.y:891
  3037  		{
  3038  			yyVAL.fetchpos = FetchPosition{Position: yyDollar[1].token}
  3039  		}
  3040  	case 142:
  3041  		yyDollar = yyS[yypt-1 : yypt+1]
  3042  //line lib/parser/parser.y:895
  3043  		{
  3044  			yyVAL.fetchpos = FetchPosition{Position: yyDollar[1].token}
  3045  		}
  3046  	case 143:
  3047  		yyDollar = yyS[yypt-1 : yypt+1]
  3048  //line lib/parser/parser.y:899
  3049  		{
  3050  			yyVAL.fetchpos = FetchPosition{Position: yyDollar[1].token}
  3051  		}
  3052  	case 144:
  3053  		yyDollar = yyS[yypt-1 : yypt+1]
  3054  //line lib/parser/parser.y:903
  3055  		{
  3056  			yyVAL.fetchpos = FetchPosition{Position: yyDollar[1].token}
  3057  		}
  3058  	case 145:
  3059  		yyDollar = yyS[yypt-2 : yypt+1]
  3060  //line lib/parser/parser.y:907
  3061  		{
  3062  			yyVAL.fetchpos = FetchPosition{BaseExpr: NewBaseExpr(yyDollar[1].token), Position: yyDollar[1].token, Number: yyDollar[2].queryexpr}
  3063  		}
  3064  	case 146:
  3065  		yyDollar = yyS[yypt-2 : yypt+1]
  3066  //line lib/parser/parser.y:911
  3067  		{
  3068  			yyVAL.fetchpos = FetchPosition{BaseExpr: NewBaseExpr(yyDollar[1].token), Position: yyDollar[1].token, Number: yyDollar[2].queryexpr}
  3069  		}
  3070  	case 147:
  3071  		yyDollar = yyS[yypt-5 : yypt+1]
  3072  //line lib/parser/parser.y:917
  3073  		{
  3074  			yyVAL.queryexpr = CursorStatus{Cursor: yyDollar[2].identifier, Negation: yyDollar[4].token, Type: yyDollar[5].token}
  3075  		}
  3076  	case 148:
  3077  		yyDollar = yyS[yypt-6 : yypt+1]
  3078  //line lib/parser/parser.y:921
  3079  		{
  3080  			yyVAL.queryexpr = CursorStatus{Cursor: yyDollar[2].identifier, Negation: yyDollar[4].token, Type: yyDollar[6].token}
  3081  		}
  3082  	case 149:
  3083  		yyDollar = yyS[yypt-3 : yypt+1]
  3084  //line lib/parser/parser.y:925
  3085  		{
  3086  			yyVAL.queryexpr = CursorAttrebute{Cursor: yyDollar[2].identifier, Attrebute: yyDollar[3].token}
  3087  		}
  3088  	case 150:
  3089  		yyDollar = yyS[yypt-4 : yypt+1]
  3090  //line lib/parser/parser.y:931
  3091  		{
  3092  			yyVAL.statement = SetFlag{BaseExpr: NewBaseExpr(yyDollar[1].token), Flag: yyDollar[2].flag, Value: yyDollar[4].identifier}
  3093  		}
  3094  	case 151:
  3095  		yyDollar = yyS[yypt-4 : yypt+1]
  3096  //line lib/parser/parser.y:935
  3097  		{
  3098  			yyVAL.statement = SetFlag{BaseExpr: NewBaseExpr(yyDollar[1].token), Flag: yyDollar[2].flag, Value: yyDollar[4].queryexpr}
  3099  		}
  3100  	case 152:
  3101  		yyDollar = yyS[yypt-4 : yypt+1]
  3102  //line lib/parser/parser.y:939
  3103  		{
  3104  			yyVAL.statement = SetFlag{BaseExpr: NewBaseExpr(yyDollar[1].token), Flag: yyDollar[2].flag, Value: yyDollar[4].identifier}
  3105  		}
  3106  	case 153:
  3107  		yyDollar = yyS[yypt-4 : yypt+1]
  3108  //line lib/parser/parser.y:943
  3109  		{
  3110  			yyVAL.statement = SetFlag{BaseExpr: NewBaseExpr(yyDollar[1].token), Flag: yyDollar[2].flag, Value: yyDollar[4].queryexpr}
  3111  		}
  3112  	case 154:
  3113  		yyDollar = yyS[yypt-4 : yypt+1]
  3114  //line lib/parser/parser.y:947
  3115  		{
  3116  			yyVAL.statement = AddFlagElement{BaseExpr: NewBaseExpr(yyDollar[1].token), Flag: yyDollar[4].flag, Value: yyDollar[2].queryexpr}
  3117  		}
  3118  	case 155:
  3119  		yyDollar = yyS[yypt-4 : yypt+1]
  3120  //line lib/parser/parser.y:951
  3121  		{
  3122  			yyVAL.statement = RemoveFlagElement{BaseExpr: NewBaseExpr(yyDollar[1].token), Flag: yyDollar[4].flag, Value: yyDollar[2].queryexpr}
  3123  		}
  3124  	case 156:
  3125  		yyDollar = yyS[yypt-2 : yypt+1]
  3126  //line lib/parser/parser.y:955
  3127  		{
  3128  			yyVAL.statement = ShowFlag{BaseExpr: NewBaseExpr(yyDollar[1].token), Flag: yyDollar[2].flag}
  3129  		}
  3130  	case 157:
  3131  		yyDollar = yyS[yypt-2 : yypt+1]
  3132  //line lib/parser/parser.y:959
  3133  		{
  3134  			yyVAL.statement = Echo{Value: yyDollar[2].queryexpr}
  3135  		}
  3136  	case 158:
  3137  		yyDollar = yyS[yypt-2 : yypt+1]
  3138  //line lib/parser/parser.y:963
  3139  		{
  3140  			yyVAL.statement = Print{Value: yyDollar[2].queryexpr}
  3141  		}
  3142  	case 159:
  3143  		yyDollar = yyS[yypt-2 : yypt+1]
  3144  //line lib/parser/parser.y:967
  3145  		{
  3146  			yyVAL.statement = Printf{BaseExpr: NewBaseExpr(yyDollar[1].token), Format: yyDollar[2].queryexpr}
  3147  		}
  3148  	case 160:
  3149  		yyDollar = yyS[yypt-4 : yypt+1]
  3150  //line lib/parser/parser.y:971
  3151  		{
  3152  			yyVAL.statement = Printf{BaseExpr: NewBaseExpr(yyDollar[1].token), Format: yyDollar[2].queryexpr, Values: yyDollar[4].queryexprs}
  3153  		}
  3154  	case 161:
  3155  		yyDollar = yyS[yypt-4 : yypt+1]
  3156  //line lib/parser/parser.y:975
  3157  		{
  3158  			yyVAL.statement = Printf{BaseExpr: NewBaseExpr(yyDollar[1].token), Format: yyDollar[2].queryexpr, Values: yyDollar[4].queryexprs}
  3159  		}
  3160  	case 162:
  3161  		yyDollar = yyS[yypt-2 : yypt+1]
  3162  //line lib/parser/parser.y:979
  3163  		{
  3164  			yyVAL.statement = Source{BaseExpr: NewBaseExpr(yyDollar[1].token), FilePath: yyDollar[2].identifier}
  3165  		}
  3166  	case 163:
  3167  		yyDollar = yyS[yypt-2 : yypt+1]
  3168  //line lib/parser/parser.y:983
  3169  		{
  3170  			yyVAL.statement = Source{BaseExpr: NewBaseExpr(yyDollar[1].token), FilePath: yyDollar[2].queryexpr}
  3171  		}
  3172  	case 164:
  3173  		yyDollar = yyS[yypt-2 : yypt+1]
  3174  //line lib/parser/parser.y:987
  3175  		{
  3176  			yyVAL.statement = Execute{BaseExpr: NewBaseExpr(yyDollar[1].token), Statements: yyDollar[2].queryexpr}
  3177  		}
  3178  	case 165:
  3179  		yyDollar = yyS[yypt-4 : yypt+1]
  3180  //line lib/parser/parser.y:991
  3181  		{
  3182  			yyVAL.statement = Execute{BaseExpr: NewBaseExpr(yyDollar[1].token), Statements: yyDollar[2].queryexpr, Values: yyDollar[4].queryexprs}
  3183  		}
  3184  	case 166:
  3185  		yyDollar = yyS[yypt-1 : yypt+1]
  3186  //line lib/parser/parser.y:995
  3187  		{
  3188  			yyVAL.statement = Syntax{BaseExpr: NewBaseExpr(yyDollar[1].token)}
  3189  		}
  3190  	case 167:
  3191  		yyDollar = yyS[yypt-2 : yypt+1]
  3192  //line lib/parser/parser.y:999
  3193  		{
  3194  			yyVAL.statement = Syntax{BaseExpr: NewBaseExpr(yyDollar[1].token), Keywords: yyDollar[2].queryexprs}
  3195  		}
  3196  	case 168:
  3197  		yyDollar = yyS[yypt-2 : yypt+1]
  3198  //line lib/parser/parser.y:1003
  3199  		{
  3200  			yyVAL.statement = ShowObjects{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[2].identifier}
  3201  		}
  3202  	case 169:
  3203  		yyDollar = yyS[yypt-4 : yypt+1]
  3204  //line lib/parser/parser.y:1007
  3205  		{
  3206  			yyVAL.statement = ShowFields{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[2].identifier, Table: yyDollar[4].queryexpr}
  3207  		}
  3208  	case 170:
  3209  		yyDollar = yyS[yypt-2 : yypt+1]
  3210  //line lib/parser/parser.y:1011
  3211  		{
  3212  			yyVAL.statement = Chdir{BaseExpr: NewBaseExpr(yyDollar[1].token), DirPath: yyDollar[2].identifier}
  3213  		}
  3214  	case 171:
  3215  		yyDollar = yyS[yypt-2 : yypt+1]
  3216  //line lib/parser/parser.y:1015
  3217  		{
  3218  			yyVAL.statement = Chdir{BaseExpr: NewBaseExpr(yyDollar[1].token), DirPath: yyDollar[2].queryexpr}
  3219  		}
  3220  	case 172:
  3221  		yyDollar = yyS[yypt-1 : yypt+1]
  3222  //line lib/parser/parser.y:1019
  3223  		{
  3224  			yyVAL.statement = Pwd{BaseExpr: NewBaseExpr(yyDollar[1].token)}
  3225  		}
  3226  	case 173:
  3227  		yyDollar = yyS[yypt-2 : yypt+1]
  3228  //line lib/parser/parser.y:1023
  3229  		{
  3230  			yyVAL.statement = Reload{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[2].identifier}
  3231  		}
  3232  	case 174:
  3233  		yyDollar = yyS[yypt-2 : yypt+1]
  3234  //line lib/parser/parser.y:1029
  3235  		{
  3236  			yyVAL.statement = Trigger{BaseExpr: NewBaseExpr(yyDollar[1].token), Event: yyDollar[2].identifier}
  3237  		}
  3238  	case 175:
  3239  		yyDollar = yyS[yypt-3 : yypt+1]
  3240  //line lib/parser/parser.y:1033
  3241  		{
  3242  			yyVAL.statement = Trigger{BaseExpr: NewBaseExpr(yyDollar[1].token), Event: yyDollar[2].identifier, Message: yyDollar[3].queryexpr}
  3243  		}
  3244  	case 176:
  3245  		yyDollar = yyS[yypt-4 : yypt+1]
  3246  //line lib/parser/parser.y:1037
  3247  		{
  3248  			yyVAL.statement = Trigger{BaseExpr: NewBaseExpr(yyDollar[1].token), Event: yyDollar[2].identifier, Message: yyDollar[4].queryexpr, Code: value.NewIntegerFromString(yyDollar[3].token.Literal)}
  3249  		}
  3250  	case 177:
  3251  		yyDollar = yyS[yypt-3 : yypt+1]
  3252  //line lib/parser/parser.y:1043
  3253  		{
  3254  			yyVAL.queryexpr = SelectQuery{
  3255  				SelectEntity:  yyDollar[1].queryexpr,
  3256  				OrderByClause: yyDollar[2].queryexpr,
  3257  				LimitClause:   yyDollar[3].queryexpr,
  3258  			}
  3259  		}
  3260  	case 178:
  3261  		yyDollar = yyS[yypt-5 : yypt+1]
  3262  //line lib/parser/parser.y:1051
  3263  		{
  3264  			yyVAL.queryexpr = SelectQuery{
  3265  				SelectEntity:  yyDollar[1].queryexpr,
  3266  				OrderByClause: yyDollar[2].queryexpr,
  3267  				LimitClause:   yyDollar[3].queryexpr,
  3268  				Context:       yyDollar[5].token,
  3269  			}
  3270  		}
  3271  	case 179:
  3272  		yyDollar = yyS[yypt-4 : yypt+1]
  3273  //line lib/parser/parser.y:1060
  3274  		{
  3275  			yyVAL.queryexpr = SelectQuery{
  3276  				WithClause:    yyDollar[1].queryexpr,
  3277  				SelectEntity:  yyDollar[2].queryexpr,
  3278  				OrderByClause: yyDollar[3].queryexpr,
  3279  				LimitClause:   yyDollar[4].queryexpr,
  3280  			}
  3281  		}
  3282  	case 180:
  3283  		yyDollar = yyS[yypt-6 : yypt+1]
  3284  //line lib/parser/parser.y:1069
  3285  		{
  3286  			yyVAL.queryexpr = SelectQuery{
  3287  				WithClause:    yyDollar[1].queryexpr,
  3288  				SelectEntity:  yyDollar[2].queryexpr,
  3289  				OrderByClause: yyDollar[3].queryexpr,
  3290  				LimitClause:   yyDollar[4].queryexpr,
  3291  				Context:       yyDollar[6].token,
  3292  			}
  3293  		}
  3294  	case 181:
  3295  		yyDollar = yyS[yypt-8 : yypt+1]
  3296  //line lib/parser/parser.y:1081
  3297  		{
  3298  			yyVAL.queryexpr = SelectQuery{
  3299  				SelectEntity: SelectEntity{
  3300  					SelectClause:  yyDollar[1].queryexpr,
  3301  					IntoClause:    yyDollar[2].queryexpr,
  3302  					FromClause:    yyDollar[3].queryexpr,
  3303  					WhereClause:   yyDollar[4].queryexpr,
  3304  					GroupByClause: yyDollar[5].queryexpr,
  3305  					HavingClause:  yyDollar[6].queryexpr,
  3306  				},
  3307  				OrderByClause: yyDollar[7].queryexpr,
  3308  				LimitClause:   yyDollar[8].queryexpr,
  3309  			}
  3310  		}
  3311  	case 182:
  3312  		yyDollar = yyS[yypt-10 : yypt+1]
  3313  //line lib/parser/parser.y:1096
  3314  		{
  3315  			yyVAL.queryexpr = SelectQuery{
  3316  				SelectEntity: SelectEntity{
  3317  					SelectClause:  yyDollar[1].queryexpr,
  3318  					IntoClause:    yyDollar[2].queryexpr,
  3319  					FromClause:    yyDollar[3].queryexpr,
  3320  					WhereClause:   yyDollar[4].queryexpr,
  3321  					GroupByClause: yyDollar[5].queryexpr,
  3322  					HavingClause:  yyDollar[6].queryexpr,
  3323  				},
  3324  				OrderByClause: yyDollar[7].queryexpr,
  3325  				LimitClause:   yyDollar[8].queryexpr,
  3326  				Context:       yyDollar[10].token,
  3327  			}
  3328  		}
  3329  	case 183:
  3330  		yyDollar = yyS[yypt-9 : yypt+1]
  3331  //line lib/parser/parser.y:1112
  3332  		{
  3333  			yyVAL.queryexpr = SelectQuery{
  3334  				WithClause: yyDollar[1].queryexpr,
  3335  				SelectEntity: SelectEntity{
  3336  					SelectClause:  yyDollar[2].queryexpr,
  3337  					IntoClause:    yyDollar[3].queryexpr,
  3338  					FromClause:    yyDollar[4].queryexpr,
  3339  					WhereClause:   yyDollar[5].queryexpr,
  3340  					GroupByClause: yyDollar[6].queryexpr,
  3341  					HavingClause:  yyDollar[7].queryexpr,
  3342  				},
  3343  				OrderByClause: yyDollar[8].queryexpr,
  3344  				LimitClause:   yyDollar[9].queryexpr,
  3345  			}
  3346  		}
  3347  	case 184:
  3348  		yyDollar = yyS[yypt-11 : yypt+1]
  3349  //line lib/parser/parser.y:1128
  3350  		{
  3351  			yyVAL.queryexpr = SelectQuery{
  3352  				WithClause: yyDollar[1].queryexpr,
  3353  				SelectEntity: SelectEntity{
  3354  					SelectClause:  yyDollar[2].queryexpr,
  3355  					IntoClause:    yyDollar[3].queryexpr,
  3356  					FromClause:    yyDollar[4].queryexpr,
  3357  					WhereClause:   yyDollar[5].queryexpr,
  3358  					GroupByClause: yyDollar[6].queryexpr,
  3359  					HavingClause:  yyDollar[7].queryexpr,
  3360  				},
  3361  				OrderByClause: yyDollar[8].queryexpr,
  3362  				LimitClause:   yyDollar[9].queryexpr,
  3363  				Context:       yyDollar[11].token,
  3364  			}
  3365  		}
  3366  	case 185:
  3367  		yyDollar = yyS[yypt-5 : yypt+1]
  3368  //line lib/parser/parser.y:1147
  3369  		{
  3370  			yyVAL.queryexpr = SelectEntity{
  3371  				SelectClause:  yyDollar[1].queryexpr,
  3372  				FromClause:    yyDollar[2].queryexpr,
  3373  				WhereClause:   yyDollar[3].queryexpr,
  3374  				GroupByClause: yyDollar[4].queryexpr,
  3375  				HavingClause:  yyDollar[5].queryexpr,
  3376  			}
  3377  		}
  3378  	case 186:
  3379  		yyDollar = yyS[yypt-4 : yypt+1]
  3380  //line lib/parser/parser.y:1157
  3381  		{
  3382  			yyVAL.queryexpr = SelectSet{
  3383  				LHS:      yyDollar[1].queryexpr,
  3384  				Operator: yyDollar[2].token,
  3385  				All:      yyDollar[3].token,
  3386  				RHS:      yyDollar[4].queryexpr,
  3387  			}
  3388  		}
  3389  	case 187:
  3390  		yyDollar = yyS[yypt-4 : yypt+1]
  3391  //line lib/parser/parser.y:1166
  3392  		{
  3393  			yyVAL.queryexpr = SelectSet{
  3394  				LHS:      yyDollar[1].queryexpr,
  3395  				Operator: yyDollar[2].token,
  3396  				All:      yyDollar[3].token,
  3397  				RHS:      yyDollar[4].queryexpr,
  3398  			}
  3399  		}
  3400  	case 188:
  3401  		yyDollar = yyS[yypt-4 : yypt+1]
  3402  //line lib/parser/parser.y:1175
  3403  		{
  3404  			yyVAL.queryexpr = SelectSet{
  3405  				LHS:      yyDollar[1].queryexpr,
  3406  				Operator: yyDollar[2].token,
  3407  				All:      yyDollar[3].token,
  3408  				RHS:      yyDollar[4].queryexpr,
  3409  			}
  3410  		}
  3411  	case 189:
  3412  		yyDollar = yyS[yypt-1 : yypt+1]
  3413  //line lib/parser/parser.y:1186
  3414  		{
  3415  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3416  		}
  3417  	case 190:
  3418  		yyDollar = yyS[yypt-1 : yypt+1]
  3419  //line lib/parser/parser.y:1190
  3420  		{
  3421  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3422  		}
  3423  	case 191:
  3424  		yyDollar = yyS[yypt-3 : yypt+1]
  3425  //line lib/parser/parser.y:1196
  3426  		{
  3427  			yyVAL.queryexpr = SelectClause{BaseExpr: NewBaseExpr(yyDollar[1].token), Distinct: yyDollar[2].token, Fields: yyDollar[3].queryexprs}
  3428  		}
  3429  	case 192:
  3430  		yyDollar = yyS[yypt-2 : yypt+1]
  3431  //line lib/parser/parser.y:1202
  3432  		{
  3433  			yyVAL.queryexpr = IntoClause{Variables: yyDollar[2].variables}
  3434  		}
  3435  	case 193:
  3436  		yyDollar = yyS[yypt-0 : yypt+1]
  3437  //line lib/parser/parser.y:1208
  3438  		{
  3439  			yyVAL.queryexpr = nil
  3440  		}
  3441  	case 194:
  3442  		yyDollar = yyS[yypt-2 : yypt+1]
  3443  //line lib/parser/parser.y:1212
  3444  		{
  3445  			yyVAL.queryexpr = FromClause{Tables: yyDollar[2].queryexprs}
  3446  		}
  3447  	case 195:
  3448  		yyDollar = yyS[yypt-0 : yypt+1]
  3449  //line lib/parser/parser.y:1218
  3450  		{
  3451  			yyVAL.queryexpr = nil
  3452  		}
  3453  	case 196:
  3454  		yyDollar = yyS[yypt-2 : yypt+1]
  3455  //line lib/parser/parser.y:1222
  3456  		{
  3457  			yyVAL.queryexpr = WhereClause{Filter: yyDollar[2].queryexpr}
  3458  		}
  3459  	case 197:
  3460  		yyDollar = yyS[yypt-0 : yypt+1]
  3461  //line lib/parser/parser.y:1228
  3462  		{
  3463  			yyVAL.queryexpr = nil
  3464  		}
  3465  	case 198:
  3466  		yyDollar = yyS[yypt-3 : yypt+1]
  3467  //line lib/parser/parser.y:1232
  3468  		{
  3469  			yyVAL.queryexpr = GroupByClause{Items: yyDollar[3].queryexprs}
  3470  		}
  3471  	case 199:
  3472  		yyDollar = yyS[yypt-0 : yypt+1]
  3473  //line lib/parser/parser.y:1238
  3474  		{
  3475  			yyVAL.queryexpr = nil
  3476  		}
  3477  	case 200:
  3478  		yyDollar = yyS[yypt-2 : yypt+1]
  3479  //line lib/parser/parser.y:1242
  3480  		{
  3481  			yyVAL.queryexpr = HavingClause{Filter: yyDollar[2].queryexpr}
  3482  		}
  3483  	case 201:
  3484  		yyDollar = yyS[yypt-0 : yypt+1]
  3485  //line lib/parser/parser.y:1248
  3486  		{
  3487  			yyVAL.queryexpr = nil
  3488  		}
  3489  	case 202:
  3490  		yyDollar = yyS[yypt-3 : yypt+1]
  3491  //line lib/parser/parser.y:1252
  3492  		{
  3493  			yyVAL.queryexpr = OrderByClause{Items: yyDollar[3].queryexprs}
  3494  		}
  3495  	case 203:
  3496  		yyDollar = yyS[yypt-1 : yypt+1]
  3497  //line lib/parser/parser.y:1258
  3498  		{
  3499  			if yyDollar[1].queryexpr == nil {
  3500  				yyVAL.queryexpr = yyDollar[1].queryexpr
  3501  			} else {
  3502  				yyVAL.queryexpr = LimitClause{BaseExpr: yyDollar[1].queryexpr.(OffsetClause).BaseExpr, OffsetClause: yyDollar[1].queryexpr}
  3503  			}
  3504  		}
  3505  	case 204:
  3506  		yyDollar = yyS[yypt-6 : yypt+1]
  3507  //line lib/parser/parser.y:1266
  3508  		{
  3509  			var base *BaseExpr
  3510  			if yyDollar[1].queryexpr == nil {
  3511  				base = NewBaseExpr(yyDollar[2].token)
  3512  			} else {
  3513  				base = yyDollar[1].queryexpr.(OffsetClause).BaseExpr
  3514  			}
  3515  			yyVAL.queryexpr = LimitClause{BaseExpr: base, Type: yyDollar[2].token, Position: yyDollar[3].token, Value: yyDollar[4].queryexpr, Unit: yyDollar[5].token, Restriction: yyDollar[6].token, OffsetClause: yyDollar[1].queryexpr}
  3516  		}
  3517  	case 205:
  3518  		yyDollar = yyS[yypt-5 : yypt+1]
  3519  //line lib/parser/parser.y:1276
  3520  		{
  3521  			yyVAL.queryexpr = LimitClause{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, Value: yyDollar[2].queryexpr, Unit: yyDollar[3].token, Restriction: yyDollar[4].token, OffsetClause: yyDollar[5].queryexpr}
  3522  		}
  3523  	case 206:
  3524  		yyDollar = yyS[yypt-0 : yypt+1]
  3525  //line lib/parser/parser.y:1282
  3526  		{
  3527  			yyVAL.token = Token{}
  3528  		}
  3529  	case 207:
  3530  		yyDollar = yyS[yypt-1 : yypt+1]
  3531  //line lib/parser/parser.y:1286
  3532  		{
  3533  			yyVAL.token = yyDollar[1].token
  3534  		}
  3535  	case 208:
  3536  		yyDollar = yyS[yypt-2 : yypt+1]
  3537  //line lib/parser/parser.y:1290
  3538  		{
  3539  			yyVAL.token = yyDollar[2].token
  3540  		}
  3541  	case 209:
  3542  		yyDollar = yyS[yypt-1 : yypt+1]
  3543  //line lib/parser/parser.y:1296
  3544  		{
  3545  			yyVAL.token = yyDollar[1].token
  3546  		}
  3547  	case 210:
  3548  		yyDollar = yyS[yypt-1 : yypt+1]
  3549  //line lib/parser/parser.y:1300
  3550  		{
  3551  			yyVAL.token = yyDollar[1].token
  3552  		}
  3553  	case 211:
  3554  		yyDollar = yyS[yypt-0 : yypt+1]
  3555  //line lib/parser/parser.y:1306
  3556  		{
  3557  			yyVAL.token = Token{}
  3558  		}
  3559  	case 212:
  3560  		yyDollar = yyS[yypt-1 : yypt+1]
  3561  //line lib/parser/parser.y:1310
  3562  		{
  3563  			yyVAL.token = yyDollar[1].token
  3564  		}
  3565  	case 213:
  3566  		yyDollar = yyS[yypt-1 : yypt+1]
  3567  //line lib/parser/parser.y:1316
  3568  		{
  3569  			yyVAL.token = yyDollar[1].token
  3570  		}
  3571  	case 214:
  3572  		yyDollar = yyS[yypt-1 : yypt+1]
  3573  //line lib/parser/parser.y:1320
  3574  		{
  3575  			yyVAL.token = yyDollar[1].token
  3576  		}
  3577  	case 215:
  3578  		yyDollar = yyS[yypt-1 : yypt+1]
  3579  //line lib/parser/parser.y:1324
  3580  		{
  3581  			yyVAL.token = yyDollar[1].token
  3582  		}
  3583  	case 216:
  3584  		yyDollar = yyS[yypt-0 : yypt+1]
  3585  //line lib/parser/parser.y:1330
  3586  		{
  3587  			yyVAL.token = Token{}
  3588  		}
  3589  	case 217:
  3590  		yyDollar = yyS[yypt-1 : yypt+1]
  3591  //line lib/parser/parser.y:1334
  3592  		{
  3593  			yyVAL.token = yyDollar[1].token
  3594  		}
  3595  	case 218:
  3596  		yyDollar = yyS[yypt-1 : yypt+1]
  3597  //line lib/parser/parser.y:1338
  3598  		{
  3599  			yyVAL.token = yyDollar[1].token
  3600  		}
  3601  	case 219:
  3602  		yyDollar = yyS[yypt-0 : yypt+1]
  3603  //line lib/parser/parser.y:1344
  3604  		{
  3605  			yyVAL.queryexpr = nil
  3606  		}
  3607  	case 220:
  3608  		yyDollar = yyS[yypt-3 : yypt+1]
  3609  //line lib/parser/parser.y:1348
  3610  		{
  3611  			yyVAL.queryexpr = OffsetClause{BaseExpr: NewBaseExpr(yyDollar[1].token), Value: yyDollar[2].queryexpr, Unit: yyDollar[3].token}
  3612  		}
  3613  	case 221:
  3614  		yyDollar = yyS[yypt-0 : yypt+1]
  3615  //line lib/parser/parser.y:1354
  3616  		{
  3617  			yyVAL.queryexpr = nil
  3618  		}
  3619  	case 222:
  3620  		yyDollar = yyS[yypt-2 : yypt+1]
  3621  //line lib/parser/parser.y:1358
  3622  		{
  3623  			yyVAL.queryexpr = WithClause{InlineTables: yyDollar[2].queryexprs}
  3624  		}
  3625  	case 223:
  3626  		yyDollar = yyS[yypt-6 : yypt+1]
  3627  //line lib/parser/parser.y:1364
  3628  		{
  3629  			yyVAL.queryexpr = InlineTable{Recursive: yyDollar[1].token, Name: yyDollar[2].identifier, Query: yyDollar[5].queryexpr.(SelectQuery)}
  3630  		}
  3631  	case 224:
  3632  		yyDollar = yyS[yypt-9 : yypt+1]
  3633  //line lib/parser/parser.y:1368
  3634  		{
  3635  			yyVAL.queryexpr = InlineTable{Recursive: yyDollar[1].token, Name: yyDollar[2].identifier, Fields: yyDollar[4].queryexprs, Query: yyDollar[8].queryexpr.(SelectQuery)}
  3636  		}
  3637  	case 225:
  3638  		yyDollar = yyS[yypt-1 : yypt+1]
  3639  //line lib/parser/parser.y:1374
  3640  		{
  3641  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  3642  		}
  3643  	case 226:
  3644  		yyDollar = yyS[yypt-3 : yypt+1]
  3645  //line lib/parser/parser.y:1378
  3646  		{
  3647  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].queryexpr}, yyDollar[3].queryexprs...)
  3648  		}
  3649  	case 227:
  3650  		yyDollar = yyS[yypt-1 : yypt+1]
  3651  //line lib/parser/parser.y:1384
  3652  		{
  3653  			yyVAL.queryexpr = NewStringValue(yyDollar[1].token.Literal)
  3654  		}
  3655  	case 228:
  3656  		yyDollar = yyS[yypt-1 : yypt+1]
  3657  //line lib/parser/parser.y:1388
  3658  		{
  3659  			i, err := strconv.ParseInt(yyDollar[1].token.Literal, 10, 64)
  3660  			if err != nil {
  3661  				yyVAL.queryexpr = NewFloatValueFromString(yyDollar[1].token.Literal)
  3662  			} else {
  3663  				iv := NewIntegerValue(i)
  3664  				iv.Literal = yyDollar[1].token.Literal
  3665  				yyVAL.queryexpr = iv
  3666  			}
  3667  		}
  3668  	case 229:
  3669  		yyDollar = yyS[yypt-1 : yypt+1]
  3670  //line lib/parser/parser.y:1399
  3671  		{
  3672  			yyVAL.queryexpr = NewFloatValueFromString(yyDollar[1].token.Literal)
  3673  		}
  3674  	case 230:
  3675  		yyDollar = yyS[yypt-1 : yypt+1]
  3676  //line lib/parser/parser.y:1403
  3677  		{
  3678  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3679  		}
  3680  	case 231:
  3681  		yyDollar = yyS[yypt-1 : yypt+1]
  3682  //line lib/parser/parser.y:1407
  3683  		{
  3684  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3685  		}
  3686  	case 232:
  3687  		yyDollar = yyS[yypt-1 : yypt+1]
  3688  //line lib/parser/parser.y:1413
  3689  		{
  3690  			yyVAL.queryexpr = NewTernaryValueFromString(yyDollar[1].token.Literal)
  3691  		}
  3692  	case 233:
  3693  		yyDollar = yyS[yypt-1 : yypt+1]
  3694  //line lib/parser/parser.y:1419
  3695  		{
  3696  			yyVAL.queryexpr = NewNullValue()
  3697  		}
  3698  	case 234:
  3699  		yyDollar = yyS[yypt-1 : yypt+1]
  3700  //line lib/parser/parser.y:1425
  3701  		{
  3702  			yyVAL.queryexpr = FieldReference{BaseExpr: yyDollar[1].identifier.BaseExpr, Column: yyDollar[1].identifier}
  3703  		}
  3704  	case 235:
  3705  		yyDollar = yyS[yypt-3 : yypt+1]
  3706  //line lib/parser/parser.y:1429
  3707  		{
  3708  			yyVAL.queryexpr = FieldReference{BaseExpr: yyDollar[1].identifier.BaseExpr, View: yyDollar[1].identifier, Column: yyDollar[3].identifier}
  3709  		}
  3710  	case 236:
  3711  		yyDollar = yyS[yypt-3 : yypt+1]
  3712  //line lib/parser/parser.y:1433
  3713  		{
  3714  			yyVAL.queryexpr = FieldReference{BaseExpr: NewBaseExpr(yyDollar[1].token), View: Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal}, Column: yyDollar[3].identifier}
  3715  		}
  3716  	case 237:
  3717  		yyDollar = yyS[yypt-3 : yypt+1]
  3718  //line lib/parser/parser.y:1437
  3719  		{
  3720  			yyVAL.queryexpr = ColumnNumber{BaseExpr: yyDollar[1].identifier.BaseExpr, View: yyDollar[1].identifier, Number: value.NewIntegerFromString(yyDollar[3].token.Literal)}
  3721  		}
  3722  	case 238:
  3723  		yyDollar = yyS[yypt-3 : yypt+1]
  3724  //line lib/parser/parser.y:1441
  3725  		{
  3726  			yyVAL.queryexpr = ColumnNumber{BaseExpr: NewBaseExpr(yyDollar[1].token), View: Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal}, Number: value.NewIntegerFromString(yyDollar[3].token.Literal)}
  3727  		}
  3728  	case 239:
  3729  		yyDollar = yyS[yypt-1 : yypt+1]
  3730  //line lib/parser/parser.y:1447
  3731  		{
  3732  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3733  		}
  3734  	case 240:
  3735  		yyDollar = yyS[yypt-1 : yypt+1]
  3736  //line lib/parser/parser.y:1451
  3737  		{
  3738  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3739  		}
  3740  	case 241:
  3741  		yyDollar = yyS[yypt-3 : yypt+1]
  3742  //line lib/parser/parser.y:1455
  3743  		{
  3744  			yyVAL.queryexpr = Parentheses{Expr: yyDollar[2].queryexpr}
  3745  		}
  3746  	case 242:
  3747  		yyDollar = yyS[yypt-1 : yypt+1]
  3748  //line lib/parser/parser.y:1461
  3749  		{
  3750  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3751  		}
  3752  	case 243:
  3753  		yyDollar = yyS[yypt-1 : yypt+1]
  3754  //line lib/parser/parser.y:1465
  3755  		{
  3756  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3757  		}
  3758  	case 244:
  3759  		yyDollar = yyS[yypt-1 : yypt+1]
  3760  //line lib/parser/parser.y:1469
  3761  		{
  3762  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3763  		}
  3764  	case 245:
  3765  		yyDollar = yyS[yypt-1 : yypt+1]
  3766  //line lib/parser/parser.y:1473
  3767  		{
  3768  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3769  		}
  3770  	case 246:
  3771  		yyDollar = yyS[yypt-1 : yypt+1]
  3772  //line lib/parser/parser.y:1477
  3773  		{
  3774  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3775  		}
  3776  	case 247:
  3777  		yyDollar = yyS[yypt-1 : yypt+1]
  3778  //line lib/parser/parser.y:1481
  3779  		{
  3780  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3781  		}
  3782  	case 248:
  3783  		yyDollar = yyS[yypt-1 : yypt+1]
  3784  //line lib/parser/parser.y:1485
  3785  		{
  3786  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3787  		}
  3788  	case 249:
  3789  		yyDollar = yyS[yypt-1 : yypt+1]
  3790  //line lib/parser/parser.y:1489
  3791  		{
  3792  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3793  		}
  3794  	case 250:
  3795  		yyDollar = yyS[yypt-1 : yypt+1]
  3796  //line lib/parser/parser.y:1493
  3797  		{
  3798  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3799  		}
  3800  	case 251:
  3801  		yyDollar = yyS[yypt-1 : yypt+1]
  3802  //line lib/parser/parser.y:1497
  3803  		{
  3804  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3805  		}
  3806  	case 252:
  3807  		yyDollar = yyS[yypt-1 : yypt+1]
  3808  //line lib/parser/parser.y:1501
  3809  		{
  3810  			yyVAL.queryexpr = yyDollar[1].variable
  3811  		}
  3812  	case 253:
  3813  		yyDollar = yyS[yypt-1 : yypt+1]
  3814  //line lib/parser/parser.y:1505
  3815  		{
  3816  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3817  		}
  3818  	case 254:
  3819  		yyDollar = yyS[yypt-1 : yypt+1]
  3820  //line lib/parser/parser.y:1509
  3821  		{
  3822  			yyVAL.queryexpr = yyDollar[1].envvar
  3823  		}
  3824  	case 255:
  3825  		yyDollar = yyS[yypt-1 : yypt+1]
  3826  //line lib/parser/parser.y:1513
  3827  		{
  3828  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3829  		}
  3830  	case 256:
  3831  		yyDollar = yyS[yypt-1 : yypt+1]
  3832  //line lib/parser/parser.y:1517
  3833  		{
  3834  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3835  		}
  3836  	case 257:
  3837  		yyDollar = yyS[yypt-1 : yypt+1]
  3838  //line lib/parser/parser.y:1521
  3839  		{
  3840  			yyVAL.queryexpr = yyDollar[1].flag
  3841  		}
  3842  	case 258:
  3843  		yyDollar = yyS[yypt-1 : yypt+1]
  3844  //line lib/parser/parser.y:1525
  3845  		{
  3846  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3847  		}
  3848  	case 259:
  3849  		yyDollar = yyS[yypt-3 : yypt+1]
  3850  //line lib/parser/parser.y:1529
  3851  		{
  3852  			yyVAL.queryexpr = Parentheses{Expr: yyDollar[2].queryexpr}
  3853  		}
  3854  	case 260:
  3855  		yyDollar = yyS[yypt-1 : yypt+1]
  3856  //line lib/parser/parser.y:1533
  3857  		{
  3858  			name := ""
  3859  			if yyDollar[1].token.Literal[0] == ':' {
  3860  				name = yyDollar[1].token.Literal[1:]
  3861  			}
  3862  			yyVAL.queryexpr = Placeholder{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Ordinal: yyDollar[1].token.HolderOrdinal, Name: name}
  3863  		}
  3864  	case 261:
  3865  		yyDollar = yyS[yypt-1 : yypt+1]
  3866  //line lib/parser/parser.y:1543
  3867  		{
  3868  			yyVAL.queryexpr = AllColumns{BaseExpr: NewBaseExpr(yyDollar[1].token)}
  3869  		}
  3870  	case 262:
  3871  		yyDollar = yyS[yypt-3 : yypt+1]
  3872  //line lib/parser/parser.y:1549
  3873  		{
  3874  			yyVAL.queryexpr = RowValue{BaseExpr: NewBaseExpr(yyDollar[1].token), Value: ValueList{Values: yyDollar[2].queryexprs}}
  3875  		}
  3876  	case 263:
  3877  		yyDollar = yyS[yypt-1 : yypt+1]
  3878  //line lib/parser/parser.y:1553
  3879  		{
  3880  			yyVAL.queryexpr = RowValue{BaseExpr: yyDollar[1].queryexpr.GetBaseExpr(), Value: yyDollar[1].queryexpr}
  3881  		}
  3882  	case 264:
  3883  		yyDollar = yyS[yypt-6 : yypt+1]
  3884  //line lib/parser/parser.y:1557
  3885  		{
  3886  			yyVAL.queryexpr = RowValue{BaseExpr: NewBaseExpr(yyDollar[1].token), Value: JsonQuery{JsonQuery: yyDollar[1].token, Query: yyDollar[3].queryexpr, JsonText: yyDollar[5].queryexpr}}
  3887  		}
  3888  	case 265:
  3889  		yyDollar = yyS[yypt-1 : yypt+1]
  3890  //line lib/parser/parser.y:1563
  3891  		{
  3892  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  3893  		}
  3894  	case 266:
  3895  		yyDollar = yyS[yypt-3 : yypt+1]
  3896  //line lib/parser/parser.y:1567
  3897  		{
  3898  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].queryexpr}, yyDollar[3].queryexprs...)
  3899  		}
  3900  	case 267:
  3901  		yyDollar = yyS[yypt-1 : yypt+1]
  3902  //line lib/parser/parser.y:1573
  3903  		{
  3904  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  3905  		}
  3906  	case 268:
  3907  		yyDollar = yyS[yypt-3 : yypt+1]
  3908  //line lib/parser/parser.y:1577
  3909  		{
  3910  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].queryexpr}, yyDollar[3].queryexprs...)
  3911  		}
  3912  	case 269:
  3913  		yyDollar = yyS[yypt-2 : yypt+1]
  3914  //line lib/parser/parser.y:1583
  3915  		{
  3916  			yyVAL.queryexpr = OrderItem{Value: yyDollar[1].queryexpr, Direction: yyDollar[2].token}
  3917  		}
  3918  	case 270:
  3919  		yyDollar = yyS[yypt-4 : yypt+1]
  3920  //line lib/parser/parser.y:1587
  3921  		{
  3922  			yyVAL.queryexpr = OrderItem{Value: yyDollar[1].queryexpr, Direction: yyDollar[2].token, NullsPosition: yyDollar[4].token}
  3923  		}
  3924  	case 271:
  3925  		yyDollar = yyS[yypt-0 : yypt+1]
  3926  //line lib/parser/parser.y:1593
  3927  		{
  3928  			yyVAL.token = Token{}
  3929  		}
  3930  	case 272:
  3931  		yyDollar = yyS[yypt-1 : yypt+1]
  3932  //line lib/parser/parser.y:1597
  3933  		{
  3934  			yyVAL.token = yyDollar[1].token
  3935  		}
  3936  	case 273:
  3937  		yyDollar = yyS[yypt-1 : yypt+1]
  3938  //line lib/parser/parser.y:1601
  3939  		{
  3940  			yyVAL.token = yyDollar[1].token
  3941  		}
  3942  	case 274:
  3943  		yyDollar = yyS[yypt-1 : yypt+1]
  3944  //line lib/parser/parser.y:1607
  3945  		{
  3946  			yyVAL.token = yyDollar[1].token
  3947  		}
  3948  	case 275:
  3949  		yyDollar = yyS[yypt-1 : yypt+1]
  3950  //line lib/parser/parser.y:1611
  3951  		{
  3952  			yyVAL.token = yyDollar[1].token
  3953  		}
  3954  	case 276:
  3955  		yyDollar = yyS[yypt-3 : yypt+1]
  3956  //line lib/parser/parser.y:1617
  3957  		{
  3958  			yyVAL.queryexpr = Subquery{BaseExpr: NewBaseExpr(yyDollar[1].token), Query: yyDollar[2].queryexpr.(SelectQuery)}
  3959  		}
  3960  	case 277:
  3961  		yyDollar = yyS[yypt-3 : yypt+1]
  3962  //line lib/parser/parser.y:1623
  3963  		{
  3964  			var item1 []QueryExpression
  3965  			var item2 []QueryExpression
  3966  
  3967  			c1, ok := yyDollar[1].queryexpr.(Concat)
  3968  			if ok {
  3969  				item1 = c1.Items
  3970  			} else {
  3971  				item1 = []QueryExpression{yyDollar[1].queryexpr}
  3972  			}
  3973  
  3974  			c2, ok := yyDollar[3].queryexpr.(Concat)
  3975  			if ok {
  3976  				item2 = c2.Items
  3977  			} else {
  3978  				item2 = []QueryExpression{yyDollar[3].queryexpr}
  3979  			}
  3980  
  3981  			yyVAL.queryexpr = Concat{Items: append(item1, item2...)}
  3982  		}
  3983  	case 278:
  3984  		yyDollar = yyS[yypt-3 : yypt+1]
  3985  //line lib/parser/parser.y:1646
  3986  		{
  3987  			yyVAL.queryexpr = RowValueList{RowValues: yyDollar[2].queryexprs}
  3988  		}
  3989  	case 279:
  3990  		yyDollar = yyS[yypt-1 : yypt+1]
  3991  //line lib/parser/parser.y:1650
  3992  		{
  3993  			yyVAL.queryexpr = yyDollar[1].queryexpr
  3994  		}
  3995  	case 280:
  3996  		yyDollar = yyS[yypt-6 : yypt+1]
  3997  //line lib/parser/parser.y:1654
  3998  		{
  3999  			yyVAL.queryexpr = JsonQuery{BaseExpr: NewBaseExpr(yyDollar[1].token), JsonQuery: yyDollar[1].token, Query: yyDollar[3].queryexpr, JsonText: yyDollar[5].queryexpr}
  4000  		}
  4001  	case 281:
  4002  		yyDollar = yyS[yypt-3 : yypt+1]
  4003  //line lib/parser/parser.y:1660
  4004  		{
  4005  			yyVAL.queryexpr = Comparison{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4006  		}
  4007  	case 282:
  4008  		yyDollar = yyS[yypt-3 : yypt+1]
  4009  //line lib/parser/parser.y:1664
  4010  		{
  4011  			yyVAL.queryexpr = Comparison{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4012  		}
  4013  	case 283:
  4014  		yyDollar = yyS[yypt-3 : yypt+1]
  4015  //line lib/parser/parser.y:1668
  4016  		{
  4017  			yyVAL.queryexpr = Comparison{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4018  		}
  4019  	case 284:
  4020  		yyDollar = yyS[yypt-3 : yypt+1]
  4021  //line lib/parser/parser.y:1672
  4022  		{
  4023  			yyVAL.queryexpr = Comparison{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4024  		}
  4025  	case 285:
  4026  		yyDollar = yyS[yypt-4 : yypt+1]
  4027  //line lib/parser/parser.y:1676
  4028  		{
  4029  			yyVAL.queryexpr = Is{LHS: yyDollar[1].queryexpr, RHS: yyDollar[4].queryexpr, Negation: yyDollar[3].token}
  4030  		}
  4031  	case 286:
  4032  		yyDollar = yyS[yypt-4 : yypt+1]
  4033  //line lib/parser/parser.y:1680
  4034  		{
  4035  			yyVAL.queryexpr = Is{LHS: yyDollar[1].queryexpr, RHS: yyDollar[4].queryexpr, Negation: yyDollar[3].token}
  4036  		}
  4037  	case 287:
  4038  		yyDollar = yyS[yypt-5 : yypt+1]
  4039  //line lib/parser/parser.y:1684
  4040  		{
  4041  			yyVAL.queryexpr = Between{LHS: yyDollar[1].queryexpr, Low: yyDollar[3].queryexpr, High: yyDollar[5].queryexpr}
  4042  		}
  4043  	case 288:
  4044  		yyDollar = yyS[yypt-6 : yypt+1]
  4045  //line lib/parser/parser.y:1688
  4046  		{
  4047  			yyVAL.queryexpr = Between{LHS: yyDollar[1].queryexpr, Low: yyDollar[4].queryexpr, High: yyDollar[6].queryexpr, Negation: yyDollar[2].token}
  4048  		}
  4049  	case 289:
  4050  		yyDollar = yyS[yypt-6 : yypt+1]
  4051  //line lib/parser/parser.y:1692
  4052  		{
  4053  			yyVAL.queryexpr = Between{LHS: yyDollar[1].queryexpr, Low: yyDollar[4].queryexpr, High: yyDollar[6].queryexpr, Negation: yyDollar[2].token}
  4054  		}
  4055  	case 290:
  4056  		yyDollar = yyS[yypt-3 : yypt+1]
  4057  //line lib/parser/parser.y:1696
  4058  		{
  4059  			yyVAL.queryexpr = In{LHS: yyDollar[1].queryexpr, Values: yyDollar[3].queryexpr}
  4060  		}
  4061  	case 291:
  4062  		yyDollar = yyS[yypt-4 : yypt+1]
  4063  //line lib/parser/parser.y:1700
  4064  		{
  4065  			yyVAL.queryexpr = In{LHS: yyDollar[1].queryexpr, Values: yyDollar[4].queryexpr, Negation: yyDollar[2].token}
  4066  		}
  4067  	case 292:
  4068  		yyDollar = yyS[yypt-4 : yypt+1]
  4069  //line lib/parser/parser.y:1704
  4070  		{
  4071  			yyVAL.queryexpr = In{LHS: yyDollar[1].queryexpr, Values: yyDollar[4].queryexpr, Negation: yyDollar[2].token}
  4072  		}
  4073  	case 293:
  4074  		yyDollar = yyS[yypt-3 : yypt+1]
  4075  //line lib/parser/parser.y:1708
  4076  		{
  4077  			yyVAL.queryexpr = Like{LHS: yyDollar[1].queryexpr, Pattern: yyDollar[3].queryexpr}
  4078  		}
  4079  	case 294:
  4080  		yyDollar = yyS[yypt-4 : yypt+1]
  4081  //line lib/parser/parser.y:1712
  4082  		{
  4083  			yyVAL.queryexpr = Like{LHS: yyDollar[1].queryexpr, Pattern: yyDollar[4].queryexpr, Negation: yyDollar[2].token}
  4084  		}
  4085  	case 295:
  4086  		yyDollar = yyS[yypt-4 : yypt+1]
  4087  //line lib/parser/parser.y:1716
  4088  		{
  4089  			yyVAL.queryexpr = Any{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, Values: yyDollar[4].queryexpr}
  4090  		}
  4091  	case 296:
  4092  		yyDollar = yyS[yypt-4 : yypt+1]
  4093  //line lib/parser/parser.y:1720
  4094  		{
  4095  			yyVAL.queryexpr = Any{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, Values: yyDollar[4].queryexpr}
  4096  		}
  4097  	case 297:
  4098  		yyDollar = yyS[yypt-4 : yypt+1]
  4099  //line lib/parser/parser.y:1724
  4100  		{
  4101  			yyVAL.queryexpr = All{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, Values: yyDollar[4].queryexpr}
  4102  		}
  4103  	case 298:
  4104  		yyDollar = yyS[yypt-4 : yypt+1]
  4105  //line lib/parser/parser.y:1728
  4106  		{
  4107  			yyVAL.queryexpr = All{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, Values: yyDollar[4].queryexpr}
  4108  		}
  4109  	case 299:
  4110  		yyDollar = yyS[yypt-2 : yypt+1]
  4111  //line lib/parser/parser.y:1732
  4112  		{
  4113  			yyVAL.queryexpr = Exists{Query: yyDollar[2].queryexpr.(Subquery)}
  4114  		}
  4115  	case 300:
  4116  		yyDollar = yyS[yypt-3 : yypt+1]
  4117  //line lib/parser/parser.y:1738
  4118  		{
  4119  			yyVAL.queryexpr = Arithmetic{BaseExpr: NewBaseExpr(yyDollar[2].token), LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4120  		}
  4121  	case 301:
  4122  		yyDollar = yyS[yypt-3 : yypt+1]
  4123  //line lib/parser/parser.y:1742
  4124  		{
  4125  			yyVAL.queryexpr = Arithmetic{BaseExpr: NewBaseExpr(yyDollar[2].token), LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4126  		}
  4127  	case 302:
  4128  		yyDollar = yyS[yypt-3 : yypt+1]
  4129  //line lib/parser/parser.y:1746
  4130  		{
  4131  			yyVAL.queryexpr = Arithmetic{BaseExpr: NewBaseExpr(yyDollar[2].token), LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4132  		}
  4133  	case 303:
  4134  		yyDollar = yyS[yypt-3 : yypt+1]
  4135  //line lib/parser/parser.y:1750
  4136  		{
  4137  			yyVAL.queryexpr = Arithmetic{BaseExpr: NewBaseExpr(yyDollar[2].token), LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4138  		}
  4139  	case 304:
  4140  		yyDollar = yyS[yypt-3 : yypt+1]
  4141  //line lib/parser/parser.y:1754
  4142  		{
  4143  			yyVAL.queryexpr = Arithmetic{BaseExpr: NewBaseExpr(yyDollar[2].token), LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4144  		}
  4145  	case 305:
  4146  		yyDollar = yyS[yypt-2 : yypt+1]
  4147  //line lib/parser/parser.y:1758
  4148  		{
  4149  			yyVAL.queryexpr = UnaryArithmetic{Operand: yyDollar[2].queryexpr, Operator: yyDollar[1].token}
  4150  		}
  4151  	case 306:
  4152  		yyDollar = yyS[yypt-2 : yypt+1]
  4153  //line lib/parser/parser.y:1762
  4154  		{
  4155  			yyVAL.queryexpr = UnaryArithmetic{Operand: yyDollar[2].queryexpr, Operator: yyDollar[1].token}
  4156  		}
  4157  	case 307:
  4158  		yyDollar = yyS[yypt-3 : yypt+1]
  4159  //line lib/parser/parser.y:1768
  4160  		{
  4161  			yyVAL.queryexpr = Logic{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4162  		}
  4163  	case 308:
  4164  		yyDollar = yyS[yypt-3 : yypt+1]
  4165  //line lib/parser/parser.y:1772
  4166  		{
  4167  			yyVAL.queryexpr = Logic{LHS: yyDollar[1].queryexpr, Operator: yyDollar[2].token, RHS: yyDollar[3].queryexpr}
  4168  		}
  4169  	case 309:
  4170  		yyDollar = yyS[yypt-2 : yypt+1]
  4171  //line lib/parser/parser.y:1776
  4172  		{
  4173  			yyVAL.queryexpr = UnaryLogic{Operand: yyDollar[2].queryexpr, Operator: yyDollar[1].token}
  4174  		}
  4175  	case 310:
  4176  		yyDollar = yyS[yypt-2 : yypt+1]
  4177  //line lib/parser/parser.y:1780
  4178  		{
  4179  			yyVAL.queryexpr = UnaryLogic{Operand: yyDollar[2].queryexpr, Operator: yyDollar[1].token}
  4180  		}
  4181  	case 311:
  4182  		yyDollar = yyS[yypt-0 : yypt+1]
  4183  //line lib/parser/parser.y:1786
  4184  		{
  4185  			yyVAL.queryexprs = nil
  4186  		}
  4187  	case 312:
  4188  		yyDollar = yyS[yypt-1 : yypt+1]
  4189  //line lib/parser/parser.y:1790
  4190  		{
  4191  			yyVAL.queryexprs = yyDollar[1].queryexprs
  4192  		}
  4193  	case 313:
  4194  		yyDollar = yyS[yypt-4 : yypt+1]
  4195  //line lib/parser/parser.y:1796
  4196  		{
  4197  			yyVAL.queryexpr = Function{BaseExpr: yyDollar[1].identifier.BaseExpr, Name: yyDollar[1].identifier.Literal, Args: yyDollar[3].queryexprs}
  4198  		}
  4199  	case 314:
  4200  		yyDollar = yyS[yypt-4 : yypt+1]
  4201  //line lib/parser/parser.y:1800
  4202  		{
  4203  			yyVAL.queryexpr = Function{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs}
  4204  		}
  4205  	case 315:
  4206  		yyDollar = yyS[yypt-6 : yypt+1]
  4207  //line lib/parser/parser.y:1804
  4208  		{
  4209  			yyVAL.queryexpr = Function{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: []QueryExpression{yyDollar[3].queryexpr, yyDollar[5].queryexpr}, From: yyDollar[4].token}
  4210  		}
  4211  	case 316:
  4212  		yyDollar = yyS[yypt-8 : yypt+1]
  4213  //line lib/parser/parser.y:1808
  4214  		{
  4215  			yyVAL.queryexpr = Function{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: []QueryExpression{yyDollar[3].queryexpr, yyDollar[5].queryexpr, yyDollar[7].queryexpr}, From: yyDollar[4].token, For: yyDollar[6].token}
  4216  		}
  4217  	case 317:
  4218  		yyDollar = yyS[yypt-3 : yypt+1]
  4219  //line lib/parser/parser.y:1812
  4220  		{
  4221  			yyVAL.queryexpr = Function{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal}
  4222  		}
  4223  	case 318:
  4224  		yyDollar = yyS[yypt-4 : yypt+1]
  4225  //line lib/parser/parser.y:1816
  4226  		{
  4227  			yyVAL.queryexpr = Function{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs}
  4228  		}
  4229  	case 319:
  4230  		yyDollar = yyS[yypt-4 : yypt+1]
  4231  //line lib/parser/parser.y:1820
  4232  		{
  4233  			yyVAL.queryexpr = Function{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs}
  4234  		}
  4235  	case 320:
  4236  		yyDollar = yyS[yypt-4 : yypt+1]
  4237  //line lib/parser/parser.y:1824
  4238  		{
  4239  			yyVAL.queryexpr = Function{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs}
  4240  		}
  4241  	case 321:
  4242  		yyDollar = yyS[yypt-5 : yypt+1]
  4243  //line lib/parser/parser.y:1831
  4244  		{
  4245  			yyVAL.queryexpr = AggregateFunction{BaseExpr: yyDollar[1].identifier.BaseExpr, Name: yyDollar[1].identifier.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs}
  4246  		}
  4247  	case 322:
  4248  		yyDollar = yyS[yypt-5 : yypt+1]
  4249  //line lib/parser/parser.y:1835
  4250  		{
  4251  			yyVAL.queryexpr = AggregateFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs}
  4252  		}
  4253  	case 323:
  4254  		yyDollar = yyS[yypt-5 : yypt+1]
  4255  //line lib/parser/parser.y:1839
  4256  		{
  4257  			yyVAL.queryexpr = AggregateFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs}
  4258  		}
  4259  	case 324:
  4260  		yyDollar = yyS[yypt-5 : yypt+1]
  4261  //line lib/parser/parser.y:1843
  4262  		{
  4263  			yyVAL.queryexpr = AggregateFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs}
  4264  		}
  4265  	case 325:
  4266  		yyDollar = yyS[yypt-5 : yypt+1]
  4267  //line lib/parser/parser.y:1847
  4268  		{
  4269  			yyVAL.queryexpr = AggregateFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: []QueryExpression{yyDollar[4].queryexpr}}
  4270  		}
  4271  	case 326:
  4272  		yyDollar = yyS[yypt-1 : yypt+1]
  4273  //line lib/parser/parser.y:1851
  4274  		{
  4275  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4276  		}
  4277  	case 327:
  4278  		yyDollar = yyS[yypt-5 : yypt+1]
  4279  //line lib/parser/parser.y:1857
  4280  		{
  4281  			yyVAL.queryexpr = ListFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs}
  4282  		}
  4283  	case 328:
  4284  		yyDollar = yyS[yypt-10 : yypt+1]
  4285  //line lib/parser/parser.y:1861
  4286  		{
  4287  			yyVAL.queryexpr = ListFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs, OrderBy: yyDollar[9].queryexpr}
  4288  		}
  4289  	case 329:
  4290  		yyDollar = yyS[yypt-8 : yypt+1]
  4291  //line lib/parser/parser.y:1867
  4292  		{
  4293  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: yyDollar[1].identifier.BaseExpr, Name: yyDollar[1].identifier.Literal, Args: yyDollar[3].queryexprs, AnalyticClause: yyDollar[7].queryexpr.(AnalyticClause)}
  4294  		}
  4295  	case 330:
  4296  		yyDollar = yyS[yypt-9 : yypt+1]
  4297  //line lib/parser/parser.y:1871
  4298  		{
  4299  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: yyDollar[1].identifier.BaseExpr, Name: yyDollar[1].identifier.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs, AnalyticClause: yyDollar[8].queryexpr.(AnalyticClause)}
  4300  		}
  4301  	case 331:
  4302  		yyDollar = yyS[yypt-9 : yypt+1]
  4303  //line lib/parser/parser.y:1875
  4304  		{
  4305  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs, AnalyticClause: yyDollar[8].queryexpr.(AnalyticClause)}
  4306  		}
  4307  	case 332:
  4308  		yyDollar = yyS[yypt-9 : yypt+1]
  4309  //line lib/parser/parser.y:1879
  4310  		{
  4311  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs, AnalyticClause: yyDollar[8].queryexpr.(AnalyticClause)}
  4312  		}
  4313  	case 333:
  4314  		yyDollar = yyS[yypt-9 : yypt+1]
  4315  //line lib/parser/parser.y:1883
  4316  		{
  4317  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs, AnalyticClause: yyDollar[8].queryexpr.(AnalyticClause)}
  4318  		}
  4319  	case 334:
  4320  		yyDollar = yyS[yypt-9 : yypt+1]
  4321  //line lib/parser/parser.y:1887
  4322  		{
  4323  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: []QueryExpression{yyDollar[4].queryexpr}, AnalyticClause: yyDollar[8].queryexpr.(AnalyticClause)}
  4324  		}
  4325  	case 335:
  4326  		yyDollar = yyS[yypt-9 : yypt+1]
  4327  //line lib/parser/parser.y:1891
  4328  		{
  4329  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Distinct: yyDollar[3].token, Args: yyDollar[4].queryexprs, AnalyticClause: yyDollar[8].queryexpr.(AnalyticClause)}
  4330  		}
  4331  	case 336:
  4332  		yyDollar = yyS[yypt-8 : yypt+1]
  4333  //line lib/parser/parser.y:1895
  4334  		{
  4335  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs, AnalyticClause: yyDollar[7].queryexpr.(AnalyticClause)}
  4336  		}
  4337  	case 337:
  4338  		yyDollar = yyS[yypt-8 : yypt+1]
  4339  //line lib/parser/parser.y:1899
  4340  		{
  4341  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs, AnalyticClause: yyDollar[7].queryexpr.(AnalyticClause)}
  4342  		}
  4343  	case 338:
  4344  		yyDollar = yyS[yypt-10 : yypt+1]
  4345  //line lib/parser/parser.y:1903
  4346  		{
  4347  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs, IgnoreType: yyDollar[6].token, AnalyticClause: yyDollar[9].queryexpr.(AnalyticClause)}
  4348  		}
  4349  	case 339:
  4350  		yyDollar = yyS[yypt-8 : yypt+1]
  4351  //line lib/parser/parser.y:1907
  4352  		{
  4353  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs, AnalyticClause: yyDollar[7].queryexpr.(AnalyticClause)}
  4354  		}
  4355  	case 340:
  4356  		yyDollar = yyS[yypt-10 : yypt+1]
  4357  //line lib/parser/parser.y:1911
  4358  		{
  4359  			yyVAL.queryexpr = AnalyticFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs, IgnoreType: yyDollar[6].token, AnalyticClause: yyDollar[9].queryexpr.(AnalyticClause)}
  4360  		}
  4361  	case 341:
  4362  		yyDollar = yyS[yypt-2 : yypt+1]
  4363  //line lib/parser/parser.y:1917
  4364  		{
  4365  			yyVAL.queryexpr = AnalyticClause{PartitionClause: yyDollar[1].queryexpr, OrderByClause: yyDollar[2].queryexpr}
  4366  		}
  4367  	case 342:
  4368  		yyDollar = yyS[yypt-1 : yypt+1]
  4369  //line lib/parser/parser.y:1923
  4370  		{
  4371  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4372  		}
  4373  	case 343:
  4374  		yyDollar = yyS[yypt-5 : yypt+1]
  4375  //line lib/parser/parser.y:1927
  4376  		{
  4377  			yyVAL.queryexpr = AnalyticClause{PartitionClause: yyDollar[1].queryexpr, OrderByClause: OrderByClause{Items: yyDollar[4].queryexprs}, WindowingClause: yyDollar[5].queryexpr}
  4378  		}
  4379  	case 344:
  4380  		yyDollar = yyS[yypt-0 : yypt+1]
  4381  //line lib/parser/parser.y:1933
  4382  		{
  4383  			yyVAL.queryexpr = nil
  4384  		}
  4385  	case 345:
  4386  		yyDollar = yyS[yypt-3 : yypt+1]
  4387  //line lib/parser/parser.y:1937
  4388  		{
  4389  			yyVAL.queryexpr = PartitionClause{Values: yyDollar[3].queryexprs}
  4390  		}
  4391  	case 346:
  4392  		yyDollar = yyS[yypt-2 : yypt+1]
  4393  //line lib/parser/parser.y:1943
  4394  		{
  4395  			yyVAL.queryexpr = WindowingClause{FrameLow: yyDollar[2].queryexpr}
  4396  		}
  4397  	case 347:
  4398  		yyDollar = yyS[yypt-5 : yypt+1]
  4399  //line lib/parser/parser.y:1947
  4400  		{
  4401  			yyVAL.queryexpr = WindowingClause{FrameLow: yyDollar[3].queryexpr, FrameHigh: yyDollar[5].queryexpr}
  4402  		}
  4403  	case 348:
  4404  		yyDollar = yyS[yypt-2 : yypt+1]
  4405  //line lib/parser/parser.y:1953
  4406  		{
  4407  			yyVAL.queryexpr = WindowFramePosition{Direction: yyDollar[2].token, Unbounded: yyDollar[1].token}
  4408  		}
  4409  	case 349:
  4410  		yyDollar = yyS[yypt-2 : yypt+1]
  4411  //line lib/parser/parser.y:1957
  4412  		{
  4413  			i, _ := strconv.Atoi(yyDollar[1].token.Literal)
  4414  			yyVAL.queryexpr = WindowFramePosition{Direction: yyDollar[2].token, Offset: i}
  4415  		}
  4416  	case 350:
  4417  		yyDollar = yyS[yypt-2 : yypt+1]
  4418  //line lib/parser/parser.y:1962
  4419  		{
  4420  			yyVAL.queryexpr = WindowFramePosition{Direction: yyDollar[1].token}
  4421  		}
  4422  	case 351:
  4423  		yyDollar = yyS[yypt-2 : yypt+1]
  4424  //line lib/parser/parser.y:1968
  4425  		{
  4426  			i, _ := strconv.Atoi(yyDollar[1].token.Literal)
  4427  			yyVAL.queryexpr = WindowFramePosition{Direction: yyDollar[2].token, Offset: i}
  4428  		}
  4429  	case 352:
  4430  		yyDollar = yyS[yypt-2 : yypt+1]
  4431  //line lib/parser/parser.y:1973
  4432  		{
  4433  			i, _ := strconv.Atoi(yyDollar[1].token.Literal)
  4434  			yyVAL.queryexpr = WindowFramePosition{Direction: yyDollar[2].token, Offset: i}
  4435  		}
  4436  	case 353:
  4437  		yyDollar = yyS[yypt-2 : yypt+1]
  4438  //line lib/parser/parser.y:1978
  4439  		{
  4440  			yyVAL.queryexpr = WindowFramePosition{Direction: yyDollar[1].token}
  4441  		}
  4442  	case 354:
  4443  		yyDollar = yyS[yypt-2 : yypt+1]
  4444  //line lib/parser/parser.y:1984
  4445  		{
  4446  			yyVAL.queryexpr = WindowFramePosition{Direction: yyDollar[2].token, Unbounded: yyDollar[1].token}
  4447  		}
  4448  	case 355:
  4449  		yyDollar = yyS[yypt-1 : yypt+1]
  4450  //line lib/parser/parser.y:1988
  4451  		{
  4452  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4453  		}
  4454  	case 356:
  4455  		yyDollar = yyS[yypt-2 : yypt+1]
  4456  //line lib/parser/parser.y:1994
  4457  		{
  4458  			yyVAL.queryexpr = WindowFramePosition{Direction: yyDollar[2].token, Unbounded: yyDollar[1].token}
  4459  		}
  4460  	case 357:
  4461  		yyDollar = yyS[yypt-1 : yypt+1]
  4462  //line lib/parser/parser.y:1998
  4463  		{
  4464  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4465  		}
  4466  	case 358:
  4467  		yyDollar = yyS[yypt-1 : yypt+1]
  4468  //line lib/parser/parser.y:2004
  4469  		{
  4470  			yyVAL.queryexpr = yyDollar[1].identifier
  4471  		}
  4472  	case 359:
  4473  		yyDollar = yyS[yypt-1 : yypt+1]
  4474  //line lib/parser/parser.y:2008
  4475  		{
  4476  			yyVAL.queryexpr = Url{BaseExpr: NewBaseExpr(yyDollar[1].token), Raw: yyDollar[1].token.Literal}
  4477  		}
  4478  	case 360:
  4479  		yyDollar = yyS[yypt-4 : yypt+1]
  4480  //line lib/parser/parser.y:2012
  4481  		{
  4482  			yyVAL.queryexpr = TableFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Args: yyDollar[3].queryexprs}
  4483  		}
  4484  	case 361:
  4485  		yyDollar = yyS[yypt-1 : yypt+1]
  4486  //line lib/parser/parser.y:2016
  4487  		{
  4488  			yyVAL.queryexpr = Stdin{BaseExpr: NewBaseExpr(yyDollar[1].token)}
  4489  		}
  4490  	case 362:
  4491  		yyDollar = yyS[yypt-1 : yypt+1]
  4492  //line lib/parser/parser.y:2022
  4493  		{
  4494  			yyVAL.token = yyDollar[1].token
  4495  		}
  4496  	case 363:
  4497  		yyDollar = yyS[yypt-1 : yypt+1]
  4498  //line lib/parser/parser.y:2026
  4499  		{
  4500  			yyVAL.token = yyDollar[1].token
  4501  		}
  4502  	case 364:
  4503  		yyDollar = yyS[yypt-1 : yypt+1]
  4504  //line lib/parser/parser.y:2030
  4505  		{
  4506  			yyVAL.token = yyDollar[1].token
  4507  		}
  4508  	case 365:
  4509  		yyDollar = yyS[yypt-1 : yypt+1]
  4510  //line lib/parser/parser.y:2034
  4511  		{
  4512  			yyVAL.token = yyDollar[1].token
  4513  		}
  4514  	case 366:
  4515  		yyDollar = yyS[yypt-1 : yypt+1]
  4516  //line lib/parser/parser.y:2038
  4517  		{
  4518  			yyVAL.token = yyDollar[1].token
  4519  		}
  4520  	case 367:
  4521  		yyDollar = yyS[yypt-1 : yypt+1]
  4522  //line lib/parser/parser.y:2044
  4523  		{
  4524  			yyVAL.token = yyDollar[1].token
  4525  		}
  4526  	case 368:
  4527  		yyDollar = yyS[yypt-1 : yypt+1]
  4528  //line lib/parser/parser.y:2048
  4529  		{
  4530  			yyVAL.token = yyDollar[1].token
  4531  		}
  4532  	case 369:
  4533  		yyDollar = yyS[yypt-1 : yypt+1]
  4534  //line lib/parser/parser.y:2052
  4535  		{
  4536  			yyVAL.token = yyDollar[1].token
  4537  		}
  4538  	case 370:
  4539  		yyDollar = yyS[yypt-4 : yypt+1]
  4540  //line lib/parser/parser.y:2058
  4541  		{
  4542  			yyVAL.queryexpr = FormatSpecifiedFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, Path: yyDollar[3].queryexpr, Args: nil}
  4543  		}
  4544  	case 371:
  4545  		yyDollar = yyS[yypt-6 : yypt+1]
  4546  //line lib/parser/parser.y:2062
  4547  		{
  4548  			yyVAL.queryexpr = FormatSpecifiedFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, Path: yyDollar[3].queryexpr, Args: yyDollar[5].queryexprs}
  4549  		}
  4550  	case 372:
  4551  		yyDollar = yyS[yypt-6 : yypt+1]
  4552  //line lib/parser/parser.y:2066
  4553  		{
  4554  			yyVAL.queryexpr = FormatSpecifiedFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, FormatElement: yyDollar[3].queryexpr, Path: yyDollar[5].queryexpr, Args: nil}
  4555  		}
  4556  	case 373:
  4557  		yyDollar = yyS[yypt-8 : yypt+1]
  4558  //line lib/parser/parser.y:2070
  4559  		{
  4560  			yyVAL.queryexpr = FormatSpecifiedFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, FormatElement: yyDollar[3].queryexpr, Path: yyDollar[5].queryexpr, Args: yyDollar[7].queryexprs}
  4561  		}
  4562  	case 374:
  4563  		yyDollar = yyS[yypt-6 : yypt+1]
  4564  //line lib/parser/parser.y:2076
  4565  		{
  4566  			yyVAL.queryexpr = FormatSpecifiedFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, FormatElement: yyDollar[3].queryexpr, Path: yyDollar[5].identifier, Args: nil}
  4567  		}
  4568  	case 375:
  4569  		yyDollar = yyS[yypt-8 : yypt+1]
  4570  //line lib/parser/parser.y:2080
  4571  		{
  4572  			yyVAL.queryexpr = FormatSpecifiedFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, FormatElement: yyDollar[3].queryexpr, Path: yyDollar[5].identifier, Args: yyDollar[7].queryexprs}
  4573  		}
  4574  	case 376:
  4575  		yyDollar = yyS[yypt-6 : yypt+1]
  4576  //line lib/parser/parser.y:2084
  4577  		{
  4578  			yyVAL.queryexpr = FormatSpecifiedFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, FormatElement: yyDollar[3].queryexpr, Path: yyDollar[5].queryexpr, Args: nil}
  4579  		}
  4580  	case 377:
  4581  		yyDollar = yyS[yypt-8 : yypt+1]
  4582  //line lib/parser/parser.y:2088
  4583  		{
  4584  			yyVAL.queryexpr = FormatSpecifiedFunction{BaseExpr: NewBaseExpr(yyDollar[1].token), Type: yyDollar[1].token, FormatElement: yyDollar[3].queryexpr, Path: yyDollar[5].queryexpr, Args: yyDollar[7].queryexprs}
  4585  		}
  4586  	case 378:
  4587  		yyDollar = yyS[yypt-1 : yypt+1]
  4588  //line lib/parser/parser.y:2094
  4589  		{
  4590  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4591  		}
  4592  	case 379:
  4593  		yyDollar = yyS[yypt-1 : yypt+1]
  4594  //line lib/parser/parser.y:2098
  4595  		{
  4596  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4597  		}
  4598  	case 380:
  4599  		yyDollar = yyS[yypt-1 : yypt+1]
  4600  //line lib/parser/parser.y:2104
  4601  		{
  4602  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4603  		}
  4604  	case 381:
  4605  		yyDollar = yyS[yypt-1 : yypt+1]
  4606  //line lib/parser/parser.y:2108
  4607  		{
  4608  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4609  		}
  4610  	case 382:
  4611  		yyDollar = yyS[yypt-1 : yypt+1]
  4612  //line lib/parser/parser.y:2114
  4613  		{
  4614  			yyVAL.table = Table{Object: yyDollar[1].queryexpr}
  4615  		}
  4616  	case 383:
  4617  		yyDollar = yyS[yypt-2 : yypt+1]
  4618  //line lib/parser/parser.y:2118
  4619  		{
  4620  			yyVAL.table = Table{Object: yyDollar[1].queryexpr, Alias: yyDollar[2].identifier}
  4621  		}
  4622  	case 384:
  4623  		yyDollar = yyS[yypt-3 : yypt+1]
  4624  //line lib/parser/parser.y:2122
  4625  		{
  4626  			yyVAL.table = Table{Object: yyDollar[1].queryexpr, As: yyDollar[2].token, Alias: yyDollar[3].identifier}
  4627  		}
  4628  	case 385:
  4629  		yyDollar = yyS[yypt-1 : yypt+1]
  4630  //line lib/parser/parser.y:2128
  4631  		{
  4632  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  4633  		}
  4634  	case 386:
  4635  		yyDollar = yyS[yypt-2 : yypt+1]
  4636  //line lib/parser/parser.y:2132
  4637  		{
  4638  			yyDollar[2].table.Lateral = yyDollar[1].token
  4639  			yyDollar[2].table.BaseExpr = NewBaseExpr(yyDollar[1].token)
  4640  			yyVAL.queryexprs = []QueryExpression{yyDollar[2].table}
  4641  		}
  4642  	case 387:
  4643  		yyDollar = yyS[yypt-3 : yypt+1]
  4644  //line lib/parser/parser.y:2138
  4645  		{
  4646  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].table}, yyDollar[3].queryexprs...)
  4647  		}
  4648  	case 388:
  4649  		yyDollar = yyS[yypt-4 : yypt+1]
  4650  //line lib/parser/parser.y:2142
  4651  		{
  4652  			yyDollar[2].table.Lateral = yyDollar[1].token
  4653  			yyDollar[2].table.BaseExpr = NewBaseExpr(yyDollar[1].token)
  4654  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[2].table}, yyDollar[4].queryexprs...)
  4655  		}
  4656  	case 389:
  4657  		yyDollar = yyS[yypt-1 : yypt+1]
  4658  //line lib/parser/parser.y:2150
  4659  		{
  4660  			yyVAL.queryexpr = Table{Object: yyDollar[1].queryexpr}
  4661  		}
  4662  	case 390:
  4663  		yyDollar = yyS[yypt-2 : yypt+1]
  4664  //line lib/parser/parser.y:2154
  4665  		{
  4666  			yyVAL.queryexpr = Table{Object: yyDollar[1].queryexpr, Alias: yyDollar[2].identifier}
  4667  		}
  4668  	case 391:
  4669  		yyDollar = yyS[yypt-3 : yypt+1]
  4670  //line lib/parser/parser.y:2158
  4671  		{
  4672  			yyVAL.queryexpr = Table{Object: yyDollar[1].queryexpr, As: yyDollar[2].token, Alias: yyDollar[3].identifier}
  4673  		}
  4674  	case 392:
  4675  		yyDollar = yyS[yypt-1 : yypt+1]
  4676  //line lib/parser/parser.y:2162
  4677  		{
  4678  			yyVAL.queryexpr = Table{Object: yyDollar[1].queryexpr}
  4679  		}
  4680  	case 393:
  4681  		yyDollar = yyS[yypt-1 : yypt+1]
  4682  //line lib/parser/parser.y:2166
  4683  		{
  4684  			yyVAL.queryexpr = Table{Object: Dual{}}
  4685  		}
  4686  	case 394:
  4687  		yyDollar = yyS[yypt-1 : yypt+1]
  4688  //line lib/parser/parser.y:2170
  4689  		{
  4690  			yyVAL.queryexpr = yyDollar[1].table
  4691  		}
  4692  	case 395:
  4693  		yyDollar = yyS[yypt-3 : yypt+1]
  4694  //line lib/parser/parser.y:2174
  4695  		{
  4696  			yyVAL.queryexpr = Parentheses{Expr: yyDollar[2].queryexpr}
  4697  		}
  4698  	case 396:
  4699  		yyDollar = yyS[yypt-4 : yypt+1]
  4700  //line lib/parser/parser.y:2180
  4701  		{
  4702  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[4].queryexpr, JoinType: yyDollar[2].token, Condition: nil}
  4703  		}
  4704  	case 397:
  4705  		yyDollar = yyS[yypt-5 : yypt+1]
  4706  //line lib/parser/parser.y:2184
  4707  		{
  4708  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[4].queryexpr, JoinType: yyDollar[2].token, Condition: yyDollar[5].queryexpr}
  4709  		}
  4710  	case 398:
  4711  		yyDollar = yyS[yypt-6 : yypt+1]
  4712  //line lib/parser/parser.y:2188
  4713  		{
  4714  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[5].queryexpr, JoinType: yyDollar[3].token, Direction: yyDollar[2].token, Condition: yyDollar[6].queryexpr}
  4715  		}
  4716  	case 399:
  4717  		yyDollar = yyS[yypt-5 : yypt+1]
  4718  //line lib/parser/parser.y:2192
  4719  		{
  4720  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[5].queryexpr, JoinType: yyDollar[3].token, Natural: yyDollar[2].token}
  4721  		}
  4722  	case 400:
  4723  		yyDollar = yyS[yypt-6 : yypt+1]
  4724  //line lib/parser/parser.y:2196
  4725  		{
  4726  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[6].queryexpr, JoinType: yyDollar[4].token, Direction: yyDollar[3].token, Natural: yyDollar[2].token}
  4727  		}
  4728  	case 401:
  4729  		yyDollar = yyS[yypt-5 : yypt+1]
  4730  //line lib/parser/parser.y:2200
  4731  		{
  4732  			yyDollar[5].table.Lateral = yyDollar[4].token
  4733  			yyDollar[5].table.BaseExpr = NewBaseExpr(yyDollar[4].token)
  4734  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[5].table, JoinType: yyDollar[2].token, Condition: nil}
  4735  		}
  4736  	case 402:
  4737  		yyDollar = yyS[yypt-6 : yypt+1]
  4738  //line lib/parser/parser.y:2206
  4739  		{
  4740  			yyDollar[5].table.Lateral = yyDollar[4].token
  4741  			yyDollar[5].table.BaseExpr = NewBaseExpr(yyDollar[4].token)
  4742  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[5].table, JoinType: yyDollar[2].token, Condition: yyDollar[6].queryexpr}
  4743  		}
  4744  	case 403:
  4745  		yyDollar = yyS[yypt-7 : yypt+1]
  4746  //line lib/parser/parser.y:2212
  4747  		{
  4748  			yyDollar[6].table.Lateral = yyDollar[5].token
  4749  			yyDollar[6].table.BaseExpr = NewBaseExpr(yyDollar[5].token)
  4750  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[6].table, JoinType: yyDollar[3].token, Direction: yyDollar[2].token, Condition: yyDollar[7].queryexpr}
  4751  		}
  4752  	case 404:
  4753  		yyDollar = yyS[yypt-6 : yypt+1]
  4754  //line lib/parser/parser.y:2218
  4755  		{
  4756  			yyDollar[6].table.Lateral = yyDollar[5].token
  4757  			yyDollar[6].table.BaseExpr = NewBaseExpr(yyDollar[5].token)
  4758  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[6].table, JoinType: yyDollar[3].token, Natural: yyDollar[2].token}
  4759  		}
  4760  	case 405:
  4761  		yyDollar = yyS[yypt-7 : yypt+1]
  4762  //line lib/parser/parser.y:2224
  4763  		{
  4764  			yyDollar[7].table.Lateral = yyDollar[6].token
  4765  			yyDollar[7].table.BaseExpr = NewBaseExpr(yyDollar[6].token)
  4766  			yyVAL.queryexpr = Join{Table: yyDollar[1].queryexpr, JoinTable: yyDollar[7].table, JoinType: yyDollar[4].token, Direction: yyDollar[3].token, Natural: yyDollar[2].token}
  4767  		}
  4768  	case 406:
  4769  		yyDollar = yyS[yypt-2 : yypt+1]
  4770  //line lib/parser/parser.y:2232
  4771  		{
  4772  			yyVAL.queryexpr = JoinCondition{On: yyDollar[2].queryexpr}
  4773  		}
  4774  	case 407:
  4775  		yyDollar = yyS[yypt-4 : yypt+1]
  4776  //line lib/parser/parser.y:2236
  4777  		{
  4778  			yyVAL.queryexpr = JoinCondition{Using: yyDollar[3].queryexprs}
  4779  		}
  4780  	case 408:
  4781  		yyDollar = yyS[yypt-1 : yypt+1]
  4782  //line lib/parser/parser.y:2242
  4783  		{
  4784  			yyVAL.queryexpr = Field{Object: yyDollar[1].queryexpr}
  4785  		}
  4786  	case 409:
  4787  		yyDollar = yyS[yypt-3 : yypt+1]
  4788  //line lib/parser/parser.y:2246
  4789  		{
  4790  			yyVAL.queryexpr = Field{Object: yyDollar[1].queryexpr, As: yyDollar[2].token, Alias: yyDollar[3].identifier}
  4791  		}
  4792  	case 410:
  4793  		yyDollar = yyS[yypt-1 : yypt+1]
  4794  //line lib/parser/parser.y:2250
  4795  		{
  4796  			yyVAL.queryexpr = Field{Object: yyDollar[1].queryexpr}
  4797  		}
  4798  	case 411:
  4799  		yyDollar = yyS[yypt-3 : yypt+1]
  4800  //line lib/parser/parser.y:2254
  4801  		{
  4802  			yyVAL.queryexpr = Field{Object: FieldReference{BaseExpr: yyDollar[1].identifier.BaseExpr, View: yyDollar[1].identifier, Column: yyDollar[3].queryexpr}}
  4803  		}
  4804  	case 412:
  4805  		yyDollar = yyS[yypt-5 : yypt+1]
  4806  //line lib/parser/parser.y:2260
  4807  		{
  4808  			yyVAL.queryexpr = CaseExpr{Value: yyDollar[2].queryexpr, When: yyDollar[3].queryexprs, Else: yyDollar[4].queryexpr}
  4809  		}
  4810  	case 413:
  4811  		yyDollar = yyS[yypt-0 : yypt+1]
  4812  //line lib/parser/parser.y:2266
  4813  		{
  4814  			yyVAL.queryexpr = nil
  4815  		}
  4816  	case 414:
  4817  		yyDollar = yyS[yypt-1 : yypt+1]
  4818  //line lib/parser/parser.y:2270
  4819  		{
  4820  			yyVAL.queryexpr = yyDollar[1].queryexpr
  4821  		}
  4822  	case 415:
  4823  		yyDollar = yyS[yypt-4 : yypt+1]
  4824  //line lib/parser/parser.y:2276
  4825  		{
  4826  			yyVAL.queryexprs = []QueryExpression{CaseExprWhen{Condition: yyDollar[2].queryexpr, Result: yyDollar[4].queryexpr}}
  4827  		}
  4828  	case 416:
  4829  		yyDollar = yyS[yypt-5 : yypt+1]
  4830  //line lib/parser/parser.y:2280
  4831  		{
  4832  			yyVAL.queryexprs = append([]QueryExpression{CaseExprWhen{Condition: yyDollar[2].queryexpr, Result: yyDollar[4].queryexpr}}, yyDollar[5].queryexprs...)
  4833  		}
  4834  	case 417:
  4835  		yyDollar = yyS[yypt-0 : yypt+1]
  4836  //line lib/parser/parser.y:2286
  4837  		{
  4838  			yyVAL.queryexpr = nil
  4839  		}
  4840  	case 418:
  4841  		yyDollar = yyS[yypt-2 : yypt+1]
  4842  //line lib/parser/parser.y:2290
  4843  		{
  4844  			yyVAL.queryexpr = CaseExprElse{Result: yyDollar[2].queryexpr}
  4845  		}
  4846  	case 419:
  4847  		yyDollar = yyS[yypt-1 : yypt+1]
  4848  //line lib/parser/parser.y:2296
  4849  		{
  4850  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  4851  		}
  4852  	case 420:
  4853  		yyDollar = yyS[yypt-3 : yypt+1]
  4854  //line lib/parser/parser.y:2300
  4855  		{
  4856  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].queryexpr}, yyDollar[3].queryexprs...)
  4857  		}
  4858  	case 421:
  4859  		yyDollar = yyS[yypt-1 : yypt+1]
  4860  //line lib/parser/parser.y:2306
  4861  		{
  4862  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  4863  		}
  4864  	case 422:
  4865  		yyDollar = yyS[yypt-3 : yypt+1]
  4866  //line lib/parser/parser.y:2310
  4867  		{
  4868  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].queryexpr}, yyDollar[3].queryexprs...)
  4869  		}
  4870  	case 423:
  4871  		yyDollar = yyS[yypt-1 : yypt+1]
  4872  //line lib/parser/parser.y:2316
  4873  		{
  4874  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  4875  		}
  4876  	case 424:
  4877  		yyDollar = yyS[yypt-3 : yypt+1]
  4878  //line lib/parser/parser.y:2320
  4879  		{
  4880  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].queryexpr}, yyDollar[3].queryexprs...)
  4881  		}
  4882  	case 425:
  4883  		yyDollar = yyS[yypt-1 : yypt+1]
  4884  //line lib/parser/parser.y:2326
  4885  		{
  4886  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  4887  		}
  4888  	case 426:
  4889  		yyDollar = yyS[yypt-3 : yypt+1]
  4890  //line lib/parser/parser.y:2330
  4891  		{
  4892  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].queryexpr}, yyDollar[3].queryexprs...)
  4893  		}
  4894  	case 427:
  4895  		yyDollar = yyS[yypt-1 : yypt+1]
  4896  //line lib/parser/parser.y:2336
  4897  		{
  4898  			yyVAL.queryexprs = []QueryExpression{Table{Object: yyDollar[1].queryexpr}}
  4899  		}
  4900  	case 428:
  4901  		yyDollar = yyS[yypt-3 : yypt+1]
  4902  //line lib/parser/parser.y:2340
  4903  		{
  4904  			yyVAL.queryexprs = append([]QueryExpression{Table{Object: yyDollar[1].queryexpr}}, yyDollar[3].queryexprs...)
  4905  		}
  4906  	case 429:
  4907  		yyDollar = yyS[yypt-1 : yypt+1]
  4908  //line lib/parser/parser.y:2346
  4909  		{
  4910  			yyVAL.queryexprs = []QueryExpression{Table{Object: yyDollar[1].queryexpr}}
  4911  		}
  4912  	case 430:
  4913  		yyDollar = yyS[yypt-3 : yypt+1]
  4914  //line lib/parser/parser.y:2350
  4915  		{
  4916  			yyVAL.queryexprs = append([]QueryExpression{Table{Object: yyDollar[1].queryexpr}}, yyDollar[3].queryexprs...)
  4917  		}
  4918  	case 431:
  4919  		yyDollar = yyS[yypt-1 : yypt+1]
  4920  //line lib/parser/parser.y:2356
  4921  		{
  4922  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].identifier}
  4923  		}
  4924  	case 432:
  4925  		yyDollar = yyS[yypt-3 : yypt+1]
  4926  //line lib/parser/parser.y:2360
  4927  		{
  4928  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].identifier}, yyDollar[3].queryexprs...)
  4929  		}
  4930  	case 433:
  4931  		yyDollar = yyS[yypt-1 : yypt+1]
  4932  //line lib/parser/parser.y:2366
  4933  		{
  4934  			yyVAL.queryexprs = []QueryExpression{yyDollar[1].queryexpr}
  4935  		}
  4936  	case 434:
  4937  		yyDollar = yyS[yypt-3 : yypt+1]
  4938  //line lib/parser/parser.y:2370
  4939  		{
  4940  			yyVAL.queryexprs = append([]QueryExpression{yyDollar[1].queryexpr}, yyDollar[3].queryexprs...)
  4941  		}
  4942  	case 435:
  4943  		yyDollar = yyS[yypt-6 : yypt+1]
  4944  //line lib/parser/parser.y:2376
  4945  		{
  4946  			yyVAL.expression = InsertQuery{WithClause: yyDollar[1].queryexpr, Table: Table{Object: yyDollar[4].queryexpr}, ValuesList: yyDollar[6].queryexprs}
  4947  		}
  4948  	case 436:
  4949  		yyDollar = yyS[yypt-9 : yypt+1]
  4950  //line lib/parser/parser.y:2380
  4951  		{
  4952  			yyVAL.expression = InsertQuery{WithClause: yyDollar[1].queryexpr, Table: Table{Object: yyDollar[4].queryexpr}, Fields: yyDollar[6].queryexprs, ValuesList: yyDollar[9].queryexprs}
  4953  		}
  4954  	case 437:
  4955  		yyDollar = yyS[yypt-5 : yypt+1]
  4956  //line lib/parser/parser.y:2384
  4957  		{
  4958  			yyVAL.expression = InsertQuery{WithClause: yyDollar[1].queryexpr, Table: Table{Object: yyDollar[4].queryexpr}, Query: yyDollar[5].queryexpr.(SelectQuery)}
  4959  		}
  4960  	case 438:
  4961  		yyDollar = yyS[yypt-8 : yypt+1]
  4962  //line lib/parser/parser.y:2388
  4963  		{
  4964  			yyVAL.expression = InsertQuery{WithClause: yyDollar[1].queryexpr, Table: Table{Object: yyDollar[4].queryexpr}, Fields: yyDollar[6].queryexprs, Query: yyDollar[8].queryexpr.(SelectQuery)}
  4965  		}
  4966  	case 439:
  4967  		yyDollar = yyS[yypt-7 : yypt+1]
  4968  //line lib/parser/parser.y:2394
  4969  		{
  4970  			yyVAL.expression = UpdateQuery{WithClause: yyDollar[1].queryexpr, Tables: yyDollar[3].queryexprs, SetList: yyDollar[5].updatesets, FromClause: yyDollar[6].queryexpr, WhereClause: yyDollar[7].queryexpr}
  4971  		}
  4972  	case 440:
  4973  		yyDollar = yyS[yypt-3 : yypt+1]
  4974  //line lib/parser/parser.y:2400
  4975  		{
  4976  			yyVAL.updateset = UpdateSet{Field: yyDollar[1].queryexpr, Value: yyDollar[3].queryexpr}
  4977  		}
  4978  	case 441:
  4979  		yyDollar = yyS[yypt-1 : yypt+1]
  4980  //line lib/parser/parser.y:2406
  4981  		{
  4982  			yyVAL.updatesets = []UpdateSet{yyDollar[1].updateset}
  4983  		}
  4984  	case 442:
  4985  		yyDollar = yyS[yypt-3 : yypt+1]
  4986  //line lib/parser/parser.y:2410
  4987  		{
  4988  			yyVAL.updatesets = append([]UpdateSet{yyDollar[1].updateset}, yyDollar[3].updatesets...)
  4989  		}
  4990  	case 443:
  4991  		yyDollar = yyS[yypt-10 : yypt+1]
  4992  //line lib/parser/parser.y:2416
  4993  		{
  4994  			yyVAL.expression = ReplaceQuery{WithClause: yyDollar[1].queryexpr, Table: Table{Object: yyDollar[4].queryexpr}, Keys: yyDollar[7].queryexprs, ValuesList: yyDollar[10].queryexprs}
  4995  		}
  4996  	case 444:
  4997  		yyDollar = yyS[yypt-13 : yypt+1]
  4998  //line lib/parser/parser.y:2420
  4999  		{
  5000  			yyVAL.expression = ReplaceQuery{WithClause: yyDollar[1].queryexpr, Table: Table{Object: yyDollar[4].queryexpr}, Fields: yyDollar[6].queryexprs, Keys: yyDollar[10].queryexprs, ValuesList: yyDollar[13].queryexprs}
  5001  		}
  5002  	case 445:
  5003  		yyDollar = yyS[yypt-9 : yypt+1]
  5004  //line lib/parser/parser.y:2424
  5005  		{
  5006  			yyVAL.expression = ReplaceQuery{WithClause: yyDollar[1].queryexpr, Table: Table{Object: yyDollar[4].queryexpr}, Keys: yyDollar[7].queryexprs, Query: yyDollar[9].queryexpr.(SelectQuery)}
  5007  		}
  5008  	case 446:
  5009  		yyDollar = yyS[yypt-12 : yypt+1]
  5010  //line lib/parser/parser.y:2428
  5011  		{
  5012  			yyVAL.expression = ReplaceQuery{WithClause: yyDollar[1].queryexpr, Table: Table{Object: yyDollar[4].queryexpr}, Fields: yyDollar[6].queryexprs, Keys: yyDollar[10].queryexprs, Query: yyDollar[12].queryexpr.(SelectQuery)}
  5013  		}
  5014  	case 447:
  5015  		yyDollar = yyS[yypt-9 : yypt+1]
  5016  //line lib/parser/parser.y:2432
  5017  		{
  5018  			yyVAL.expression = ReplaceQuery{Table: Table{Object: yyDollar[3].queryexpr}, Keys: yyDollar[6].queryexprs, ValuesList: yyDollar[9].queryexprs}
  5019  		}
  5020  	case 448:
  5021  		yyDollar = yyS[yypt-12 : yypt+1]
  5022  //line lib/parser/parser.y:2436
  5023  		{
  5024  			yyVAL.expression = ReplaceQuery{Table: Table{Object: yyDollar[3].queryexpr}, Fields: yyDollar[5].queryexprs, Keys: yyDollar[9].queryexprs, ValuesList: yyDollar[12].queryexprs}
  5025  		}
  5026  	case 449:
  5027  		yyDollar = yyS[yypt-8 : yypt+1]
  5028  //line lib/parser/parser.y:2440
  5029  		{
  5030  			yyVAL.expression = ReplaceQuery{Table: Table{Object: yyDollar[3].queryexpr}, Keys: yyDollar[6].queryexprs, Query: yyDollar[8].queryexpr.(SelectQuery)}
  5031  		}
  5032  	case 450:
  5033  		yyDollar = yyS[yypt-11 : yypt+1]
  5034  //line lib/parser/parser.y:2444
  5035  		{
  5036  			yyVAL.expression = ReplaceQuery{Table: Table{Object: yyDollar[3].queryexpr}, Fields: yyDollar[5].queryexprs, Keys: yyDollar[9].queryexprs, Query: yyDollar[11].queryexpr.(SelectQuery)}
  5037  		}
  5038  	case 451:
  5039  		yyDollar = yyS[yypt-5 : yypt+1]
  5040  //line lib/parser/parser.y:2450
  5041  		{
  5042  			yyVAL.expression = DeleteQuery{BaseExpr: NewBaseExpr(yyDollar[2].token), WithClause: yyDollar[1].queryexpr, FromClause: FromClause{Tables: yyDollar[4].queryexprs}, WhereClause: yyDollar[5].queryexpr}
  5043  		}
  5044  	case 452:
  5045  		yyDollar = yyS[yypt-6 : yypt+1]
  5046  //line lib/parser/parser.y:2454
  5047  		{
  5048  			yyVAL.expression = DeleteQuery{BaseExpr: NewBaseExpr(yyDollar[2].token), WithClause: yyDollar[1].queryexpr, Tables: yyDollar[3].queryexprs, FromClause: FromClause{Tables: yyDollar[5].queryexprs}, WhereClause: yyDollar[6].queryexpr}
  5049  		}
  5050  	case 453:
  5051  		yyDollar = yyS[yypt-4 : yypt+1]
  5052  //line lib/parser/parser.y:2460
  5053  		{
  5054  			yyVAL.elseif = []ElseIf{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}
  5055  		}
  5056  	case 454:
  5057  		yyDollar = yyS[yypt-5 : yypt+1]
  5058  //line lib/parser/parser.y:2464
  5059  		{
  5060  			yyVAL.elseif = append([]ElseIf{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}, yyDollar[5].elseif...)
  5061  		}
  5062  	case 455:
  5063  		yyDollar = yyS[yypt-0 : yypt+1]
  5064  //line lib/parser/parser.y:2470
  5065  		{
  5066  			yyVAL.elseexpr = Else{}
  5067  		}
  5068  	case 456:
  5069  		yyDollar = yyS[yypt-2 : yypt+1]
  5070  //line lib/parser/parser.y:2474
  5071  		{
  5072  			yyVAL.elseexpr = Else{Statements: yyDollar[2].program}
  5073  		}
  5074  	case 457:
  5075  		yyDollar = yyS[yypt-4 : yypt+1]
  5076  //line lib/parser/parser.y:2480
  5077  		{
  5078  			yyVAL.elseif = []ElseIf{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}
  5079  		}
  5080  	case 458:
  5081  		yyDollar = yyS[yypt-5 : yypt+1]
  5082  //line lib/parser/parser.y:2484
  5083  		{
  5084  			yyVAL.elseif = append([]ElseIf{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}, yyDollar[5].elseif...)
  5085  		}
  5086  	case 459:
  5087  		yyDollar = yyS[yypt-0 : yypt+1]
  5088  //line lib/parser/parser.y:2490
  5089  		{
  5090  			yyVAL.elseexpr = Else{}
  5091  		}
  5092  	case 460:
  5093  		yyDollar = yyS[yypt-2 : yypt+1]
  5094  //line lib/parser/parser.y:2494
  5095  		{
  5096  			yyVAL.elseexpr = Else{Statements: yyDollar[2].program}
  5097  		}
  5098  	case 461:
  5099  		yyDollar = yyS[yypt-4 : yypt+1]
  5100  //line lib/parser/parser.y:2500
  5101  		{
  5102  			yyVAL.elseif = []ElseIf{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}
  5103  		}
  5104  	case 462:
  5105  		yyDollar = yyS[yypt-5 : yypt+1]
  5106  //line lib/parser/parser.y:2504
  5107  		{
  5108  			yyVAL.elseif = append([]ElseIf{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}, yyDollar[5].elseif...)
  5109  		}
  5110  	case 463:
  5111  		yyDollar = yyS[yypt-0 : yypt+1]
  5112  //line lib/parser/parser.y:2510
  5113  		{
  5114  			yyVAL.elseexpr = Else{}
  5115  		}
  5116  	case 464:
  5117  		yyDollar = yyS[yypt-2 : yypt+1]
  5118  //line lib/parser/parser.y:2514
  5119  		{
  5120  			yyVAL.elseexpr = Else{Statements: yyDollar[2].program}
  5121  		}
  5122  	case 465:
  5123  		yyDollar = yyS[yypt-4 : yypt+1]
  5124  //line lib/parser/parser.y:2520
  5125  		{
  5126  			yyVAL.elseif = []ElseIf{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}
  5127  		}
  5128  	case 466:
  5129  		yyDollar = yyS[yypt-5 : yypt+1]
  5130  //line lib/parser/parser.y:2524
  5131  		{
  5132  			yyVAL.elseif = append([]ElseIf{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}, yyDollar[5].elseif...)
  5133  		}
  5134  	case 467:
  5135  		yyDollar = yyS[yypt-0 : yypt+1]
  5136  //line lib/parser/parser.y:2530
  5137  		{
  5138  			yyVAL.elseexpr = Else{}
  5139  		}
  5140  	case 468:
  5141  		yyDollar = yyS[yypt-2 : yypt+1]
  5142  //line lib/parser/parser.y:2534
  5143  		{
  5144  			yyVAL.elseexpr = Else{Statements: yyDollar[2].program}
  5145  		}
  5146  	case 469:
  5147  		yyDollar = yyS[yypt-4 : yypt+1]
  5148  //line lib/parser/parser.y:2540
  5149  		{
  5150  			yyVAL.casewhen = []CaseWhen{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}
  5151  		}
  5152  	case 470:
  5153  		yyDollar = yyS[yypt-5 : yypt+1]
  5154  //line lib/parser/parser.y:2544
  5155  		{
  5156  			yyVAL.casewhen = append([]CaseWhen{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}, yyDollar[5].casewhen...)
  5157  		}
  5158  	case 471:
  5159  		yyDollar = yyS[yypt-0 : yypt+1]
  5160  //line lib/parser/parser.y:2550
  5161  		{
  5162  			yyVAL.caseelse = CaseElse{}
  5163  		}
  5164  	case 472:
  5165  		yyDollar = yyS[yypt-2 : yypt+1]
  5166  //line lib/parser/parser.y:2554
  5167  		{
  5168  			yyVAL.caseelse = CaseElse{Statements: yyDollar[2].program}
  5169  		}
  5170  	case 473:
  5171  		yyDollar = yyS[yypt-4 : yypt+1]
  5172  //line lib/parser/parser.y:2560
  5173  		{
  5174  			yyVAL.casewhen = []CaseWhen{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}
  5175  		}
  5176  	case 474:
  5177  		yyDollar = yyS[yypt-5 : yypt+1]
  5178  //line lib/parser/parser.y:2564
  5179  		{
  5180  			yyVAL.casewhen = append([]CaseWhen{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}, yyDollar[5].casewhen...)
  5181  		}
  5182  	case 475:
  5183  		yyDollar = yyS[yypt-0 : yypt+1]
  5184  //line lib/parser/parser.y:2570
  5185  		{
  5186  			yyVAL.caseelse = CaseElse{}
  5187  		}
  5188  	case 476:
  5189  		yyDollar = yyS[yypt-2 : yypt+1]
  5190  //line lib/parser/parser.y:2574
  5191  		{
  5192  			yyVAL.caseelse = CaseElse{Statements: yyDollar[2].program}
  5193  		}
  5194  	case 477:
  5195  		yyDollar = yyS[yypt-4 : yypt+1]
  5196  //line lib/parser/parser.y:2580
  5197  		{
  5198  			yyVAL.casewhen = []CaseWhen{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}
  5199  		}
  5200  	case 478:
  5201  		yyDollar = yyS[yypt-5 : yypt+1]
  5202  //line lib/parser/parser.y:2584
  5203  		{
  5204  			yyVAL.casewhen = append([]CaseWhen{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}, yyDollar[5].casewhen...)
  5205  		}
  5206  	case 479:
  5207  		yyDollar = yyS[yypt-0 : yypt+1]
  5208  //line lib/parser/parser.y:2590
  5209  		{
  5210  			yyVAL.caseelse = CaseElse{}
  5211  		}
  5212  	case 480:
  5213  		yyDollar = yyS[yypt-2 : yypt+1]
  5214  //line lib/parser/parser.y:2594
  5215  		{
  5216  			yyVAL.caseelse = CaseElse{Statements: yyDollar[2].program}
  5217  		}
  5218  	case 481:
  5219  		yyDollar = yyS[yypt-4 : yypt+1]
  5220  //line lib/parser/parser.y:2600
  5221  		{
  5222  			yyVAL.casewhen = []CaseWhen{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}
  5223  		}
  5224  	case 482:
  5225  		yyDollar = yyS[yypt-5 : yypt+1]
  5226  //line lib/parser/parser.y:2604
  5227  		{
  5228  			yyVAL.casewhen = append([]CaseWhen{{Condition: yyDollar[2].queryexpr, Statements: yyDollar[4].program}}, yyDollar[5].casewhen...)
  5229  		}
  5230  	case 483:
  5231  		yyDollar = yyS[yypt-0 : yypt+1]
  5232  //line lib/parser/parser.y:2610
  5233  		{
  5234  			yyVAL.caseelse = CaseElse{}
  5235  		}
  5236  	case 484:
  5237  		yyDollar = yyS[yypt-2 : yypt+1]
  5238  //line lib/parser/parser.y:2614
  5239  		{
  5240  			yyVAL.caseelse = CaseElse{Statements: yyDollar[2].program}
  5241  		}
  5242  	case 485:
  5243  		yyDollar = yyS[yypt-1 : yypt+1]
  5244  //line lib/parser/parser.y:2620
  5245  		{
  5246  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5247  		}
  5248  	case 486:
  5249  		yyDollar = yyS[yypt-1 : yypt+1]
  5250  //line lib/parser/parser.y:2624
  5251  		{
  5252  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5253  		}
  5254  	case 487:
  5255  		yyDollar = yyS[yypt-1 : yypt+1]
  5256  //line lib/parser/parser.y:2628
  5257  		{
  5258  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5259  		}
  5260  	case 488:
  5261  		yyDollar = yyS[yypt-1 : yypt+1]
  5262  //line lib/parser/parser.y:2632
  5263  		{
  5264  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5265  		}
  5266  	case 489:
  5267  		yyDollar = yyS[yypt-1 : yypt+1]
  5268  //line lib/parser/parser.y:2636
  5269  		{
  5270  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5271  		}
  5272  	case 490:
  5273  		yyDollar = yyS[yypt-1 : yypt+1]
  5274  //line lib/parser/parser.y:2640
  5275  		{
  5276  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5277  		}
  5278  	case 491:
  5279  		yyDollar = yyS[yypt-1 : yypt+1]
  5280  //line lib/parser/parser.y:2644
  5281  		{
  5282  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5283  		}
  5284  	case 492:
  5285  		yyDollar = yyS[yypt-1 : yypt+1]
  5286  //line lib/parser/parser.y:2648
  5287  		{
  5288  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5289  		}
  5290  	case 493:
  5291  		yyDollar = yyS[yypt-1 : yypt+1]
  5292  //line lib/parser/parser.y:2652
  5293  		{
  5294  			yyVAL.identifier = Identifier{BaseExpr: NewBaseExpr(yyDollar[1].token), Literal: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5295  		}
  5296  	case 494:
  5297  		yyDollar = yyS[yypt-1 : yypt+1]
  5298  //line lib/parser/parser.y:2658
  5299  		{
  5300  			yyVAL.variable = Variable{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal}
  5301  		}
  5302  	case 495:
  5303  		yyDollar = yyS[yypt-1 : yypt+1]
  5304  //line lib/parser/parser.y:2664
  5305  		{
  5306  			yyVAL.variables = []Variable{yyDollar[1].variable}
  5307  		}
  5308  	case 496:
  5309  		yyDollar = yyS[yypt-3 : yypt+1]
  5310  //line lib/parser/parser.y:2668
  5311  		{
  5312  			yyVAL.variables = append([]Variable{yyDollar[1].variable}, yyDollar[3].variables...)
  5313  		}
  5314  	case 497:
  5315  		yyDollar = yyS[yypt-3 : yypt+1]
  5316  //line lib/parser/parser.y:2674
  5317  		{
  5318  			yyVAL.queryexpr = VariableSubstitution{Variable: yyDollar[1].variable, Value: yyDollar[3].queryexpr}
  5319  		}
  5320  	case 498:
  5321  		yyDollar = yyS[yypt-1 : yypt+1]
  5322  //line lib/parser/parser.y:2680
  5323  		{
  5324  			yyVAL.varassign = VariableAssignment{Variable: yyDollar[1].variable}
  5325  		}
  5326  	case 499:
  5327  		yyDollar = yyS[yypt-3 : yypt+1]
  5328  //line lib/parser/parser.y:2684
  5329  		{
  5330  			yyVAL.varassign = VariableAssignment{Variable: yyDollar[1].variable, Value: yyDollar[3].queryexpr}
  5331  		}
  5332  	case 500:
  5333  		yyDollar = yyS[yypt-1 : yypt+1]
  5334  //line lib/parser/parser.y:2690
  5335  		{
  5336  			yyVAL.varassigns = []VariableAssignment{yyDollar[1].varassign}
  5337  		}
  5338  	case 501:
  5339  		yyDollar = yyS[yypt-3 : yypt+1]
  5340  //line lib/parser/parser.y:2694
  5341  		{
  5342  			yyVAL.varassigns = append([]VariableAssignment{yyDollar[1].varassign}, yyDollar[3].varassigns...)
  5343  		}
  5344  	case 502:
  5345  		yyDollar = yyS[yypt-1 : yypt+1]
  5346  //line lib/parser/parser.y:2700
  5347  		{
  5348  			yyVAL.envvar = EnvironmentVariable{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal, Quoted: yyDollar[1].token.Quoted}
  5349  		}
  5350  	case 503:
  5351  		yyDollar = yyS[yypt-1 : yypt+1]
  5352  //line lib/parser/parser.y:2706
  5353  		{
  5354  			yyVAL.queryexpr = RuntimeInformation{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal}
  5355  		}
  5356  	case 504:
  5357  		yyDollar = yyS[yypt-1 : yypt+1]
  5358  //line lib/parser/parser.y:2712
  5359  		{
  5360  			items := strings.Split(yyDollar[1].token.Literal, ConstantDelimiter)
  5361  			space := ""
  5362  			if 0 < len(items) {
  5363  				space = items[0]
  5364  			}
  5365  			name := ""
  5366  			if 1 < len(items) {
  5367  				name = items[1]
  5368  			}
  5369  
  5370  			yyVAL.queryexpr = Constant{BaseExpr: NewBaseExpr(yyDollar[1].token), Space: space, Name: name}
  5371  		}
  5372  	case 505:
  5373  		yyDollar = yyS[yypt-1 : yypt+1]
  5374  //line lib/parser/parser.y:2728
  5375  		{
  5376  			yyVAL.flag = Flag{BaseExpr: NewBaseExpr(yyDollar[1].token), Name: yyDollar[1].token.Literal}
  5377  		}
  5378  	case 506:
  5379  		yyDollar = yyS[yypt-0 : yypt+1]
  5380  //line lib/parser/parser.y:2734
  5381  		{
  5382  			yyVAL.token = Token{}
  5383  		}
  5384  	case 507:
  5385  		yyDollar = yyS[yypt-1 : yypt+1]
  5386  //line lib/parser/parser.y:2738
  5387  		{
  5388  			yyVAL.token = yyDollar[1].token
  5389  		}
  5390  	case 508:
  5391  		yyDollar = yyS[yypt-0 : yypt+1]
  5392  //line lib/parser/parser.y:2744
  5393  		{
  5394  			yyVAL.token = Token{}
  5395  		}
  5396  	case 509:
  5397  		yyDollar = yyS[yypt-1 : yypt+1]
  5398  //line lib/parser/parser.y:2748
  5399  		{
  5400  			yyVAL.token = yyDollar[1].token
  5401  		}
  5402  	case 510:
  5403  		yyDollar = yyS[yypt-0 : yypt+1]
  5404  //line lib/parser/parser.y:2754
  5405  		{
  5406  			yyVAL.token = Token{}
  5407  		}
  5408  	case 511:
  5409  		yyDollar = yyS[yypt-1 : yypt+1]
  5410  //line lib/parser/parser.y:2758
  5411  		{
  5412  			yyVAL.token = yyDollar[1].token
  5413  		}
  5414  	case 512:
  5415  		yyDollar = yyS[yypt-0 : yypt+1]
  5416  //line lib/parser/parser.y:2764
  5417  		{
  5418  			yyVAL.token = Token{}
  5419  		}
  5420  	case 513:
  5421  		yyDollar = yyS[yypt-1 : yypt+1]
  5422  //line lib/parser/parser.y:2768
  5423  		{
  5424  			yyVAL.token = yyDollar[1].token
  5425  		}
  5426  	case 514:
  5427  		yyDollar = yyS[yypt-1 : yypt+1]
  5428  //line lib/parser/parser.y:2774
  5429  		{
  5430  			yyVAL.token = yyDollar[1].token
  5431  		}
  5432  	case 515:
  5433  		yyDollar = yyS[yypt-1 : yypt+1]
  5434  //line lib/parser/parser.y:2778
  5435  		{
  5436  			yyVAL.token = yyDollar[1].token
  5437  		}
  5438  	case 516:
  5439  		yyDollar = yyS[yypt-1 : yypt+1]
  5440  //line lib/parser/parser.y:2782
  5441  		{
  5442  			yyVAL.token = yyDollar[1].token
  5443  		}
  5444  	case 517:
  5445  		yyDollar = yyS[yypt-0 : yypt+1]
  5446  //line lib/parser/parser.y:2788
  5447  		{
  5448  			yyVAL.token = Token{}
  5449  		}
  5450  	case 518:
  5451  		yyDollar = yyS[yypt-1 : yypt+1]
  5452  //line lib/parser/parser.y:2792
  5453  		{
  5454  			yyVAL.token = yyDollar[1].token
  5455  		}
  5456  	case 519:
  5457  		yyDollar = yyS[yypt-0 : yypt+1]
  5458  //line lib/parser/parser.y:2798
  5459  		{
  5460  			yyVAL.token = Token{}
  5461  		}
  5462  	case 520:
  5463  		yyDollar = yyS[yypt-1 : yypt+1]
  5464  //line lib/parser/parser.y:2802
  5465  		{
  5466  			yyVAL.token = yyDollar[1].token
  5467  		}
  5468  	case 521:
  5469  		yyDollar = yyS[yypt-0 : yypt+1]
  5470  //line lib/parser/parser.y:2808
  5471  		{
  5472  			yyVAL.token = Token{}
  5473  		}
  5474  	case 522:
  5475  		yyDollar = yyS[yypt-1 : yypt+1]
  5476  //line lib/parser/parser.y:2812
  5477  		{
  5478  			yyVAL.token = yyDollar[1].token
  5479  		}
  5480  	case 523:
  5481  		yyDollar = yyS[yypt-1 : yypt+1]
  5482  //line lib/parser/parser.y:2818
  5483  		{
  5484  			yyVAL.token = yyDollar[1].token
  5485  		}
  5486  	case 524:
  5487  		yyDollar = yyS[yypt-1 : yypt+1]
  5488  //line lib/parser/parser.y:2822
  5489  		{
  5490  			yyDollar[1].token.Token = COMPARISON_OP
  5491  			yyVAL.token = yyDollar[1].token
  5492  		}
  5493  	case 525:
  5494  		yyDollar = yyS[yypt-0 : yypt+1]
  5495  //line lib/parser/parser.y:2829
  5496  		{
  5497  			yyVAL.bool = false
  5498  		}
  5499  	case 526:
  5500  		yyDollar = yyS[yypt-3 : yypt+1]
  5501  //line lib/parser/parser.y:2833
  5502  		{
  5503  			yyVAL.bool = true
  5504  		}
  5505  	}
  5506  	goto yystack /* stack new state and value */
  5507  }