@sap/cds-compiler 6.0.14 → 6.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/bin/cdsc.js +6 -2
  3. package/bin/cdsse.js +1 -1
  4. package/bin/cdsv2m.js +1 -1
  5. package/lib/api/main.js +29 -7
  6. package/lib/api/options.js +2 -0
  7. package/lib/base/builtins.js +9 -0
  8. package/lib/base/keywords.js +1 -1
  9. package/lib/base/message-registry.js +5 -3
  10. package/lib/base/messages.js +3 -3
  11. package/lib/base/model.js +1 -0
  12. package/lib/base/node-helpers.js +10 -2
  13. package/lib/base/optionProcessorHelper.js +7 -2
  14. package/lib/checks/assocOutsideService.js +3 -1
  15. package/lib/checks/featureFlags.js +4 -1
  16. package/lib/compiler/assert-consistency.js +3 -1
  17. package/lib/compiler/base.js +1 -1
  18. package/lib/compiler/builtins.js +1 -1
  19. package/lib/compiler/checks.js +38 -21
  20. package/lib/compiler/define.js +24 -5
  21. package/lib/compiler/extend.js +1 -1
  22. package/lib/compiler/finalize-parse-cdl.js +9 -1
  23. package/lib/compiler/generate.js +4 -4
  24. package/lib/compiler/index.js +10 -1
  25. package/lib/compiler/lsp-api.js +2 -0
  26. package/lib/compiler/populate.js +8 -8
  27. package/lib/compiler/propagator.js +1 -1
  28. package/lib/compiler/resolve.js +15 -14
  29. package/lib/compiler/shared.js +6 -7
  30. package/lib/compiler/tweak-assocs.js +6 -6
  31. package/lib/compiler/utils.js +9 -16
  32. package/lib/compiler/xpr-rewrite.js +2 -2
  33. package/lib/gen/BaseParser.js +43 -37
  34. package/lib/gen/CdlGrammar.checksum +1 -1
  35. package/lib/gen/CdlParser.js +1424 -1433
  36. package/lib/gen/Dictionary.json +1 -7
  37. package/lib/gen/cdlKeywords.json +26 -0
  38. package/lib/inspect/inspectPropagation.js +1 -1
  39. package/lib/json/from-csn.js +2 -2
  40. package/lib/json/to-csn.js +9 -5
  41. package/lib/language/multiLineStringParser.js +1 -1
  42. package/lib/main.d.ts +10 -2
  43. package/lib/model/cloneCsn.js +1 -0
  44. package/lib/optionProcessor.js +13 -7
  45. package/lib/parsers/AstBuildingParser.js +24 -21
  46. package/lib/parsers/identifiers.js +2 -30
  47. package/lib/render/toCdl.js +63 -9
  48. package/lib/render/toSql.js +127 -108
  49. package/lib/render/utils/sql.js +67 -0
  50. package/lib/transform/addTenantFields.js +4 -4
  51. package/lib/transform/db/killAnnotations.js +1 -0
  52. package/lib/transform/db/processSqlServices.js +20 -2
  53. package/lib/transform/draft/db.js +1 -1
  54. package/lib/transform/draft/odata.js +14 -4
  55. package/lib/transform/forOdata.js +91 -2
  56. package/lib/transform/forRelationalDB.js +1 -1
  57. package/lib/transform/odata/flattening.js +1 -1
  58. package/lib/transform/transformUtils.js +2 -2
  59. package/lib/transform/translateAssocsToJoins.js +2 -26
  60. package/lib/utils/moduleResolve.js +1 -1
  61. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- // Parser generated by redepage v0.2.4
1
+ // Parser generated by redepage v0.2.7
2
2
  'use strict;'
3
3
  const { XsnSource, XsnArtifact, XsnName } = require( '../compiler/xsn-model' )
4
4
  const AstBuildingParser = require('../parsers/AstBuildingParser')
@@ -133,10 +133,10 @@ Id:['g',6,,'afterBrace'],'@':'Id',
133
133
  },
134
134
  ['m',0,'}',,,'afterBrace'],
135
135
  'artifactDefOrExtend',
136
- {'@':[10,775],'':11},
136
+ {'@':[10,773],'':11},
137
137
  {
138
- define:['ck',12],
139
138
  type:12,view:12,event:12,action:12,aspect:12,entity:12,context:12,service:12,abstract:12,function:12,annotation:12,
139
+ define:['ck',12],
140
140
  extend:['ck',13,,'extensionRestriction'],
141
141
  annotate:['ck',14,,'extensionRestriction'],
142
142
  },
@@ -198,22 +198,22 @@ Id:[22,31],
198
198
  'serviceDef',
199
199
  ['mk',44,'service',,,'vocabularyRestriction'],
200
200
  [45,35],
201
- {'@':[45,781],'':46},
201
+ {'@':[45,779],'':46},
202
202
  {'{':[0,5],'':0},
203
203
  'contextDef',
204
204
  ['mk',49,'context',,,'vocabularyRestriction'],
205
205
  [50,35],
206
- {'@':[50,781],'':51},
206
+ {'@':[50,779],'':51},
207
207
  {'{':[0,5],'':0},
208
208
  'annotationDef',
209
209
  ['mk',54,'annotation'],
210
210
  [55,35],
211
- {'@':[55,781],'':56},
211
+ {'@':[55,779],'':56},
212
212
  [0,347],
213
213
  'typeDef',
214
214
  ['mk',59,'type'],
215
215
  [60,35],
216
- {'@':[60,781],'':61},
216
+ {'@':[60,779],'':61},
217
217
  [0,347],
218
218
  'aspectDef',
219
219
  {
@@ -222,7 +222,7 @@ abstract:['ck',64,,'hide_'],
222
222
  },
223
223
  ['mk',65,'entity'],
224
224
  [66,35],
225
- {'@':[66,781],'':67},
225
+ {'@':[66,779],'':67},
226
226
  {
227
227
  '{':[71,158],
228
228
  ':':['c',68],
@@ -239,11 +239,11 @@ abstract:['ck',64,,'hide_'],
239
239
  'entityDef',
240
240
  ['mk',74,'entity'],
241
241
  [75,35],
242
- {'@':[75,781],'':76},
242
+ {'@':[75,779],'':76},
243
243
  {'(':[77,142],'':77},
244
244
  {
245
- ':':['c',78],
246
245
  '{':81,
246
+ ':':['c',78],
247
247
  as:['ck',82],
248
248
  },
249
249
  {Id:79},
@@ -254,18 +254,18 @@ as:['ck',82],
254
254
  },
255
255
  [87,158],
256
256
  {
257
- '(':[87,453],select:'(',
257
+ '(':[87,452],select:'(',
258
258
  projection:['g',83,,,'sloppy','afterBrace'],
259
259
  },
260
- [84,447],
261
- {group:[85,610],where:'group',having:'group','':85},
262
- {limit:[86,622],order:'limit','':86},
260
+ [84,446],
261
+ {group:[85,608],where:'group',having:'group','':85},
262
+ {limit:[86,620],order:'limit','':86},
263
263
  ['g',87,,,'normal','afterBrace'],
264
264
  {actions:[0,125],'':0},
265
265
  'viewDef',
266
266
  ['mk',90,'view'],
267
267
  [91,35],
268
- {'@':[91,781],'':92},
268
+ {'@':[91,779],'':92},
269
269
  {
270
270
  '(':[98,142],
271
271
  with:['ck',93,,'hide_'],
@@ -277,11 +277,11 @@ with:['ck',93,,'hide_'],
277
277
  [95,147],
278
278
  ['g',98],
279
279
  ['mk',99,'as'],
280
- [0,453],
280
+ [0,452],
281
281
  'eventDef',
282
282
  ['mk',102,'event'],
283
283
  [103,35],
284
- {'@':[103,781],'':104},
284
+ {'@':[103,779],'':104},
285
285
  {
286
286
  '{':[0,158],
287
287
  ':':['c',105],
@@ -289,7 +289,7 @@ with:['ck',93,,'hide_'],
289
289
  {
290
290
  '{':[0,158],
291
291
  Id:[106,39],
292
- projection:[0,447,1],
292
+ projection:[0,446,1],
293
293
  },
294
294
  {',':107,'{':107,'':111},
295
295
  {',':['c',108],'':110},
@@ -299,17 +299,17 @@ projection:[0,447,1],
299
299
  '{':110,
300
300
  },
301
301
  [0,158],
302
- {'@':[111,775],'':0},
302
+ {'@':[111,773],'':0},
303
303
  'actionMainDef',
304
304
  ['mk',114,'action'],
305
305
  [115,35],
306
- {'@':[115,781],'':116},
306
+ {'@':[115,779],'':116},
307
307
  [117,142],
308
308
  {returns:[0,154],'':0},
309
309
  'functionMainDef',
310
310
  ['mk',120,'function'],
311
311
  [121,35],
312
- {'@':[121,781],'':122},
312
+ {'@':[121,779],'':122},
313
313
  [123,142],
314
314
  [0,154],
315
315
  'actionsBlock',
@@ -323,17 +323,17 @@ Id:['g',127,,'afterBrace'],'@':'Id',
323
323
  },
324
324
  ['m',0,'}',,,'afterBrace'],
325
325
  'boundActionFunctionDef',
326
- {'@':[131,775],'':132},
326
+ {'@':[131,773],'':132},
327
327
  {
328
328
  action:['ck',133],
329
329
  function:['ck',137],
330
330
  },
331
331
  ['mi',134],
332
- {'@':[134,781],'':135},
332
+ {'@':[134,779],'':135},
333
333
  [136,142],
334
334
  {returns:[0,154],'':0},
335
335
  ['mi',138],
336
- {'@':[138,781],'':139},
336
+ {'@':[138,779],'':139},
337
337
  [140,142],
338
338
  [0,154],
339
339
  'paramsList',
@@ -345,18 +345,18 @@ function:['ck',137],
345
345
  },
346
346
  ['m',0,')'],
347
347
  'paramDef',
348
- {'@':[147,775],'':148},
348
+ {'@':[147,773],'':148},
349
349
  ['miA',149],
350
- {'@':[149,781],'':150},
350
+ {'@':[149,779],'':150},
351
351
  {
352
352
  '{':[151,158],
353
353
  ':':['c',152],
354
354
  },
355
- {not:[0,440],null:'not','':0},
355
+ {not:[0,439],null:'not','':0},
356
356
  [0,358],
357
357
  'returnsSpec',
358
358
  ['mk',155,'returns',,'default','elementRestriction'],
359
- {'@':[155,775],'':156},
359
+ {'@':[155,773],'':156},
360
360
  [0,358],
361
361
  'elementsBlock',
362
362
  ['m',159,'{'],
@@ -368,25 +368,25 @@ Id:['g',159,,'afterBrace'],'@':'Id',
368
368
  },
369
369
  ['m',0,'}',,,'afterBrace'],
370
370
  'elementDef',
371
- {'@':[163,775],'':164},
371
+ {'@':[163,773],'':164},
372
372
  {virtual:['ck',165,1],'':165},
373
373
  {key:['ck',166],'':166},
374
374
  {masked:['ck',167,1,'hide_'],'':167},
375
375
  {element:['ck',168,1,'hide_'],'':168},
376
376
  ['mi',169,,,'elem','elementRestriction'],
377
- {'@':[169,781],'':170},
377
+ {'@':[169,779],'':170},
378
378
  {
379
379
  '{':[171,158],
380
380
  ':':['c',172],
381
381
  '':173
382
382
  },
383
- {not:[173,440],null:'not','':173},
383
+ {not:[173,439],null:'not','':173},
384
384
  [173,358],
385
385
  {'=':['c',174,,'elementRestriction','calc'],'':0},
386
- [175,644],
386
+ [175,642],
387
387
  {stored:['ck',176],'':176},
388
388
  ['g',177],
389
- {'@':[177,775,,'elementRestriction','anno'],'':0},
389
+ {'@':[177,773,,'elementRestriction','anno'],'':0},
390
390
  'enumSymbolsBlock',
391
391
  ['mk',180,'enum'],
392
392
  ['m',181,'{'],
@@ -397,19 +397,19 @@ Id:['g',159,,'afterBrace'],'@':'Id',
397
397
  },
398
398
  ['m',0,'}',,,'afterBrace'],
399
399
  'enumSymbolDef',
400
- {'@':[185,775],'':186},
400
+ {'@':[185,773],'':186},
401
401
  ['mi',187],
402
- {'@':[187,775],'':188},
402
+ {'@':[187,773],'':188},
403
403
  {'=':['c',189],'':0},
404
404
  {
405
405
  String:['c',191],
406
406
  Number:['c',191],
407
407
  '+':['c',190],'-':'+',
408
- Id:[191,772,,'hide_'],'#':'Id',QuotedLiteral:'Id',
408
+ Id:[191,770,,'hide_'],'#':'Id',QuotedLiteral:'Id',
409
409
  },
410
410
  ['m',191,'Number'],
411
411
  ['g',192],
412
- {'@':[192,775],'':0},
412
+ {'@':[192,773],'':0},
413
413
  'foreignKeysBlock',
414
414
  ['m',195,'{'],
415
415
  {Id:[196,199],'@':'Id','':197},
@@ -419,7 +419,7 @@ Id:[191,772,,'hide_'],'#':'Id',QuotedLiteral:'Id',
419
419
  },
420
420
  ['m',0,'}'],
421
421
  'foreignKeyDef',
422
- {'@':[199,775],'':200},
422
+ {'@':[199,773],'':200},
423
423
  [201,39],
424
424
  {as:['ck',202],'':0},
425
425
  ['mi',0],
@@ -430,14 +430,14 @@ Id:[191,772,,'hide_'],'#':'Id',QuotedLiteral:'Id',
430
430
  association:['ck',207],
431
431
  composition:['ck',209],
432
432
  },
433
- {'[':[208,428],'':208},
433
+ {'[':[208,427],'':208},
434
434
  ['mk',211,'to'],
435
- {'[':[210,428],'':210},
435
+ {'[':[210,427],'':210},
436
436
  ['mk',211,'of'],
437
437
  {one:['ck',212,1,'noRepeatedCardinality'],many:'one','':212},
438
438
  [213,39],
439
439
  ['mk',214,'on'],
440
- [0,642],
440
+ [0,640],
441
441
  'annotateArtifact',
442
442
  [217,35],
443
443
  {
@@ -448,10 +448,10 @@ with:['ck',223],
448
448
  [219,35],
449
449
  {with:['ck',220],'':220},
450
450
  ['g',221],
451
- {'@':[221,775],'':222},
451
+ {'@':[221,773],'':222},
452
452
  {'{':[0,321],'':0},
453
453
  ['g',224],
454
- {'@':[224,775],'':225},
454
+ {'@':[224,773],'':225},
455
455
  {'(':[226,308],'':226},
456
456
  {
457
457
  returns:[0,317],
@@ -469,26 +469,26 @@ with:['ck',240],
469
469
  [232,35],
470
470
  {with:['ck',233],'':233},
471
471
  ['g',234],
472
- {'@':[234,775],'':235},
472
+ {'@':[234,773],'':235},
473
473
  {
474
- elements:['ck',236],
475
474
  '{':236,
475
+ elements:['ck',236],
476
476
  enum:[0,179],
477
- '(':[0,419],
477
+ '(':[0,418],
478
478
  '':0
479
479
  },
480
480
  [0,331],
481
- {'@':[237,775],'':238},
481
+ {'@':[237,773],'':238},
482
482
  {'{':[239,331],'':0},
483
483
  {actions:[0,125],'':0},
484
- {'@':[240,775],'':241},
484
+ {'@':[240,773],'':241},
485
485
  {
486
486
  Id:[242,39],
487
- elements:['ck',246,1],
488
487
  '{':246,
488
+ elements:['ck',246,1],
489
489
  actions:[0,125,1],
490
490
  enum:[0,179,1],
491
- '(':[0,419],
491
+ '(':[0,418],
492
492
  columns:['ck',248,1],
493
493
  definitions:['ck',249,1],
494
494
  '':0
@@ -499,35 +499,35 @@ definitions:['ck',249,1],
499
499
  {actions:[0,125],'':0},
500
500
  [247,331],
501
501
  {actions:[0,125],'':0},
502
- [0,559],
502
+ [0,558],
503
503
  [0,5],
504
504
  'extendService',
505
505
  ['mk',252,'service'],
506
506
  [253,35],
507
507
  {with:['ck',254],'':254},
508
508
  ['g',255],
509
- {'@':[255,775],'':256},
509
+ {'@':[255,773],'':256},
510
510
  {'{':[0,5],'':0},
511
511
  'extendContext',
512
512
  ['mk',259,'context'],
513
513
  [260,35],
514
514
  {with:['ck',261],'':261},
515
515
  ['g',262],
516
- {'@':[262,775],'':263},
516
+ {'@':[262,773],'':263},
517
517
  {'{':[0,5],'':0},
518
518
  'extendType',
519
519
  ['mk',266,'type'],
520
520
  [267,35],
521
521
  {with:['ck',270],'':268},
522
- {'@':[268,775],'':269},
522
+ {'@':[268,773],'':269},
523
523
  {'{':[0,331],'':0},
524
- {'@':[270,775],'':271},
524
+ {'@':[270,773],'':271},
525
525
  {
526
526
  Id:[272,39],
527
- elements:['ck',275,1],
528
527
  '{':275,
528
+ elements:['ck',275,1],
529
529
  enum:[0,179,1],
530
- '(':[0,419],
530
+ '(':[0,418],
531
531
  '':0
532
532
  },
533
533
  {',':['c',273],'':274},
@@ -538,8 +538,8 @@ enum:[0,179,1],
538
538
  {aspect:['ck',278],entity:'aspect'},
539
539
  [279,35],
540
540
  {with:['ck',281],'':280},
541
- {'@':[280,775],'':285},
542
- {'@':[281,775],'':282},
541
+ {'@':[280,773],'':285},
542
+ {'@':[281,773],'':282},
543
543
  {
544
544
  Id:[283,39],
545
545
  actions:['g',285,1],
@@ -554,8 +554,8 @@ actions:['g',285,1],
554
554
  [290,35],
555
555
  {with:['ck',291],'':291},
556
556
  ['g',292],
557
- {'@':[292,775],'':293},
558
- {'{':[294,559],'':294},
557
+ {'@':[292,773],'':293},
558
+ {'{':[294,558],'':294},
559
559
  {actions:[0,125],'':0},
560
560
  'annotateActionsBlock',
561
561
  ['mk',297,'actions'],
@@ -568,9 +568,9 @@ Id:['g',298,,'afterBrace'],'@':'Id',
568
568
  },
569
569
  ['m',0,'}',,,'afterBrace'],
570
570
  'annotateBoundAction',
571
- {'@':[302,775],'':303},
571
+ {'@':[302,773],'':303},
572
572
  ['mi',304],
573
- {'@':[304,775],'':305},
573
+ {'@':[304,773],'':305},
574
574
  {'(':[306,308],'':306},
575
575
  {returns:[0,317,1],'':0},
576
576
  'annotateParamsBlock',
@@ -582,12 +582,12 @@ Id:['g',298,,'afterBrace'],'@':'Id',
582
582
  },
583
583
  ['m',0,')'],
584
584
  'annotateParam',
585
- {'@':[313,775],'':314},
585
+ {'@':[313,773],'':314},
586
586
  ['mi',315],
587
- {'@':[315,775],'':0},
587
+ {'@':[315,773],'':0},
588
588
  'annotateReturns',
589
589
  ['mk',318,'returns'],
590
- {'@':[318,775],'':319},
590
+ {'@':[318,773],'':319},
591
591
  {'{':[0,321],'':0},
592
592
  'annotateElementsBlock',
593
593
  ['m',322,'{'],
@@ -599,9 +599,9 @@ Id:['g',322,,'afterBrace'],'@':'Id',
599
599
  },
600
600
  ['m',0,'}',,,'afterBrace'],
601
601
  'annotateElement',
602
- {'@':[326,775],'':327},
602
+ {'@':[326,773],'':327},
603
603
  ['mi',328],
604
- {'@':[328,775],'':329},
604
+ {'@':[328,773],'':329},
605
605
  {'{':[0,321],'':0},
606
606
  'extendElementsBlock',
607
607
  ['m',332,'{'],
@@ -613,7 +613,7 @@ Id:['g',332,,'afterBrace'],'@':'Id',
613
613
  },
614
614
  ['m',0,'}',,,'afterBrace'],
615
615
  'elementDefOrExtend',
616
- {'@':[336,775],'':337},
616
+ {'@':[336,773],'':337},
617
617
  {
618
618
  Id:[0,163],'@':'Id',key:'Id',
619
619
  extend:['ck',338,1],
@@ -621,14 +621,14 @@ extend:['ck',338,1],
621
621
  {element:['ck',339,1],'':339},
622
622
  ['mi',340],
623
623
  {with:['ck',343],'':341},
624
- {'@':[341,775],'':342},
624
+ {'@':[341,773],'':342},
625
625
  {'{':[0,331],'':0},
626
- {'@':[343,775],'':344},
626
+ {'@':[343,773],'':344},
627
627
  {
628
- elements:['ck',345],
629
628
  '{':345,
629
+ elements:['ck',345],
630
630
  enum:[0,179],
631
- '(':[0,419],
631
+ '(':[0,418],
632
632
  '':0
633
633
  },
634
634
  [0,331],
@@ -637,14 +637,14 @@ enum:[0,179],
637
637
  '{':[348,158],
638
638
  ':':['c',349],
639
639
  },
640
- {not:[0,440],null:'not','':0},
640
+ {not:[0,439],null:'not','':0},
641
641
  {
642
- projection:[0,447,1],
642
+ projection:[0,446,1],
643
643
  '{':[0,358,1],many:'{',type:'{',array:'{',localized:'{',association:'{',composition:'{',
644
644
  Id:[350,39],
645
645
  },
646
646
  {
647
- '(':[351,406],':':'(',
647
+ '(':[351,405],':':'(',
648
648
  '@':[0,359],not:'@',enum:'@',null:'@',default:'@',
649
649
  ',':352,'{':352,
650
650
  '':0
@@ -657,149 +657,148 @@ Id:[350,39],
657
657
  '{':355,
658
658
  },
659
659
  [356,158],
660
- {not:[0,440],null:'not','':0},
660
+ {not:[0,439],null:'not','':0},
661
661
  'typeExpression',
662
662
  {
663
- Id:[359,405],
664
- type:[359,397,1],
663
+ Id:[359,404],
664
+ type:[359,396,1],
665
665
  localized:['ck',368,1],
666
666
  association:['ck',370,1,,'calc','elementRestriction'],
667
667
  composition:['ck',374,1,,'calc','elementRestriction'],
668
668
  array:['ck',378,1,,'calc','elementRestriction'],
669
669
  many:['ck',379,1,,'calc','elementRestriction'],
670
- '{':[385,158,,,'calc','elementRestriction'],
670
+ '{':[384,158,,,'calc','elementRestriction'],
671
671
  },
672
672
  ['g',360],
673
- {'@':[360,775],'':361},
674
- {not:[362,440,,'elementRestriction','notNull'],null:'not','':363},
675
- {'@':[362,775],'':363},
673
+ {'@':[360,773],'':361},
674
+ {not:[362,439,,'elementRestriction','notNull'],null:'not','':363},
675
+ {'@':[362,773],'':363},
676
676
  {
677
677
  enum:[364,179,,,'anno','elementRestriction'],
678
- '@':[0,394],not:'@',null:'@',default:'@',
678
+ '@':[0,393],not:'@',null:'@',default:'@',
679
679
  '':0
680
680
  },
681
- {not:[365,440,,'elementRestriction','notNull'],null:'not','':365},
681
+ {not:[365,439,,'elementRestriction','notNull'],null:'not','':365},
682
682
  {default:['ck',366,,'elementRestriction','default'],'':367},
683
- [367,644],
684
- {not:[0,440,,'elementRestriction','notNull'],null:'not','':0},
685
- [369,405],
686
- {'@':[0,394],not:'@',null:'@',default:'@','':0},
687
- {'[':[371,428],'':371},
683
+ [367,642],
684
+ {not:[0,439,,'elementRestriction','notNull'],null:'not','':0},
685
+ [369,404],
686
+ {'@':[0,393],not:'@',null:'@',default:'@','':0},
687
+ {'[':[371,427],'':371},
688
688
  ['mk',372,'to'],
689
689
  {one:['ck',373,1,'noRepeatedCardinality'],many:'one','':373},
690
- [0,387],
691
- {'[':[375,428],'':375},
690
+ [0,386],
691
+ {'[':[375,427],'':375},
692
692
  ['mk',376,'of'],
693
693
  {one:['ck',377,1,'noRepeatedCardinality'],many:'one','':377},
694
694
  {
695
- Id:[0,387],
695
+ Id:[0,386],
696
696
  '{':[0,158],
697
697
  },
698
698
  ['mk',379,'of'],
699
699
  {
700
- Id:[380,405],
701
- type:[380,397,1],
702
- '{':[384,158],
700
+ Id:[380,404],
701
+ type:[380,396,1],
702
+ '{':[383,158],
703
703
  },
704
- {not:[381,440,,'elementRestriction','notNull'],null:'not','':381},
705
- {enum:[384,179],'':382},
706
- {'@':[382,775],'':383},
707
- ['g',0,[]],
708
- {not:[0,440,,'elementRestriction','notNull'],null:'not','':0},
709
- {not:[0,440],null:'not','':0},
704
+ {not:[381,439,,'elementRestriction','notNull'],null:'not','':381},
705
+ {enum:[383,179],'':382},
706
+ {'@':[382,773],'':0},
707
+ {not:[0,439,,'elementRestriction','notNull'],null:'not','':0},
708
+ {not:[0,439],null:'not','':0},
710
709
  'typeAssocProperties',
711
- [388,39],
712
- {'@':[388,775],'':389},
710
+ [387,39],
711
+ {'@':[387,773],'':388},
713
712
  {
714
- on:['ck',390],
715
- '{':[392,194],
716
- '@':[0,394],not:'@',null:'@',default:'@',
713
+ on:['ck',389],
714
+ '{':[391,194],
715
+ '@':[0,393],not:'@',null:'@',default:'@',
717
716
  '':0
718
717
  },
719
- [391,642],
720
- {'@':[391,775],'':0},
721
- {'@':[0,394],not:'@',null:'@',default:'@','':0},
718
+ [390,640],
719
+ {'@':[390,773],'':0},
720
+ {'@':[0,393],not:'@',null:'@',default:'@','':0},
722
721
  'typeProperties',
723
722
  {
724
- '@':[394,775],
725
- not:[394,440,,'elementRestriction','notNull'],null:'not',
726
- default:['ck',395,,'elementRestriction','default'],
723
+ '@':[393,773],
724
+ not:[393,439,,'elementRestriction','notNull'],null:'not',
725
+ default:['ck',394,,'elementRestriction','default'],
727
726
  '':0
728
727
  },
729
- [394,644],
728
+ [393,642],
730
729
  'typeTypeOf',
731
- ['mk',398,'type'],
732
- ['mk',399,'of'],
733
- [400,39],
734
- {':':['c',401],'':0},
735
- ['miA',402],
736
- {'.':['c',403],'':0},
737
- ['miA',402],
730
+ ['mk',397,'type'],
731
+ ['mk',398,'of'],
732
+ [399,39],
733
+ {':':['c',400],'':0},
734
+ ['miA',401],
735
+ {'.':['c',402],'':0},
736
+ ['miA',401],
738
737
  'typeRefOptArgs',
739
- [406,39],
738
+ [405,39],
740
739
  {
741
- ':':['c',407],
742
- '(':['c',411],
740
+ ':':['c',406],
741
+ '(':['c',410],
743
742
  '':0
744
743
  },
745
- ['miA',408],
746
- {'.':['c',409],'':410},
747
- ['miA',408],
748
- ['g',0,[]],
744
+ ['miA',407],
745
+ {'.':['c',408],'':409},
746
+ ['miA',407],
747
+ ['g',0],
749
748
  {
750
- Number:['c',412],
751
- Id:415,
749
+ Number:['c',411],
750
+ Id:414,
752
751
  },
753
- {',':['c',413],'':414},
752
+ {',':['c',412],'':413},
754
753
  {
755
- Number:['c',412],
756
- floating:['ck',412],variable:'floating',
757
- ')':414,
754
+ Number:['c',411],
755
+ floating:['ck',411],variable:'floating',
756
+ ')':413,
758
757
  },
759
- ['g',417],
760
- {Id:[416,424],'':417},
758
+ ['g',416],
759
+ {Id:[415,423],'':416},
761
760
  {
762
- ',':['c',415],
763
- ')':417,
761
+ ',':['c',414],
762
+ ')':416,
764
763
  },
765
764
  ['m',0,')'],
766
765
  'typeNamedArgsList',
767
- ['m',420,'('],
768
- {Id:[421,424],'':422},
766
+ ['m',419,'('],
767
+ {Id:[420,423],'':421},
769
768
  {
770
- ',':['c',420],
771
- ')':422,
769
+ ',':['c',419],
770
+ ')':421,
772
771
  },
773
772
  ['m',0,')'],
774
773
  'typeNamedArg',
775
- ['mi',425],
776
- ['m',426,':'],
774
+ ['mi',424],
775
+ ['m',425,':'],
777
776
  {
778
777
  Number:['c',0],
779
778
  floating:['ck',0],variable:'floating',
780
779
  },
781
780
  'cardinality',
782
- ['m',429,'['],
781
+ ['m',428,'['],
783
782
  {
784
- '*':['c',430],
785
- Number:['c',432],
786
- ']':434,
783
+ '*':['c',429],
784
+ Number:['c',431],
785
+ ']':433,
787
786
  },
788
- {',':['c',431],'':434},
789
- [434,436],
787
+ {',':['c',430],'':433},
788
+ [433,435],
790
789
  {
791
- ',':['c',433],
792
- '..':[434,437],
793
- '':434
790
+ ',':['c',432],
791
+ '..':[433,436],
792
+ '':433
794
793
  },
795
- [434,436],
794
+ [433,435],
796
795
  ['m',0,']'],
797
796
  'targetCardinality',
798
797
  {
799
798
  '*':['c',0],
800
- Number:['c',437],
799
+ Number:['c',436],
801
800
  },
802
- {'..':['c',438],'':0},
801
+ {'..':['c',437],'':0},
803
802
  {
804
803
  '*':['c',0],
805
804
  Number:['c',0],
@@ -807,538 +806,535 @@ Number:['c',0],
807
806
  'nullability',
808
807
  {
809
808
  null:['ck',0],
810
- not:['ck',441],
809
+ not:['ck',440],
811
810
  },
812
811
  ['mk',0,'null'],
813
812
  'queryEOF',
814
- [444,453],
815
- {';':['c',445],'':445},
813
+ [443,452],
814
+ {';':['c',444],'':444},
816
815
  ['m',0,'EOF'],
817
816
  'projectionSpec',
818
- ['mk',448,'projection'],
819
- ['mk',449,'on'],
820
- [450,513],
821
- {'{':[451,559],'':451},
822
- {excluding:[0,552],'':0},
817
+ ['mk',447,'projection'],
818
+ ['mk',448,'on'],
819
+ [449,512],
820
+ {'{':[450,558],'':450},
821
+ {excluding:[0,551],'':0},
823
822
  'queryExpression',
824
823
  {
825
- '(':['c',454],
826
- Id:[456,462,,,,'orderByLimitRestriction'],
824
+ '(':['c',453],
825
+ Id:[455,461,,,,'orderByLimitRestriction'],
827
826
  },
828
- [455,453],
829
- ['m',456,')'],
827
+ [454,452],
828
+ ['m',455,')'],
830
829
  {
831
- intersect:['ck',457,,'precLeft_',4],
832
- minus:['ck',457,,'precLeft_',2],except:'minus',
833
- union:['ck',458,,'precLeft_',2],
834
- '':460
830
+ intersect:['ck',456,,'precLeft_',4],
831
+ minus:['ck',456,,'precLeft_',2],except:'minus',
832
+ union:['ck',457,,'precLeft_',2],
833
+ '':459
835
834
  },
836
- {distinct:['ck',459],'':459},
837
- {all:['ck',459],distinct:'all','':459},
838
- [456,453,,,,'orderByLimitRestriction'],
839
- {limit:[0,622,,'orderByLimitRestriction'],order:'limit','':0},
835
+ {distinct:['ck',458],'':458},
836
+ {all:['ck',458],distinct:'all','':458},
837
+ [455,452,,,,'orderByLimitRestriction'],
838
+ {limit:[0,620,,'orderByLimitRestriction'],order:'limit','':0},
840
839
  'selectQuery',
841
- ['mk',463,'select'],
840
+ ['mk',462,'select'],
842
841
  {
843
- from:['ck',464],
844
- all:['ck',474],distinct:'all',
845
- Id:474,'#':474,'(':474,'*':474,'+':474,'-':474,':':474,'?':474,'@':474,'{':474,key:474,not:474,case:474,cast:474,null:474,true:474,false:474,Number:474,String:474,exists:474,QuotedLiteral:474,
842
+ from:['ck',463],
843
+ Id:473,'#':473,'(':473,'*':473,'+':473,'-':473,':':473,'?':473,'@':473,'{':473,key:473,not:473,case:473,cast:473,null:473,true:473,false:473,Number:473,String:473,exists:473,QuotedLiteral:473,
844
+ all:['ck',473],distinct:'all',
846
845
  },
847
- [465,482],
848
- {mixin:['ck',466],'':471},
849
- ['m',467,'{'],
850
- {Id:[468,204],'':469},
846
+ [464,481],
847
+ {mixin:['ck',465],'':470},
848
+ ['m',466,'{'],
849
+ {Id:[467,204],'':468},
851
850
  {
852
- ';':['c',467],
853
- '}':469,
851
+ ';':['c',466],
852
+ '}':468,
854
853
  },
855
- ['m',470,'}'],
856
- ['mk',471,'into'],
857
- {all:['ck',472],distinct:'all','':472},
858
- {'{':[473,559],'':473},
859
- {excluding:[480,552],'':480},
860
- ['g',475,,,'sqlStyle','inSelectItem'],
854
+ ['m',469,'}'],
855
+ ['mk',470,'into'],
856
+ {all:['ck',471],distinct:'all','':471},
857
+ {'{':[472,558],'':472},
858
+ {excluding:[479,551],'':479},
859
+ ['g',474,,,'sqlStyle','inSelectItem'],
861
860
  {
862
- '*':['c',476],
863
- Id:[476,569],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
861
+ '*':['c',475],
862
+ Id:[475,568],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
864
863
  },
865
- {',':['c',477],'':478},
864
+ {',':['c',476],'':477},
866
865
  {
867
- '*':['c',476],
868
- Id:[476,569],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
866
+ '*':['c',475],
867
+ Id:[475,568],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
869
868
  },
870
- ['mk',479,'from'],
871
- [480,482],
872
- {group:[0,610],where:'group',having:'group','':0},
869
+ ['mk',478,'from'],
870
+ [479,481],
871
+ {group:[0,608],where:'group',having:'group','':0},
873
872
  'querySource',
874
- [483,487],
875
- {',':484,'':0},
876
- {',':['c',485],'':0},
877
- [484,487],
873
+ [482,486],
874
+ {',':483,'':0},
875
+ {',':['c',484],'':0},
876
+ [483,486],
878
877
  'tableExpression',
879
878
  {
880
- '(':[488,500],
881
- Id:[489,513],
879
+ '(':[487,499],
880
+ Id:[488,512],
882
881
  },
883
- ['g',489],
882
+ ['g',488],
884
883
  {
885
- cross:['ck',490],
886
- inner:['ck',493],
887
- full:['ck',492],left:'full',right:'full',
888
- join:['ck',495],
884
+ cross:['ck',489],
885
+ inner:['ck',492],
886
+ full:['ck',491],left:'full',right:'full',
887
+ join:['ck',494],
889
888
  '':0
890
889
  },
891
- ['mk',491,'join'],
890
+ ['mk',490,'join'],
892
891
  {
893
- '(':[489,500],
894
- Id:[489,513],
892
+ '(':[488,499],
893
+ Id:[488,512],
895
894
  },
896
- {outer:['ck',493],'':493},
897
- {one:[494,507],many:'one',exact:'one','':494},
898
- ['mk',495,'join'],
899
- ['g',496],
900
- [497,487],
901
- ['mk',498,'on'],
902
- [489,642],
895
+ {outer:['ck',492],'':492},
896
+ {one:[493,506],many:'one',exact:'one','':493},
897
+ ['mk',494,'join'],
898
+ ['g',495],
899
+ [496,486],
900
+ ['mk',497,'on'],
901
+ [488,640],
903
902
  'tableOrQueryParens',
904
- ['m',501,'(',,,'queryOnLeft'],
903
+ ['m',500,'(',,,'queryOnLeft'],
905
904
  {
906
- '(':[502,500],
907
- Id:[503,487,,,'table','queryOnLeft'],
908
- select:[503,453],
905
+ '(':[501,499],
906
+ Id:[502,486,,,'table','queryOnLeft'],
907
+ select:[502,452],
909
908
  },
910
909
  {
911
- full:[503,488,,,'table','queryOnLeft'],join:'full',left:'full',cross:'full',inner:'full',right:'full',
912
- limit:[503,456,,'queryOnLeft'],minus:'limit',order:'limit',union:'limit',except:'limit',intersect:'limit',
913
- '':503
910
+ full:[502,487,,,'table','queryOnLeft'],join:'full',left:'full',cross:'full',inner:'full',right:'full',
911
+ limit:[502,455,,'queryOnLeft'],minus:'limit',order:'limit',union:'limit',except:'limit',intersect:'limit',
912
+ '':502
914
913
  },
915
- ['m',504,')'],
914
+ ['m',503,')'],
916
915
  {
917
- as:['ck',505,,'queryOnLeft','table'],
918
- Id:['ci',0,,'queryOnLeft','tableWithoutAs'],
916
+ as:['ck',504,,'queryOnLeft','table'],
917
+ Id:['ci',0,,'queryOnLeftSloppyAlias'],
919
918
  '':0
920
919
  },
921
920
  ['mi',0],
922
921
  'joinCardinality',
923
922
  {
924
- exact:['ck',508],
925
- one:508,
926
- many:['ck',509],
923
+ one:507,
924
+ exact:['ck',507],
925
+ many:['ck',508],
927
926
  },
928
- ['mk',509,'one'],
929
- ['mk',510,'to'],
927
+ ['mk',508,'one'],
928
+ ['mk',509,'to'],
930
929
  {
931
- exact:['ck',511],
932
- one:511,
930
+ one:510,
931
+ exact:['ck',510],
933
932
  many:['ck',0],
934
933
  },
935
934
  ['mk',0,'one'],
936
935
  'fromRefWithOptAlias',
937
- [514,520],
938
- {':':['c',515],'':516},
939
- [516,520],
936
+ [513,519],
937
+ {':':['c',514],'':515},
938
+ [515,519],
940
939
  {
941
- as:['ck',517],
942
- Id:['ci',0],
943
- '':518
940
+ as:['ck',516],
941
+ Id:['ci',0,,'isNoKeywordInRuleFollow'],
942
+ '':517
944
943
  },
945
944
  ['mi',0],
946
- ['g',0,[]],
945
+ ['g',0],
947
946
  'fromPath',
948
- ['mi',521],
949
- {'(':[522,526],'[':'(','':522},
950
- {'.':['c',523,,'notAfterEntityArgOrFilter'],'':0},
951
- ['miA',524],
952
- {'(':[522,526],'[':'(','':522},
947
+ ['mi',520],
948
+ {'(':[521,525],'[':'(','':521},
949
+ {'.':['c',522,,'notAfterEntityArgOrFilter'],'':0},
950
+ ['miA',523],
951
+ {'(':[521,525],'[':'(','':521},
953
952
  'fromArgumentsAndFilter',
954
- {'(':['c',527],'':531},
955
- {Id:528},
956
- {Id:[529,533],'':530},
953
+ {'(':['c',526],'':530},
954
+ {Id:527},
955
+ {Id:[528,532],'':529},
957
956
  {
958
- ',':['c',528],
959
- ')':530,
957
+ ',':['c',527],
958
+ ')':529,
960
959
  },
961
- ['m',531,')'],
962
- {'[':[0,537],'':0},
960
+ ['m',530,')'],
961
+ {'[':[0,536],'':0},
963
962
  'fromNamedArgument',
964
- ['mi',534],
965
- ['m',535,':'],
966
- [0,644],
963
+ ['mi',533],
964
+ ['m',534,':'],
965
+ [0,642],
967
966
  'cardinalityAndFilter',
968
- ['m',538,'['],
969
- {Number:['c',539,,'beforeColon'],'':540},
970
- ['m',540,':'],
971
- [541,543],
967
+ ['m',537,'['],
968
+ {Number:['c',538,,'beforeColon'],'':539},
969
+ ['m',539,':'],
970
+ [540,542],
972
971
  ['m',0,']'],
973
972
  'filterClauses',
974
973
  {
975
- where:['ck',544],
976
- Id:544,'#':544,'(':544,'+':544,'-':544,':':544,'?':544,not:544,case:544,cast:544,null:544,true:544,false:544,Number:544,String:544,exists:544,QuotedLiteral:544,
977
- group:['g',545,1],limit:'group',order:'group',having:'group',
978
- '':545
974
+ Id:543,'#':543,'(':543,'+':543,'-':543,':':543,'?':543,not:543,case:543,cast:543,null:543,true:543,false:543,Number:543,String:543,exists:543,QuotedLiteral:543,
975
+ where:['ck',543],
976
+ group:['g',544,1],limit:'group',order:'group',having:'group',
977
+ '':544
979
978
  },
980
- [545,642],
981
- {group:['g',546,,'hide_'],'':547},
982
- [547,616],
983
- {having:['ck',548,,'hide_'],'':549},
984
- [549,642],
985
- {limit:['g',550,,'hide_'],order:'limit','':0},
986
- [0,622],
979
+ [544,640],
980
+ {group:['g',545,,'hide_'],'':546},
981
+ [546,614],
982
+ {having:['ck',547,,'hide_'],'':548},
983
+ [548,640],
984
+ {Id:['g',549,,'hide_'],'':0},
985
+ [0,620],
987
986
  'excludingClause',
988
- ['mk',553,'excluding'],
989
- ['m',554,'{'],
990
- {Id:555},
991
- {Id:['ciA',556],'':557},
987
+ ['mk',552,'excluding'],
988
+ ['m',553,'{'],
989
+ {Id:554},
990
+ {Id:['ciA',555],'':556},
992
991
  {
993
- ',':['c',555],
994
- '}':557,
992
+ ',':['c',554],
993
+ '}':556,
995
994
  },
996
995
  ['m',0,'}',,,'afterBrace'],
997
996
  'selectItemsList',
998
- ['m',560,'{',,'top','inSelectItem'],
997
+ ['m',559,'{',,'top','inSelectItem'],
999
998
  {
1000
- '*':['c',561],
1001
- Id:[561,569],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1002
- '':562
999
+ '*':['c',560],
1000
+ Id:[560,568],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1001
+ '':561
1003
1002
  },
1004
1003
  {
1005
- ',':['c',560],
1006
- '}':562,
1004
+ ',':['c',559],
1005
+ '}':561,
1007
1006
  },
1008
1007
  ['m',0,'}',,,'afterBrace'],
1009
1008
  'nestedSelectItemsList',
1010
- ['m',565,'{',,,'inSelectItem'],
1009
+ ['m',564,'{',,,'inSelectItem'],
1011
1010
  {
1012
- '*':['c',566],
1013
- Id:[566,569],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1014
- '':567
1011
+ '*':['c',565],
1012
+ Id:[565,568],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1013
+ '':566
1015
1014
  },
1016
1015
  {
1017
- ',':['c',565],
1018
- '}':567,
1016
+ ',':['c',564],
1017
+ '}':566,
1019
1018
  },
1020
1019
  ['m',0,'}',,,'afterBrace'],
1021
1020
  'selectItemDef',
1022
- {'@':[569,778],'':570},
1023
- {virtual:['ck',571,1,'modifierRestriction'],'':571},
1024
- ['g',572,,,'key','columnExpr'],
1025
- {key:['ck',573,,'modifierRestriction'],'':573},
1021
+ {'@':[568,776],'':569},
1022
+ {virtual:['ck',570,1,'modifierRestriction'],'':570},
1023
+ ['g',571,,,'key','columnExpr'],
1024
+ {key:['ck',572,,'modifierRestriction'],'':572},
1026
1025
  {
1027
- '#':[574,644,1],'(':'#','+':'#','-':'#',':':'#','?':'#',new:'#',not:'#',case:'#',cast:'#',null:'#',true:'#',false:'#',Number:'#',String:'#',exists:'#',QuotedLiteral:'#',
1028
- Id:[576,673],
1029
- '{':[587,564],
1026
+ '#':[573,642,1],'(':'#','+':'#','-':'#',':':'#','?':'#',new:'#',not:'#',case:'#',cast:'#',null:'#',true:'#',false:'#',Number:'#',String:'#',exists:'#',QuotedLiteral:'#',
1027
+ Id:[575,671],
1028
+ '{':[586,563],
1030
1029
  },
1031
1030
  {
1032
- as:['ck',575],
1033
- Id:['ci',584],
1034
- '':584
1031
+ as:['ck',574],
1032
+ Id:['ci',583],
1033
+ '':583
1035
1034
  },
1036
- ['mi',584],
1035
+ ['mi',583],
1037
1036
  {
1038
- over:['ck',577],
1039
- '*':[579,645],'+':'*','-':'*','/':'*','<':'*','=':'*','>':'*','?':'*','!=':'*','<=':'*','<>':'*','==':'*','>=':'*',in:'*',is:'*',or:'*','||':'*',and:'*',not:'*',like:'*',between:'*',
1040
- as:['ck',581],
1041
- Id:['ci',584,,,,'nestedExpand'],
1042
- '.':['c',582],
1043
- '':584
1037
+ over:['ck',576],
1038
+ '*':[578,643],'+':'*','-':'*','/':'*','<':'*','=':'*','>':'*','?':'*','!=':'*','<=':'*','<>':'*','==':'*','>=':'*',in:'*',is:'*',or:'*','||':'*',and:'*',not:'*',like:'*',between:'*',
1039
+ as:['ck',580],
1040
+ Id:['ci',583,,,,'nestedExpand'],
1041
+ '.':['c',581],
1042
+ '':583
1044
1043
  },
1045
- [578,736],
1046
- {'*':[579,645],'+':'*','-':'*','/':'*','<':'*','=':'*','>':'*','?':'*','!=':'*','<=':'*','<>':'*','==':'*','>=':'*',in:'*',is:'*',or:'*','||':'*',and:'*',not:'*',like:'*',between:'*','':579},
1044
+ [577,734],
1045
+ {'*':[578,643],'+':'*','-':'*','/':'*','<':'*','=':'*','>':'*','?':'*','!=':'*','<=':'*','<>':'*','==':'*','>=':'*',in:'*',is:'*',or:'*','||':'*',and:'*',not:'*',like:'*',between:'*','':578},
1047
1046
  {
1048
- as:['ck',580],
1049
- Id:['ci',584],
1050
- '':584
1047
+ as:['ck',579],
1048
+ Id:['ci',583],
1049
+ '':583
1051
1050
  },
1052
- ['mi',584],
1053
- ['mi',584,,,,'nestedExpand'],
1051
+ ['mi',583],
1052
+ ['mi',583,,,,'nestedExpand'],
1054
1053
  {
1055
- '{':[583,564],
1054
+ '{':[582,563],
1056
1055
  '*':['c',0],
1057
1056
  },
1058
- {excluding:[0,552],'':0},
1059
- {'{':['g',585,,'nestedExpand'],'':590},
1060
- [586,564],
1061
- {excluding:[590,552],'':590},
1062
- {excluding:[588,552],'':588},
1063
- ['mk',589,'as'],
1064
- ['mi',590],
1065
- ['g',591,,,,'columnExpr'],
1066
- {'@':[591,781],'':592},
1067
- {':':['c',593],'':0},
1057
+ {excluding:[0,551],'':0},
1058
+ {'{':['g',584,,'nestedExpand'],'':589},
1059
+ [585,563],
1060
+ {excluding:[589,551],'':589},
1061
+ {excluding:[587,551],'':587},
1062
+ ['mk',588,'as'],
1063
+ ['mi',589],
1064
+ ['g',590,,,,'columnExpr'],
1065
+ {'@':[590,779],'':591},
1066
+ {':':['c',592],'':0},
1068
1067
  {
1069
- type:[607,397,1],
1070
- localized:['ck',594,1],
1071
- Id:594,
1072
- redirected:['ck',595,1],
1073
- association:['ck',599,1,'columnExpr'],
1074
- composition:['ck',601,1,'columnExpr'],
1068
+ Id:[605,358],'{':'Id',
1069
+ redirected:['ck',593,1],
1070
+ association:['ck',597,1,'columnExpr'],
1071
+ composition:['ck',599,1,'columnExpr'],
1075
1072
  },
1076
- [607,405],
1077
- ['mk',596,'to'],
1078
- [597,39],
1073
+ ['mk',594,'to'],
1074
+ [595,39],
1079
1075
  {
1080
- on:['ck',598],
1081
- '{':[607,194],
1082
- '':607
1076
+ on:['ck',596],
1077
+ '{':[605,194],
1078
+ '':605
1083
1079
  },
1084
- [607,642],
1085
- {'[':[600,428],'':600},
1086
- ['mk',603,'to'],
1087
- {'[':[602,428],'':602},
1088
- ['mk',603,'of'],
1089
- {one:['ck',604,1,'noRepeatedCardinality'],many:'one','':604},
1090
- [605,39],
1091
- ['mk',606,'on'],
1092
- [607,642],
1093
- ['g',608],
1094
- {'@':[608,775],'':0},
1080
+ [605,640],
1081
+ {'[':[598,427],'':598},
1082
+ ['mk',601,'to'],
1083
+ {'[':[600,427],'':600},
1084
+ ['mk',601,'of'],
1085
+ {one:['ck',602,1,'noRepeatedCardinality'],many:'one','':602},
1086
+ [603,39],
1087
+ ['mk',604,'on'],
1088
+ [605,640],
1089
+ ['g',606],
1090
+ {'@':[606,773],'':0},
1095
1091
  'whereGroupByHaving',
1096
- {where:['ck',611],'':612},
1097
- [612,642],
1098
- {group:[613,616],'':613},
1099
- {having:['ck',614],'':0},
1100
- [0,642],
1092
+ {where:['ck',609],'':610},
1093
+ [610,640],
1094
+ {group:[611,614],'':611},
1095
+ {having:['ck',612],'':0},
1096
+ [0,640],
1101
1097
  'groupByClause',
1102
- ['mk',617,'group'],
1103
- ['mk',618,'by'],
1104
- [619,644],
1105
- {',':['c',620],'':0},
1106
- [619,644],
1098
+ ['mk',615,'group'],
1099
+ ['mk',616,'by'],
1100
+ [617,642],
1101
+ {',':['c',618],'':0},
1102
+ [617,642],
1107
1103
  'orderByLimitOffset',
1108
- {order:[623,628],'':623},
1109
- {limit:['ck',624],'':0},
1110
- [625,644],
1111
- {offset:['ck',626],'':0},
1112
- [0,644],
1104
+ {order:[621,626],'':621},
1105
+ {limit:['ck',622],'':0},
1106
+ [623,642],
1107
+ {offset:['ck',624],'':0},
1108
+ [0,642],
1113
1109
  'orderByClause',
1114
- ['mk',629,'order'],
1115
- ['mk',630,'by'],
1116
- [631,634],
1117
- {',':['c',632],'':0},
1118
- [631,634],
1110
+ ['mk',627,'order'],
1111
+ ['mk',628,'by'],
1112
+ [629,632],
1113
+ {',':['c',630],'':0},
1114
+ [629,632],
1119
1115
  'orderByExpression',
1120
- [635,644],
1121
- {asc:['ck',636],desc:'asc','':636},
1122
- {nulls:['ck',637],'':0},
1116
+ [633,642],
1117
+ {asc:['ck',634],desc:'asc','':634},
1118
+ {nulls:['ck',635],'':0},
1123
1119
  {last:['ck',0],first:'last'},
1124
1120
  'conditionEOF',
1125
- [640,644],
1121
+ [638,642],
1126
1122
  ['m',0,'EOF'],
1127
1123
  'condition',
1128
- [0,644],
1124
+ [0,642],
1129
1125
  'expression',
1130
1126
  {
1131
- '(':[645,679],
1132
- '#':[656,772],null:'#',true:'#',false:'#',Number:'#',String:'#',QuotedLiteral:'#',
1133
- ':':['c',646],
1134
- '?':['c',656,,'hide_'],
1135
- Id:[648,673],
1136
- new:['ck',651,1],
1137
- exists:['ck',652],
1138
- case:[656,691],
1139
- cast:[656,702],
1140
- '+':['c',655,,'precRight_',30],'-':'+',
1141
- not:['ck',655,,'precRight_',8],
1127
+ '(':[643,677],
1128
+ '#':[654,770],null:'#',true:'#',false:'#',Number:'#',String:'#',QuotedLiteral:'#',
1129
+ ':':['c',644],
1130
+ '?':['c',654,,'hide_'],
1131
+ Id:[646,671],
1132
+ new:['ck',649,1],
1133
+ exists:['ck',650],
1134
+ case:[654,689],
1135
+ cast:[654,700],
1136
+ '+':['c',653,,'precRight_',30],'-':'+',
1137
+ not:['ck',653,,'precRight_',8],
1142
1138
  },
1143
- ['g',656],
1139
+ ['g',654],
1144
1140
  {
1145
- Id:['ciA',647],
1146
- Number:['c',656,,'hide_'],
1141
+ Id:['ciA',645],
1142
+ Number:['c',654,,'hide_'],
1147
1143
  },
1148
- {'.':[656,675],'':656},
1149
- {over:['ck',649],'':650},
1150
- [650,736],
1151
- ['g',656],
1152
- [656,673],
1144
+ {'.':[654,673],'':654},
1145
+ {over:['ck',647],'':648},
1146
+ [648,734],
1147
+ ['g',654],
1148
+ [654,671],
1153
1149
  {
1154
- '(':['c',653],
1155
- Id:[656,673],
1156
- '?':['c',656,,'hide_'],
1150
+ '(':['c',651],
1151
+ Id:[654,671],
1152
+ '?':['c',654,,'hide_'],
1157
1153
  },
1158
- [654,453],
1159
- ['m',656,')'],
1160
- [656,644],
1154
+ [652,452],
1155
+ ['m',654,')'],
1156
+ [654,642],
1161
1157
  {
1162
- '*':['c',660,,'precLeft_',24],'/':'*',
1163
- '+':['c',660,,'precLeft_',22],'-':'+',
1164
- '||':['c',660,,'precLeft_',20],
1165
- and:['ck',660,,'precLeft_',4],
1166
- or:['ck',660,,'precLeft_',2],
1167
- '?':['c',657,,'precLeft_',0],
1168
- '<':['c',659,,'precNone_',10],'=':'<','>':'<','!=':'<','<=':'<','<>':'<','>=':'<',
1169
- '==':['c',660,,'precNone_',10],
1170
- is:['ck',661,,'precNone_',10],
1171
- not:['ck',663,,'isNegatedRelation',10],
1172
- in:['g',663,,'precNone_',10],like:'in',between:'in',
1158
+ '*':['c',658,,'precLeft_',24],'/':'*',
1159
+ '+':['c',658,,'precLeft_',22],'-':'+',
1160
+ '||':['c',658,,'precLeft_',20],
1161
+ and:['ck',658,,'precLeft_',4],
1162
+ or:['ck',658,,'precLeft_',2],
1163
+ '?':['c',655,,'precRight_',0],
1164
+ '<':['c',657,,'precNone_',10],'=':'<','>':'<','!=':'<','<=':'<','<>':'<','>=':'<',
1165
+ '==':['c',658,,'precNone_',10],
1166
+ is:['ck',659,,'precNone_',10],
1167
+ not:['ck',661,,'isNegatedRelation',10],
1168
+ in:['g',661,,'precNone_',10],like:'in',between:'in',
1173
1169
  '':0
1174
1170
  },
1175
- [658,644],
1176
- ['m',660,':'],
1177
- {all:['ck',660],any:'all',some:'all','':660},
1178
- [671,644],
1179
- {not:['ck',662],'':662},
1180
- ['mk',671,'null'],
1171
+ [656,642],
1172
+ ['m',658,':'],
1173
+ {all:['ck',658],any:'all',some:'all','':658},
1174
+ [669,642],
1175
+ {not:['ck',660],'':660},
1176
+ ['mk',669,'null'],
1181
1177
  {
1182
- between:['ck',664],
1183
- in:['ck',667],
1184
- like:['ck',668],
1178
+ between:['ck',662],
1179
+ in:['ck',665],
1180
+ like:['ck',666],
1185
1181
  },
1186
- [665,644],
1187
- ['mk',666,'and'],
1188
- [671,644],
1189
- [671,644],
1190
- [669,644],
1191
- {escape:['ck',670],'':671},
1192
- [671,644],
1193
- ['g',656],
1182
+ [663,642],
1183
+ ['mk',664,'and'],
1184
+ [669,642],
1185
+ [669,642],
1186
+ [667,642],
1187
+ {escape:['ck',668],'':669},
1188
+ [669,642],
1189
+ ['g',654],
1194
1190
  'valuePath',
1195
- ['mi',674],
1196
- {'(':[675,709],'[':'(','':675},
1197
- {'.':['c',676,,'isDotForPath'],'':0},
1198
- ['miA',677],
1199
- {'(':[675,709],'[':'(','':675},
1191
+ ['mi',672],
1192
+ {'(':[673,707],'[':'(','':673},
1193
+ {'.':['c',674,,'isDotForPath'],'':0},
1194
+ ['miA',675],
1195
+ {'(':[673,707],'[':'(','':673},
1200
1196
  'expressionOrQueryParens',
1201
- ['m',680,'(',,,'queryOnLeft'],
1197
+ ['m',678,'(',,,'queryOnLeft'],
1202
1198
  {
1203
- '(':[681,679],
1204
- Id:[683,644,,,'expr','queryOnLeft'],'#':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id',
1205
- select:[684,453],
1199
+ '(':[679,677],
1200
+ Id:[681,642,,,'expr','queryOnLeft'],'#':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id',
1201
+ select:[682,452],
1206
1202
  },
1207
1203
  {
1208
- '*':[682,645,,,'expr','queryOnLeft'],'+':'*','-':'*','/':'*','<':'*','=':'*','>':'*','?':'*','!=':'*','<=':'*','<>':'*','==':'*','>=':'*',in:'*',is:'*',or:'*','||':'*',and:'*',not:'*',like:'*',between:'*',
1209
- ',':[684,686,,,'expr','queryOnLeft'],
1210
- limit:[684,456,,'queryOnLeft'],minus:'limit',order:'limit',union:'limit',except:'limit',intersect:'limit',
1211
- '':684
1204
+ '*':[680,643,,,'expr','queryOnLeft'],'+':'*','-':'*','/':'*','<':'*','=':'*','>':'*','?':'*','!=':'*','<=':'*','<>':'*','==':'*','>=':'*',in:'*',is:'*',or:'*','||':'*',and:'*',not:'*',like:'*',between:'*',
1205
+ ',':[682,684,,,'expr','queryOnLeft'],
1206
+ limit:[682,455,,'queryOnLeft'],minus:'limit',order:'limit',union:'limit',except:'limit',intersect:'limit',
1207
+ '':682
1212
1208
  },
1213
- {',':[684,686],'':684},
1214
- {',':[684,686],'':684},
1209
+ {',':[682,684],'':682},
1210
+ {',':[682,684],'':682},
1215
1211
  ['m',0,')'],
1216
1212
  'continueExpressionslist',
1217
- ['m',687,','],
1218
- {Id:688,'#':688,'(':688,'+':688,'-':688,':':688,'?':688,not:688,case:688,cast:688,null:688,true:688,false:688,Number:688,String:688,exists:688,QuotedLiteral:688},
1219
- {Id:[689,644],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id','':0},
1220
- {',':['c',688],'':0},
1213
+ ['m',685,','],
1214
+ {Id:686,'#':686,'(':686,'+':686,'-':686,':':686,'?':686,not:686,case:686,cast:686,null:686,true:686,false:686,Number:686,String:686,exists:686,QuotedLiteral:686},
1215
+ {Id:[687,642],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id','':0},
1216
+ {',':['c',686],'':0},
1221
1217
  'caseExpression',
1222
- ['mk',692,'case'],
1223
- {Id:[693,644],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id','':693},
1224
- {when:694},
1225
- {when:['ck',695],'':698},
1226
- [696,644],
1227
- ['mk',697,'then'],
1228
- [694,644],
1229
- {else:['ck',699],'':700},
1230
- [700,644],
1218
+ ['mk',690,'case'],
1219
+ {Id:[691,642],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id','':691},
1220
+ {when:692},
1221
+ {when:['ck',693],'':696},
1222
+ [694,642],
1223
+ ['mk',695,'then'],
1224
+ [692,642],
1225
+ {else:['ck',697],'':698},
1226
+ [698,642],
1231
1227
  ['mk',0,'end'],
1232
1228
  'castFunction',
1233
- ['mk',703,'cast'],
1234
- ['m',704,'('],
1235
- [705,644],
1236
- ['mk',706,'as'],
1237
- [707,405],
1229
+ ['mk',701,'cast'],
1230
+ ['m',702,'('],
1231
+ [703,642],
1232
+ ['mk',704,'as'],
1233
+ [705,404],
1238
1234
  ['m',0,')'],
1239
1235
  'argumentsAndFilter',
1240
- {'(':['c',710,,,,'prepareSpecialFunction'],'':729},
1241
- {Id:['ciA',711,,'isNamedArg'],'':722},
1236
+ {'(':['c',708,,,,'prepareSpecialFunction'],'':727},
1237
+ {Id:['ciA',709,,'isNamedArg'],'':720},
1242
1238
  {
1243
- ':':['c',712],
1244
- '=>':['c',717],
1239
+ ':':['c',710],
1240
+ '=>':['c',715],
1245
1241
  },
1246
- [713,644],
1247
- {',':['c',714],'':728},
1242
+ [711,642],
1243
+ {',':['c',712],'':726},
1248
1244
  {
1249
- Id:['ciA',715],
1250
- ')':728,
1245
+ Id:['ciA',713],
1246
+ ')':726,
1251
1247
  },
1252
- ['m',716,':'],
1253
- [713,644],
1254
- [718,644],
1255
- {',':['c',719],'':728},
1248
+ ['m',714,':'],
1249
+ [711,642],
1250
+ [716,642],
1251
+ {',':['c',717],'':726},
1256
1252
  {
1257
- Id:['ciA',720],
1258
- ')':728,
1253
+ Id:['ciA',718],
1254
+ ')':726,
1259
1255
  },
1260
- ['m',721,'=>'],
1261
- [718,644],
1262
- {Id:[723,731],'#':'Id','(':'Id','*':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',DeleteStarFromSet:'Id','':728},
1263
- {',':['c',724,,,,'nextFunctionArgument'],'':725},
1256
+ ['m',719,'=>'],
1257
+ [716,642],
1258
+ {Id:[721,729],'#':'Id','(':'Id','*':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',DeleteStarFromSet:'Id','':726},
1259
+ {',':['c',722,,,,'nextFunctionArgument'],'':723},
1264
1260
  {
1265
- Id:[723,731],'#':'Id','(':'Id','*':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id',DeleteStarFromSet:'Id',
1266
- ')':['g',725,1,'atRightParen'],order:')',
1261
+ Id:[721,729],'#':'Id','(':'Id','*':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id',DeleteStarFromSet:'Id',
1262
+ ')':['g',723,1,'atRightParen'],order:')',
1267
1263
  },
1268
- {order:['ck',726],'':728},
1269
- ['mk',727,'by'],
1270
- [728,751],
1271
- ['m',729,')'],
1272
- {'[':[0,537],'':0},
1264
+ {order:['ck',724],'':726},
1265
+ ['mk',725,'by'],
1266
+ [726,749],
1267
+ ['m',727,')'],
1268
+ {'[':[0,536],'':0},
1273
1269
  'funcExpression',
1274
1270
  {
1275
1271
  ' lookahead':'lGenericIntroOrExpr',
1276
- Id:[733,644],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1277
- GenericExpr:['ckA',733],
1278
- GenericIntro:['ckA',732],
1272
+ Id:[731,642],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1273
+ GenericExpr:['ckA',731],
1274
+ GenericIntro:['ckA',730],
1279
1275
  },
1280
- [733,644],
1276
+ [731,642],
1281
1277
  {
1282
1278
  ' lookahead':'lGenericSeparator',
1283
- GenericSeparator:['ckA',734],
1279
+ GenericSeparator:['ckA',732],
1284
1280
  '':0
1285
1281
  },
1286
1282
  {
1287
1283
  ' lookahead':'lGenericExpr',
1288
- Id:[733,644],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1289
- GenericExpr:['ckA',733],
1284
+ Id:[731,642],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1285
+ GenericExpr:['ckA',731],
1290
1286
  },
1291
1287
  'overClause',
1292
- ['m',737,'('],
1293
- {partition:['ck',738],'':740},
1294
- ['mk',739,'by'],
1295
- [740,747],
1296
- {order:['ck',741],'':743},
1297
- ['mk',742,'by'],
1298
- [743,751],
1299
- {rows:['ck',744],'':745},
1300
- [745,760],
1288
+ ['m',735,'('],
1289
+ {partition:['ck',736],'':738},
1290
+ ['mk',737,'by'],
1291
+ [738,745],
1292
+ {order:['ck',739],'':741},
1293
+ ['mk',740,'by'],
1294
+ [741,749],
1295
+ {rows:['ck',742],'':743},
1296
+ [743,758],
1301
1297
  ['m',0,')'],
1302
1298
  'expressionsAsXpr',
1303
- [748,644],
1304
- {',':['c',749],'':0},
1305
- [748,644],
1299
+ [746,642],
1300
+ {',':['c',747],'':0},
1301
+ [746,642],
1306
1302
  'orderByClauseAsXpr',
1307
- [752,755],
1308
- {',':['c',753],'':0},
1309
- [752,755],
1303
+ [750,753],
1304
+ {',':['c',751],'':0},
1305
+ [750,753],
1310
1306
  'orderBySpecAsXpr',
1311
- [756,644],
1312
- {asc:['ck',757],desc:'asc','':757},
1313
- {nulls:['ck',758],'':0},
1307
+ [754,642],
1308
+ {asc:['ck',755],desc:'asc','':755},
1309
+ {nulls:['ck',756],'':0},
1314
1310
  {last:['ck',0],first:'last'},
1315
1311
  'windowFrameClause',
1316
1312
  {
1317
- unbounded:['ck',761],
1318
- Number:['c',761],
1319
- current:['ck',762],
1320
- between:['ck',763],
1313
+ unbounded:['ck',759],
1314
+ Number:['c',759],
1315
+ current:['ck',760],
1316
+ between:['ck',761],
1321
1317
  },
1322
1318
  ['mk',0,'preceding'],
1323
1319
  ['mk',0,'row'],
1324
- [764,767],
1325
- ['mk',765,'and'],
1326
- [0,767],
1320
+ [762,765],
1321
+ ['mk',763,'and'],
1322
+ [0,765],
1327
1323
  'windowFrameBoundSpec',
1328
1324
  {
1329
- unbounded:['ck',768],
1330
- Number:['c',768],
1331
- current:['ck',770],
1325
+ unbounded:['ck',766],
1326
+ Number:['c',766],
1327
+ current:['ck',768],
1332
1328
  },
1333
1329
  {
1334
- following:['ck',769],
1335
- preceding:['ck',769],
1330
+ following:['ck',767],
1331
+ preceding:['ck',767],
1336
1332
  },
1337
- ['g',0,[]],
1333
+ ['g',0],
1338
1334
  ['mk',0,'row'],
1339
1335
  'literalValue',
1340
1336
  {
1341
- '#':['c',773],
1337
+ '#':['c',771],
1342
1338
  null:['ck',0],
1343
1339
  true:['ck',0],false:'true',
1344
1340
  Number:['c',0],
@@ -1347,102 +1343,102 @@ QuotedLiteral:['c',0],
1347
1343
  },
1348
1344
  ['miA',0],
1349
1345
  'annoAssignStd',
1350
- ['m',776,'@',,,'annoInSameLine'],
1346
+ ['m',774,'@',,,'annoInSameLine'],
1351
1347
  {
1352
- '(':[0,784],
1353
- Id:[0,789],
1348
+ '(':[0,782],
1349
+ Id:[0,787],
1354
1350
  },
1355
1351
  'annoAssignCol',
1356
- ['m',779,'@'],
1352
+ ['m',777,'@'],
1357
1353
  {
1358
- '(':[0,784],
1359
- Id:[0,789],
1354
+ '(':[0,782],
1355
+ Id:[0,787],
1360
1356
  },
1361
1357
  'annoAssignMid',
1362
- ['m',782,'@',,,'annoInSameLine'],
1358
+ ['m',780,'@',,,'annoInSameLine'],
1363
1359
  {
1364
- '(':[0,784],
1365
- Id:[0,793],
1360
+ '(':[0,782],
1361
+ Id:[0,791],
1366
1362
  },
1367
1363
  'annoAssignParen',
1368
- ['m',785,'(',,,'annoInSameLine'],
1369
- {Id:[786,789],'':787},
1364
+ ['m',783,'(',,,'annoInSameLine'],
1365
+ {Id:[784,787],'':785},
1370
1366
  {
1371
- ',':['c',785],
1372
- ')':787,
1367
+ ',':['c',783],
1368
+ ')':785,
1373
1369
  },
1374
1370
  ['m',0,')'],
1375
1371
  'annoAssignBase',
1376
- [790,793],
1377
- {':':['c',791,,'annoInSameLine'],'':0},
1378
- [0,815],
1372
+ [788,791],
1373
+ {':':['c',789,,'annoInSameLine'],'':0},
1374
+ [0,813],
1379
1375
  'annoNamePath',
1380
- ['miA',794],
1381
- {'.':['c',795],'':797},
1376
+ ['miA',792],
1377
+ {'.':['c',793],'':795},
1382
1378
  {
1383
- Id:['ciA',794],
1384
- '@':['c',796],
1379
+ Id:['ciA',792],
1380
+ '@':['c',794],
1385
1381
  },
1386
- ['miA',794],
1387
- {'#':[0,806,,'annoInSameLine'],'':0},
1382
+ ['miA',792],
1383
+ {'#':[0,804,,'annoInSameLine'],'':0},
1388
1384
  'annoPath',
1389
1385
  {
1390
- Id:['ciA',801],
1391
- '@':['c',800],
1386
+ Id:['ciA',799],
1387
+ '@':['c',798],
1392
1388
  },
1393
- ['miA',801],
1394
- {'.':['c',802],'':804},
1389
+ ['miA',799],
1390
+ {'.':['c',800],'':802},
1395
1391
  {
1396
- Id:['ciA',801],
1397
- '@':['c',803],
1392
+ Id:['ciA',799],
1393
+ '@':['c',801],
1398
1394
  },
1399
- ['miA',801],
1400
- {'#':[0,806],'':0},
1395
+ ['miA',799],
1396
+ {'#':[0,804],'':0},
1401
1397
  'annoPathVariant',
1402
- ['m',807,'#'],
1403
- ['miA',808],
1404
- {'.':['c',809],'':0},
1405
- ['miA',808],
1398
+ ['m',805,'#'],
1399
+ ['miA',806],
1400
+ {'.':['c',807],'':0},
1401
+ ['miA',806],
1406
1402
  'annoStructValue',
1407
- [812,799],
1408
- {':':['c',813],'':0},
1409
- [0,815],
1403
+ [810,797],
1404
+ {':':['c',811],'':0},
1405
+ [0,813],
1410
1406
  'annoValue',
1411
1407
  {
1412
- '#':[0,772],null:'#',true:'#',false:'#',Number:'#',String:'#',QuotedLiteral:'#',
1413
- '+':['c',816],'-':'+',
1414
- Id:[0,799],'@':'Id',
1415
- '{':['c',817],
1416
- '[':['c',821,,,,'arrayAnno'],
1417
- '(':['c',828],
1408
+ '#':[0,770],null:'#',true:'#',false:'#',Number:'#',String:'#',QuotedLiteral:'#',
1409
+ '+':['c',814],'-':'+',
1410
+ Id:[0,797],'@':'Id',
1411
+ '{':['c',815],
1412
+ '[':['c',819,,,,'arrayAnno'],
1413
+ '(':['c',826],
1418
1414
  },
1419
1415
  ['m',0,'Number'],
1420
- {Id:[818,811],'@':'Id','':819},
1416
+ {Id:[816,809],'@':'Id','':817},
1421
1417
  {
1422
- ',':['c',817],
1423
- '}':819,
1424
- Id:['g',817,,'fail'],'@':'Id',
1418
+ ',':['c',815],
1419
+ '}':817,
1420
+ Id:['g',815,,'fail'],'@':'Id',
1425
1421
  },
1426
- ['g',820],
1422
+ ['g',818],
1427
1423
  ['m',0,'}'],
1428
1424
  {
1429
- Id:[825,815],'#':'Id','(':'Id','+':'Id','-':'Id','@':'Id','[':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1430
- '...':['c',822,,'arrayAnno','ellipsis'],
1431
- '':826
1425
+ Id:[823,813],'#':'Id','(':'Id','+':'Id','-':'Id','@':'Id','[':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1426
+ '...':['c',820,,'arrayAnno','ellipsis'],
1427
+ '':824
1432
1428
  },
1433
1429
  {
1434
- up:['ck',823],
1435
- ',':825,']':825,
1430
+ up:['ck',821],
1431
+ ',':823,']':823,
1436
1432
  },
1437
- ['mk',824,'to'],
1438
- [825,815],
1433
+ ['mk',822,'to'],
1434
+ [823,813],
1439
1435
  {
1440
- ',':['c',821],
1441
- ']':826,
1436
+ ',':['c',819],
1437
+ ']':824,
1442
1438
  },
1443
- ['g',827],
1439
+ ['g',825],
1444
1440
  ['m',0,']'],
1445
- [829,642],
1441
+ [827,640],
1446
1442
  ['m',0,')'],
1447
1443
  ]
1448
1444
  class CdlParser extends AstBuildingParser{
@@ -1497,8 +1493,8 @@ case'@':this.annoAssignStd({art},10);continue
1497
1493
  default:this.s=11;continue
1498
1494
  }
1499
1495
  case 11:switch(this.lk()){
1500
- case'define':this.ck(12);continue
1501
1496
  case'type':case'view':case'event':case'action':case'aspect':case'entity':case'context':case'service':case'abstract':case'function':case'annotation':this.s=12;continue
1497
+ case'define':this.ck(12);continue
1502
1498
  case'extend':if(this.ec('extensionRestriction')&&this.ck(13)){ art.kind = 'extend'; }continue
1503
1499
  case'annotate':this.ec('extensionRestriction')&&this.ck(14);continue
1504
1500
  default:this.e();continue
@@ -1585,7 +1581,7 @@ for(;;)switch(this.s){
1585
1581
  case 31:if(this.simplePath(_={category:'global'},32)){extern=_.ref; $.proxy.extern = extern; $.outer.usings.push( $.proxy ); }continue
1586
1582
  case 32:switch(this.lk()){
1587
1583
  case'as':this.ck(33);continue
1588
- default:if(this.gr([])){ this.classifyImplicitName( 'Using' ); }continue
1584
+ default:if(this.gr()){ this.classifyImplicitName( 'Using' ); }continue
1589
1585
  }
1590
1586
  case 33:if(this.mi(0,'UsingAlias')){ $.proxy.name = this.identAst(); }continue
1591
1587
  default:
@@ -1615,7 +1611,7 @@ for(;;)switch(this.s){
1615
1611
  case 39:if(this.mi(40,$.category)){ $.ref.path = [ this.identAst() ]; }continue
1616
1612
  case 40:switch(this.l()){
1617
1613
  case'.':this.c(41);continue
1618
- default:this.gr([]);continue
1614
+ default:this.gr();continue
1619
1615
  }
1620
1616
  case 41:if(this.miA(40,$.category)){ $.ref.path.push( this.identAst() ); }continue
1621
1617
  default:
@@ -1753,8 +1749,8 @@ case'(':this.paramsList({art:$.art},77);continue
1753
1749
  default:this.s=77;continue
1754
1750
  }
1755
1751
  case 77:switch(this.lk()){
1756
- case':':if(this.c(78)){ $.art.includes ??= []; }continue
1757
1752
  case'{':this.s=81;continue
1753
+ case':':if(this.c(78)){ $.art.includes ??= []; }continue
1758
1754
  case'as':this.ck(82);continue
1759
1755
  default:this.e();continue
1760
1756
  }
@@ -1786,7 +1782,7 @@ case 85:switch(this.lk()){
1786
1782
  case'limit':case'order':this.orderByLimitOffset({query},86);continue
1787
1783
  default:this.s=86;continue
1788
1784
  }
1789
- case 86:this.s=87;{this.afterBrace('normal'); ; }continue
1785
+ case 86:this.s=87;{this.afterBrace('normal')}continue;
1790
1786
  case 87:switch(this.lk()){
1791
1787
  case'actions':this.actionsBlock({art:$.art},0);continue
1792
1788
  default:this.gr([';']);continue
@@ -2317,8 +2313,8 @@ case'@':this.annoAssignStd({art:$.art},234);continue
2317
2313
  default:this.s=235;continue
2318
2314
  }
2319
2315
  case 235:switch(this.lk()){
2320
- case'elements':if(this.ck(236))elements=this.lb();continue
2321
2316
  case'{':this.s=236;continue
2317
+ case'elements':if(this.ck(236))elements=this.lb();continue
2322
2318
  case'enum':this.enumSymbolsBlock({art:$.art},0);continue
2323
2319
  case'(':this.typeNamedArgsList({art:$.art},0);continue
2324
2320
  default:this.gr([';']);continue
@@ -2342,8 +2338,8 @@ default:this.s=241;continue
2342
2338
  }
2343
2339
  case 241:switch(this.lk()){
2344
2340
  case'Id':if(this.simplePath(_={category:'artref'},242)){incl=_.ref; $.art.includes = [ incl ]; }continue
2345
- case'elements':if(this.ckP(246,['{']))elements=this.lb();continue
2346
2341
  case'{':this.s=246;continue
2342
+ case'elements':if(this.ckP(246,['{']))elements=this.lb();continue
2347
2343
  case'actions':this.lP()&&this.actionsBlock({art:$.art},0);continue
2348
2344
  case'enum':this.lP()&&this.enumSymbolsBlock({art:$.art},0);continue
2349
2345
  case'(':this.typeNamedArgsList({art:$.art},0);continue
@@ -2449,8 +2445,8 @@ default:this.s=271;continue
2449
2445
  }
2450
2446
  case 271:switch(this.lk()){
2451
2447
  case'Id':if(this.simplePath(_={category:'artref'},272)){incl=_.ref; $.art.includes = [ incl ]; }continue
2452
- case'elements':if(this.ckP(275,['{']))elements=this.lb();continue
2453
2448
  case'{':this.s=275;continue
2449
+ case'elements':if(this.ckP(275,['{']))elements=this.lb();continue
2454
2450
  case'enum':this.lP()&&this.enumSymbolsBlock({art:$.art},0);continue
2455
2451
  case'(':this.typeNamedArgsList({art:$.art},0);continue
2456
2452
  default:this.gi(0,[';']);continue
@@ -2744,8 +2740,8 @@ case'@':this.annoAssignStd({art},343);continue
2744
2740
  default:this.s=344;continue
2745
2741
  }
2746
2742
  case 344:switch(this.lk()){
2747
- case'elements':if(this.ck(345))elements=this.lb();continue
2748
2743
  case'{':this.s=345;continue
2744
+ case'elements':if(this.ck(345))elements=this.lb();continue
2749
2745
  case'enum':this.enumSymbolsBlock({art},0);continue
2750
2746
  case'(':this.typeNamedArgsList({art},0);continue
2751
2747
  default:this.gr([';']);continue
@@ -2776,7 +2772,7 @@ case'Id':if(this.simplePath(_={category:'artref'},350)){ref=_.ref; $.art.type =
2776
2772
  default:this.ei();continue
2777
2773
  }
2778
2774
  case 350:switch(this.lk()){
2779
- case'(':case':':this.typeRefOptArgs({art:$.art},351,406);continue
2775
+ case'(':case':':this.typeRefOptArgs({art:$.art},351,405);continue
2780
2776
  case'@':case'not':case'enum':case'null':case'default':this.typeExpression({art:$.art},0,359);continue
2781
2777
  case',':case'{':this.s=352;{ $.art.includes = [ $.art.type ]; delete $.art.type; }continue
2782
2778
  default:if(this.gr([';'])){ this.docComment( $.art ); }continue
@@ -2818,7 +2814,7 @@ case'association':if(this.ckP(370,['[','to'])){assoc=this.lb();this.elementRestr
2818
2814
  case'composition':if(this.ckP(374,['[','of'])){assoc=this.lb();this.elementRestriction('calc')}continue;
2819
2815
  case'array':if(this.ckP(378,['of'])){this.elementRestriction('calc')}continue;
2820
2816
  case'many':if(this.ckP(379,['Id','{'])){this.elementRestriction('calc'); $.art.items = { location: this.lb().location }; }continue
2821
- case'{':if(this.elementsBlock({art:$.art},385)){this.elementRestriction('calc')}continue;
2817
+ case'{':if(this.elementsBlock({art:$.art},384)){this.elementRestriction('calc')}continue;
2822
2818
  default:this.ei();continue
2823
2819
  }
2824
2820
  case 359:this.s=360;{ this.docComment( $.art ); }continue
@@ -2837,7 +2833,7 @@ default:this.s=363;continue
2837
2833
  case 363:switch(this.lk()){
2838
2834
  case'enum':if(this.enumSymbolsBlock({art:$.art},364)){this.elementRestriction('anno')}continue;
2839
2835
  case'@':case'not':case'null':case'default':this.typeProperties({art:$.art},0);continue
2840
- default:this.gr([]);continue
2836
+ default:this.gr();continue
2841
2837
  }
2842
2838
  case 364:switch(this.lk()){
2843
2839
  case'not':case'null':this.gc(365,'elementRestriction','notNull')&&this.nullability({art:$.art},365);continue
@@ -2850,12 +2846,12 @@ default:this.s=367;continue
2850
2846
  case 366:if(this.expression(_={},367)){expr=_.expr; $.art.default = expr; }continue
2851
2847
  case 367:switch(this.lk()){
2852
2848
  case'not':case'null':this.gc(0,'elementRestriction','notNull')&&this.nullability({art:$.art},0);continue
2853
- default:this.gr([]);continue
2849
+ default:this.gr();continue
2854
2850
  }
2855
2851
  case 368:if(this.typeRefOptArgs({art:$.art},369)){ this.docComment( $.art ); }continue
2856
2852
  case 369:switch(this.lk()){
2857
2853
  case'@':case'not':case'null':case'default':this.typeProperties({art:$.art},0);continue
2858
- default:this.gr([]);continue
2854
+ default:this.gr();continue
2859
2855
  }
2860
2856
  case 370:switch(this.l()){
2861
2857
  case'[':this.cardinality({art:$.art},371);continue
@@ -2885,7 +2881,7 @@ case 378:if(this.mk(379,'of')){ $.art.items = { location: this.locationOfPrevTok
2885
2881
  case 379:switch(this.lk()){
2886
2882
  case'Id':this.typeRefOptArgs({art:$.art.items},380);continue
2887
2883
  case'type':this.lP()&&this.typeTypeOf({art:$.art.items},380);continue
2888
- case'{':this.elementsBlock({art:$.art.items},384);continue
2884
+ case'{':this.elementsBlock({art:$.art.items},383);continue
2889
2885
  default:this.ei();continue
2890
2886
  }
2891
2887
  case 380:switch(this.lk()){
@@ -2893,86 +2889,85 @@ case'not':case'null':this.gc(381,'elementRestriction','notNull')&&this.nullabili
2893
2889
  default:this.s=381;continue
2894
2890
  }
2895
2891
  case 381:switch(this.lk()){
2896
- case'enum':this.enumSymbolsBlock({art:$.art.items},384);continue
2892
+ case'enum':this.enumSymbolsBlock({art:$.art.items},383);continue
2897
2893
  default:this.s=382;{ this.docComment( $.art ); }continue
2898
2894
  }
2899
2895
  case 382:switch(this.l()){
2900
2896
  case'@':this.annoAssignStd({art:$.art},382);continue
2901
- default:this.s=383;continue
2897
+ default:this.gr();continue
2902
2898
  }
2903
- case 383:if(this.gr([])){ ; }continue
2904
- case 384:switch(this.lk()){
2899
+ case 383:switch(this.lk()){
2905
2900
  case'not':case'null':this.gc(0,'elementRestriction','notNull')&&this.nullability({art:$.art.items},0);continue
2906
- default:this.gr([]);continue
2901
+ default:this.gr();continue
2907
2902
  }
2908
- case 385:switch(this.lk()){
2903
+ case 384:switch(this.lk()){
2909
2904
  case'not':case'null':this.nullability({art:$.art},0);continue
2910
- default:this.gr([]);continue
2905
+ default:this.gr();continue
2911
2906
  }
2912
2907
  default:return this.exit_()
2913
2908
  }
2914
2909
  }
2915
2910
  typeAssocProperties($,$next){
2916
2911
  let target;let cond;let _
2917
- this.rule_(387,$next)
2912
+ this.rule_(386,$next)
2918
2913
  for(;;)switch(this.s){
2919
- case 387:if(this.simplePath(_={category:'artref'},388)){target=_.ref; this.setAssocAndComposition( $.art, $.assoc, $.card, target );
2914
+ case 386:if(this.simplePath(_={category:'artref'},387)){target=_.ref; this.setAssocAndComposition( $.art, $.assoc, $.card, target );
2920
2915
  this.docComment( $.art ); }continue
2921
- case 388:switch(this.l()){
2922
- case'@':this.annoAssignStd({art:$.art},388);continue
2923
- default:this.s=389;continue
2916
+ case 387:switch(this.l()){
2917
+ case'@':this.annoAssignStd({art:$.art},387);continue
2918
+ default:this.s=388;continue
2924
2919
  }
2925
- case 389:switch(this.lk()){
2926
- case'on':this.ck(390);continue
2927
- case'{':if(this.foreignKeysBlock({art:$.art},392)){ this.docComment( $.art ); }continue
2920
+ case 388:switch(this.lk()){
2921
+ case'on':this.ck(389);continue
2922
+ case'{':if(this.foreignKeysBlock({art:$.art},391)){ this.docComment( $.art ); }continue
2928
2923
  case'@':case'not':case'null':case'default':this.typeProperties({art:$.art},0);continue
2929
- default:this.gr([]);continue
2924
+ default:this.gr();continue
2930
2925
  }
2931
- case 390:if(this.condition(_={},391)){cond=_.expr; $.art.on = cond;
2926
+ case 389:if(this.condition(_={},390)){cond=_.expr; $.art.on = cond;
2932
2927
  this.docComment( $.art ); }continue
2933
- case 391:switch(this.l()){
2934
- case'@':this.annoAssignStd({art:$.art},391);continue
2935
- default:this.gr([]);continue
2928
+ case 390:switch(this.l()){
2929
+ case'@':this.annoAssignStd({art:$.art},390);continue
2930
+ default:this.gr();continue
2936
2931
  }
2937
- case 392:switch(this.lk()){
2932
+ case 391:switch(this.lk()){
2938
2933
  case'@':case'not':case'null':case'default':this.typeProperties({art:$.art},0);continue
2939
- default:this.gr([]);continue
2934
+ default:this.gr();continue
2940
2935
  }
2941
2936
  default:return this.exit_()
2942
2937
  }
2943
2938
  }
2944
2939
  typeProperties($,$next){
2945
2940
  let expr;let _
2946
- this.rule_(394,$next)
2941
+ this.rule_(393,$next)
2947
2942
  for(;;)switch(this.s){
2948
- case 394:switch(this.lk()){
2949
- case'@':this.annoAssignStd({art:$.art},394);continue
2950
- case'not':case'null':if(this.gc(0,'elementRestriction','notNull')&&this.nullability({art:$.art},394)){ this.docComment( $.art ); }continue
2951
- case'default':this.gc(0,'elementRestriction','default')&&this.ck(395);continue
2952
- default:this.gr([]);continue
2943
+ case 393:switch(this.lk()){
2944
+ case'@':this.annoAssignStd({art:$.art},393);continue
2945
+ case'not':case'null':if(this.gc(0,'elementRestriction','notNull')&&this.nullability({art:$.art},393)){ this.docComment( $.art ); }continue
2946
+ case'default':this.gc(0,'elementRestriction','default')&&this.ck(394);continue
2947
+ default:this.gr();continue
2953
2948
  }
2954
- case 395:if(this.expression(_={},394)){expr=_.expr; $.art.default = expr; this.docComment( $.art ); }continue
2949
+ case 394:if(this.expression(_={},393)){expr=_.expr; $.art.default = expr; this.docComment( $.art ); }continue
2955
2950
  default:return this.exit_()
2956
2951
  }
2957
2952
  }
2958
2953
  typeTypeOf($,$next){
2959
2954
  let location
2960
2955
  let type;let _
2961
- this.rule_(397,$next)
2956
+ this.rule_(396,$next)
2962
2957
  for(;;)switch(this.s){
2963
- case 397:this.mk(398,'type');continue
2964
- case 398:if(this.mk(399,'of')){ location = this.locationOfPrevTokens( 2 ); }continue
2965
- case 399:if(this.simplePath(_={category:'ref'},400)){type=_.ref; $.art.type = type; }continue
2966
- case 400:switch(this.l()){
2967
- case':':if(this.c(401)){ type.scope = type.path.length; }continue
2968
- default:if(this.gr(['@'])){ type.scope = 'typeOf'; type.path.unshift( { id: 'type of', location } ); }continue
2969
- }
2970
- case 401:if(this.miA(402,'ref')){ type.path.push( this.identAst() ); }continue
2971
- case 402:switch(this.l()){
2972
- case'.':this.c(403);continue
2973
- default:this.gr(['@']);continue
2974
- }
2975
- case 403:if(this.miA(402,'ref')){ type.path.push( this.identAst() ); }continue
2958
+ case 396:this.mk(397,'type');continue
2959
+ case 397:if(this.mk(398,'of')){ location = this.locationOfPrevTokens( 2 ); }continue
2960
+ case 398:if(this.simplePath(_={category:'ref'},399)){type=_.ref; $.art.type = type; }continue
2961
+ case 399:switch(this.l()){
2962
+ case':':if(this.c(400)){ type.scope = type.path.length; }continue
2963
+ default:if(this.gr(['@','not','enum','null'])){ type.scope = 'typeOf'; type.path.unshift( { id: 'type of', location } ); }continue
2964
+ }
2965
+ case 400:if(this.miA(401,'ref')){ type.path.push( this.identAst() ); }continue
2966
+ case 401:switch(this.l()){
2967
+ case'.':this.c(402);continue
2968
+ default:this.gr(['@','not','enum','null']);continue
2969
+ }
2970
+ case 402:if(this.miA(401,'ref')){ type.path.push( this.identAst() ); }continue
2976
2971
  case 0:
2977
2972
  this.attachLocation( $.art.type )
2978
2973
  default:return this.exit_()
@@ -2981,75 +2976,75 @@ default:return this.exit_()
2981
2976
  typeRefOptArgs($,$next,$startState){
2982
2977
  let type=$.art.type
2983
2978
  let open;let tok;let _
2984
- this.rule_($startState??405,$next)
2979
+ this.rule_($startState??404,$next)
2985
2980
  for(;;)switch(this.s){
2986
- case 405:if(this.simplePath(_={category:'artref'},406)){type=_.ref; $.art.type = type; }continue
2987
- case 406:switch(this.l()){
2988
- case':':if(this.c(407)){ type.scope = type.path.length; }continue
2989
- case'(':if(this.c(411))open=this.lb();continue
2990
- default:this.gr([]);continue
2991
- }
2992
- case 407:if(this.miA(408,'ref')){ type.path.push( this.identAst() ); }continue
2993
- case 408:switch(this.l()){
2994
- case'.':this.c(409);continue
2995
- default:this.s=410;continue
2996
- }
2997
- case 409:if(this.miA(408,'ref')){ type.path.push( this.identAst() ); }continue
2998
- case 410:if(this.gr([])){ this.attachLocation( $.art.type ); }continue
2999
- case 411:switch(this.lk()){
3000
- case'Number':if(this.c(412)){ $.art.$typeArgs = this.createArray( open );
2981
+ case 404:if(this.simplePath(_={category:'artref'},405)){type=_.ref; $.art.type = type; }continue
2982
+ case 405:switch(this.l()){
2983
+ case':':if(this.c(406)){ type.scope = type.path.length; }continue
2984
+ case'(':if(this.c(410))open=this.lb();continue
2985
+ default:this.gr();continue
2986
+ }
2987
+ case 406:if(this.miA(407,'ref')){ type.path.push( this.identAst() ); }continue
2988
+ case 407:switch(this.l()){
2989
+ case'.':this.c(408);continue
2990
+ default:this.s=409;continue
2991
+ }
2992
+ case 408:if(this.miA(407,'ref')){ type.path.push( this.identAst() ); }continue
2993
+ case 409:if(this.gr()){ this.attachLocation( $.art.type ); }continue
2994
+ case 410:switch(this.lk()){
2995
+ case'Number':if(this.c(411)){ $.art.$typeArgs = this.createArray( open );
3001
2996
  $.art.$typeArgs.push( this.unsignedIntegerLiteral() ); }continue
3002
- case'Id':this.s=415;{ $.art.$typeArgs = this.createDict( open ); }continue
2997
+ case'Id':this.s=414;{ $.art.$typeArgs = this.createDict( open ); }continue
3003
2998
  default:this.ei();continue
3004
2999
  }
3005
- case 412:switch(this.l()){
3006
- case',':this.c(413);continue
3007
- default:this.s=414;continue
3000
+ case 411:switch(this.l()){
3001
+ case',':this.c(412);continue
3002
+ default:this.s=413;continue
3008
3003
  }
3009
- case 413:switch(this.lk()){
3010
- case'Number':if(this.c(412)){ $.art.$typeArgs.push( this.unsignedIntegerLiteral() ); }continue
3011
- case'floating':case'variable':if(this.ck(412)){tok=this.lb(); $.art.$typeArgs.push( { literal: 'string', val: tok.keyword, location: tok.location } ); }continue
3012
- case')':this.s=414;continue
3004
+ case 412:switch(this.lk()){
3005
+ case'Number':if(this.c(411)){ $.art.$typeArgs.push( this.unsignedIntegerLiteral() ); }continue
3006
+ case'floating':case'variable':if(this.ck(411)){tok=this.lb(); $.art.$typeArgs.push( { literal: 'string', val: tok.keyword, location: tok.location } ); }continue
3007
+ case')':this.s=413;continue
3013
3008
  default:this.e();continue
3014
3009
  }
3015
- case 414:this.s=417;{ this.checkTypeArgs( $.art ); }continue
3016
- case 415:switch(this.l()){
3017
- case'Id':this.typeNamedArg({art:$.art},416);continue
3018
- default:this.s=417;continue
3010
+ case 413:this.s=416;{ this.checkTypeArgs( $.art ); }continue
3011
+ case 414:switch(this.l()){
3012
+ case'Id':this.typeNamedArg({art:$.art},415);continue
3013
+ default:this.s=416;continue
3019
3014
  }
3020
- case 416:switch(this.l()){
3021
- case',':this.c(415);continue
3022
- case')':this.s=417;continue
3015
+ case 415:switch(this.l()){
3016
+ case',':this.c(414);continue
3017
+ case')':this.s=416;continue
3023
3018
  default:this.e();continue
3024
3019
  }
3025
- case 417:if(this.m(0,')')){ if ($.art.$typeArgs) this.finalizeDictOrArray( $.art.$typeArgs ); }continue
3020
+ case 416:if(this.m(0,')')){ if ($.art.$typeArgs) this.finalizeDictOrArray( $.art.$typeArgs ); }continue
3026
3021
  default:return this.exit_()
3027
3022
  }
3028
3023
  }
3029
3024
  typeNamedArgsList($,$next){
3030
- this.rule_(419,$next)
3025
+ this.rule_(418,$next)
3031
3026
  for(;;)switch(this.s){
3032
- case 419:if(this.m(420,'(')){ $.art.$typeArgs = this.createDict(); }continue
3033
- case 420:switch(this.l()){
3034
- case'Id':this.typeNamedArg({art:$.art},421);continue
3035
- default:this.s=422;continue
3027
+ case 418:if(this.m(419,'(')){ $.art.$typeArgs = this.createDict(); }continue
3028
+ case 419:switch(this.l()){
3029
+ case'Id':this.typeNamedArg({art:$.art},420);continue
3030
+ default:this.s=421;continue
3036
3031
  }
3037
- case 421:switch(this.l()){
3038
- case',':this.c(420);continue
3039
- case')':this.s=422;continue
3032
+ case 420:switch(this.l()){
3033
+ case',':this.c(419);continue
3034
+ case')':this.s=421;continue
3040
3035
  default:this.e();continue
3041
3036
  }
3042
- case 422:if(this.m(0,')')){ this.finalizeDictOrArray( $.art.$typeArgs ); }continue
3037
+ case 421:if(this.m(0,')')){ this.finalizeDictOrArray( $.art.$typeArgs ); }continue
3043
3038
  default:return this.exit_()
3044
3039
  }
3045
3040
  }
3046
3041
  typeNamedArg($,$next){
3047
3042
  let name;let tok
3048
- this.rule_(424,$next)
3043
+ this.rule_(423,$next)
3049
3044
  for(;;)switch(this.s){
3050
- case 424:if(this.mi(425,'typeparamname'))name=this.lb();continue
3051
- case 425:this.m(426,':');continue
3052
- case 426:switch(this.lk()){
3045
+ case 423:if(this.mi(424,'typeparamname'))name=this.lb();continue
3046
+ case 424:this.m(425,':');continue
3047
+ case 425:switch(this.lk()){
3053
3048
  case'Number':if(this.c(0)){ this.setTypeFacet( $.art, name, this.unsignedIntegerLiteral() ); }continue
3054
3049
  case'floating':case'variable':if(this.ck(0)){tok=this.lb(); this.setTypeFacet( $.art, name, { literal: 'string', val: tok.keyword, location: tok.location } ); }continue
3055
3050
  default:this.e();continue
@@ -3059,46 +3054,45 @@ default:return this.exit_()
3059
3054
  }
3060
3055
  cardinality($,$next){
3061
3056
  let card={}
3062
- this.rule_(428,$next)
3057
+ this.rule_(427,$next)
3063
3058
  for(;;)switch(this.s){
3064
- case 428:this.m(429,'[');continue
3065
- case 429:switch(this.l()){
3066
- case'*':if(this.c(430)){ card.targetMax = this.valueWithLocation(); }continue
3067
- case'Number':if(this.c(432)){ card.targetMax = this.unsignedIntegerLiteral(); }continue
3068
- case']':this.s=434;{ card.targetMax = this.valueWithLocation( '*' ); }continue
3059
+ case 427:this.m(428,'[');continue
3060
+ case 428:switch(this.l()){
3061
+ case'*':if(this.c(429)){ card.targetMax = this.valueWithLocation(); }continue
3062
+ case'Number':if(this.c(431)){ card.targetMax = this.unsignedIntegerLiteral(); }continue
3063
+ case']':this.s=433;{ card.targetMax = this.valueWithLocation( '*' ); }continue
3069
3064
  default:this.e();continue
3070
3065
  }
3071
- case 430:switch(this.l()){
3072
- case',':this.c(431);continue
3073
- default:this.s=434;continue
3066
+ case 429:switch(this.l()){
3067
+ case',':this.c(430);continue
3068
+ default:this.s=433;continue
3074
3069
  }
3075
- case 431:this.targetCardinality({card,atAlt:false},434);continue
3076
- case 432:switch(this.l()){
3077
- case',':this.c(433);continue
3078
- case'..':this.targetCardinality({card,atAlt:true},434,437);continue
3079
- default:this.s=434;continue
3070
+ case 430:this.targetCardinality({card,atAlt:false},433);continue
3071
+ case 431:switch(this.l()){
3072
+ case',':this.c(432);continue
3073
+ case'..':this.targetCardinality({card,atAlt:false},433,436);continue
3074
+ default:this.s=433;continue
3080
3075
  }
3081
- case 433:this.targetCardinality({card,atAlt:false},434);continue
3082
- case 434:this.m(0,']');continue
3076
+ case 432:this.targetCardinality({card,atAlt:false},433);continue
3077
+ case 433:this.m(0,']');continue
3083
3078
  default:
3084
3079
  $.art.cardinality = this.attachLocation(card)
3085
3080
  return this.exit_()
3086
3081
  }
3087
3082
  }
3088
3083
  targetCardinality($,$next,$startState){
3089
- this.rule_($startState??436,$next)
3090
- { if (!$.atAlt) $.card.sourceMax = $.card.targetMax; }
3084
+ this.rule_($startState??435,$next)
3091
3085
  for(;;)switch(this.s){
3092
- case 436:switch(this.l()){
3093
- case'*':if(this.c(0)){ $.card.targetMax = this.valueWithLocation(); }continue
3094
- case'Number':if(this.c(437)){ $.card.targetMax = this.unsignedIntegerLiteral(); }continue
3086
+ case 435:switch(this.l()){
3087
+ case'*':if(this.c(0)){ $.card.sourceMax = $.card.targetMax; $.card.targetMax = this.valueWithLocation(); }continue
3088
+ case'Number':if(this.c(436)){ $.card.sourceMax = $.card.targetMax; $.card.targetMax = this.unsignedIntegerLiteral(); }continue
3095
3089
  default:this.e();continue
3096
3090
  }
3097
- case 437:switch(this.l()){
3098
- case'..':if(this.c(438)){ $.card.targetMin = $.card.targetMax; }continue
3091
+ case 436:switch(this.l()){
3092
+ case'..':if(this.c(437)){ $.card.targetMin = $.card.targetMax; }continue
3099
3093
  default:this.gr([']']);continue
3100
3094
  }
3101
- case 438:switch(this.l()){
3095
+ case 437:switch(this.l()){
3102
3096
  case'*':if(this.c(0)){ $.card.targetMax = this.valueWithLocation(); }continue
3103
3097
  case'Number':if(this.c(0)){ $.card.targetMax = this.unsignedIntegerLiteral(); }continue
3104
3098
  default:this.e();continue
@@ -3107,44 +3101,44 @@ default:return this.exit_()
3107
3101
  }
3108
3102
  }
3109
3103
  nullability($,$next){
3110
- this.rule_(440,$next)
3104
+ this.rule_(439,$next)
3111
3105
  for(;;)switch(this.s){
3112
- case 440:switch(this.lk()){
3106
+ case 439:switch(this.lk()){
3113
3107
  case'null':if(this.ck(0)){ this.setNullability( $.art, false ); }continue
3114
- case'not':this.ck(441);continue
3108
+ case'not':this.ck(440);continue
3115
3109
  default:this.e();continue
3116
3110
  }
3117
- case 441:if(this.mk(0,'null')){ this.setNullability( $.art, true, this.locationOfPrevTokens( 2 ) ); }continue
3111
+ case 440:if(this.mk(0,'null')){ this.setNullability( $.art, true, this.locationOfPrevTokens( 2 ) ); }continue
3118
3112
  default:return this.exit_()
3119
3113
  }
3120
3114
  }
3121
3115
  queryEOF($,$next){
3122
3116
  $.query??=undefined
3123
3117
  let _
3124
- this.rule_(443,$next)
3118
+ this.rule_(442,$next)
3125
3119
  for(;;)switch(this.s){
3126
- case 443:if(this.queryExpression(_={},444))$.query=_.expr;continue
3127
- case 444:switch(this.l()){
3128
- case';':this.c(445);continue
3129
- default:this.s=445;continue
3120
+ case 442:if(this.queryExpression(_={},443))$.query=_.expr;continue
3121
+ case 443:switch(this.l()){
3122
+ case';':this.c(444);continue
3123
+ default:this.s=444;continue
3130
3124
  }
3131
- case 445:this.m(0,'EOF');continue
3125
+ case 444:this.m(0,'EOF');continue
3132
3126
  default:return this.exit_()
3133
3127
  }
3134
3128
  }
3135
3129
  projectionSpec($,$next){
3136
3130
  $.query??={}
3137
3131
  let tab;let _
3138
- this.rule_(447,$next)
3132
+ this.rule_(446,$next)
3139
3133
  for(;;)switch(this.s){
3140
- case 447:if(this.mk(448,'projection')){ $.query = { op: this.valueWithLocation( 'SELECT' ) }; }continue
3141
- case 448:this.mk(449,'on');continue
3142
- case 449:if(this.fromRefWithOptAlias(_={},450)){tab=_.expr; $.query.from = tab; }continue
3143
- case 450:switch(this.l()){
3144
- case'{':this.selectItemsList({query:$.query,start:undefined},451);continue
3145
- default:this.s=451;continue
3146
- }
3147
- case 451:switch(this.lk()){
3134
+ case 446:if(this.mk(447,'projection')){ $.query = { op: this.valueWithLocation( 'SELECT' ) }; }continue
3135
+ case 447:this.mk(448,'on');continue
3136
+ case 448:if(this.fromRefWithOptAlias(_={},449)){tab=_.expr; $.query.from = tab; }continue
3137
+ case 449:switch(this.l()){
3138
+ case'{':this.selectItemsList({query:$.query,start:undefined},450);continue
3139
+ default:this.s=450;continue
3140
+ }
3141
+ case 450:switch(this.lk()){
3148
3142
  case'excluding':this.excludingClause({query:$.query},0);continue
3149
3143
  default:this.gr([';']);continue
3150
3144
  }
@@ -3157,35 +3151,35 @@ queryExpression($,$next,$startState){
3157
3151
  $.expr??={}
3158
3152
  let op;let quantifier
3159
3153
  let query;let _
3160
- this.rule_($startState??453,$next)
3154
+ this.rule_($startState??452,$next)
3161
3155
  for(;;)switch(this.s){
3162
- case 453:switch(this.l()){
3163
- case'(':this.c(454);continue
3164
- case'Id':if(this.selectQuery(_={},456)){$.expr=_.query;this.orderByLimitRestriction()}continue;
3156
+ case 452:switch(this.l()){
3157
+ case'(':this.c(453);continue
3158
+ case'Id':if(this.selectQuery(_={},455)){$.expr=_.query;this.orderByLimitRestriction()}continue;
3165
3159
  default:this.e();continue
3166
3160
  }
3167
- case 454:this.queryExpression($,455);continue
3168
- case 455:if(this.m(456,')')){ this.surroundByParens( $.expr ); }continue
3161
+ case 453:this.queryExpression($,454);continue
3162
+ case 454:if(this.m(455,')')){ this.surroundByParens( $.expr ); }continue
3163
+ case 455:switch(this.lk()){
3164
+ case'intersect':if(this.gc(459,'precLeft_',4)&&this.ck(456)){ op = this.valueWithLocation(); }continue
3165
+ case'minus':case'except':if(this.gc(459,'precLeft_',2)&&this.ck(456)){ op = this.valueWithLocation(); }continue
3166
+ case'union':if(this.gc(459,'precLeft_',2)&&this.ck(457)){ op = this.valueWithLocation(); }continue
3167
+ default:this.s=459;continue
3168
+ }
3169
3169
  case 456:switch(this.lk()){
3170
- case'intersect':if(this.gc(460,'precLeft_',4)&&this.ck(457)){ op = this.valueWithLocation(); }continue
3171
- case'minus':case'except':if(this.gc(460,'precLeft_',2)&&this.ck(457)){ op = this.valueWithLocation(); }continue
3172
- case'union':if(this.gc(460,'precLeft_',2)&&this.ck(458)){ op = this.valueWithLocation(); }continue
3173
- default:this.s=460;continue
3170
+ case'distinct':if(this.ck(458)){ quantifier = this.valueWithLocation(); }continue
3171
+ default:this.s=458;continue
3174
3172
  }
3175
3173
  case 457:switch(this.lk()){
3176
- case'distinct':if(this.ck(459)){ quantifier = this.valueWithLocation(); }continue
3177
- default:this.s=459;continue
3178
- }
3179
- case 458:switch(this.lk()){
3180
- case'all':case'distinct':if(this.ck(459)){ quantifier = this.valueWithLocation(); }continue
3181
- default:this.s=459;continue
3174
+ case'all':case'distinct':if(this.ck(458)){ quantifier = this.valueWithLocation(); }continue
3175
+ default:this.s=458;continue
3182
3176
  }
3183
- case 459:if(this.queryExpression(_={},456)){query=_.expr;this.orderByLimitRestriction(); if ($.expr.$parens || op.val !== $.expr.op?.val || quantifier?.val !== $.expr.quantifier?.val) $.expr = { op, args: [$.expr], quantifier, location: { ...$.expr.location } };
3177
+ case 458:if(this.queryExpression(_={},455)){query=_.expr;this.orderByLimitRestriction(); if ($.expr.$parens || op.val !== $.expr.op?.val || quantifier?.val !== $.expr.quantifier?.val) $.expr = { op, args: [$.expr], quantifier, location: { ...$.expr.location } };
3184
3178
  quantifier = undefined;
3185
3179
  $.expr.args.push( query ); this.attachLocation( $.expr ); }continue
3186
- case 460:switch(this.lk()){
3180
+ case 459:switch(this.lk()){
3187
3181
  case'limit':case'order':this.gc(0,'orderByLimitRestriction')&&this.orderByLimitOffset({query:$.expr},0);continue
3188
- default:this.gr([]);continue
3182
+ default:this.gr();continue
3189
3183
  }
3190
3184
  default:
3191
3185
  this.attachLocation( $.expr )
@@ -3194,62 +3188,62 @@ return this.exit_()
3194
3188
  }
3195
3189
  selectQuery($,$next){
3196
3190
  $.query??={}
3197
- this.rule_(462,$next)
3191
+ this.rule_(461,$next)
3198
3192
  for(;;)switch(this.s){
3199
- case 462:if(this.mk(463,'select')){ $.query = { op: this.valueWithLocation( 'SELECT' ) }; }continue
3200
- case 463:switch(this.lk()){
3201
- case'from':this.ck(464);continue
3202
- case'all':case'distinct':if(this.ck(474)){ $.query.quantifier = this.valueWithLocation(); }continue
3203
- case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'@':case'{':case'key':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':this.s=474;continue
3193
+ case 461:if(this.mk(462,'select')){ $.query = { op: this.valueWithLocation( 'SELECT' ) }; }continue
3194
+ case 462:switch(this.lk()){
3195
+ case'from':this.ck(463);continue
3196
+ case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'@':case'{':case'key':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':this.s=473;continue
3197
+ case'all':case'distinct':if(this.ck(473)){ $.query.quantifier = this.valueWithLocation(); }continue
3204
3198
  default:this.ei();continue
3205
3199
  }
3206
- case 464:this.querySource({query:$.query},465);continue
3207
- case 465:switch(this.lk()){
3208
- case'mixin':this.ck(466);continue
3209
- default:this.s=471;continue
3200
+ case 463:this.querySource({query:$.query},464);continue
3201
+ case 464:switch(this.lk()){
3202
+ case'mixin':this.ck(465);continue
3203
+ default:this.s=470;continue
3210
3204
  }
3211
- case 466:if(this.m(467,'{')){ $.query.mixin = this.createDict(); }continue
3212
- case 467:switch(this.l()){
3213
- case'Id':this.mixinElementDef({outer:$.query},468);continue
3214
- default:this.s=469;continue
3205
+ case 465:if(this.m(466,'{')){ $.query.mixin = this.createDict(); }continue
3206
+ case 466:switch(this.l()){
3207
+ case'Id':this.mixinElementDef({outer:$.query},467);continue
3208
+ default:this.s=468;continue
3215
3209
  }
3216
- case 468:switch(this.l()){
3217
- case';':this.c(467);continue
3218
- case'}':this.s=469;continue
3210
+ case 467:switch(this.l()){
3211
+ case';':this.c(466);continue
3212
+ case'}':this.s=468;continue
3219
3213
  default:this.e();continue
3220
3214
  }
3221
- case 469:if(this.m(470,'}')){ this.finalizeDictOrArray( $.query.mixin ); }continue
3222
- case 470:this.mk(471,'into');continue
3223
- case 471:switch(this.lk()){
3224
- case'all':case'distinct':if(this.ck(472)){ $.query.quantifier = this.valueWithLocation(); }continue
3215
+ case 468:if(this.m(469,'}')){ this.finalizeDictOrArray( $.query.mixin ); }continue
3216
+ case 469:this.mk(470,'into');continue
3217
+ case 470:switch(this.lk()){
3218
+ case'all':case'distinct':if(this.ck(471)){ $.query.quantifier = this.valueWithLocation(); }continue
3219
+ default:this.s=471;continue
3220
+ }
3221
+ case 471:switch(this.l()){
3222
+ case'{':this.selectItemsList({query:$.query,start:undefined},472);continue
3225
3223
  default:this.s=472;continue
3226
3224
  }
3227
- case 472:switch(this.l()){
3228
- case'{':this.selectItemsList({query:$.query,start:undefined},473);continue
3229
- default:this.s=473;continue
3225
+ case 472:switch(this.lk()){
3226
+ case'excluding':this.excludingClause({query:$.query},479);continue
3227
+ default:this.s=479;continue
3230
3228
  }
3231
- case 473:switch(this.lk()){
3232
- case'excluding':this.excludingClause({query:$.query},480);continue
3233
- default:this.s=480;continue
3229
+ case 473:this.s=474;{this.inSelectItem('sqlStyle')}continue;
3230
+ case 474:switch(this.l()){
3231
+ case'*':if(this.c(475)){ $.query.columns = [ this.valueWithLocation() ]; }continue
3232
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:($.query.columns = [])},475);continue
3233
+ default:this.e();continue
3234
3234
  }
3235
- case 474:this.s=475;{this.inSelectItem('sqlStyle'); ; }continue
3236
3235
  case 475:switch(this.l()){
3237
- case'*':if(this.c(476)){ $.query.columns = [ this.valueWithLocation() ]; }continue
3238
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:($.query.columns = [])},476);continue
3239
- default:this.e();continue
3236
+ case',':this.c(476);continue
3237
+ default:this.s=477;continue
3240
3238
  }
3241
3239
  case 476:switch(this.l()){
3242
- case',':this.c(477);continue
3243
- default:this.s=478;continue
3244
- }
3245
- case 477:switch(this.l()){
3246
- case'*':if(this.c(476)){ $.query.columns.push( this.valueWithLocation() ); }continue
3247
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query.columns},476);continue
3240
+ case'*':if(this.c(475)){ $.query.columns.push( this.valueWithLocation() ); }continue
3241
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query.columns},475);continue
3248
3242
  default:this.e();continue
3249
3243
  }
3250
- case 478:this.mk(479,'from');continue
3251
- case 479:this.querySource({query:$.query},480);continue
3252
- case 480:switch(this.lk()){
3244
+ case 477:this.mk(478,'from');continue
3245
+ case 478:this.querySource({query:$.query},479);continue
3246
+ case 479:switch(this.lk()){
3253
3247
  case'group':case'where':case'having':this.whereGroupByHaving({query:$.query},0);continue
3254
3248
  default:this.gr(['limit','minus','order','union','except','intersect']);continue
3255
3249
  }
@@ -3260,19 +3254,19 @@ return this.exit_()
3260
3254
  }
3261
3255
  querySource($,$next){
3262
3256
  let tab;let _
3263
- this.rule_(482,$next)
3257
+ this.rule_(481,$next)
3264
3258
  for(;;)switch(this.s){
3265
- case 482:if(this.tableExpression(_={},483)){tab=_.expr; $.query.from = tab; }continue
3266
- case 483:switch(this.l()){
3267
- case',':this.s=484;{ const { location } = this.la();
3259
+ case 481:if(this.tableExpression(_={},482)){tab=_.expr; $.query.from = tab; }continue
3260
+ case 482:switch(this.l()){
3261
+ case',':this.s=483;{ const { location } = this.la();
3268
3262
  $.query.from = { op: { val: 'join', location }, join: { val: 'cross', location }, args: [tab] }; }continue
3269
3263
  default:this.gr(['group','limit','minus','order','union','where','except','having','intersect']);continue
3270
3264
  }
3271
- case 484:switch(this.l()){
3272
- case',':this.c(485);continue
3265
+ case 483:switch(this.l()){
3266
+ case',':this.c(484);continue
3273
3267
  default:this.gr(['group','limit','minus','order','union','where','except','having','intersect']);continue
3274
3268
  }
3275
- case 485:if(this.tableExpression(_={},484)){tab=_.expr; $.query.from.args.push( tab ); }continue
3269
+ case 484:if(this.tableExpression(_={},483)){tab=_.expr; $.query.from.args.push( tab ); }continue
3276
3270
  case 0:
3277
3271
  this.attachLocation($.query.from)
3278
3272
  default:return this.exit_()
@@ -3281,91 +3275,91 @@ default:return this.exit_()
3281
3275
  tableExpression($,$next,$startState){
3282
3276
  $.expr??={}
3283
3277
  let join;let tab;let card;let cond;let _
3284
- this.rule_($startState??487,$next)
3278
+ this.rule_($startState??486,$next)
3285
3279
  for(;;)switch(this.s){
3286
- case 487:switch(this.l()){
3287
- case'(':this.tableOrQueryParens($,488);continue
3288
- case'Id':this.fromRefWithOptAlias($,489);continue
3280
+ case 486:switch(this.l()){
3281
+ case'(':this.tableOrQueryParens($,487);continue
3282
+ case'Id':this.fromRefWithOptAlias($,488);continue
3289
3283
  default:this.e();continue
3290
3284
  }
3291
- case 488:this.s=489;{ $.expr = this.taggedIfQuery( $.expr ); }continue
3292
- case 489:switch(this.lk()){
3293
- case'cross':if(this.ck(490))join=this.lb();continue
3294
- case'inner':if(this.ck(493))join=this.lb();continue
3295
- case'full':case'left':case'right':if(this.ck(492))join=this.lb();continue
3296
- case'join':if(this.ck(495)){ join = undefined; }continue
3297
- default:this.gr([]);continue
3298
- }
3299
- case 490:if(this.mk(491,'join')){ if ($.expr?.join?.val !== 'cross' || $.expr.$parens) $.expr = { op: this.valueWithLocation(), join: this.valueWithLocation( undefined, join ), args: [ $.expr ] }; }continue
3300
- case 491:switch(this.l()){
3301
- case'(':if(this.tableOrQueryParens(_={},489)){tab=_.expr; const r = this.taggedIfQuery( tab ); if (r) $.expr.args.push( r );
3285
+ case 487:this.s=488;{ $.expr = this.taggedIfQuery( $.expr ); }continue
3286
+ case 488:switch(this.lk()){
3287
+ case'cross':if(this.ck(489))join=this.lb();continue
3288
+ case'inner':if(this.ck(492))join=this.lb();continue
3289
+ case'full':case'left':case'right':if(this.ck(491))join=this.lb();continue
3290
+ case'join':if(this.ck(494)){ join = undefined; }continue
3291
+ default:this.gr();continue
3292
+ }
3293
+ case 489:if(this.mk(490,'join')){ if ($.expr?.join?.val !== 'cross' || $.expr.$parens) $.expr = { op: this.valueWithLocation(), join: this.valueWithLocation( undefined, join ), args: [ $.expr ] }; }continue
3294
+ case 490:switch(this.l()){
3295
+ case'(':if(this.tableOrQueryParens(_={},488)){tab=_.expr; const r = this.taggedIfQuery( tab ); if (r) $.expr.args.push( r );
3302
3296
  this.attachLocation( $.expr ); }continue
3303
- case'Id':if(this.fromRefWithOptAlias(_={},489)){tab=_.expr; if (tab) $.expr.args.push( tab );
3297
+ case'Id':if(this.fromRefWithOptAlias(_={},488)){tab=_.expr; if (tab) $.expr.args.push( tab );
3304
3298
  this.attachLocation( $.expr ); }continue
3305
3299
  default:this.e();continue
3306
3300
  }
3301
+ case 491:switch(this.lk()){
3302
+ case'outer':this.ck(492);continue
3303
+ default:this.s=492;continue
3304
+ }
3307
3305
  case 492:switch(this.lk()){
3308
- case'outer':this.ck(493);continue
3306
+ case'one':case'many':case'exact':this.joinCardinality(card={},493);continue
3309
3307
  default:this.s=493;continue
3310
3308
  }
3311
- case 493:switch(this.lk()){
3312
- case'one':case'many':case'exact':this.joinCardinality(card={},494);continue
3313
- default:this.s=494;continue
3314
- }
3315
- case 494:this.mk(495,'join');continue
3316
- case 495:this.s=496;{ $.expr = { op: this.valueWithLocation(), join: this.valueWithLocation( join?.keyword || 'inner', join ), args: [ $.expr ] }; if (card) $.expr.cardinality = card; card = undefined; }continue
3317
- case 496:if(this.tableExpression(_={},497)){tab=_.expr; $.expr.args.push( tab ); this.attachLocation( $.expr ); }continue
3318
- case 497:this.mk(498,'on');continue
3319
- case 498:if(this.condition(_={},489)){cond=_.expr; $.expr.on = cond;
3309
+ case 493:this.mk(494,'join');continue
3310
+ case 494:this.s=495;{ $.expr = { op: this.valueWithLocation(), join: this.valueWithLocation( join?.keyword || 'inner', join ), args: [ $.expr ] }; if (card) $.expr.cardinality = card; card = undefined; }continue
3311
+ case 495:if(this.tableExpression(_={},496)){tab=_.expr; $.expr.args.push( tab ); this.attachLocation( $.expr ); }continue
3312
+ case 496:this.mk(497,'on');continue
3313
+ case 497:if(this.condition(_={},488)){cond=_.expr; $.expr.on = cond;
3320
3314
  this.attachLocation( $.expr ); }continue
3321
3315
  default:return this.exit_()
3322
3316
  }
3323
3317
  }
3324
3318
  tableOrQueryParens($,$next){
3325
3319
  $.expr??=undefined
3326
- this.rule_(500,$next)
3320
+ this.rule_(499,$next)
3327
3321
  for(;;)switch(this.s){
3328
- case 500:if(this.m(501,'(')){this.queryOnLeft()}continue;
3329
- case 501:switch(this.lk()){
3330
- case'(':this.tableOrQueryParens($,502);continue
3331
- case'Id':if(this.tableExpression($,503)){this.queryOnLeft('table')}continue;
3332
- case'select':this.queryExpression($,503);continue
3322
+ case 499:if(this.m(500,'(')){this.queryOnLeft()}continue;
3323
+ case 500:switch(this.lk()){
3324
+ case'(':this.tableOrQueryParens($,501);continue
3325
+ case'Id':if(this.tableExpression($,502)){this.queryOnLeft('table')}continue;
3326
+ case'select':this.queryExpression($,502);continue
3333
3327
  default:this.ei();continue
3334
3328
  }
3335
- case 502:switch(this.lk()){
3336
- case'full':case'join':case'left':case'cross':case'inner':case'right':if(this.tableExpression($,503,488)){this.queryOnLeft('table')}continue;
3337
- case'limit':case'minus':case'order':case'union':case'except':case'intersect':this.gc(503,'queryOnLeft')&&this.queryExpression($,503,456);continue
3338
- default:this.s=503;continue
3329
+ case 501:switch(this.lk()){
3330
+ case'full':case'join':case'left':case'cross':case'inner':case'right':if(this.tableExpression($,502,487)){this.queryOnLeft('table')}continue;
3331
+ case'limit':case'minus':case'order':case'union':case'except':case'intersect':this.gc(502,'queryOnLeft')&&this.queryExpression($,502,455);continue
3332
+ default:this.s=502;continue
3339
3333
  }
3340
- case 503:if(this.m(504,')')){ this.surroundByParens( $.expr ); }continue
3341
- case 504:switch(this.lk()){
3342
- case'as':this.gc(0,'queryOnLeft','table')&&this.ck(505);continue
3343
- case'Id':if(this.gc(0,'queryOnLeft','tableWithoutAs')&&this.ci(0,'FromAlias')){ $.expr = this.taggedIfQuery( $.expr ); $.expr.name = this.fragileAlias(); }continue
3344
- default:this.giR(0,['full','join','left','cross','inner','right']);continue
3334
+ case 502:if(this.m(503,')')){ this.surroundByParens( $.expr ); }continue
3335
+ case 503:switch(this.lk()){
3336
+ case'as':this.gc(0,'queryOnLeft','table')&&this.ck(504);continue
3337
+ case'Id':if(this.gc(0,'queryOnLeftSloppyAlias')&&this.ci(0,'FromAlias')){ $.expr = this.taggedIfQuery( $.expr ); $.expr.name = this.fragileAlias(); }continue
3338
+ default:this.gi(0,['full','join','left','cross','inner','right']);continue
3345
3339
  }
3346
- case 505:if(this.mi(0,'FromAlias')){ $.expr = this.taggedIfQuery( $.expr ); $.expr.name = this.identAst(); }continue
3340
+ case 504:if(this.mi(0,'FromAlias')){ $.expr = this.taggedIfQuery( $.expr ); $.expr.name = this.identAst(); }continue
3347
3341
  default:return this.exit_()
3348
3342
  }
3349
3343
  }
3350
3344
  joinCardinality($,$next){
3351
3345
  $.sourceMax??=undefined;$.targetMax??=undefined
3352
- this.rule_(507,$next)
3346
+ this.rule_(506,$next)
3353
3347
  for(;;)switch(this.s){
3354
- case 507:switch(this.lk()){
3355
- case'exact':if(this.ck(508)){ $.sourceMin = this.valueWithLocation( 1 ); }continue
3356
- case'one':this.s=508;continue
3357
- case'many':if(this.ck(509)){ $.sourceMax = this.valueWithLocation( '*' ); }continue
3348
+ case 506:switch(this.lk()){
3349
+ case'one':this.s=507;continue
3350
+ case'exact':if(this.ck(507)){ $.sourceMin = this.valueWithLocation( 1 ); }continue
3351
+ case'many':if(this.ck(508)){ $.sourceMax = this.valueWithLocation( '*' ); }continue
3358
3352
  default:this.e();continue
3359
3353
  }
3360
- case 508:if(this.mk(509,'one')){ $.sourceMax = this.valueWithLocation( 1 ); }continue
3361
- case 509:this.mk(510,'to');continue
3362
- case 510:switch(this.lk()){
3363
- case'exact':if(this.ck(511)){ $.targetMin = this.valueWithLocation( 1 ); }continue
3364
- case'one':this.s=511;continue
3354
+ case 507:if(this.mk(508,'one')){ $.sourceMax = this.valueWithLocation( 1 ); }continue
3355
+ case 508:this.mk(509,'to');continue
3356
+ case 509:switch(this.lk()){
3357
+ case'one':this.s=510;continue
3358
+ case'exact':if(this.ck(510)){ $.targetMin = this.valueWithLocation( 1 ); }continue
3365
3359
  case'many':if(this.ck(0)){ $.targetMax = this.valueWithLocation( '*' ); }continue
3366
3360
  default:this.e();continue
3367
3361
  }
3368
- case 511:if(this.mk(0,'one')){ $.targetMax = this.valueWithLocation( 1 ); }continue
3362
+ case 510:if(this.mk(0,'one')){ $.targetMax = this.valueWithLocation( 1 ); }continue
3369
3363
  default:
3370
3364
  this.attachLocation( $ )
3371
3365
  return this.exit_()
@@ -3373,25 +3367,25 @@ return this.exit_()
3373
3367
  }
3374
3368
  fromRefWithOptAlias($,$next){
3375
3369
  $.expr??={}
3376
- this.rule_(513,$next)
3370
+ this.rule_(512,$next)
3377
3371
  { $.expr.path = []; }
3378
3372
  for(;;)switch(this.s){
3379
- case 513:this.fromPath({table:$.expr,category:'artref'},514);continue
3380
- case 514:switch(this.l()){
3381
- case':':if(this.c(515)){ if (!$.expr.scope) $.expr.scope = $.expr.path.length; else {
3373
+ case 512:this.fromPath({table:$.expr,category:'artref'},513);continue
3374
+ case 513:switch(this.l()){
3375
+ case':':if(this.c(514)){ if (!$.expr.scope) $.expr.scope = $.expr.path.length; else {
3382
3376
  this.warning( 'syntax-invalid-path-separator', this.lb(),
3383
3377
  { '#': 'colon', code: ':', newcode: '.' } );
3384
3378
  } }continue
3385
- default:this.s=516;continue
3379
+ default:this.s=515;continue
3386
3380
  }
3387
- case 515:this.fromPath({table:$.expr,category:'ref'},516);continue
3388
- case 516:switch(this.lk()){
3389
- case'as':this.ck(517);continue
3390
- case'Id':if(this.ci(0,'FromAlias')){ $.expr.name = this.fragileAlias(); }continue
3391
- default:this.giR(518);continue
3381
+ case 514:this.fromPath({table:$.expr,category:'ref'},515);continue
3382
+ case 515:switch(this.lk()){
3383
+ case'as':this.ck(516);continue
3384
+ case'Id':if(this.gc(517,'isNoKeywordInRuleFollow')&&this.ci(0,'FromAlias')){ $.expr.name = this.fragileAlias(); }continue
3385
+ default:this.gi(517);continue
3392
3386
  }
3393
- case 517:if(this.mi(0,'FromAlias')){ $.expr.name = this.identAst(); }continue
3394
- case 518:if(this.gr([])){ this.classifyImplicitName( $.expr.scope ? 'FromElemImplicit' : 'FromImplicit', $.expr ); }continue
3387
+ case 516:if(this.mi(0,'FromAlias')){ $.expr.name = this.identAst(); }continue
3388
+ case 517:if(this.gr()){ this.classifyImplicitName( $.expr.scope ? 'FromElemImplicit' : 'FromImplicit', $.expr ); }continue
3395
3389
  default:
3396
3390
  this.attachLocation( $.expr )
3397
3391
  return this.exit_()
@@ -3399,25 +3393,25 @@ return this.exit_()
3399
3393
  }
3400
3394
  fromPath($,$next){
3401
3395
  let pathItem
3402
- this.rule_(520,$next)
3396
+ this.rule_(519,$next)
3403
3397
  for(;;)switch(this.s){
3404
- case 520:if(this.mi(521,$.category)){ $.table.path.push( pathItem = this.identAst() ); }continue
3405
- case 521:switch(this.l()){
3406
- case'(':case'[':if(this.fromArgumentsAndFilter({pathStep:pathItem},522)){ pathItem = null; }continue
3407
- default:this.s=522;continue
3398
+ case 519:if(this.mi(520,$.category)){ $.table.path.push( pathItem = this.identAst() ); }continue
3399
+ case 520:switch(this.l()){
3400
+ case'(':case'[':if(this.fromArgumentsAndFilter({pathStep:pathItem},521)){ pathItem = null; }continue
3401
+ default:this.s=521;continue
3408
3402
  }
3409
- case 522:switch(this.l()){
3410
- case'.':if(this.gc(0,'notAfterEntityArgOrFilter')&&this.c(523)){ if (!pathItem && !$.table.scope) {
3403
+ case 521:switch(this.l()){
3404
+ case'.':if(this.gc(0,'notAfterEntityArgOrFilter')&&this.c(522)){ if (!pathItem && !$.table.scope) {
3411
3405
  $.table.scope = $.table.path.length; $.category = 'ref';
3412
3406
  this.warning( 'syntax-invalid-path-separator', this.lb(),
3413
3407
  { '#': 'dot', code: '.', newcode: ':' } );
3414
3408
  } }continue
3415
3409
  default:this.gr(['Id','as']);continue
3416
3410
  }
3417
- case 523:if(this.miA(524,$.category)){ $.table.path.push( pathItem = this.identAst() ); }continue
3418
- case 524:switch(this.l()){
3419
- case'(':case'[':if(this.fromArgumentsAndFilter({pathStep:pathItem},522)){ pathItem = null; }continue
3420
- default:this.s=522;continue
3411
+ case 522:if(this.miA(523,$.category)){ $.table.path.push( pathItem = this.identAst() ); }continue
3412
+ case 523:switch(this.l()){
3413
+ case'(':case'[':if(this.fromArgumentsAndFilter({pathStep:pathItem},521)){ pathItem = null; }continue
3414
+ default:this.s=521;continue
3421
3415
  }
3422
3416
  default:
3423
3417
  this.attachLocation( $.table.path )
@@ -3425,27 +3419,27 @@ return this.exit_()
3425
3419
  }
3426
3420
  }
3427
3421
  fromArgumentsAndFilter($,$next){
3428
- this.rule_(526,$next)
3422
+ this.rule_(525,$next)
3429
3423
  for(;;)switch(this.s){
3430
- case 526:switch(this.l()){
3431
- case'(':if(this.c(527)){ $.pathStep.args = this.createDict(); $.pathStep.$syntax = ':'; }continue
3432
- default:this.s=531;continue
3424
+ case 525:switch(this.l()){
3425
+ case'(':if(this.c(526)){ $.pathStep.args = this.createDict(); $.pathStep.$syntax = ':'; }continue
3426
+ default:this.s=530;continue
3433
3427
  }
3434
- case 527:switch(this.lk()){
3435
- case'Id':this.s=528;continue
3428
+ case 526:switch(this.lk()){
3429
+ case'Id':this.s=527;continue
3436
3430
  default:this.ei();continue
3437
3431
  }
3438
- case 528:switch(this.l()){
3439
- case'Id':this.fromNamedArgument($,529);continue
3440
- default:this.s=530;continue
3432
+ case 527:switch(this.l()){
3433
+ case'Id':this.fromNamedArgument($,528);continue
3434
+ default:this.s=529;continue
3441
3435
  }
3442
- case 529:switch(this.l()){
3443
- case',':this.c(528);continue
3444
- case')':this.s=530;continue
3436
+ case 528:switch(this.l()){
3437
+ case',':this.c(527);continue
3438
+ case')':this.s=529;continue
3445
3439
  default:this.e();continue
3446
3440
  }
3447
- case 530:this.m(531,')');continue
3448
- case 531:switch(this.l()){
3441
+ case 529:this.m(530,')');continue
3442
+ case 530:switch(this.l()){
3449
3443
  case'[':this.cardinalityAndFilter($,0);continue
3450
3444
  default:this.gr(['Id','.','as']);continue
3451
3445
  }
@@ -3454,239 +3448,236 @@ default:return this.exit_()
3454
3448
  }
3455
3449
  fromNamedArgument($,$next){
3456
3450
  let name;let expr;let _
3457
- this.rule_(533,$next)
3451
+ this.rule_(532,$next)
3458
3452
  for(;;)switch(this.s){
3459
- case 533:if(this.mi(534,'paramname'))name=this.lb();continue
3460
- case 534:this.m(535,':');continue
3461
- case 535:if(this.expression(_={},0)){expr=_.expr; this.addDef( expr, $.pathStep, 'args', 0, this.identAst( name ) ); }continue
3453
+ case 532:if(this.mi(533,'paramname'))name=this.lb();continue
3454
+ case 533:this.m(534,':');continue
3455
+ case 534:if(this.expression(_={},0)){expr=_.expr; this.addDef( expr, $.pathStep, 'args', 0, this.identAst( name ) ); }continue
3462
3456
  default:return this.exit_()
3463
3457
  }
3464
3458
  }
3465
3459
  cardinalityAndFilter($,$next){
3466
- this.rule_(537,$next)
3460
+ this.rule_(536,$next)
3467
3461
  for(;;)switch(this.s){
3468
- case 537:this.m(538,'[');continue
3469
- case 538:switch(this.l()){
3470
- case'Number':if(this.gc(540,'beforeColon')&&this.c(539)){ $.pathStep.cardinality = { targetMax: this.unsignedIntegerLiteral(), location: this.lb().location }; }continue
3471
- default:this.s=540;continue
3472
- }
3473
- case 539:this.m(540,':');continue
3474
- case 540:this.filterClauses({pathStep:$.pathStep},541);continue
3475
- case 541:this.m(0,']');continue
3462
+ case 536:this.m(537,'[');continue
3463
+ case 537:switch(this.l()){
3464
+ case'Number':if(this.gc(539,'beforeColon')&&this.c(538)){ $.pathStep.cardinality = { targetMax: this.unsignedIntegerLiteral(), location: this.lb().location }; }continue
3465
+ default:this.s=539;continue
3466
+ }
3467
+ case 538:this.m(539,':');continue
3468
+ case 539:this.filterClauses({pathStep:$.pathStep},540);continue
3469
+ case 540:this.m(0,']');continue
3476
3470
  default:return this.exit_()
3477
3471
  }
3478
3472
  }
3479
3473
  filterClauses($,$next){
3480
3474
  let cond;let _
3481
- this.rule_(543,$next)
3475
+ this.rule_(542,$next)
3482
3476
  for(;;)switch(this.s){
3483
- case 543:switch(this.lk()){
3484
- case'where':this.ck(544);continue
3485
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':this.s=544;continue
3486
- case'group':case'limit':case'order':case'having':this.gP(545);continue
3487
- default:this.gi(545);continue
3488
- }
3489
- case 544:if(this.condition(_={},545)){cond=_.expr; $.pathStep.where = cond; }continue
3490
- case 545:switch(this.lk()){
3491
- case'group':this.s=546;{ this.csnParseOnly('syntax-unexpected-sql-clause', 1, { keyword: 'group by' }); }continue
3492
- default:this.s=547;continue
3493
- }
3494
- case 546:this.groupByClause({query:$.pathStep},547);continue
3495
- case 547:switch(this.lk()){
3496
- case'having':if(this.ck(548)){ this.csnParseOnly('syntax-unexpected-sql-clause', -1, { keyword: 'having' }); }continue
3497
- default:this.s=549;continue
3498
- }
3499
- case 548:if(this.condition(_={},549)){cond=_.expr; $.pathStep.having = cond; }continue
3500
- case 549:switch(this.lk()){
3501
- case'limit':case'order':this.s=550;{ if (this.lk() === 'limit') this.csnParseOnly('syntax-unexpected-sql-clause', 0, { keyword: 'limit' } ); else this.csnParseOnly('syntax-unexpected-sql-clause', 1, { keyword: 'order by' } ); }continue
3477
+ case 542:switch(this.lk()){
3478
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':this.s=543;continue
3479
+ case'where':this.ck(543);continue
3480
+ case'group':case'limit':case'order':case'having':this.gP(544);continue
3481
+ default:this.gi(544);continue
3482
+ }
3483
+ case 543:if(this.condition(_={},544)){cond=_.expr; $.pathStep.where = cond; }continue
3484
+ case 544:switch(this.lk()){
3485
+ case'group':this.s=545;{ this.csnParseOnly('syntax-unexpected-sql-clause', 1, { keyword: 'group by' }); }continue
3486
+ default:this.s=546;continue
3487
+ }
3488
+ case 545:this.groupByClause({query:$.pathStep},546);continue
3489
+ case 546:switch(this.lk()){
3490
+ case'having':if(this.ck(547)){ this.csnParseOnly('syntax-unexpected-sql-clause', -1, { keyword: 'having' }); }continue
3491
+ default:this.s=548;continue
3492
+ }
3493
+ case 547:if(this.condition(_={},548)){cond=_.expr; $.pathStep.having = cond; }continue
3494
+ case 548:switch(this.l()){
3495
+ case'Id':this.s=549;{ if (this.lk() === 'limit') this.csnParseOnly('syntax-unexpected-sql-clause', 0, { keyword: 'limit' } ); else this.csnParseOnly('syntax-unexpected-sql-clause', 1, { keyword: 'order by' } ); }continue
3502
3496
  default:this.gr([']']);continue
3503
3497
  }
3504
- case 550:this.orderByLimitOffset({query:$.pathStep},0);continue
3498
+ case 549:this.orderByLimitOffset({query:$.pathStep},0);continue
3505
3499
  default:return this.exit_()
3506
3500
  }
3507
3501
  }
3508
3502
  excludingClause($,$next){
3509
- this.rule_(552,$next)
3503
+ this.rule_(551,$next)
3510
3504
  for(;;)switch(this.s){
3511
- case 552:this.mk(553,'excluding');continue
3512
- case 553:if(this.m(554,'{')){ $.query.excludingDict = this.createDict(); }continue
3513
- case 554:switch(this.l()){
3514
- case'Id':this.s=555;continue
3505
+ case 551:this.mk(552,'excluding');continue
3506
+ case 552:if(this.m(553,'{')){ $.query.excludingDict = this.createDict(); }continue
3507
+ case 553:switch(this.l()){
3508
+ case'Id':this.s=554;continue
3515
3509
  default:this.e();continue
3516
3510
  }
3517
- case 555:switch(this.l()){
3518
- case'Id':if(this.ciA(556,'ref')){ this.addDef( { location: this.lb().location }, $.query, 'excludingDict', '', this.identAst() ); }continue
3519
- default:this.s=557;continue
3511
+ case 554:switch(this.l()){
3512
+ case'Id':if(this.ciA(555,'ref')){ this.addDef( { location: this.lb().location }, $.query, 'excludingDict', '', this.identAst() ); }continue
3513
+ default:this.s=556;continue
3520
3514
  }
3521
- case 556:switch(this.l()){
3522
- case',':this.c(555);continue
3523
- case'}':this.s=557;continue
3515
+ case 555:switch(this.l()){
3516
+ case',':this.c(554);continue
3517
+ case'}':this.s=556;continue
3524
3518
  default:this.e();continue
3525
3519
  }
3526
- case 557:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query.excludingDict ); }continue
3520
+ case 556:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query.excludingDict ); }continue
3527
3521
  default:return this.exit_()
3528
3522
  }
3529
3523
  }
3530
3524
  selectItemsList($,$next){
3531
- this.rule_(559,$next)
3525
+ this.rule_(558,$next)
3532
3526
  for(;;)switch(this.s){
3533
- case 559:if(this.m(560,'{')){this.inSelectItem('top'); $.query.columns = this.createArray( $.start ); }continue
3534
- case 560:switch(this.l()){
3535
- case'*':if(this.c(561)){ $.query.columns.push( this.valueWithLocation() ); }continue
3536
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query.columns},561);continue
3537
- default:this.s=562;continue
3527
+ case 558:if(this.m(559,'{')){this.inSelectItem('top'); $.query.columns = this.createArray( $.start ); }continue
3528
+ case 559:switch(this.l()){
3529
+ case'*':if(this.c(560)){ $.query.columns.push( this.valueWithLocation() ); }continue
3530
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query.columns},560);continue
3531
+ default:this.s=561;continue
3538
3532
  }
3539
- case 561:switch(this.l()){
3540
- case',':this.c(560);continue
3541
- case'}':this.s=562;continue
3533
+ case 560:switch(this.l()){
3534
+ case',':this.c(559);continue
3535
+ case'}':this.s=561;continue
3542
3536
  default:this.e();continue
3543
3537
  }
3544
- case 562:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query.columns ); }continue
3538
+ case 561:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query.columns ); }continue
3545
3539
  default:return this.exit_()
3546
3540
  }
3547
3541
  }
3548
3542
  nestedSelectItemsList($,$next){
3549
- this.rule_(564,$next)
3543
+ this.rule_(563,$next)
3550
3544
  for(;;)switch(this.s){
3551
- case 564:if(this.m(565,'{')){this.inSelectItem(); $.query[$.clause] = this.createArray(); }continue
3552
- case 565:switch(this.l()){
3553
- case'*':if(this.c(566)){ $.query[$.clause].push( this.valueWithLocation() ); }continue
3554
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query[$.clause]},566);continue
3555
- default:this.s=567;continue
3545
+ case 563:if(this.m(564,'{')){this.inSelectItem(); $.query[$.clause] = this.createArray(); }continue
3546
+ case 564:switch(this.l()){
3547
+ case'*':if(this.c(565)){ $.query[$.clause].push( this.valueWithLocation() ); }continue
3548
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query[$.clause]},565);continue
3549
+ default:this.s=566;continue
3556
3550
  }
3557
- case 566:switch(this.l()){
3558
- case',':this.c(565);continue
3559
- case'}':this.s=567;continue
3551
+ case 565:switch(this.l()){
3552
+ case',':this.c(564);continue
3553
+ case'}':this.s=566;continue
3560
3554
  default:this.e();continue
3561
3555
  }
3562
- case 567:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query[$.clause] ); }continue
3556
+ case 566:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query[$.clause] ); }continue
3563
3557
  default:return this.exit_()
3564
3558
  }
3565
3559
  }
3566
3560
  selectItemDef($,$next){
3567
3561
  let art=new XsnArtifact()
3568
3562
  let expr;let e;let target;let cond;let assoc;let card;let _
3569
- this.rule_(569,$next)
3563
+ this.rule_(568,$next)
3570
3564
  { $.columns.push( art );
3571
3565
  this.docComment( art ); }
3572
3566
  for(;;)switch(this.s){
3573
- case 569:switch(this.l()){
3574
- case'@':this.annoAssignCol({art},569);continue
3567
+ case 568:switch(this.l()){
3568
+ case'@':this.annoAssignCol({art},568);continue
3569
+ default:this.s=569;continue
3570
+ }
3571
+ case 569:switch(this.lk()){
3572
+ case'virtual':if(this.lP(['Id','#','(','+','-',':','?','{','key','not','case','cast','null','true','false','Number','String','exists','QuotedLiteral'])&&this.gc(570,'modifierRestriction')&&this.ck(570)){ art.virtual = this.valueWithLocation( true ); }continue
3575
3573
  default:this.s=570;continue
3576
3574
  }
3577
- case 570:switch(this.lk()){
3578
- case'virtual':if(this.lP(['Id','#','(','+','-',':','?','{','key','not','case','cast','null','true','false','Number','String','exists','QuotedLiteral'])&&this.gc(571,'modifierRestriction')&&this.ck(571)){ art.virtual = this.valueWithLocation( true ); }continue
3579
- default:this.s=571;continue
3575
+ case 570:this.s=571;{this.columnExpr('key')}continue;
3576
+ case 571:switch(this.lk()){
3577
+ case'key':if(this.gc(572,'modifierRestriction')&&this.ck(572)){ art.key = this.valueWithLocation( true ); }continue
3578
+ default:this.s=572;continue
3580
3579
  }
3581
- case 571:this.s=572;{this.columnExpr('key'); ; }continue
3582
3580
  case 572:switch(this.lk()){
3583
- case'key':if(this.gc(573,'modifierRestriction')&&this.ck(573)){ art.key = this.valueWithLocation( true ); }continue
3584
- default:this.s=573;continue
3585
- }
3586
- case 573:switch(this.lk()){
3587
- case'#':case'(':case'+':case'-':case':':case'?':case'new':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.lP()&&this.expression(_={},574)){expr=_.expr; art.value = expr; }continue
3588
- case'Id':if(this.valuePath(_={},576)){expr=_.expr; expr = this.valuePathAst( expr ); art.value = expr; }continue
3589
- case'{':this.nestedSelectItemsList({query:art,clause:'expand'},587);continue
3581
+ case'#':case'(':case'+':case'-':case':':case'?':case'new':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.lP()&&this.expression(_={},573)){expr=_.expr; art.value = expr; }continue
3582
+ case'Id':if(this.valuePath(_={},575)){expr=_.expr; expr = this.valuePathAst( expr ); art.value = expr; }continue
3583
+ case'{':this.nestedSelectItemsList({query:art,clause:'expand'},586);continue
3590
3584
  default:this.ei();continue
3591
3585
  }
3592
- case 574:switch(this.lk()){
3593
- case'as':this.ck(575);continue
3594
- case'Id':if(this.ci(584,'ItemAlias')){ art.name = this.fragileAlias( true ); }continue
3595
- default:this.giR(584);continue
3596
- }
3597
- case 575:if(this.mi(584,'ItemAlias')){ art.name = this.identAst(); }continue
3598
- case 576:switch(this.lk()){
3599
- case'over':if(this.ck(577)){ this.pushXprToken( expr.suffix = [] ); }continue
3600
- case'*':case'+':case'-':case'/':case'<':case'=':case'>':case'?':case'!=':case'<=':case'<>':case'==':case'>=':case'in':case'is':case'or':case'||':case'and':case'not':case'like':case'between':if(this.expression(_={ expr: expr },579,645)){e=_.expr; Object.assign( e.location || {}, expr.location ); art.value = this.attachLocation( e ) }continue
3601
- case'as':this.ck(581);continue
3602
- case'Id':if(this.ci(584,'ItemAlias')){this.nestedExpand(); art.name = this.fragileAlias( true ); }continue
3603
- case'.':if(this.c(582)){ this.reportUnexpectedSpace( this.lb(), this.la().location, true );
3586
+ case 573:switch(this.lk()){
3587
+ case'as':this.ck(574);continue
3588
+ case'Id':if(this.ci(583,'ItemAlias')){ art.name = this.fragileAlias( true ); }continue
3589
+ default:this.gi(583);continue
3590
+ }
3591
+ case 574:if(this.mi(583,'ItemAlias')){ art.name = this.identAst(); }continue
3592
+ case 575:switch(this.lk()){
3593
+ case'over':if(this.ck(576)){ this.pushXprToken( expr.suffix = [] ); }continue
3594
+ case'*':case'+':case'-':case'/':case'<':case'=':case'>':case'?':case'!=':case'<=':case'<>':case'==':case'>=':case'in':case'is':case'or':case'||':case'and':case'not':case'like':case'between':if(this.expression(_={ expr: expr },578,643)){e=_.expr; Object.assign( e.location || {}, expr.location ); art.value = this.attachLocation( e ) }continue
3595
+ case'as':this.ck(580);continue
3596
+ case'Id':if(this.ci(583,'ItemAlias')){this.nestedExpand(); art.name = this.fragileAlias( true ); }continue
3597
+ case'.':if(this.c(581)){ this.reportUnexpectedSpace( this.lb(), this.la().location, true );
3604
3598
  this.reportExpandInline( art, true ); }continue
3605
- default:if(this.giR(584)){this.nestedExpand(); this.virtualOrImplicit( art ); }continue
3599
+ default:if(this.gi(583)){this.nestedExpand(); this.virtualOrImplicit( art ); }continue
3606
3600
  }
3607
- case 577:this.overClause({outer:expr.suffix},578);continue
3608
- case 578:switch(this.lk()){
3609
- case'*':case'+':case'-':case'/':case'<':case'=':case'>':case'?':case'!=':case'<=':case'<>':case'==':case'>=':case'in':case'is':case'or':case'||':case'and':case'not':case'like':case'between':if(this.expression(_={ expr: expr },579,645)){e=_.expr; Object.assign( e.location || {}, expr.location ); art.value = this.attachLocation( e ) }continue
3610
- default:this.s=579;continue
3601
+ case 576:this.overClause({outer:expr.suffix},577);continue
3602
+ case 577:switch(this.lk()){
3603
+ case'*':case'+':case'-':case'/':case'<':case'=':case'>':case'?':case'!=':case'<=':case'<>':case'==':case'>=':case'in':case'is':case'or':case'||':case'and':case'not':case'like':case'between':if(this.expression(_={ expr: expr },578,643)){e=_.expr; Object.assign( e.location || {}, expr.location ); art.value = this.attachLocation( e ) }continue
3604
+ default:this.s=578;continue
3611
3605
  }
3612
- case 579:switch(this.lk()){
3613
- case'as':this.ck(580);continue
3614
- case'Id':if(this.ci(584,'ItemAlias')){ art.name = this.fragileAlias( true ); }continue
3615
- default:this.giR(584);continue
3616
- }
3617
- case 580:if(this.mi(584,'ItemAlias')){ art.name = this.identAst(); }continue
3618
- case 581:if(this.mi(584,'ItemAlias')){this.nestedExpand(); art.name = this.identAst(); }continue
3619
- case 582:switch(this.l()){
3620
- case'{':this.nestedSelectItemsList({query:art,clause:'inline'},583);continue
3606
+ case 578:switch(this.lk()){
3607
+ case'as':this.ck(579);continue
3608
+ case'Id':if(this.ci(583,'ItemAlias')){ art.name = this.fragileAlias( true ); }continue
3609
+ default:this.gi(583);continue
3610
+ }
3611
+ case 579:if(this.mi(583,'ItemAlias')){ art.name = this.identAst(); }continue
3612
+ case 580:if(this.mi(583,'ItemAlias')){this.nestedExpand(); art.name = this.identAst(); }continue
3613
+ case 581:switch(this.l()){
3614
+ case'{':this.nestedSelectItemsList({query:art,clause:'inline'},582);continue
3621
3615
  case'*':if(this.c(0)){ art.inline = [ this.valueWithLocation() ]; }continue
3622
3616
  default:this.e();continue
3623
3617
  }
3624
- case 583:switch(this.lk()){
3618
+ case 582:switch(this.lk()){
3625
3619
  case'excluding':this.excludingClause({query:art},0);continue
3626
3620
  default:this.gr([',']);continue
3627
3621
  }
3628
- case 584:switch(this.l()){
3629
- case'{':if(this.gc(590,'nestedExpand')&&this.g(585)){ if (!this.nestedExpand(0,true)) this.reportExpandInline( art, false ); }continue
3630
- default:this.s=590;continue
3622
+ case 583:switch(this.l()){
3623
+ case'{':if(this.gc(589,'nestedExpand')&&this.g(584)){ if (!this.nestedExpand(0,true)) this.reportExpandInline( art, false ); }continue
3624
+ default:this.s=589;continue
3625
+ }
3626
+ case 584:this.nestedSelectItemsList({query:art,clause:'expand'},585);continue
3627
+ case 585:switch(this.lk()){
3628
+ case'excluding':this.excludingClause({query:art},589);continue
3629
+ default:this.s=589;continue
3631
3630
  }
3632
- case 585:this.nestedSelectItemsList({query:art,clause:'expand'},586);continue
3633
3631
  case 586:switch(this.lk()){
3634
- case'excluding':this.excludingClause({query:art},590);continue
3635
- default:this.s=590;continue
3632
+ case'excluding':this.excludingClause({query:art},587);continue
3633
+ default:this.s=587;continue
3636
3634
  }
3637
- case 587:switch(this.lk()){
3638
- case'excluding':this.excludingClause({query:art},588);continue
3639
- default:this.s=588;continue
3635
+ case 587:this.mk(588,'as');continue
3636
+ case 588:if(this.mi(589,'ItemAlias')){ art.name = this.identAst(); }continue
3637
+ case 589:this.s=590;{this.columnExpr(); this.docComment( art ); }continue
3638
+ case 590:switch(this.l()){
3639
+ case'@':this.annoAssignMid({art},590);continue
3640
+ default:this.s=591;continue
3640
3641
  }
3641
- case 588:this.mk(589,'as');continue
3642
- case 589:if(this.mi(590,'ItemAlias')){ art.name = this.identAst(); }continue
3643
- case 590:this.s=591;{this.columnExpr(); this.docComment( art ); }continue
3644
3642
  case 591:switch(this.l()){
3645
- case'@':this.annoAssignMid({art},591);continue
3646
- default:this.s=592;continue
3647
- }
3648
- case 592:switch(this.l()){
3649
- case':':this.c(593);continue
3643
+ case':':this.c(592);continue
3650
3644
  default:this.gr([',']);continue
3651
3645
  }
3652
- case 593:switch(this.lk()){
3653
- case'type':this.lP()&&this.typeTypeOf({art},607);continue
3654
- case'localized':if(this.ckP(594,['Id'])){ art.localized = this.valueWithLocation( true ); }continue
3655
- case'Id':this.s=594;continue
3656
- case'redirected':this.ckP(595,['to']);continue
3657
- case'association':if(this.lP(['[','to'])&&this.ec('columnExpr')&&this.ck(599)){assoc=this.lb(); this.associationInSelectItem( art ); }continue
3658
- case'composition':if(this.lP(['[','of'])&&this.ec('columnExpr')&&this.ck(601)){assoc=this.lb(); this.associationInSelectItem( art ); }continue
3646
+ case 592:switch(this.lk()){
3647
+ case'Id':case'{':this.typeExpression({art},605);continue
3648
+ case'redirected':this.ckP(593,['to']);continue
3649
+ case'association':if(this.lP(['[','to'])&&this.ec('columnExpr')&&this.ck(597)){assoc=this.lb(); this.associationInSelectItem( art ); }continue
3650
+ case'composition':if(this.lP(['[','of'])&&this.ec('columnExpr')&&this.ck(599)){assoc=this.lb(); this.associationInSelectItem( art ); }continue
3659
3651
  default:this.ei();continue
3660
3652
  }
3661
- case 594:this.typeRefOptArgs({art},607);continue
3662
- case 595:this.mk(596,'to');continue
3663
- case 596:if(this.simplePath(_={category:'artref'},597)){target=_.ref; art.target = target; }continue
3664
- case 597:switch(this.lk()){
3665
- case'on':this.ck(598);continue
3666
- case'{':this.foreignKeysBlock({art},607);continue
3667
- default:this.s=607;continue
3653
+ case 593:this.mk(594,'to');continue
3654
+ case 594:if(this.simplePath(_={category:'artref'},595)){target=_.ref; art.target = target; }continue
3655
+ case 595:switch(this.lk()){
3656
+ case'on':this.ck(596);continue
3657
+ case'{':this.foreignKeysBlock({art},605);continue
3658
+ default:this.s=605;continue
3668
3659
  }
3669
- case 598:if(this.condition(_={},607)){cond=_.expr; art.on = cond; }continue
3660
+ case 596:if(this.condition(_={},605)){cond=_.expr; art.on = cond; }continue
3661
+ case 597:switch(this.l()){
3662
+ case'[':this.cardinality({art},598);continue
3663
+ default:this.s=598;continue
3664
+ }
3665
+ case 598:this.mk(601,'to');continue
3670
3666
  case 599:switch(this.l()){
3671
3667
  case'[':this.cardinality({art},600);continue
3672
3668
  default:this.s=600;continue
3673
3669
  }
3674
- case 600:this.mk(603,'to');continue
3675
- case 601:switch(this.l()){
3676
- case'[':this.cardinality({art},602);continue
3670
+ case 600:this.mk(601,'of');continue
3671
+ case 601:switch(this.lk()){
3672
+ case'one':case'many':if(this.lP(['Id'])&&this.gc(602,'noRepeatedCardinality')&&this.ck(602))card=this.lb();continue
3677
3673
  default:this.s=602;continue
3678
3674
  }
3679
- case 602:this.mk(603,'of');continue
3680
- case 603:switch(this.lk()){
3681
- case'one':case'many':if(this.lP(['Id'])&&this.gc(604,'noRepeatedCardinality')&&this.ck(604))card=this.lb();continue
3682
- default:this.s=604;continue
3683
- }
3684
- case 604:if(this.simplePath(_={category:'artref'},605)){target=_.ref; this.setAssocAndComposition( art, assoc, card, target ); }continue
3685
- case 605:this.mk(606,'on');continue
3686
- case 606:if(this.condition(_={},607)){expr=_.expr; art.on = expr; }continue
3687
- case 607:this.s=608;{ this.docComment( art ); }continue
3688
- case 608:switch(this.l()){
3689
- case'@':this.annoAssignStd({art},608);continue
3675
+ case 602:if(this.simplePath(_={category:'artref'},603)){target=_.ref; this.setAssocAndComposition( art, assoc, card, target ); }continue
3676
+ case 603:this.mk(604,'on');continue
3677
+ case 604:if(this.condition(_={},605)){expr=_.expr; art.on = expr; }continue
3678
+ case 605:this.s=606;{ this.docComment( art ); }continue
3679
+ case 606:switch(this.l()){
3680
+ case'@':this.annoAssignStd({art},606);continue
3690
3681
  default:this.gr([',']);continue
3691
3682
  }
3692
3683
  default:
@@ -3696,90 +3687,90 @@ return this.exit_()
3696
3687
  }
3697
3688
  whereGroupByHaving($,$next){
3698
3689
  let cond;let _
3699
- this.rule_(610,$next)
3690
+ this.rule_(608,$next)
3700
3691
  for(;;)switch(this.s){
3701
- case 610:switch(this.lk()){
3702
- case'where':this.ck(611);continue
3703
- default:this.s=612;continue
3692
+ case 608:switch(this.lk()){
3693
+ case'where':this.ck(609);continue
3694
+ default:this.s=610;continue
3704
3695
  }
3705
- case 611:if(this.condition(_={},612)){cond=_.expr; $.query.where = cond; }continue
3706
- case 612:switch(this.lk()){
3707
- case'group':this.groupByClause($,613);continue
3708
- default:this.s=613;continue
3696
+ case 609:if(this.condition(_={},610)){cond=_.expr; $.query.where = cond; }continue
3697
+ case 610:switch(this.lk()){
3698
+ case'group':this.groupByClause($,611);continue
3699
+ default:this.s=611;continue
3709
3700
  }
3710
- case 613:switch(this.lk()){
3711
- case'having':this.ck(614);continue
3701
+ case 611:switch(this.lk()){
3702
+ case'having':this.ck(612);continue
3712
3703
  default:this.gr(['limit','order']);continue
3713
3704
  }
3714
- case 614:if(this.condition(_={},0)){cond=_.expr; $.query.having = cond; }continue
3705
+ case 612:if(this.condition(_={},0)){cond=_.expr; $.query.having = cond; }continue
3715
3706
  default:return this.exit_()
3716
3707
  }
3717
3708
  }
3718
3709
  groupByClause($,$next){
3719
3710
  let expr;let _
3720
- this.rule_(616,$next)
3711
+ this.rule_(614,$next)
3721
3712
  for(;;)switch(this.s){
3722
- case 616:this.mk(617,'group');continue
3723
- case 617:this.mk(618,'by');continue
3724
- case 618:if(this.expression(_={},619)){expr=_.expr; $.query.groupBy = [ expr ]; }continue
3725
- case 619:switch(this.l()){
3726
- case',':this.c(620);continue
3713
+ case 614:this.mk(615,'group');continue
3714
+ case 615:this.mk(616,'by');continue
3715
+ case 616:if(this.expression(_={},617)){expr=_.expr; $.query.groupBy = [ expr ]; }continue
3716
+ case 617:switch(this.l()){
3717
+ case',':this.c(618);continue
3727
3718
  default:this.gr(['limit','order','having']);continue
3728
3719
  }
3729
- case 620:if(this.expression(_={},619)){expr=_.expr; $.query.groupBy.push( expr ); }continue
3720
+ case 618:if(this.expression(_={},617)){expr=_.expr; $.query.groupBy.push( expr ); }continue
3730
3721
  default:return this.exit_()
3731
3722
  }
3732
3723
  }
3733
3724
  orderByLimitOffset($,$next){
3734
3725
  let expr;let _
3735
- this.rule_(622,$next)
3726
+ this.rule_(620,$next)
3736
3727
  for(;;)switch(this.s){
3737
- case 622:switch(this.lk()){
3738
- case'order':this.orderByClause($,623);continue
3739
- default:this.s=623;continue
3728
+ case 620:switch(this.lk()){
3729
+ case'order':this.orderByClause($,621);continue
3730
+ default:this.s=621;continue
3740
3731
  }
3741
- case 623:switch(this.lk()){
3742
- case'limit':this.ck(624);continue
3743
- default:this.gr([]);continue
3732
+ case 621:switch(this.lk()){
3733
+ case'limit':this.ck(622);continue
3734
+ default:this.gr();continue
3744
3735
  }
3745
- case 624:if(this.expression(_={},625)){expr=_.expr; $.query.limit = { rows: expr }; }continue
3746
- case 625:switch(this.lk()){
3747
- case'offset':this.ck(626);continue
3748
- default:this.gr([]);continue
3736
+ case 622:if(this.expression(_={},623)){expr=_.expr; $.query.limit = { rows: expr }; }continue
3737
+ case 623:switch(this.lk()){
3738
+ case'offset':this.ck(624);continue
3739
+ default:this.gr();continue
3749
3740
  }
3750
- case 626:if(this.expression(_={},0)){expr=_.expr; $.query.limit.offset = expr; }continue
3741
+ case 624:if(this.expression(_={},0)){expr=_.expr; $.query.limit.offset = expr; }continue
3751
3742
  default:return this.exit_()
3752
3743
  }
3753
3744
  }
3754
3745
  orderByClause($,$next){
3755
3746
  let expr;let _
3756
- this.rule_(628,$next)
3747
+ this.rule_(626,$next)
3757
3748
  for(;;)switch(this.s){
3758
- case 628:this.mk(629,'order');continue
3759
- case 629:this.mk(630,'by');continue
3760
- case 630:if(this.orderByExpression(_={},631)){expr=_.expr; $.query.orderBy = [ expr ]; }continue
3761
- case 631:switch(this.l()){
3762
- case',':this.c(632);continue
3749
+ case 626:this.mk(627,'order');continue
3750
+ case 627:this.mk(628,'by');continue
3751
+ case 628:if(this.orderByExpression(_={},629)){expr=_.expr; $.query.orderBy = [ expr ]; }continue
3752
+ case 629:switch(this.l()){
3753
+ case',':this.c(630);continue
3763
3754
  default:this.gr(['limit']);continue
3764
3755
  }
3765
- case 632:if(this.orderByExpression(_={},631)){expr=_.expr; $.query.orderBy.push( expr ); }continue
3756
+ case 630:if(this.orderByExpression(_={},629)){expr=_.expr; $.query.orderBy.push( expr ); }continue
3766
3757
  default:return this.exit_()
3767
3758
  }
3768
3759
  }
3769
3760
  orderByExpression($,$next){
3770
3761
  $.expr??=undefined
3771
- this.rule_(634,$next)
3762
+ this.rule_(632,$next)
3772
3763
  for(;;)switch(this.s){
3773
- case 634:this.expression($,635);continue
3774
- case 635:switch(this.lk()){
3775
- case'asc':case'desc':if(this.ck(636)){ $.expr.sort = this.valueWithLocation(); }continue
3776
- default:this.s=636;continue
3764
+ case 632:this.expression($,633);continue
3765
+ case 633:switch(this.lk()){
3766
+ case'asc':case'desc':if(this.ck(634)){ $.expr.sort = this.valueWithLocation(); }continue
3767
+ default:this.s=634;continue
3777
3768
  }
3778
- case 636:switch(this.lk()){
3779
- case'nulls':this.ck(637);continue
3769
+ case 634:switch(this.lk()){
3770
+ case'nulls':this.ck(635);continue
3780
3771
  default:this.gr([',','limit']);continue
3781
3772
  }
3782
- case 637:switch(this.lk()){
3773
+ case 635:switch(this.lk()){
3783
3774
  case'last':case'first':if(this.ck(0)){ $.expr.nulls = this.valueWithLocation(); }continue
3784
3775
  default:this.e();continue
3785
3776
  }
@@ -3789,114 +3780,114 @@ default:return this.exit_()
3789
3780
  conditionEOF($,$next){
3790
3781
  $.cond??=undefined
3791
3782
  let _
3792
- this.rule_(639,$next)
3783
+ this.rule_(637,$next)
3793
3784
  for(;;)switch(this.s){
3794
- case 639:if(this.expression(_={},640))$.cond=_.expr;continue
3795
- case 640:this.m(0,'EOF');continue
3785
+ case 637:if(this.expression(_={},638))$.cond=_.expr;continue
3786
+ case 638:this.m(0,'EOF');continue
3796
3787
  default:return this.exit_()
3797
3788
  }
3798
3789
  }
3799
3790
  condition($,$next){
3800
3791
  $.expr??=undefined
3801
- this.rule_(642,$next)
3792
+ this.rule_(640,$next)
3802
3793
  for(;;)switch(this.s){
3803
- case 642:this.expression($,0);continue
3794
+ case 640:this.expression($,0);continue
3804
3795
  default:return this.exit_()
3805
3796
  }
3806
3797
  }
3807
3798
  expression($,$next,$startState){
3808
3799
  $.expr??={}
3809
3800
  let e;let open;let _
3810
- this.rule_($startState??644,$next)
3801
+ this.rule_($startState??642,$next)
3811
3802
  for(;;)switch(this.s){
3812
- case 644:switch(this.lk()){
3813
- case'(':this.expressionOrQueryParens($,645);continue
3814
- case'#':case'null':case'true':case'false':case'Number':case'String':case'QuotedLiteral':this.literalValue($,656);continue
3815
- case':':if(this.c(646)){ this.reportUnexpectedSpace(); }continue
3816
- case'?':if(this.c(656)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'dynamic', code: '?' } );
3803
+ case 642:switch(this.lk()){
3804
+ case'(':this.expressionOrQueryParens($,643);continue
3805
+ case'#':case'null':case'true':case'false':case'Number':case'String':case'QuotedLiteral':this.literalValue($,654);continue
3806
+ case':':if(this.c(644)){ this.reportUnexpectedSpace(); }continue
3807
+ case'?':if(this.c(654)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'dynamic', code: '?' } );
3817
3808
  $.expr = this.attachLocation({ param: this.valueWithLocation(), scope: 'param' }); }continue
3818
- case'Id':if(this.valuePath(_={},648)){e=_.expr; $.expr = this.valuePathAst( e ); }continue
3819
- case'new':if(this.ckP(651,['Id'])){ $.expr = this.applyOpToken(); }continue
3820
- case'exists':if(this.ck(652)){ $.expr = this.applyOpToken(); }continue
3821
- case'case':this.caseExpression($,656);continue
3822
- case'cast':this.castFunction($,656);continue
3823
- case'+':case'-':if(this.ec('precRight_',30)&&this.c(655)){ $.expr = this.applyOpToken(); }continue
3824
- case'not':if(this.ec('precRight_',8)&&this.ck(655)){ $.expr = this.applyOpToken(); }continue
3809
+ case'Id':if(this.valuePath(_={},646)){e=_.expr; $.expr = this.valuePathAst( e ); }continue
3810
+ case'new':if(this.ckP(649,['Id'])){ $.expr = this.applyOpToken(); }continue
3811
+ case'exists':if(this.ck(650)){ $.expr = this.applyOpToken(); }continue
3812
+ case'case':this.caseExpression($,654);continue
3813
+ case'cast':this.castFunction($,654);continue
3814
+ case'+':case'-':if(this.ec('precRight_',30)&&this.c(653)){ $.expr = this.applyOpToken(); }continue
3815
+ case'not':if(this.ec('precRight_',8)&&this.ck(653)){ $.expr = this.applyOpToken(); }continue
3825
3816
  default:this.ei();continue
3826
3817
  }
3827
- case 645:this.s=656;{ $.expr = this.taggedIfQuery( $.expr ); }continue
3828
- case 646:switch(this.l()){
3829
- case'Id':if(this.ciA(647,'paramref')){ $.expr = { path: [ this.identAst() ], location: this.startLocation(), scope: 'param' }; }continue
3830
- case'Number':if(this.c(656)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'positional', code: ':' + this.lb().text } );
3818
+ case 643:this.s=654;{ $.expr = this.taggedIfQuery( $.expr ); }continue
3819
+ case 644:switch(this.l()){
3820
+ case'Id':if(this.ciA(645,'paramref')){ $.expr = { path: [ this.identAst() ], location: this.startLocation(), scope: 'param' }; }continue
3821
+ case'Number':if(this.c(654)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'positional', code: ':' + this.lb().text } );
3831
3822
  $.expr = this.attachLocation({ param: this.unsignedIntegerLiteral(), scope: 'param' }); }continue
3832
3823
  default:this.e();continue
3833
3824
  }
3834
- case 647:switch(this.l()){
3835
- case'.':if(this.valuePath($,656,675)){ $.expr = this.valuePathAst( $.expr ); }continue
3836
- default:this.s=656;{ this.attachLocation( $.expr ); }continue
3825
+ case 645:switch(this.l()){
3826
+ case'.':if(this.valuePath($,654,673)){ $.expr = this.valuePathAst( $.expr ); }continue
3827
+ default:this.s=654;{ this.attachLocation( $.expr ); }continue
3837
3828
  }
3838
- case 648:switch(this.lk()){
3839
- case'over':if(this.ck(649)){ this.pushXprToken( $.expr.suffix = [] ); }continue
3840
- default:this.s=650;continue
3829
+ case 646:switch(this.lk()){
3830
+ case'over':if(this.ck(647)){ this.pushXprToken( $.expr.suffix = [] ); }continue
3831
+ default:this.s=648;continue
3841
3832
  }
3842
- case 649:this.overClause(e={outer:$.expr.suffix},650);continue
3843
- case 650:this.s=656;{ this.attachLocation( $.expr ); }continue
3844
- case 651:if(this.valuePath(_={},656)){e=_.expr; this.valuePathAstWithNew( $.expr, e ); }continue
3845
- case 652:switch(this.l()){
3846
- case'(':if(this.c(653))open=this.lb();continue
3847
- case'Id':if(this.valuePath(_={},656)){e=_.expr; e = this.valuePathAst( e ); e.$expected = 'exists';
3833
+ case 647:this.overClause(e={outer:$.expr.suffix},648);continue
3834
+ case 648:this.s=654;{ this.attachLocation( $.expr ); }continue
3835
+ case 649:if(this.valuePath(_={},654)){e=_.expr; this.valuePathAstWithNew( $.expr, e ); }continue
3836
+ case 650:switch(this.l()){
3837
+ case'(':if(this.c(651))open=this.lb();continue
3838
+ case'Id':if(this.valuePath(_={},654)){e=_.expr; e = this.valuePathAst( e ); e.$expected = 'exists';
3848
3839
  $.expr.args.push( e ); this.attachLocation( $.expr ); }continue
3849
- case'?':if(this.c(656)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'dynamic', code: '?' } );
3840
+ case'?':if(this.c(654)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'dynamic', code: '?' } );
3850
3841
  $.expr.args.push( { param: this.valueWithLocation(), scope: 'param' } ); this.attachLocation( $.expr ); }continue
3851
3842
  default:this.e();continue
3852
3843
  }
3853
- case 653:if(this.queryExpression(_={},654))e=_.expr;continue
3854
- case 654:if(this.m(656,')')){ $.expr.args.push( this.taggedIfQuery( this.surroundByParens( e, open ) ) );
3844
+ case 651:if(this.queryExpression(_={},652))e=_.expr;continue
3845
+ case 652:if(this.m(654,')')){ $.expr.args.push( this.taggedIfQuery( this.surroundByParens( e, open ) ) );
3855
3846
  this.attachLocation( $.expr ); }continue
3856
- case 655:if(this.expression(_={},656)){e=_.expr; $.expr = this.signedExpression( $.expr, e ); }continue
3857
- case 656:switch(this.lk()){
3858
- case'*':case'/':if(this.gc(0,'precLeft_',24)&&this.c(660)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3859
- case'+':case'-':if(this.gc(0,'precLeft_',22)&&this.c(660)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3860
- case'||':if(this.gc(0,'precLeft_',20)&&this.c(660)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3861
- case'and':if(this.gc(0,'precLeft_',4)&&this.ck(660)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3862
- case'or':if(this.gc(0,'precLeft_',2)&&this.ck(660)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3863
- case'?':if(this.gc(0,'precLeft_',0)&&this.c(657)){ $.expr = this.applyOpToken( $.expr, '?:' ); }continue
3864
- case'<':case'=':case'>':case'!=':case'<=':case'<>':case'>=':if(this.gc(0,'precNone_',10)&&this.c(659)){ $.expr = this.applyOpToken( $.expr ); }continue
3865
- case'==':if(this.gc(0,'precNone_',10)&&this.c(660)){ $.expr = this.applyOpToken( $.expr ); }continue
3866
- case'is':if(this.gc(0,'precNone_',10)&&this.ck(661)){ $.expr = this.applyOpToken( $.expr ); }continue
3867
- case'not':if(this.gc(0,'isNegatedRelation',10)&&this.ck(663)){ $.expr = this.applyOpToken( $.expr ); }continue
3868
- case'in':case'like':case'between':if(this.gc(0,'precNone_',10)&&this.g(663)){ $.expr = { op: { val: 'ixpr', location: this.la().location }, args: [ $.expr ] }; }continue
3869
- default:this.gr([]);continue
3870
- }
3871
- case 657:if(this.expression(_={},658)){e=_.expr; $.expr.args.push( e ); }continue
3872
- case 658:if(this.m(660,':')){ this.pushXprToken( $.expr ); }continue
3847
+ case 653:if(this.expression(_={},654)){e=_.expr; $.expr = this.signedExpression( $.expr, e ); }continue
3848
+ case 654:switch(this.lk()){
3849
+ case'*':case'/':if(this.gc(0,'precLeft_',24)&&this.c(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3850
+ case'+':case'-':if(this.gc(0,'precLeft_',22)&&this.c(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3851
+ case'||':if(this.gc(0,'precLeft_',20)&&this.c(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3852
+ case'and':if(this.gc(0,'precLeft_',4)&&this.ck(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3853
+ case'or':if(this.gc(0,'precLeft_',2)&&this.ck(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3854
+ case'?':if(this.gc(0,'precRight_',0)&&this.c(655)){ $.expr = this.applyOpToken( $.expr, '?:' ); }continue
3855
+ case'<':case'=':case'>':case'!=':case'<=':case'<>':case'>=':if(this.gc(0,'precNone_',10)&&this.c(657)){ $.expr = this.applyOpToken( $.expr ); }continue
3856
+ case'==':if(this.gc(0,'precNone_',10)&&this.c(658)){ $.expr = this.applyOpToken( $.expr ); }continue
3857
+ case'is':if(this.gc(0,'precNone_',10)&&this.ck(659)){ $.expr = this.applyOpToken( $.expr ); }continue
3858
+ case'not':if(this.gc(0,'isNegatedRelation',10)&&this.ck(661)){ $.expr = this.applyOpToken( $.expr ); }continue
3859
+ case'in':case'like':case'between':if(this.gc(0,'precNone_',10)&&this.g(661)){ $.expr = { op: { val: 'ixpr', location: this.la().location }, args: [ $.expr ] }; }continue
3860
+ default:this.gr();continue
3861
+ }
3862
+ case 655:if(this.expression(_={},656)){e=_.expr; $.expr.args.push( e ); }continue
3863
+ case 656:if(this.m(658,':')){ this.pushXprToken( $.expr ); }continue
3864
+ case 657:switch(this.lk()){
3865
+ case'all':case'any':case'some':if(this.ck(658)){ this.pushXprToken( $.expr ); }continue
3866
+ default:this.s=658;continue
3867
+ }
3868
+ case 658:if(this.expression(_={},669)){e=_.expr; $.expr.args.push( e ); }continue
3873
3869
  case 659:switch(this.lk()){
3874
- case'all':case'any':case'some':if(this.ck(660)){ this.pushXprToken( $.expr ); }continue
3870
+ case'not':if(this.ck(660)){ this.pushXprToken( $.expr ); }continue
3875
3871
  default:this.s=660;continue
3876
3872
  }
3877
- case 660:if(this.expression(_={},671)){e=_.expr; $.expr.args.push( e ); }continue
3873
+ case 660:if(this.mk(669,'null')){ this.pushXprToken( $.expr ); }continue
3878
3874
  case 661:switch(this.lk()){
3879
- case'not':if(this.ck(662)){ this.pushXprToken( $.expr ); }continue
3880
- default:this.s=662;continue
3881
- }
3882
- case 662:if(this.mk(671,'null')){ this.pushXprToken( $.expr ); }continue
3883
- case 663:switch(this.lk()){
3884
- case'between':if(this.ck(664)){ this.pushXprToken( $.expr ); }continue
3885
- case'in':if(this.ck(667)){ this.pushXprToken( $.expr ); }continue
3886
- case'like':if(this.ck(668)){ this.pushXprToken( $.expr ); }continue
3875
+ case'between':if(this.ck(662)){ this.pushXprToken( $.expr ); }continue
3876
+ case'in':if(this.ck(665)){ this.pushXprToken( $.expr ); }continue
3877
+ case'like':if(this.ck(666)){ this.pushXprToken( $.expr ); }continue
3887
3878
  default:this.e();continue
3888
3879
  }
3889
- case 664:if(this.expression(_={},665)){e=_.expr; $.expr.args?.push( e ); }continue
3890
- case 665:if(this.mk(666,'and')){ this.pushXprToken( $.expr ); }continue
3891
- case 666:if(this.expression(_={},671)){e=_.expr; $.expr.args?.push( e ); }continue
3892
- case 667:if(this.expression(_={},671)){e=_.expr; $.expr.args?.push( this.secureParens( e ) ); }continue
3893
- case 668:if(this.expression(_={},669)){e=_.expr; $.expr.args?.push( e ); }continue
3894
- case 669:switch(this.lk()){
3895
- case'escape':if(this.ck(670)){ this.pushXprToken( $.expr ); }continue
3896
- default:this.s=671;continue
3880
+ case 662:if(this.expression(_={},663)){e=_.expr; $.expr.args?.push( e ); }continue
3881
+ case 663:if(this.mk(664,'and')){ this.pushXprToken( $.expr ); }continue
3882
+ case 664:if(this.expression(_={},669)){e=_.expr; $.expr.args?.push( e ); }continue
3883
+ case 665:if(this.expression(_={},669)){e=_.expr; $.expr.args?.push( this.secureParens( e ) ); }continue
3884
+ case 666:if(this.expression(_={},667)){e=_.expr; $.expr.args?.push( e ); }continue
3885
+ case 667:switch(this.lk()){
3886
+ case'escape':if(this.ck(668)){ this.pushXprToken( $.expr ); }continue
3887
+ default:this.s=669;continue
3897
3888
  }
3898
- case 670:if(this.expression(_={},671)){e=_.expr; $.expr.args?.push( e ); }continue
3899
- case 671:this.s=656;{ this.attachLocation( $.expr ); }continue
3889
+ case 668:if(this.expression(_={},669)){e=_.expr; $.expr.args?.push( e ); }continue
3890
+ case 669:this.s=654;{ this.attachLocation( $.expr ); }continue
3900
3891
  default:
3901
3892
  if (this.s == null) this.attachLocation( $.expr )
3902
3893
  return this.exit_()
@@ -3905,21 +3896,21 @@ return this.exit_()
3905
3896
  valuePath($,$next,$startState){
3906
3897
  $.expr??={ path: [] }
3907
3898
  let pathItem
3908
- this.rule_($startState??673,$next)
3899
+ this.rule_($startState??671,$next)
3909
3900
  for(;;)switch(this.s){
3910
- case 673:if(this.mi(674,'ref')){ $.expr.path.push( pathItem = this.identAst() ); }continue
3911
- case 674:switch(this.l()){
3912
- case'(':case'[':this.argumentsAndFilter({pathStep:pathItem},675);continue
3913
- default:this.s=675;continue
3901
+ case 671:if(this.mi(672,'ref')){ $.expr.path.push( pathItem = this.identAst() ); }continue
3902
+ case 672:switch(this.l()){
3903
+ case'(':case'[':this.argumentsAndFilter({pathStep:pathItem},673);continue
3904
+ default:this.s=673;continue
3914
3905
  }
3915
- case 675:switch(this.l()){
3916
- case'.':this.gc(0,'isDotForPath')&&this.c(676);continue
3906
+ case 673:switch(this.l()){
3907
+ case'.':this.gc(0,'isDotForPath')&&this.c(674);continue
3917
3908
  default:this.gr(['*','+','-','/','<','=','>','?','!=','<=','<>','==','>=','in','is','or','||','and','not','like','between']);continue
3918
3909
  }
3919
- case 676:if(this.miA(677,'ref')){ $.expr.path.push( pathItem = this.identAst() ); }continue
3920
- case 677:switch(this.l()){
3921
- case'(':case'[':if(this.argumentsAndFilter({pathStep:pathItem},675)){ pathItem = null; }continue
3922
- default:this.s=675;continue
3910
+ case 674:if(this.miA(675,'ref')){ $.expr.path.push( pathItem = this.identAst() ); }continue
3911
+ case 675:switch(this.l()){
3912
+ case'(':case'[':if(this.argumentsAndFilter({pathStep:pathItem},673)){ pathItem = null; }continue
3913
+ default:this.s=673;continue
3923
3914
  }
3924
3915
  default:
3925
3916
  this.attachLocation( $.expr )
@@ -3928,48 +3919,48 @@ return this.exit_()
3928
3919
  }
3929
3920
  expressionOrQueryParens($,$next){
3930
3921
  $.expr??=undefined
3931
- this.rule_(679,$next)
3922
+ this.rule_(677,$next)
3932
3923
  for(;;)switch(this.s){
3933
- case 679:if(this.m(680,'(')){this.queryOnLeft()}continue;
3934
- case 680:switch(this.lk()){
3935
- case'(':this.expressionOrQueryParens($,681);continue
3936
- case'Id':case'#':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.expression($,683)){this.queryOnLeft('expr')}continue;
3937
- case'select':this.queryExpression($,684);continue
3924
+ case 677:if(this.m(678,'(')){this.queryOnLeft()}continue;
3925
+ case 678:switch(this.lk()){
3926
+ case'(':this.expressionOrQueryParens($,679);continue
3927
+ case'Id':case'#':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.expression($,681)){this.queryOnLeft('expr')}continue;
3928
+ case'select':this.queryExpression($,682);continue
3938
3929
  default:this.ei();continue
3939
3930
  }
3940
- case 681:switch(this.lk()){
3941
- case'*':case'+':case'-':case'/':case'<':case'=':case'>':case'?':case'!=':case'<=':case'<>':case'==':case'>=':case'in':case'is':case'or':case'||':case'and':case'not':case'like':case'between':if(this.expression($,682,645)){this.queryOnLeft('expr')}continue;
3942
- case',':if(this.continueExpressionslist($,684)){this.queryOnLeft('expr')}continue;
3943
- case'limit':case'minus':case'order':case'union':case'except':case'intersect':this.gc(684,'queryOnLeft')&&this.queryExpression($,684,456);continue
3944
- default:this.s=684;continue
3931
+ case 679:switch(this.lk()){
3932
+ case'*':case'+':case'-':case'/':case'<':case'=':case'>':case'?':case'!=':case'<=':case'<>':case'==':case'>=':case'in':case'is':case'or':case'||':case'and':case'not':case'like':case'between':if(this.expression($,680,643)){this.queryOnLeft('expr')}continue;
3933
+ case',':if(this.continueExpressionslist($,682)){this.queryOnLeft('expr')}continue;
3934
+ case'limit':case'minus':case'order':case'union':case'except':case'intersect':this.gc(682,'queryOnLeft')&&this.queryExpression($,682,455);continue
3935
+ default:this.s=682;continue
3945
3936
  }
3946
- case 682:switch(this.l()){
3947
- case',':this.continueExpressionslist($,684);continue
3948
- default:this.s=684;continue
3937
+ case 680:switch(this.l()){
3938
+ case',':this.continueExpressionslist($,682);continue
3939
+ default:this.s=682;continue
3949
3940
  }
3950
- case 683:switch(this.l()){
3951
- case',':this.continueExpressionslist($,684);continue
3952
- default:this.s=684;continue
3941
+ case 681:switch(this.l()){
3942
+ case',':this.continueExpressionslist($,682);continue
3943
+ default:this.s=682;continue
3953
3944
  }
3954
- case 684:if(this.m(0,')')){ this.surroundByParens( $.expr ); }continue
3945
+ case 682:if(this.m(0,')')){ this.surroundByParens( $.expr ); }continue
3955
3946
  default:return this.exit_()
3956
3947
  }
3957
3948
  }
3958
3949
  continueExpressionslist($,$next){
3959
3950
  let e;let _
3960
- this.rule_(686,$next)
3951
+ this.rule_(684,$next)
3961
3952
  for(;;)switch(this.s){
3962
- case 686:if(this.m(687,',')){ $.expr = { op: this.valueWithLocation( 'list' ), args: [ $.expr ], location: { ... $.expr.$parens?.at( -1 ) ?? $.expr.location } }; }continue
3963
- case 687:switch(this.lk()){
3964
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':this.s=688;continue
3953
+ case 684:if(this.m(685,',')){ $.expr = { op: this.valueWithLocation( 'list' ), args: [ $.expr ], location: { ... $.expr.$parens?.at( -1 ) ?? $.expr.location } }; }continue
3954
+ case 685:switch(this.lk()){
3955
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':this.s=686;continue
3965
3956
  default:this.ei();continue
3966
3957
  }
3967
- case 688:switch(this.lk()){
3968
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.expression(_={},689)){e=_.expr; $.expr.args.push( e ); }continue
3969
- default:this.gi(0,[')']);continue
3958
+ case 686:switch(this.l()){
3959
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},687)){e=_.expr; $.expr.args.push( e ); }continue
3960
+ default:this.gr([')']);continue
3970
3961
  }
3971
- case 689:switch(this.l()){
3972
- case',':this.c(688);continue
3962
+ case 687:switch(this.l()){
3963
+ case',':this.c(686);continue
3973
3964
  default:this.gr([')']);continue
3974
3965
  }
3975
3966
  default:
@@ -3980,30 +3971,30 @@ return this.exit_()
3980
3971
  caseExpression($,$next){
3981
3972
  $.expr??=undefined
3982
3973
  let e;let _
3983
- this.rule_(691,$next)
3974
+ this.rule_(689,$next)
3984
3975
  for(;;)switch(this.s){
3985
- case 691:if(this.mk(692,'case')){ $.expr.op = { val: 'ixpr', location: this.lb().location }; $.expr.args = []; this.pushXprToken( $.expr ); }continue
3986
- case 692:switch(this.lk()){
3987
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.expression(_={},693)){e=_.expr; $.expr.args.push( e ); }continue
3988
- default:this.gi(693);continue
3976
+ case 689:if(this.mk(690,'case')){ $.expr.op = { val: 'ixpr', location: this.lb().location }; $.expr.args = []; this.pushXprToken( $.expr ); }continue
3977
+ case 690:switch(this.lk()){
3978
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.expression(_={},691)){e=_.expr; $.expr.args.push( e ); }continue
3979
+ default:this.gi(691);continue
3989
3980
  }
3990
- case 693:switch(this.lk()){
3991
- case'when':this.s=694;continue
3981
+ case 691:switch(this.lk()){
3982
+ case'when':this.s=692;continue
3992
3983
  default:this.e();continue
3993
3984
  }
3994
- case 694:switch(this.lk()){
3995
- case'when':if(this.ck(695)){ this.pushXprToken( $.expr ); }continue
3985
+ case 692:switch(this.lk()){
3986
+ case'when':if(this.ck(693)){ this.pushXprToken( $.expr ); }continue
3987
+ default:this.s=696;continue
3988
+ }
3989
+ case 693:if(this.expression(_={},694)){e=_.expr; $.expr.args.push( e ); }continue
3990
+ case 694:if(this.mk(695,'then')){ this.pushXprToken( $.expr ); }continue
3991
+ case 695:if(this.expression(_={},692)){e=_.expr; $.expr.args.push( e ); }continue
3992
+ case 696:switch(this.lk()){
3993
+ case'else':if(this.ck(697)){ this.pushXprToken( $.expr ); }continue
3996
3994
  default:this.s=698;continue
3997
3995
  }
3998
- case 695:if(this.expression(_={},696)){e=_.expr; $.expr.args.push( e ); }continue
3999
- case 696:if(this.mk(697,'then')){ this.pushXprToken( $.expr ); }continue
4000
- case 697:if(this.expression(_={},694)){e=_.expr; $.expr.args.push( e ); }continue
4001
- case 698:switch(this.lk()){
4002
- case'else':if(this.ck(699)){ this.pushXprToken( $.expr ); }continue
4003
- default:this.s=700;continue
4004
- }
4005
- case 699:if(this.expression(_={},700)){e=_.expr; $.expr.args.push( e ); }continue
4006
- case 700:if(this.mk(0,'end')){ this.pushXprToken( $.expr ); }continue
3996
+ case 697:if(this.expression(_={},698)){e=_.expr; $.expr.args.push( e ); }continue
3997
+ case 698:if(this.mk(0,'end')){ this.pushXprToken( $.expr ); }continue
4007
3998
  default:
4008
3999
  this.attachLocation( $.expr )
4009
4000
  return this.exit_()
@@ -4012,14 +4003,14 @@ return this.exit_()
4012
4003
  castFunction($,$next){
4013
4004
  $.expr??=undefined
4014
4005
  let arg;let _
4015
- this.rule_(702,$next)
4006
+ this.rule_(700,$next)
4016
4007
  for(;;)switch(this.s){
4017
- case 702:if(this.mk(703,'cast')){ $.expr.op = this.valueWithLocation(); }continue
4018
- case 703:if(this.m(704,'(')){ $.expr.args = this.createArray(); }continue
4019
- case 704:if(this.expression(_={},705)){arg=_.expr; $.expr.args?.push( arg ); }continue
4020
- case 705:this.mk(706,'as');continue
4021
- case 706:this.typeRefOptArgs({art:$.expr},707);continue
4022
- case 707:if(this.m(0,')')){ this.finalizeDictOrArray( $.expr.args ); }continue
4008
+ case 700:if(this.mk(701,'cast')){ $.expr.op = this.valueWithLocation(); }continue
4009
+ case 701:if(this.m(702,'(')){ $.expr.args = this.createArray(); }continue
4010
+ case 702:if(this.expression(_={},703)){arg=_.expr; $.expr.args?.push( arg ); }continue
4011
+ case 703:this.mk(704,'as');continue
4012
+ case 704:this.typeRefOptArgs({art:$.expr},705);continue
4013
+ case 705:if(this.m(0,')')){ this.finalizeDictOrArray( $.expr.args ); }continue
4023
4014
  default:
4024
4015
  this.attachLocation( $.expr )
4025
4016
  return this.exit_()
@@ -4027,66 +4018,66 @@ return this.exit_()
4027
4018
  }
4028
4019
  argumentsAndFilter($,$next){
4029
4020
  let open;let id;let expr;let _
4030
- this.rule_(709,$next)
4021
+ this.rule_(707,$next)
4031
4022
  for(;;)switch(this.s){
4032
- case 709:switch(this.l()){
4033
- case'(':if(this.c(710)){open=this.lb();this.prepareSpecialFunction(); $.pathStep.args = this.createArray(); }continue
4034
- default:this.s=729;continue
4023
+ case 707:switch(this.l()){
4024
+ case'(':if(this.c(708)){open=this.lb();this.prepareSpecialFunction(); $.pathStep.args = this.createArray(); }continue
4025
+ default:this.s=727;continue
4035
4026
  }
4036
- case 710:switch(this.l()){
4037
- case'Id':if(this.gc(722,'isNamedArg')&&this.ciA(711,'paramname'))id=this.lb();continue
4038
- default:this.s=722;continue
4027
+ case 708:switch(this.l()){
4028
+ case'Id':if(this.gc(720,'isNamedArg')&&this.ciA(709,'paramname'))id=this.lb();continue
4029
+ default:this.s=720;continue
4039
4030
  }
4040
- case 711:switch(this.l()){
4041
- case':':if(this.c(712)){ $.pathStep.args = this.createDict( open ); $.pathStep.$syntax = ':'; }continue
4042
- case'=>':if(this.c(717)){ $.pathStep.args = this.createDict(); }continue
4031
+ case 709:switch(this.l()){
4032
+ case':':if(this.c(710)){ $.pathStep.args = this.createDict( open ); $.pathStep.$syntax = ':'; }continue
4033
+ case'=>':if(this.c(715)){ $.pathStep.args = this.createDict(); }continue
4043
4034
  default:this.e();continue
4044
4035
  }
4045
- case 712:if(this.expression(_={},713)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4046
- case 713:switch(this.l()){
4047
- case',':this.c(714);continue
4048
- default:this.s=728;continue
4036
+ case 710:if(this.expression(_={},711)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4037
+ case 711:switch(this.l()){
4038
+ case',':this.c(712);continue
4039
+ default:this.s=726;continue
4049
4040
  }
4050
- case 714:switch(this.l()){
4051
- case'Id':if(this.ciA(715,'paramname'))id=this.lb();continue
4052
- case')':this.s=728;continue
4041
+ case 712:switch(this.l()){
4042
+ case'Id':if(this.ciA(713,'paramname'))id=this.lb();continue
4043
+ case')':this.s=726;continue
4053
4044
  default:this.e();continue
4054
4045
  }
4055
- case 715:this.m(716,':');continue
4056
- case 716:if(this.expression(_={},713)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4057
- case 717:if(this.expression(_={},718)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4058
- case 718:switch(this.l()){
4059
- case',':this.c(719);continue
4060
- default:this.s=728;continue
4046
+ case 713:this.m(714,':');continue
4047
+ case 714:if(this.expression(_={},711)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4048
+ case 715:if(this.expression(_={},716)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4049
+ case 716:switch(this.l()){
4050
+ case',':this.c(717);continue
4051
+ default:this.s=726;continue
4061
4052
  }
4062
- case 719:switch(this.l()){
4063
- case'Id':if(this.ciA(720,'paramname'))id=this.lb();continue
4064
- case')':this.s=728;continue
4053
+ case 717:switch(this.l()){
4054
+ case'Id':if(this.ciA(718,'paramname'))id=this.lb();continue
4055
+ case')':this.s=726;continue
4065
4056
  default:this.e();continue
4066
4057
  }
4067
- case 720:this.m(721,'=>');continue
4068
- case 721:if(this.expression(_={},718)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4069
- case 722:switch(this.l()){
4070
- case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':case'DeleteStarFromSet':if(this.funcExpression(_={},723)){expr=_.expr; $.pathStep.args.push( expr ); }continue
4071
- default:this.s=728;continue
4058
+ case 718:this.m(719,'=>');continue
4059
+ case 719:if(this.expression(_={},716)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4060
+ case 720:switch(this.l()){
4061
+ case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':case'DeleteStarFromSet':if(this.funcExpression(_={},721)){expr=_.expr; $.pathStep.args.push( expr ); }continue
4062
+ default:this.s=726;continue
4072
4063
  }
4073
- case 723:switch(this.l()){
4074
- case',':if(this.c(724)){this.nextFunctionArgument()}continue;
4075
- default:this.s=725;continue
4064
+ case 721:switch(this.l()){
4065
+ case',':if(this.c(722)){this.nextFunctionArgument()}continue;
4066
+ default:this.s=723;continue
4076
4067
  }
4077
- case 724:switch(this.lk()){
4078
- case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':case'DeleteStarFromSet':if(this.funcExpression(_={},723)){expr=_.expr; $.pathStep.args.push( expr ); }continue
4079
- case')':case'order':this.lP()&&this.ec('atRightParen')&&this.g(725);continue
4068
+ case 722:switch(this.lk()){
4069
+ case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Number':case'String':case'exists':case'QuotedLiteral':case'DeleteStarFromSet':if(this.funcExpression(_={},721)){expr=_.expr; $.pathStep.args.push( expr ); }continue
4070
+ case')':case'order':this.lP()&&this.ec('atRightParen')&&this.g(723);continue
4080
4071
  default:this.ei();continue
4081
4072
  }
4082
- case 725:switch(this.lk()){
4083
- case'order':if(this.ck(726)){ expr = $.pathStep.args[$.pathStep.args.length - 1] = this.applyOpToken( expr ); }continue
4084
- default:this.s=728;continue
4073
+ case 723:switch(this.lk()){
4074
+ case'order':if(this.ck(724)){ expr = $.pathStep.args[$.pathStep.args.length - 1] = this.applyOpToken( expr ); }continue
4075
+ default:this.s=726;continue
4085
4076
  }
4086
- case 726:if(this.mk(727,'by')){ this.pushXprToken( expr ); }continue
4087
- case 727:if(this.orderByClauseAsXpr({outer:expr.args},728)){ this.attachLocation( expr ); }continue
4088
- case 728:if(this.m(729,')')){ this.finalizeDictOrArray( $.pathStep.args ); }continue
4089
- case 729:switch(this.l()){
4077
+ case 724:if(this.mk(725,'by')){ this.pushXprToken( expr ); }continue
4078
+ case 725:if(this.orderByClauseAsXpr({outer:expr.args},726)){ this.attachLocation( expr ); }continue
4079
+ case 726:if(this.m(727,')')){ this.finalizeDictOrArray( $.pathStep.args ); }continue
4080
+ case 727:switch(this.l()){
4090
4081
  case'[':this.cardinalityAndFilter($,0);continue
4091
4082
  default:this.gr(['*','+','-','.','/','<','=','>','?','!=','<=','<>','==','>=','in','is','or','||','and','not','like','between']);continue
4092
4083
  }
@@ -4097,22 +4088,22 @@ funcExpression($,$next){
4097
4088
  $.expr??=undefined
4098
4089
  let args
4099
4090
  let tok;let e;let _
4100
- this.rule_(731,$next)
4091
+ this.rule_(729,$next)
4101
4092
  for(;;)switch(this.s){
4102
- case 731:switch(this.lGenericIntroOrExpr()){
4103
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},733))$.expr=_.expr;continue
4104
- case'GenericExpr':if(this.ckA(733)){tok=this.lb(); $.expr = { val: tok.keyword ?? tok.type, location: tok.location, literal: 'token' }; }continue
4105
- case'GenericIntro':if(this.ckA(732)){ $.expr = this.applyOpToken(); args = $.expr.args; }continue
4093
+ case 729:switch(this.lGenericIntroOrExpr()){
4094
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},731))$.expr=_.expr;continue
4095
+ case'GenericExpr':if(this.ckA(731)){tok=this.lb(); $.expr = { val: tok.keyword ?? tok.type, location: tok.location, literal: 'token' }; }continue
4096
+ case'GenericIntro':if(this.ckA(730)){ $.expr = this.applyOpToken(); args = $.expr.args; }continue
4106
4097
  default:this.e();continue
4107
4098
  }
4108
- case 732:if(this.expression(_={},733)){e=_.expr; $.expr.args.push( e ); }continue
4109
- case 733:switch(this.lGenericSeparator()){
4110
- case'GenericSeparator':if(this.ckA(734)){ if (args) this.pushXprToken( args ); else { $.expr= this.applyOpToken( $.expr ); args = $.expr.args; } }continue
4099
+ case 730:if(this.expression(_={},731)){e=_.expr; $.expr.args.push( e ); }continue
4100
+ case 731:switch(this.lGenericSeparator()){
4101
+ case'GenericSeparator':if(this.ckA(732)){ if (args) this.pushXprToken( args ); else { $.expr= this.applyOpToken( $.expr ); args = $.expr.args; } }continue
4111
4102
  default:this.gr([')',',','order']);continue
4112
4103
  }
4113
- case 734:switch(this.lGenericExpr()){
4114
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},733)){e=_.expr; args.push( e ); }continue
4115
- case'GenericExpr':if(this.ckA(733)){ this.pushXprToken( args ); }continue
4104
+ case 732:switch(this.lGenericExpr()){
4105
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},731)){e=_.expr; args.push( e ); }continue
4106
+ case'GenericExpr':if(this.ckA(731)){ this.pushXprToken( args ); }continue
4116
4107
  default:this.e();continue
4117
4108
  }
4118
4109
  default:
@@ -4122,27 +4113,27 @@ return this.exit_()
4122
4113
  }
4123
4114
  overClause($,$next){
4124
4115
  let over=[]
4125
- this.rule_(736,$next)
4116
+ this.rule_(734,$next)
4126
4117
  for(;;)switch(this.s){
4127
- case 736:this.m(737,'(');continue
4128
- case 737:switch(this.lk()){
4129
- case'partition':if(this.ck(738)){ this.pushXprToken( over ); }continue
4130
- default:this.s=740;continue
4131
- }
4132
- case 738:if(this.mk(739,'by')){ this.pushXprToken( over ); }continue
4133
- case 739:this.expressionsAsXpr({outer:over},740);continue
4134
- case 740:switch(this.lk()){
4135
- case'order':if(this.ck(741)){ this.pushXprToken( over ); }continue
4118
+ case 734:this.m(735,'(');continue
4119
+ case 735:switch(this.lk()){
4120
+ case'partition':if(this.ck(736)){ this.pushXprToken( over ); }continue
4121
+ default:this.s=738;continue
4122
+ }
4123
+ case 736:if(this.mk(737,'by')){ this.pushXprToken( over ); }continue
4124
+ case 737:this.expressionsAsXpr({outer:over},738);continue
4125
+ case 738:switch(this.lk()){
4126
+ case'order':if(this.ck(739)){ this.pushXprToken( over ); }continue
4127
+ default:this.s=741;continue
4128
+ }
4129
+ case 739:if(this.mk(740,'by')){ this.pushXprToken( over ); }continue
4130
+ case 740:this.orderByClauseAsXpr({outer:over},741);continue
4131
+ case 741:switch(this.lk()){
4132
+ case'rows':if(this.ck(742)){ this.pushXprToken( over ); }continue
4136
4133
  default:this.s=743;continue
4137
4134
  }
4138
- case 741:if(this.mk(742,'by')){ this.pushXprToken( over ); }continue
4139
- case 742:this.orderByClauseAsXpr({outer:over},743);continue
4140
- case 743:switch(this.lk()){
4141
- case'rows':if(this.ck(744)){ this.pushXprToken( over ); }continue
4142
- default:this.s=745;continue
4143
- }
4144
- case 744:this.windowFrameClause({outer:over},745);continue
4145
- case 745:this.m(0,')');continue
4135
+ case 742:this.windowFrameClause({outer:over},743);continue
4136
+ case 743:this.m(0,')');continue
4146
4137
  default:
4147
4138
  $.outer.push( this.surroundByParens( this.ixprAst( over ) ) )
4148
4139
  return this.exit_()
@@ -4151,14 +4142,14 @@ return this.exit_()
4151
4142
  expressionsAsXpr($,$next){
4152
4143
  let args=[]
4153
4144
  let expr;let _
4154
- this.rule_(747,$next)
4145
+ this.rule_(745,$next)
4155
4146
  for(;;)switch(this.s){
4156
- case 747:if(this.expression(_={},748)){expr=_.expr; args.push( expr ); }continue
4157
- case 748:switch(this.l()){
4158
- case',':if(this.c(749)){ this.pushXprToken( args ); }continue
4147
+ case 745:if(this.expression(_={},746)){expr=_.expr; args.push( expr ); }continue
4148
+ case 746:switch(this.l()){
4149
+ case',':if(this.c(747)){ this.pushXprToken( args ); }continue
4159
4150
  default:this.gr([')','rows','order']);continue
4160
4151
  }
4161
- case 749:if(this.expression(_={},748)){expr=_.expr; args.push( expr ); }continue
4152
+ case 747:if(this.expression(_={},746)){expr=_.expr; args.push( expr ); }continue
4162
4153
  default:
4163
4154
  $.outer.push( this.ixprAst( args ) )
4164
4155
  return this.exit_()
@@ -4166,14 +4157,14 @@ return this.exit_()
4166
4157
  }
4167
4158
  orderByClauseAsXpr($,$next){
4168
4159
  let args=[]
4169
- this.rule_(751,$next)
4160
+ this.rule_(749,$next)
4170
4161
  for(;;)switch(this.s){
4171
- case 751:this.orderBySpecAsXpr({args},752);continue
4172
- case 752:switch(this.l()){
4173
- case',':if(this.c(753)){ this.pushXprToken( args ); }continue
4162
+ case 749:this.orderBySpecAsXpr({args},750);continue
4163
+ case 750:switch(this.l()){
4164
+ case',':if(this.c(751)){ this.pushXprToken( args ); }continue
4174
4165
  default:this.gr([')']);continue
4175
4166
  }
4176
- case 753:this.orderBySpecAsXpr({args},752);continue
4167
+ case 751:this.orderBySpecAsXpr({args},750);continue
4177
4168
  default:
4178
4169
  $.outer.push( this.ixprAst( args ) )
4179
4170
  return this.exit_()
@@ -4181,18 +4172,18 @@ return this.exit_()
4181
4172
  }
4182
4173
  orderBySpecAsXpr($,$next){
4183
4174
  let expr;let _
4184
- this.rule_(755,$next)
4175
+ this.rule_(753,$next)
4185
4176
  for(;;)switch(this.s){
4186
- case 755:if(this.expression(_={},756)){expr=_.expr; $.args.push( expr ); }continue
4187
- case 756:switch(this.lk()){
4188
- case'asc':case'desc':if(this.ck(757)){ this.pushXprToken( $.args ); }continue
4189
- default:this.s=757;continue
4177
+ case 753:if(this.expression(_={},754)){expr=_.expr; $.args.push( expr ); }continue
4178
+ case 754:switch(this.lk()){
4179
+ case'asc':case'desc':if(this.ck(755)){ this.pushXprToken( $.args ); }continue
4180
+ default:this.s=755;continue
4190
4181
  }
4191
- case 757:switch(this.lk()){
4192
- case'nulls':if(this.ck(758)){ this.pushXprToken( $.args ); }continue
4182
+ case 755:switch(this.lk()){
4183
+ case'nulls':if(this.ck(756)){ this.pushXprToken( $.args ); }continue
4193
4184
  default:this.gr([')',',']);continue
4194
4185
  }
4195
- case 758:switch(this.lk()){
4186
+ case 756:switch(this.lk()){
4196
4187
  case'last':case'first':if(this.ck(0)){ this.pushXprToken( $.args ); }continue
4197
4188
  default:this.e();continue
4198
4189
  }
@@ -4201,50 +4192,50 @@ default:return this.exit_()
4201
4192
  }
4202
4193
  windowFrameClause($,$next){
4203
4194
  let args=[]
4204
- this.rule_(760,$next)
4195
+ this.rule_(758,$next)
4205
4196
  for(;;)switch(this.s){
4206
- case 760:switch(this.lk()){
4207
- case'unbounded':if(this.ck(761)){ this.pushXprToken( args ); }continue
4208
- case'Number':if(this.c(761)){ args.push( this.unsignedIntegerLiteral() ); }continue
4209
- case'current':if(this.ck(762)){ this.pushXprToken( args ); }continue
4210
- case'between':if(this.ck(763)){ this.pushXprToken( args ); }continue
4197
+ case 758:switch(this.lk()){
4198
+ case'unbounded':if(this.ck(759)){ this.pushXprToken( args ); }continue
4199
+ case'Number':if(this.c(759)){ args.push( this.unsignedIntegerLiteral() ); }continue
4200
+ case'current':if(this.ck(760)){ this.pushXprToken( args ); }continue
4201
+ case'between':if(this.ck(761)){ this.pushXprToken( args ); }continue
4211
4202
  default:this.e();continue
4212
4203
  }
4213
- case 761:if(this.mk(0,'preceding')){ this.pushXprToken( args ); }continue
4214
- case 762:if(this.mk(0,'row')){ this.pushXprToken( args ); }continue
4215
- case 763:this.windowFrameBoundSpec({args},764);continue
4216
- case 764:if(this.mk(765,'and')){ this.pushXprToken( args ); }continue
4217
- case 765:this.windowFrameBoundSpec({args},0);continue
4204
+ case 759:if(this.mk(0,'preceding')){ this.pushXprToken( args ); }continue
4205
+ case 760:if(this.mk(0,'row')){ this.pushXprToken( args ); }continue
4206
+ case 761:this.windowFrameBoundSpec({args},762);continue
4207
+ case 762:if(this.mk(763,'and')){ this.pushXprToken( args ); }continue
4208
+ case 763:this.windowFrameBoundSpec({args},0);continue
4218
4209
  default:
4219
4210
  $.outer.push( this.ixprAst( args ) )
4220
4211
  return this.exit_()
4221
4212
  }
4222
4213
  }
4223
4214
  windowFrameBoundSpec($,$next){
4224
- this.rule_(767,$next)
4215
+ this.rule_(765,$next)
4225
4216
  for(;;)switch(this.s){
4226
- case 767:switch(this.lk()){
4227
- case'unbounded':if(this.ck(768)){ this.pushXprToken( $.args ); }continue
4228
- case'Number':if(this.c(768)){ $.args.push( this.unsignedIntegerLiteral() ); }continue
4229
- case'current':if(this.ck(770)){ this.pushXprToken( $.args ); }continue
4217
+ case 765:switch(this.lk()){
4218
+ case'unbounded':if(this.ck(766)){ this.pushXprToken( $.args ); }continue
4219
+ case'Number':if(this.c(766)){ $.args.push( this.unsignedIntegerLiteral() ); }continue
4220
+ case'current':if(this.ck(768)){ this.pushXprToken( $.args ); }continue
4230
4221
  default:this.e();continue
4231
4222
  }
4232
- case 768:switch(this.lk()){
4233
- case'following':this.ck(769);continue
4234
- case'preceding':this.ck(769);continue
4223
+ case 766:switch(this.lk()){
4224
+ case'following':this.ck(767);continue
4225
+ case'preceding':this.ck(767);continue
4235
4226
  default:this.e();continue
4236
4227
  }
4237
- case 769:if(this.gr([])){ this.pushXprToken( $.args ); }continue
4238
- case 770:if(this.mk(0,'row')){ this.pushXprToken( $.args ); }continue
4228
+ case 767:if(this.gr()){ this.pushXprToken( $.args ); }continue
4229
+ case 768:if(this.mk(0,'row')){ this.pushXprToken( $.args ); }continue
4239
4230
  default:return this.exit_()
4240
4231
  }
4241
4232
  }
4242
4233
  literalValue($,$next){
4243
4234
  $.expr??={}
4244
- this.rule_(772,$next)
4235
+ this.rule_(770,$next)
4245
4236
  for(;;)switch(this.s){
4246
- case 772:switch(this.lk()){
4247
- case'#':if(this.c(773)){ this.reportUnexpectedSpace(); }continue
4237
+ case 770:switch(this.lk()){
4238
+ case'#':if(this.c(771)){ this.reportUnexpectedSpace(); }continue
4248
4239
  case'null':if(this.ck(0)){ $.expr = { literal: 'null', val: null }; }continue
4249
4240
  case'true':case'false':if(this.ck(0)){ $.expr = { literal: 'boolean', val: this.lb().keyword === 'true' }; }continue
4250
4241
  case'Number':if(this.c(0)){ $.expr = this.numberLiteral(); }continue
@@ -4252,17 +4243,17 @@ case'String':if(this.c(0)){ $.expr = this.quotedLiteral(); }continue
4252
4243
  case'QuotedLiteral':if(this.c(0)){ $.expr = this.quotedLiteral(); }continue
4253
4244
  default:this.e();continue
4254
4245
  }
4255
- case 773:if(this.miA(0,'enumref')){ $.expr = { literal: 'enum', sym: this.identAst() } }continue
4246
+ case 771:if(this.miA(0,'enumref')){ $.expr = { literal: 'enum', sym: this.identAst() } }continue
4256
4247
  default:
4257
4248
  this.attachLocation( $.expr )
4258
4249
  return this.exit_()
4259
4250
  }
4260
4251
  }
4261
4252
  annoAssignStd($,$next){
4262
- this.rule_(775,$next)
4253
+ this.rule_(773,$next)
4263
4254
  for(;;)switch(this.s){
4264
- case 775:if(this.m(776,'@')){this.annoInSameLine(); this.reportDubiousAnnoSpacing(); }continue
4265
- case 776:switch(this.l()){
4255
+ case 773:if(this.m(774,'@')){this.annoInSameLine(); this.reportDubiousAnnoSpacing(); }continue
4256
+ case 774:switch(this.l()){
4266
4257
  case'(':this.annoAssignParen($,0);continue
4267
4258
  case'Id':this.annoAssignBase($,0);continue
4268
4259
  default:this.e();continue
@@ -4273,10 +4264,10 @@ return this.exit_()
4273
4264
  }
4274
4265
  }
4275
4266
  annoAssignCol($,$next){
4276
- this.rule_(778,$next)
4267
+ this.rule_(776,$next)
4277
4268
  for(;;)switch(this.s){
4278
- case 778:if(this.m(779,'@')){ this.reportDubiousAnnoSpacing(); }continue
4279
- case 779:switch(this.l()){
4269
+ case 776:if(this.m(777,'@')){ this.reportDubiousAnnoSpacing(); }continue
4270
+ case 777:switch(this.l()){
4280
4271
  case'(':this.annoAssignParen($,0);continue
4281
4272
  case'Id':this.annoAssignBase($,0);continue
4282
4273
  default:this.e();continue
@@ -4288,10 +4279,10 @@ return this.exit_()
4288
4279
  }
4289
4280
  annoAssignMid($,$next){
4290
4281
  let name;let _
4291
- this.rule_(781,$next)
4282
+ this.rule_(779,$next)
4292
4283
  for(;;)switch(this.s){
4293
- case 781:if(this.m(782,'@')){this.annoInSameLine(); this.reportDubiousAnnoSpacing(); }continue
4294
- case 782:switch(this.l()){
4284
+ case 779:if(this.m(780,'@')){this.annoInSameLine(); this.reportDubiousAnnoSpacing(); }continue
4285
+ case 780:switch(this.l()){
4295
4286
  case'(':this.annoAssignParen($,0);continue
4296
4287
  case'Id':if(this.annoNamePath(_={category:'anno'},0)){name=_.name; this.assignAnnotation( $.art, {}, name ); this.warnIfColonFollows( name ); }continue
4297
4288
  default:this.e();continue
@@ -4302,33 +4293,33 @@ return this.exit_()
4302
4293
  }
4303
4294
  }
4304
4295
  annoAssignParen($,$next){
4305
- this.rule_(784,$next)
4296
+ this.rule_(782,$next)
4306
4297
  for(;;)switch(this.s){
4307
- case 784:if(this.m(785,'(')){this.annoInSameLine()}continue;
4308
- case 785:switch(this.l()){
4309
- case'Id':this.annoAssignBase({art:$.art},786);continue
4310
- default:this.s=787;continue
4311
- }
4312
- case 786:switch(this.l()){
4313
- case',':this.c(785);continue
4314
- case')':this.s=787;continue
4298
+ case 782:if(this.m(783,'(')){this.annoInSameLine()}continue;
4299
+ case 783:switch(this.l()){
4300
+ case'Id':this.annoAssignBase({art:$.art},784);continue
4301
+ default:this.s=785;continue
4302
+ }
4303
+ case 784:switch(this.l()){
4304
+ case',':this.c(783);continue
4305
+ case')':this.s=785;continue
4315
4306
  default:this.e();continue
4316
4307
  }
4317
- case 787:this.m(0,')');continue
4308
+ case 785:this.m(0,')');continue
4318
4309
  default:return this.exit_()
4319
4310
  }
4320
4311
  }
4321
4312
  annoAssignBase($,$next){
4322
4313
  let value={}
4323
4314
  let name;let _
4324
- this.rule_(789,$next)
4315
+ this.rule_(787,$next)
4325
4316
  for(;;)switch(this.s){
4326
- case 789:if(this.annoNamePath(_={category:'anno'},790))name=_.name;continue
4327
- case 790:switch(this.l()){
4328
- case':':this.gc(0,'annoInSameLine')&&this.c(791);continue
4329
- default:this.gr([]);continue
4317
+ case 787:if(this.annoNamePath(_={category:'anno'},788))name=_.name;continue
4318
+ case 788:switch(this.l()){
4319
+ case':':this.gc(0,'annoInSameLine')&&this.c(789);continue
4320
+ default:this.gr();continue
4330
4321
  }
4331
- case 791:if(this.annoValue(_={},0))value=_.value;continue
4322
+ case 789:if(this.annoValue(_={},0))value=_.value;continue
4332
4323
  default:
4333
4324
  this.assignAnnotation( $.art, value, name || {} )
4334
4325
  return this.exit_()
@@ -4337,22 +4328,22 @@ return this.exit_()
4337
4328
  annoNamePath($,$next){
4338
4329
  $.name??=new XsnName()
4339
4330
  let at
4340
- this.rule_(793,$next)
4331
+ this.rule_(791,$next)
4341
4332
  for(;;)switch(this.s){
4342
- case 793:if(this.miA(794,$.category)){ $.name.path = [ this.identAst() ]; }continue
4343
- case 794:switch(this.l()){
4344
- case'.':this.c(795);continue
4345
- default:this.s=797;continue
4346
- }
4347
- case 795:switch(this.l()){
4348
- case'Id':if(this.ciA(794,$.category)){ $.name.path.push( this.identAst() ); }continue
4349
- case'@':if(this.c(796))at=this.lb();continue
4333
+ case 791:if(this.miA(792,$.category)){ $.name.path = [ this.identAst() ]; }continue
4334
+ case 792:switch(this.l()){
4335
+ case'.':this.c(793);continue
4336
+ default:this.s=795;continue
4337
+ }
4338
+ case 793:switch(this.l()){
4339
+ case'Id':if(this.ciA(792,$.category)){ $.name.path.push( this.identAst() ); }continue
4340
+ case'@':if(this.c(794))at=this.lb();continue
4350
4341
  default:this.e();continue
4351
4342
  }
4352
- case 796:if(this.miA(794,$.category)){ $.name.path.push( this.identAstWithPrefix( at ) ); }continue
4353
- case 797:switch(this.l()){
4343
+ case 794:if(this.miA(792,$.category)){ $.name.path.push( this.identAstWithPrefix( at ) ); }continue
4344
+ case 795:switch(this.l()){
4354
4345
  case'#':this.gc(0,'annoInSameLine')&&this.annoPathVariant({nameOrRef:$.name},0);continue
4355
- default:this.gr([]);continue
4346
+ default:this.gr();continue
4356
4347
  }
4357
4348
  default:
4358
4349
  this.attachLocation( $.name )
@@ -4361,27 +4352,27 @@ return this.exit_()
4361
4352
  }
4362
4353
  annoPath($,$next){
4363
4354
  let at
4364
- this.rule_(799,$next)
4355
+ this.rule_(797,$next)
4365
4356
  for(;;)switch(this.s){
4366
- case 799:switch(this.l()){
4367
- case'Id':if(this.ciA(801,$.category)){ $.nameOrRef.path = [ this.identAst() ]; }continue
4368
- case'@':if(this.c(800))at=this.lb();continue
4357
+ case 797:switch(this.l()){
4358
+ case'Id':if(this.ciA(799,$.category)){ $.nameOrRef.path = [ this.identAst() ]; }continue
4359
+ case'@':if(this.c(798))at=this.lb();continue
4369
4360
  default:this.e();continue
4370
4361
  }
4371
- case 800:if(this.miA(801,$.category)){ $.nameOrRef.path = [ this.identAstWithPrefix( at ) ]; }continue
4372
- case 801:switch(this.l()){
4373
- case'.':this.c(802);continue
4374
- default:this.s=804;continue
4362
+ case 798:if(this.miA(799,$.category)){ $.nameOrRef.path = [ this.identAstWithPrefix( at ) ]; }continue
4363
+ case 799:switch(this.l()){
4364
+ case'.':this.c(800);continue
4365
+ default:this.s=802;continue
4375
4366
  }
4376
- case 802:switch(this.l()){
4377
- case'Id':if(this.ciA(801,$.category)){ $.nameOrRef.path.push( this.identAst() ); }continue
4378
- case'@':if(this.c(803))at=this.lb();continue
4367
+ case 800:switch(this.l()){
4368
+ case'Id':if(this.ciA(799,$.category)){ $.nameOrRef.path.push( this.identAst() ); }continue
4369
+ case'@':if(this.c(801))at=this.lb();continue
4379
4370
  default:this.e();continue
4380
4371
  }
4381
- case 803:if(this.miA(801,$.category)){ $.nameOrRef.path.push( this.identAstWithPrefix( at ) ); }continue
4382
- case 804:switch(this.l()){
4372
+ case 801:if(this.miA(799,$.category)){ $.nameOrRef.path.push( this.identAstWithPrefix( at ) ); }continue
4373
+ case 802:switch(this.l()){
4383
4374
  case'#':this.annoPathVariant({nameOrRef:$.nameOrRef},0);continue
4384
- default:this.gr([]);continue
4375
+ default:this.gr();continue
4385
4376
  }
4386
4377
  default:
4387
4378
  this.attachLocation( $.nameOrRef )
@@ -4389,15 +4380,15 @@ return this.exit_()
4389
4380
  }
4390
4381
  }
4391
4382
  annoPathVariant($,$next){
4392
- this.rule_(806,$next)
4383
+ this.rule_(804,$next)
4393
4384
  for(;;)switch(this.s){
4394
- case 806:if(this.m(807,'#')){ this.reportUnexpectedSpace(); }continue
4395
- case 807:if(this.miA(808,'variant')){ $.nameOrRef.variant = { path: [ this.identAst() ] }; }continue
4396
- case 808:switch(this.l()){
4397
- case'.':this.c(809);continue
4398
- default:this.gr([]);continue
4385
+ case 804:if(this.m(805,'#')){ this.reportUnexpectedSpace(); }continue
4386
+ case 805:if(this.miA(806,'variant')){ $.nameOrRef.variant = { path: [ this.identAst() ] }; }continue
4387
+ case 806:switch(this.l()){
4388
+ case'.':this.c(807);continue
4389
+ default:this.gr();continue
4399
4390
  }
4400
- case 809:if(this.miA(808,'variant')){ $.nameOrRef.variant.path.push( this.identAst() ); }continue
4391
+ case 807:if(this.miA(806,'variant')){ $.nameOrRef.variant.path.push( this.identAst() ); }continue
4401
4392
  default:
4402
4393
  this.attachLocation( $.nameOrRef.variant )
4403
4394
  return this.exit_()
@@ -4407,14 +4398,14 @@ annoStructValue($,$next){
4407
4398
  $.value??={}
4408
4399
  let name=new XsnName()
4409
4400
  let _
4410
- this.rule_(811,$next)
4401
+ this.rule_(809,$next)
4411
4402
  for(;;)switch(this.s){
4412
- case 811:if(this.annoPath({nameOrRef:name,category:'name'},812)){ this.attachLocation( name ); }continue
4413
- case 812:switch(this.l()){
4414
- case':':this.c(813);continue
4403
+ case 809:if(this.annoPath({nameOrRef:name,category:'name'},810)){ this.attachLocation( name ); }continue
4404
+ case 810:switch(this.l()){
4405
+ case':':this.c(811);continue
4415
4406
  default:if(this.gr(['Id',',','@','}'])){ this.attachLocation( $.value ); }continue
4416
4407
  }
4417
- case 813:if(this.annoValue(_={},0))$.value=_.value;continue
4408
+ case 811:if(this.annoValue(_={},0))$.value=_.value;continue
4418
4409
  default:
4419
4410
  $.value.name = name
4420
4411
  return this.exit_()
@@ -4423,53 +4414,53 @@ return this.exit_()
4423
4414
  annoValue($,$next){
4424
4415
  $.value??={}
4425
4416
  let sign;let sub;let ellipsis;let upTo;let _
4426
- this.rule_(815,$next)
4417
+ this.rule_(813,$next)
4427
4418
  for(;;)switch(this.s){
4428
- case 815:switch(this.lk()){
4419
+ case 813:switch(this.lk()){
4429
4420
  case'#':case'null':case'true':case'false':case'Number':case'String':case'QuotedLiteral':if(this.literalValue(_={},0)){$.value=_.expr; this.adjustAnnoNumber( $.value ); }continue
4430
- case'+':case'-':if(this.c(816))sign=this.lb();continue
4421
+ case'+':case'-':if(this.c(814))sign=this.lb();continue
4431
4422
  case'Id':case'@':this.annoPath({nameOrRef:$.value,category:'annoref'},0);continue
4432
- case'{':if(this.c(817)){ if (!this.dynamic_.arrayAnno) $.value.$flatten = [];
4423
+ case'{':if(this.c(815)){ if (!this.dynamic_.arrayAnno) $.value.$flatten = [];
4433
4424
  else { $.value.struct = Object.create(null); $.value.literal = 'struct'; } }continue
4434
- case'[':if(this.c(821)){this.arrayAnno(); $.value.val = []; $.value.literal = 'array' }continue
4435
- case'(':this.c(828);continue
4425
+ case'[':if(this.c(819)){this.arrayAnno(); $.value.val = []; $.value.literal = 'array' }continue
4426
+ case'(':this.c(826);continue
4436
4427
  default:this.ei();continue
4437
4428
  }
4438
- case 816:if(this.m(0,'Number')){ this.adjustAnnoNumber( $.value = this.numberLiteral( sign ) ); }continue
4439
- case 817:switch(this.l()){
4440
- case'Id':case'@':if(this.annoStructValue(_={},818)){sub=_.value; if ($.value.$flatten) $.value.$flatten.push( sub );
4429
+ case 814:if(this.m(0,'Number')){ this.adjustAnnoNumber( $.value = this.numberLiteral( sign ) ); }continue
4430
+ case 815:switch(this.l()){
4431
+ case'Id':case'@':if(this.annoStructValue(_={},816)){sub=_.value; if ($.value.$flatten) $.value.$flatten.push( sub );
4441
4432
  else this.addDef( sub, $.value, 'struct', null, sub.name ); }continue
4442
- default:this.s=819;continue
4433
+ default:this.s=817;continue
4443
4434
  }
4444
- case 818:switch(this.l()){
4445
- case',':this.c(817);continue
4446
- case'}':this.s=819;continue
4447
- case'Id':case'@':this.ec('fail')&&this.g(817);continue
4435
+ case 816:switch(this.l()){
4436
+ case',':this.c(815);continue
4437
+ case'}':this.s=817;continue
4438
+ case'Id':case'@':this.ec('fail')&&this.g(815);continue
4448
4439
  default:this.e();continue
4449
4440
  }
4450
- case 819:this.s=820;{ this.ec( 'arrayAnno', 'orNotEmpty' ); }continue
4451
- case 820:this.m(0,'}');continue
4452
- case 821:switch(this.l()){
4453
- case'Id':case'#':case'(':case'+':case'-':case'@':case'[':case'{':case'Number':case'String':case'QuotedLiteral':if(this.annoValue(_={},825)){sub=_.value; $.value.val.push( sub ) }continue
4454
- case'...':if(this.gc(826,'arrayAnno','ellipsis')&&this.c(822))ellipsis=this.lb();continue
4455
- default:this.s=826;continue
4441
+ case 817:this.s=818;{ this.ec( 'arrayAnno', 'orNotEmpty' ); }continue
4442
+ case 818:this.m(0,'}');continue
4443
+ case 819:switch(this.l()){
4444
+ case'Id':case'#':case'(':case'+':case'-':case'@':case'[':case'{':case'Number':case'String':case'QuotedLiteral':if(this.annoValue(_={},823)){sub=_.value; $.value.val.push( sub ) }continue
4445
+ case'...':if(this.gc(824,'arrayAnno','ellipsis')&&this.c(820))ellipsis=this.lb();continue
4446
+ default:this.s=824;continue
4456
4447
  }
4457
- case 822:switch(this.lk()){
4458
- case'up':this.ck(823);continue
4459
- case',':case']':this.s=825;{ $.value.val.push( { literal: 'token', val: '...', location: ellipsis.location } ); }continue
4448
+ case 820:switch(this.lk()){
4449
+ case'up':this.ck(821);continue
4450
+ case',':case']':this.s=823;{ $.value.val.push( { literal: 'token', val: '...', location: ellipsis.location } ); }continue
4460
4451
  default:this.e();continue
4461
4452
  }
4462
- case 823:this.mk(824,'to');continue
4463
- case 824:if(this.annoValue(_={},825)){upTo=_.value; $.value.val.push( { literal: 'token', val: '...', location: ellipsis.location, upTo: upTo } ); }continue
4464
- case 825:switch(this.l()){
4465
- case',':this.c(821);continue
4466
- case']':this.s=826;continue
4453
+ case 821:this.mk(822,'to');continue
4454
+ case 822:if(this.annoValue(_={},823)){upTo=_.value; $.value.val.push( { literal: 'token', val: '...', location: ellipsis.location, upTo: upTo } ); }continue
4455
+ case 823:switch(this.l()){
4456
+ case',':this.c(819);continue
4457
+ case']':this.s=824;continue
4467
4458
  default:this.e();continue
4468
4459
  }
4469
- case 826:this.s=827;{ this.ec( 'arrayAnno', 'bracket' ); }continue
4470
- case 827:this.m(0,']');continue
4471
- case 828:if(this.condition(_={},829))$.value=_.expr;continue
4472
- case 829:if(this.m(0,')')){ $.value.$tokenTexts = this.ruleTokensText(); }continue
4460
+ case 824:this.s=825;{ this.ec( 'arrayAnno', 'bracket' ); }continue
4461
+ case 825:this.m(0,']');continue
4462
+ case 826:if(this.condition(_={},827))$.value=_.expr;continue
4463
+ case 827:if(this.m(0,')')){ $.value.$tokenTexts = this.ruleTokensText(); }continue
4473
4464
  default:
4474
4465
  this.attachLocation( $.value )
4475
4466
  return this.exit_()