@sap/cds-compiler 5.5.0 → 5.6.0

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.
@@ -1,4 +1,4 @@
1
- // Parser generated by redepage v0.1.18
1
+ // Parser generated by redepage v0.1.19
2
2
  'use strict;'
3
3
  const { XsnSource, XsnArtifact, XsnName } = require( '../compiler/xsn-model' )
4
4
  const AstBuildingParser = require('../parsers/AstBuildingParser')
@@ -133,7 +133,7 @@ Id:['g',6,,'afterBrace'],'@':'Id',
133
133
  },
134
134
  ['m',0,'}',,,'afterBrace'],
135
135
  'artifactDefOrExtend',
136
- {'@':[10,768],'':11},
136
+ {'@':[10,770],'':11},
137
137
  {
138
138
  define:['ck',12],
139
139
  type:12,view:12,event:12,action:12,aspect:12,entity:12,context:12,service:12,abstract:12,function:12,annotation:12,
@@ -147,7 +147,7 @@ annotation:[0,54,,'vocabularyRestriction'],
147
147
  type:[0,59],
148
148
  aspect:[0,64],abstract:'aspect',
149
149
  entity:[0,74],
150
- view:[0,88],
150
+ view:[0,88,,'hide_'],
151
151
  event:[0,100],
152
152
  action:[0,112],
153
153
  function:[0,118],
@@ -155,10 +155,10 @@ function:[0,118],
155
155
  {
156
156
  Id:[0,228],
157
157
  service:[0,250,1],
158
- context:[0,257,1],
159
- type:[0,264,1],
160
- aspect:[0,276,1],entity:'aspect',
161
- projection:[0,287,1],
158
+ context:[0,257,1,'hide_'],
159
+ type:[0,264,1,'hide_'],
160
+ aspect:[0,276,1,'hide_'],entity:'aspect',
161
+ projection:[0,287,1,'hide_'],
162
162
  },
163
163
  [0,215],
164
164
  'namespaceDeclaration',
@@ -199,31 +199,31 @@ Id:[22,32],
199
199
  'serviceDef',
200
200
  ['mk',45,'service'],
201
201
  [46,36],
202
- {'@':[46,774],'':47},
202
+ {'@':[46,776],'':47},
203
203
  {'{':[0,5],'':0},
204
204
  'contextDef',
205
205
  ['mk',50,'context'],
206
206
  [51,36],
207
- {'@':[51,774],'':52},
207
+ {'@':[51,776],'':52},
208
208
  {'{':[0,5],'':0},
209
209
  'annotationDef',
210
210
  ['mk',55,'annotation'],
211
211
  [56,36],
212
- {'@':[56,774],'':57},
212
+ {'@':[56,776],'':57},
213
213
  [0,346],
214
214
  'typeDef',
215
215
  ['mk',60,'type'],
216
216
  [61,36],
217
- {'@':[61,774],'':62},
217
+ {'@':[61,776],'':62},
218
218
  [0,346],
219
219
  'aspectDef',
220
220
  {
221
221
  aspect:['ck',66],
222
- abstract:['ck',65],
222
+ abstract:['ck',65,,'hide_'],
223
223
  },
224
224
  ['mk',66,'entity'],
225
225
  [67,36],
226
- {'@':[67,774],'':68},
226
+ {'@':[67,776],'':68},
227
227
  {
228
228
  '{':[72,157],
229
229
  ':':['c',69],
@@ -240,7 +240,7 @@ abstract:['ck',65],
240
240
  'entityDef',
241
241
  ['mk',75,'entity'],
242
242
  [76,36],
243
- {'@':[76,774],'':77},
243
+ {'@':[76,776],'':77},
244
244
  {'(':[78,141],'':78},
245
245
  {
246
246
  ':':['c',79],
@@ -258,16 +258,16 @@ as:['ck',83],
258
258
  '(':[86,451],select:'(',
259
259
  projection:[84,445],
260
260
  },
261
- {group:[85,601],where:'group',having:'group','':85},
262
- {limit:[86,613],order:'limit','':86},
261
+ {group:[85,603],where:'group',having:'group','':85},
262
+ {limit:[86,615],order:'limit','':86},
263
263
  {actions:[0,124],'':0},
264
264
  'viewDef',
265
265
  ['mk',89,'view'],
266
266
  [90,36],
267
- {'@':[90,774],'':91},
267
+ {'@':[90,776],'':91},
268
268
  {
269
269
  '(':[97,141],
270
- with:['ck',92],
270
+ with:['ck',92,,'hide_'],
271
271
  '':97
272
272
  },
273
273
  ['mk',93,'parameters'],
@@ -280,7 +280,7 @@ with:['ck',92],
280
280
  'eventDef',
281
281
  ['mk',101,'event'],
282
282
  [102,36],
283
- {'@':[102,774],'':103},
283
+ {'@':[102,776],'':103},
284
284
  {
285
285
  '{':[0,157],
286
286
  ':':['c',104],
@@ -298,17 +298,17 @@ projection:[0,445,1],
298
298
  '{':109,
299
299
  },
300
300
  [0,157],
301
- {'@':[110,768],'':0},
301
+ {'@':[110,770],'':0},
302
302
  'actionMainDef',
303
303
  ['mk',113,'action'],
304
304
  [114,36],
305
- {'@':[114,774],'':115},
305
+ {'@':[114,776],'':115},
306
306
  [116,141],
307
307
  {returns:[0,153],'':0},
308
308
  'functionMainDef',
309
309
  ['mk',119,'function'],
310
310
  [120,36],
311
- {'@':[120,774],'':121},
311
+ {'@':[120,776],'':121},
312
312
  [122,141],
313
313
  [0,153],
314
314
  'actionsBlock',
@@ -322,17 +322,17 @@ Id:['g',126,,'afterBrace'],'@':'Id',
322
322
  },
323
323
  ['m',0,'}',,,'afterBrace'],
324
324
  'boundActionFunctionDef',
325
- {'@':[130,768],'':131},
325
+ {'@':[130,770],'':131},
326
326
  {
327
327
  action:['ck',132],
328
328
  function:['ck',136],
329
329
  },
330
330
  ['mi',133],
331
- {'@':[133,774],'':134},
331
+ {'@':[133,776],'':134},
332
332
  [135,141],
333
333
  {returns:[0,153],'':0},
334
334
  ['mi',137],
335
- {'@':[137,774],'':138},
335
+ {'@':[137,776],'':138},
336
336
  [139,141],
337
337
  [0,153],
338
338
  'paramsList',
@@ -344,9 +344,9 @@ function:['ck',136],
344
344
  },
345
345
  ['m',0,')'],
346
346
  'paramDef',
347
- {'@':[146,768],'':147},
347
+ {'@':[146,770],'':147},
348
348
  ['miA',148],
349
- {'@':[148,774],'':149},
349
+ {'@':[148,776],'':149},
350
350
  {
351
351
  '{':[150,157],
352
352
  ':':['c',151],
@@ -355,7 +355,7 @@ function:['ck',136],
355
355
  [0,357],
356
356
  'returnsSpec',
357
357
  ['mk',154,'returns',,'default','elementRestriction'],
358
- {'@':[154,768],'':155},
358
+ {'@':[154,770],'':155},
359
359
  [0,357],
360
360
  'elementsBlock',
361
361
  ['m',158,'{'],
@@ -367,13 +367,13 @@ Id:['g',158,,'afterBrace'],'@':'Id',
367
367
  },
368
368
  ['m',0,'}',,,'afterBrace'],
369
369
  'elementDef',
370
- {'@':[162,768],'':163},
370
+ {'@':[162,770],'':163},
371
371
  {virtual:['ck',164,1],'':164},
372
372
  {key:['ck',165],'':165},
373
- {masked:['ck',166,1],'':166},
374
- {element:['ck',167,1],'':167},
373
+ {masked:['ck',166,1,'hide_'],'':166},
374
+ {element:['ck',167,1,'hide_'],'':167},
375
375
  ['mi',168,,,'elem','elementRestriction'],
376
- {'@':[168,774],'':169},
376
+ {'@':[168,776],'':169},
377
377
  {
378
378
  '{':[170,157],
379
379
  ':':['c',171],
@@ -382,10 +382,10 @@ Id:['g',158,,'afterBrace'],'@':'Id',
382
382
  {not:[172,438],null:'not','':172},
383
383
  [172,357],
384
384
  {'=':['c',173,,'elementRestriction','calc'],'':0},
385
- [174,641],
385
+ [174,643],
386
386
  {stored:['ck',175],'':175},
387
387
  ['g',176],
388
- {'@':[176,768,,'elementRestriction','anno'],'':0},
388
+ {'@':[176,770,,'elementRestriction','anno'],'':0},
389
389
  'enumSymbolsBlock',
390
390
  ['mk',179,'enum'],
391
391
  ['m',180,'{'],
@@ -396,19 +396,19 @@ Id:['g',158,,'afterBrace'],'@':'Id',
396
396
  },
397
397
  ['m',0,'}',,,'afterBrace'],
398
398
  'enumSymbolDef',
399
- {'@':[184,768],'':185},
399
+ {'@':[184,770],'':185},
400
400
  ['mi',186],
401
- {'@':[186,768],'':187},
401
+ {'@':[186,770],'':187},
402
402
  {'=':['c',188],'':0},
403
403
  {
404
404
  String:['c',190],
405
405
  Number:['c',190],
406
406
  '+':['c',189],'-':'+',
407
- Id:[190,765],'#':'Id',QuotedLiteral:'Id',
407
+ Id:[190,767,,'hide_'],'#':'Id',QuotedLiteral:'Id',
408
408
  },
409
409
  ['m',190,'Number'],
410
410
  ['g',191],
411
- {'@':[191,768],'':0},
411
+ {'@':[191,770],'':0},
412
412
  'foreignKeysBlock',
413
413
  ['m',194,'{'],
414
414
  {Id:[195,198],'@':'Id','':196},
@@ -418,7 +418,7 @@ Id:[190,765],'#':'Id',QuotedLiteral:'Id',
418
418
  },
419
419
  ['m',0,'}'],
420
420
  'foreignKeyDef',
421
- {'@':[198,768],'':199},
421
+ {'@':[198,770],'':199},
422
422
  [200,40],
423
423
  {as:['ck',201],'':0},
424
424
  ['mi',0],
@@ -433,10 +433,10 @@ composition:['ck',208],
433
433
  ['mk',210,'to'],
434
434
  {'[':[209,426],'':209},
435
435
  ['mk',210,'of'],
436
- {one:['ck',211,1],many:'one','':211},
436
+ {one:['ck',211,1,'noRepeatedCardinality'],many:'one','':211},
437
437
  [212,40],
438
438
  ['mk',213,'on'],
439
- [0,633],
439
+ [0,635],
440
440
  'annotateArtifact',
441
441
  [216,36],
442
442
  {
@@ -447,10 +447,10 @@ with:['ck',222],
447
447
  [218,36],
448
448
  {with:['ck',219],'':219},
449
449
  ['g',220],
450
- {'@':[220,768],'':221},
450
+ {'@':[220,770],'':221},
451
451
  {'{':[0,320],'':0},
452
452
  ['g',223],
453
- {'@':[223,768],'':224},
453
+ {'@':[223,770],'':224},
454
454
  {'(':[225,307],'':225},
455
455
  {
456
456
  returns:[0,316],
@@ -468,7 +468,7 @@ with:['ck',239],
468
468
  [231,36],
469
469
  {with:['ck',232],'':232},
470
470
  ['g',233],
471
- {'@':[233,768],'':234},
471
+ {'@':[233,770],'':234},
472
472
  {
473
473
  elements:['ck',235],
474
474
  '{':235,
@@ -477,10 +477,10 @@ enum:[0,178],
477
477
  '':0
478
478
  },
479
479
  [0,330],
480
- {'@':[236,768],'':237},
480
+ {'@':[236,770],'':237},
481
481
  {'{':[238,330],'':0},
482
482
  {actions:[0,124],'':0},
483
- {'@':[239,768],'':240},
483
+ {'@':[239,770],'':240},
484
484
  {
485
485
  Id:[241,40],
486
486
  elements:['ck',245,1],
@@ -498,29 +498,29 @@ definitions:['ck',248,1],
498
498
  {actions:[0,124],'':0},
499
499
  [246,330],
500
500
  {actions:[0,124],'':0},
501
- [0,557],
501
+ [0,558],
502
502
  [0,5],
503
503
  'extendService',
504
504
  ['mk',251,'service'],
505
505
  [252,36],
506
506
  {with:['ck',253],'':253},
507
507
  ['g',254],
508
- {'@':[254,768],'':255},
508
+ {'@':[254,770],'':255},
509
509
  {'{':[0,5],'':0},
510
510
  'extendContext',
511
511
  ['mk',258,'context'],
512
512
  [259,36],
513
513
  {with:['ck',260],'':260},
514
514
  ['g',261],
515
- {'@':[261,768],'':262},
515
+ {'@':[261,770],'':262},
516
516
  {'{':[0,5],'':0},
517
517
  'extendType',
518
518
  ['mk',265,'type'],
519
519
  [266,36],
520
520
  {with:['ck',269],'':267},
521
- {'@':[267,768],'':268},
521
+ {'@':[267,770],'':268},
522
522
  {'{':[0,330],'':0},
523
- {'@':[269,768],'':270},
523
+ {'@':[269,770],'':270},
524
524
  {
525
525
  Id:[271,40],
526
526
  elements:['ck',274,1],
@@ -537,8 +537,8 @@ enum:[0,178,1],
537
537
  {aspect:['ck',277],entity:'aspect'},
538
538
  [278,36],
539
539
  {with:['ck',280],'':279},
540
- {'@':[279,768],'':284},
541
- {'@':[280,768],'':281},
540
+ {'@':[279,770],'':284},
541
+ {'@':[280,770],'':281},
542
542
  {
543
543
  Id:[282,40],
544
544
  actions:['g',284,1],
@@ -553,8 +553,8 @@ actions:['g',284,1],
553
553
  [289,36],
554
554
  {with:['ck',290],'':290},
555
555
  ['g',291],
556
- {'@':[291,768],'':292},
557
- {'{':[293,557],'':293},
556
+ {'@':[291,770],'':292},
557
+ {'{':[293,558],'':293},
558
558
  {actions:[0,124],'':0},
559
559
  'annotateActionsBlock',
560
560
  ['mk',296,'actions'],
@@ -567,9 +567,9 @@ Id:['g',297,,'afterBrace'],'@':'Id',
567
567
  },
568
568
  ['m',0,'}',,,'afterBrace'],
569
569
  'annotateBoundAction',
570
- {'@':[301,768],'':302},
570
+ {'@':[301,770],'':302},
571
571
  ['mi',303],
572
- {'@':[303,768],'':304},
572
+ {'@':[303,770],'':304},
573
573
  {'(':[305,307],'':305},
574
574
  {returns:[0,316,1],'':0},
575
575
  'annotateParamsBlock',
@@ -581,12 +581,12 @@ Id:['g',297,,'afterBrace'],'@':'Id',
581
581
  },
582
582
  ['m',0,')'],
583
583
  'annotateParam',
584
- {'@':[312,768],'':313},
584
+ {'@':[312,770],'':313},
585
585
  ['mi',314],
586
- {'@':[314,768],'':0},
586
+ {'@':[314,770],'':0},
587
587
  'annotateReturns',
588
588
  ['mk',317,'returns'],
589
- {'@':[317,768],'':318},
589
+ {'@':[317,770],'':318},
590
590
  {'{':[0,320],'':0},
591
591
  'annotateElementsBlock',
592
592
  ['m',321,'{'],
@@ -598,9 +598,9 @@ Id:['g',321,,'afterBrace'],'@':'Id',
598
598
  },
599
599
  ['m',0,'}',,,'afterBrace'],
600
600
  'annotateElement',
601
- {'@':[325,768],'':326},
601
+ {'@':[325,770],'':326},
602
602
  ['mi',327],
603
- {'@':[327,768],'':328},
603
+ {'@':[327,770],'':328},
604
604
  {'{':[0,320],'':0},
605
605
  'extendElementsBlock',
606
606
  ['m',331,'{'],
@@ -612,7 +612,7 @@ Id:['g',331,,'afterBrace'],'@':'Id',
612
612
  },
613
613
  ['m',0,'}',,,'afterBrace'],
614
614
  'elementDefOrExtend',
615
- {'@':[335,768],'':336},
615
+ {'@':[335,770],'':336},
616
616
  {
617
617
  Id:[0,162],'@':'Id',key:'Id',
618
618
  extend:['ck',337,1],
@@ -620,9 +620,9 @@ extend:['ck',337,1],
620
620
  {element:['ck',338,1],'':338},
621
621
  ['mi',339],
622
622
  {with:['ck',342],'':340},
623
- {'@':[340,768],'':341},
623
+ {'@':[340,770],'':341},
624
624
  {'{':[0,330],'':0},
625
- {'@':[342,768],'':343},
625
+ {'@':[342,770],'':343},
626
626
  {
627
627
  elements:['ck',344],
628
628
  '{':344,
@@ -668,9 +668,9 @@ many:['ck',378,1,,'calc','elementRestriction'],
668
668
  '{':[384,157,,,'calc','elementRestriction'],
669
669
  },
670
670
  ['g',359],
671
- {'@':[359,768],'':360},
671
+ {'@':[359,770],'':360},
672
672
  {not:[361,438,,'elementRestriction','notNull'],null:'not','':362},
673
- {'@':[361,768],'':362},
673
+ {'@':[361,770],'':362},
674
674
  {
675
675
  enum:[363,178,,,'anno','elementRestriction'],
676
676
  '@':[0,393],not:'@',null:'@',default:'@',
@@ -678,17 +678,17 @@ enum:[363,178,,,'anno','elementRestriction'],
678
678
  },
679
679
  {not:[364,438,,'elementRestriction','notNull'],null:'not','':364},
680
680
  {default:['ck',365,,'elementRestriction','default'],'':366},
681
- [366,641],
681
+ [366,643],
682
682
  {not:[0,438,,'elementRestriction','notNull'],null:'not','':0},
683
683
  [368,404],
684
684
  {'@':[0,393],not:'@',null:'@',default:'@','':0},
685
685
  {'[':[370,426],'':370},
686
686
  ['mk',371,'to'],
687
- {one:['ck',372,1],many:'one','':372},
687
+ {one:['ck',372,1,'noRepeatedCardinality'],many:'one','':372},
688
688
  [0,386],
689
689
  {'[':[374,426],'':374},
690
690
  ['mk',375,'of'],
691
- {one:['ck',376,1],many:'one','':376},
691
+ {one:['ck',376,1,'noRepeatedCardinality'],many:'one','':376},
692
692
  {
693
693
  Id:[0,386],
694
694
  '{':[0,157],
@@ -701,30 +701,30 @@ type:[379,396,1],
701
701
  },
702
702
  {not:[380,438,,'elementRestriction','notNull'],null:'not','':380},
703
703
  {enum:[383,178],'':381},
704
- {'@':[381,768],'':382},
704
+ {'@':[381,770],'':382},
705
705
  ['g',0,[]],
706
706
  {not:[0,438,,'elementRestriction','notNull'],null:'not','':0},
707
707
  {not:[0,438],null:'not','':0},
708
708
  'typeAssocProperties',
709
709
  [387,40],
710
- {'@':[387,768],'':388},
710
+ {'@':[387,770],'':388},
711
711
  {
712
712
  on:['ck',389],
713
713
  '{':[391,193],
714
714
  '@':[0,393],not:'@',null:'@',default:'@',
715
715
  '':0
716
716
  },
717
- [390,633],
718
- {'@':[390,768],'':0},
717
+ [390,635],
718
+ {'@':[390,770],'':0},
719
719
  {'@':[0,393],not:'@',null:'@',default:'@','':0},
720
720
  'typeProperties',
721
721
  {
722
- '@':[393,768],
722
+ '@':[393,770],
723
723
  not:[393,438,,'elementRestriction','notNull'],null:'not',
724
724
  default:['ck',394,,'elementRestriction','default'],
725
725
  '':0
726
726
  },
727
- [393,641],
727
+ [393,643],
728
728
  'typeTypeOf',
729
729
  ['mk',397,'type'],
730
730
  ['mk',398,'of'],
@@ -812,11 +812,11 @@ not:['ck',439],
812
812
  {';':['c',443],'':443},
813
813
  ['m',0,'EOF'],
814
814
  'projectionSpec',
815
- ['mk',446,'projection'],
815
+ ['mk',446,'projection',,,'afterBrace'],
816
816
  ['mk',447,'on'],
817
- [448,511],
818
- {'{':[449,557],'':449},
819
- {excluding:[0,550],'':0},
817
+ [448,512,,,,'afterBrace'],
818
+ {'{':[449,558],'':449},
819
+ {excluding:[0,551],'':0},
820
820
  'queryExpression',
821
821
  {
822
822
  '(':['c',452],
@@ -834,7 +834,7 @@ union:['ck',456,,'precLeft_',2],
834
834
  {all:['ck',457],distinct:'all','':457},
835
835
  [454,451],
836
836
  {limit:['g',459,,'precPost_',0],order:'limit','':0},
837
- [0,613],
837
+ [0,615],
838
838
  'selectQuery',
839
839
  ['mk',462,'select'],
840
840
  {
@@ -842,7 +842,7 @@ from:['ck',463],
842
842
  all:['ck',473,1],distinct:'all',
843
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
844
  },
845
- [464,480],
845
+ [464,481],
846
846
  {mixin:['ck',465],'':470},
847
847
  ['m',466,'{'],
848
848
  {Id:[467,203],'':468},
@@ -853,479 +853,478 @@ Id:473,'#':473,'(':473,'*':473,'+':473,'-':473,':':473,'?':473,'@':473,'{':473,k
853
853
  ['m',469,'}'],
854
854
  ['mk',470,'into'],
855
855
  {all:['ck',471],distinct:'all','':471},
856
- {'{':[472,557],'':472},
857
- {excluding:[478,550],'':478},
856
+ {'{':[472,558],'':472},
857
+ {excluding:[479,551],'':479},
858
+ ['g',474,,,'sqlStyle','inSelectItem'],
858
859
  {
859
- '*':['c',474],
860
- Id:[474,567],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
860
+ '*':['c',475],
861
+ Id:[475,568],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
861
862
  },
862
- {',':['c',475],'':476},
863
+ {',':['c',476],'':477},
863
864
  {
864
- '*':['c',474],
865
- Id:[474,567],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
865
+ '*':['c',475],
866
+ Id:[475,568],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
866
867
  },
867
- ['mk',477,'from'],
868
- [478,480],
869
- {group:[0,601],where:'group',having:'group','':0},
868
+ ['mk',478,'from'],
869
+ [479,481],
870
+ {group:[0,603],where:'group',having:'group','':0},
870
871
  'querySource',
871
- [481,485],
872
- {',':482,'':0},
873
- {',':['c',483],'':0},
874
- [482,485],
872
+ [482,486],
873
+ {',':483,'':0},
874
+ {',':['c',484],'':0},
875
+ [483,486],
875
876
  'tableExpression',
876
877
  {
877
- '(':[486,498],
878
- Id:[487,511],
878
+ '(':[487,499],
879
+ Id:[488,512],
879
880
  },
880
- ['g',487],
881
+ ['g',488],
881
882
  {
882
- cross:['ck',488],
883
- inner:['ck',491],
884
- full:['ck',490],left:'full',right:'full',
885
- join:['ck',493],
883
+ cross:['ck',489],
884
+ inner:['ck',492],
885
+ full:['ck',491],left:'full',right:'full',
886
+ join:['ck',494],
886
887
  '':0
887
888
  },
888
- ['mk',489,'join'],
889
+ ['mk',490,'join'],
889
890
  {
890
- '(':[487,498],
891
- Id:[487,511],
891
+ '(':[488,499],
892
+ Id:[488,512],
892
893
  },
893
- {outer:['ck',491],'':491},
894
- {one:[492,505],many:'one',exact:'one','':492},
895
- ['mk',493,'join'],
896
- ['g',494],
897
- [495,485],
898
- ['mk',496,'on'],
899
- [487,633],
894
+ {outer:['ck',492],'':492},
895
+ {one:[493,506],many:'one',exact:'one','':493},
896
+ ['mk',494,'join'],
897
+ ['g',495],
898
+ [496,486],
899
+ ['mk',497,'on'],
900
+ [488,635],
900
901
  'tableOrQueryParens',
901
- ['m',499,'(',,,'queryOnLeft'],
902
+ ['m',500,'(',,,'queryOnLeft'],
902
903
  {
903
- '(':[500,498],
904
- Id:[501,485,,,'table','queryOnLeft'],
905
- select:[501,451],
904
+ '(':[501,499],
905
+ Id:[502,486,,,'table','queryOnLeft'],
906
+ select:[502,451],
906
907
  },
907
908
  {
908
- full:[501,486,,,'table','queryOnLeft'],join:'full',left:'full',cross:'full',inner:'full',right:'full',
909
- limit:[501,454,,'queryOnLeft'],minus:'limit',order:'limit',union:'limit',except:'limit',intersect:'limit',
910
- '':501
909
+ full:[502,487,,,'table','queryOnLeft'],join:'full',left:'full',cross:'full',inner:'full',right:'full',
910
+ limit:[502,454,,'queryOnLeft'],minus:'limit',order:'limit',union:'limit',except:'limit',intersect:'limit',
911
+ '':502
911
912
  },
912
- ['m',502,')'],
913
+ ['m',503,')'],
913
914
  {
914
- as:['ck',503,,'queryOnLeft','table'],
915
+ as:['ck',504,,'queryOnLeft','table'],
915
916
  Id:['ci',0,,'queryOnLeft','tableWithoutAs'],
916
917
  '':0
917
918
  },
918
919
  ['mi',0],
919
920
  'joinCardinality',
920
921
  {
921
- exact:['ck',506],
922
- one:506,
923
- many:['ck',507],
922
+ exact:['ck',507],
923
+ one:507,
924
+ many:['ck',508],
924
925
  },
925
- ['mk',507,'one'],
926
- ['mk',508,'to'],
926
+ ['mk',508,'one'],
927
+ ['mk',509,'to'],
927
928
  {
928
- exact:['ck',509],
929
- one:509,
929
+ exact:['ck',510],
930
+ one:510,
930
931
  many:['ck',0],
931
932
  },
932
933
  ['mk',0,'one'],
933
934
  'fromRefWithOptAlias',
934
- [512,518],
935
- {':':['c',513],'':514},
936
- [514,518],
935
+ [513,519],
936
+ {':':['c',514],'':515},
937
+ [515,519],
937
938
  {
938
- as:['ck',515],
939
- Id:['ci',0,,'tableWithoutAs'],
940
- '':516
939
+ as:['ck',516],
940
+ Id:['ci',0],
941
+ '':517
941
942
  },
942
943
  ['mi',0],
943
944
  ['g',0,[]],
944
945
  'fromPath',
945
- ['mi',519],
946
- {'(':[520,524],'[':'(','':520},
947
- {'.':['c',521],'':0},
948
- ['miA',522],
949
- {'(':[520,524],'[':'(','':520},
946
+ ['mi',520],
947
+ {'(':[521,525],'[':'(','':521},
948
+ {'.':['c',522,,'notAfterEntityArgOrFilter'],'':0},
949
+ ['miA',523],
950
+ {'(':[521,525],'[':'(','':521},
950
951
  'fromArgumentsAndFilter',
951
- {'(':['c',525],'':529},
952
- {Id:526},
953
- {Id:[527,531],'':528},
952
+ {'(':['c',526],'':530},
953
+ {Id:527},
954
+ {Id:[528,532],'':529},
954
955
  {
955
- ',':['c',526],
956
- ')':528,
956
+ ',':['c',527],
957
+ ')':529,
957
958
  },
958
- ['m',529,')'],
959
- {'[':[0,535],'':0},
959
+ ['m',530,')'],
960
+ {'[':[0,536],'':0},
960
961
  'fromNamedArgument',
961
- ['mi',532],
962
- ['m',533,':'],
963
- [0,641],
962
+ ['mi',533],
963
+ ['m',534,':'],
964
+ [0,643],
964
965
  'cardinalityAndFilter',
965
- ['m',536,'['],
966
- {Number:['c',537,,'beforeColon'],'':538},
967
- ['m',538,':'],
968
- [539,541],
966
+ ['m',537,'['],
967
+ {Number:['c',538,,'beforeColon'],'':539},
968
+ ['m',539,':'],
969
+ [540,542],
969
970
  ['m',0,']'],
970
971
  'filterClauses',
971
972
  {
972
- where:['ck',542],
973
- Id:542,'#':542,'(':542,'+':542,'-':542,':':542,'?':542,not:542,case:542,cast:542,null:542,true:542,false:542,Number:542,String:542,exists:542,QuotedLiteral:542,
974
- group:['g',543,1],limit:'group',order:'group',having:'group',
975
- '':543
973
+ where:['ck',543],
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
+ group:['g',544,1],limit:'group',order:'group',having:'group',
976
+ '':544
976
977
  },
977
- [543,633],
978
- {group:544,'':545},
979
- [545,607],
980
- {having:['ck',546],'':547},
981
- [547,633],
982
- {limit:548,order:548,'':0},
983
- [0,613],
978
+ [544,635],
979
+ {group:['g',545,,'hide_'],'':546},
980
+ [546,609],
981
+ {having:['ck',547,,'hide_'],'':548},
982
+ [548,635],
983
+ {limit:['g',549,,'hide_'],order:'limit','':0},
984
+ [0,615],
984
985
  'excludingClause',
985
- ['mk',551,'excluding'],
986
- ['m',552,'{'],
987
- {Id:553},
988
- {Id:['ciA',554],'':555},
986
+ ['mk',552,'excluding'],
987
+ ['m',553,'{'],
988
+ {Id:554},
989
+ {Id:['ciA',555],'':556},
989
990
  {
990
- ',':['c',553],
991
- '}':555,
991
+ ',':['c',554],
992
+ '}':556,
992
993
  },
993
994
  ['m',0,'}',,,'afterBrace'],
994
995
  'selectItemsList',
995
- ['m',558,'{',,'top','inSelectItem'],
996
+ ['m',559,'{',,'top','inSelectItem'],
996
997
  {
997
- '*':['c',559],
998
- Id:[559,567],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
999
- '':560
998
+ '*':['c',560],
999
+ Id:[560,568],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1000
+ '':561
1000
1001
  },
1001
1002
  {
1002
- ',':['c',558],
1003
- '}':560,
1003
+ ',':['c',559],
1004
+ '}':561,
1004
1005
  },
1005
1006
  ['m',0,'}',,,'afterBrace'],
1006
1007
  'nestedSelectItemsList',
1007
- ['m',563,'{',,'nested','inSelectItem'],
1008
+ ['m',564,'{',,'nested','inSelectItem'],
1008
1009
  {
1009
- '*':['c',564],
1010
- Id:[564,567],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1011
- '':565
1010
+ '*':['c',565],
1011
+ Id:[565,568],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id','@':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1012
+ '':566
1012
1013
  },
1013
1014
  {
1014
- ',':['c',563],
1015
- '}':565,
1015
+ ',':['c',564],
1016
+ '}':566,
1016
1017
  },
1017
1018
  ['m',0,'}',,,'afterBrace'],
1018
1019
  'selectItemDef',
1019
- {'@':[567,771],'':568},
1020
- {virtual:['ck',569,1,'modifierRestriction'],'':569},
1021
- {key:['ck',570,,'modifierRestriction'],'':570},
1022
- {
1023
- Id:[571,641],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1024
- '{':[578,562],
1025
- },
1020
+ {'@':[568,773],'':569},
1021
+ {virtual:['ck',570,1,'modifierRestriction'],'':570},
1022
+ ['g',571,,,'key','columnExpr'],
1023
+ {key:['ck',572,,'modifierRestriction'],'':572},
1026
1024
  {
1027
- as:['ck',572],
1028
- Id:['ci',573],
1029
- '':573
1025
+ Id:[573,643],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1026
+ '{':[580,563],
1030
1027
  },
1031
- ['mi',573],
1032
1028
  {
1033
- '{':574,
1034
- '.':['c',576],
1035
- '':581
1029
+ as:['ck',574],
1030
+ Id:['ci',577],
1031
+ '.':['c',575],
1032
+ '':577
1036
1033
  },
1037
- [575,562],
1038
- {excluding:[581,550],'':581},
1034
+ ['mi',577],
1039
1035
  {
1040
- '{':[577,562],
1041
- '*':['c',581],
1036
+ '{':[576,563],
1037
+ '*':['c',0],
1042
1038
  },
1043
- {excluding:[581,550],'':581},
1044
- {excluding:[579,550],'':579},
1045
- ['mk',580,'as'],
1046
- ['mi',581],
1047
- ['g',582],
1048
- {'@':[582,774],'':583},
1049
- {':':['c',584],'':0},
1039
+ {excluding:[0,551],'':0},
1040
+ {'{':578,'':583},
1041
+ [579,563],
1042
+ {excluding:[583,551],'':583},
1043
+ {excluding:[581,551],'':581},
1044
+ ['mk',582,'as'],
1045
+ ['mi',583],
1046
+ ['g',584,,,,'columnExpr'],
1047
+ {'@':[584,776],'':585},
1048
+ {':':['c',586],'':0},
1050
1049
  {
1051
- type:[598,396,1],
1052
- localized:['ck',585,1],
1053
- Id:585,
1054
- redirected:['ck',586,1],
1055
- association:['ck',590,1],
1056
- composition:['ck',592,1],
1050
+ type:[600,396,1],
1051
+ localized:['ck',587,1],
1052
+ Id:587,
1053
+ redirected:['ck',588,1],
1054
+ association:['ck',592,1,'columnExpr'],
1055
+ composition:['ck',594,1,'columnExpr'],
1057
1056
  },
1058
- [598,404],
1059
- ['mk',587,'to'],
1060
- [588,40],
1057
+ [600,404],
1058
+ ['mk',589,'to'],
1059
+ [590,40],
1061
1060
  {
1062
- on:['ck',589],
1063
- '{':[598,193],
1064
- '':598
1061
+ on:['ck',591],
1062
+ '{':[600,193],
1063
+ '':600
1065
1064
  },
1066
- [598,633],
1067
- {'[':[591,426],'':591},
1068
- ['mk',594,'to'],
1065
+ [600,635],
1069
1066
  {'[':[593,426],'':593},
1070
- ['mk',594,'of'],
1071
- {one:['ck',595,1],many:'one','':595},
1072
- [596,40],
1073
- ['mk',597,'on'],
1074
- [598,633],
1075
- ['g',599],
1076
- {'@':[599,768],'':0},
1067
+ ['mk',596,'to'],
1068
+ {'[':[595,426],'':595},
1069
+ ['mk',596,'of'],
1070
+ {one:['ck',597,1,'noRepeatedCardinality'],many:'one','':597},
1071
+ [598,40],
1072
+ ['mk',599,'on'],
1073
+ [600,635],
1074
+ ['g',601],
1075
+ {'@':[601,770],'':0},
1077
1076
  'whereGroupByHaving',
1078
- {where:['ck',602],'':603},
1079
- [603,633],
1080
- {group:[604,607],'':604},
1081
- {having:['ck',605],'':0},
1082
- [0,633],
1077
+ {where:['ck',604],'':605},
1078
+ [605,635],
1079
+ {group:[606,609],'':606},
1080
+ {having:['ck',607],'':0},
1081
+ [0,635],
1083
1082
  'groupByClause',
1084
- ['mk',608,'group'],
1085
- ['mk',609,'by'],
1086
- [610,641],
1087
- {',':['c',611],'':0},
1088
- [610,641],
1083
+ ['mk',610,'group'],
1084
+ ['mk',611,'by'],
1085
+ [612,643],
1086
+ {',':['c',613],'':0},
1087
+ [612,643],
1089
1088
  'orderByLimitOffset',
1090
- {order:[614,619],'':614},
1091
- {limit:['ck',615],'':0},
1092
- [616,641],
1093
- {offset:['ck',617],'':0},
1094
- [0,641],
1089
+ {order:[616,621],'':616},
1090
+ {limit:['ck',617],'':0},
1091
+ [618,643],
1092
+ {offset:['ck',619],'':0},
1093
+ [0,643],
1095
1094
  'orderByClause',
1096
- ['mk',620,'order'],
1097
- ['mk',621,'by'],
1098
- [622,625],
1099
- {',':['c',623],'':0},
1100
- [622,625],
1095
+ ['mk',622,'order'],
1096
+ ['mk',623,'by'],
1097
+ [624,627],
1098
+ {',':['c',625],'':0},
1099
+ [624,627],
1101
1100
  'orderByExpression',
1102
- [626,641],
1103
- {asc:['ck',627],desc:'asc','':627},
1104
- {nulls:['ck',628],'':0},
1101
+ [628,643],
1102
+ {asc:['ck',629],desc:'asc','':629},
1103
+ {nulls:['ck',630],'':0},
1105
1104
  {last:['ck',0],first:'last'},
1106
1105
  'conditionEOF',
1107
- [631,641],
1106
+ [633,643],
1108
1107
  ['m',0,'EOF'],
1109
1108
  'condition',
1110
- [0,641],
1109
+ [0,643],
1111
1110
  'valuePath',
1112
- ['mi',636],
1113
- {'(':[637,702],'[':'(','':637},
1114
- {'.':['c',638,,'isDotForPath'],'':0},
1115
- ['miA',639],
1116
- {'(':[637,702],'[':'(','':637},
1111
+ ['mi',638],
1112
+ {'(':[639,704],'[':'(','':639},
1113
+ {'.':['c',640,,'isDotForPath'],'':0},
1114
+ ['miA',641],
1115
+ {'(':[639,704],'[':'(','':639},
1117
1116
  'expression',
1118
1117
  {
1119
- '(':[642,669],
1120
- '#':[652,765],null:'#',true:'#',false:'#',Number:'#',String:'#',QuotedLiteral:'#',
1121
- ':':['c',643],
1122
- '?':['c',652],
1123
- Id:[645,635],
1124
- new:[652,681,1],
1125
- exists:['ck',648],
1126
- case:[652,684],
1127
- cast:[652,695],
1128
- '+':['c',651,,'precRight_',30],'-':'+',
1129
- not:['ck',651,,'precRight_',8],
1118
+ '(':[644,671],
1119
+ '#':[654,767],null:'#',true:'#',false:'#',Number:'#',String:'#',QuotedLiteral:'#',
1120
+ ':':['c',645],
1121
+ '?':['c',654,,'hide_'],
1122
+ Id:[647,637],
1123
+ new:[654,683,1],
1124
+ exists:['ck',650],
1125
+ case:[654,686],
1126
+ cast:[654,697],
1127
+ '+':['c',653,,'precRight_',30],'-':'+',
1128
+ not:['ck',653,,'precRight_',8],
1130
1129
  },
1131
- ['g',652],
1130
+ ['g',654],
1132
1131
  {
1133
- Id:['ciA',644],
1134
- Number:['c',652],
1132
+ Id:['ciA',646],
1133
+ Number:['c',654,,'hide_'],
1135
1134
  },
1136
- {'.':[652,637],'':652},
1137
- {over:['ck',646],'':647},
1138
- [647,729],
1139
- ['g',652],
1135
+ {'.':[654,639],'':654},
1136
+ {over:['ck',648],'':649},
1137
+ [649,731],
1138
+ ['g',654],
1140
1139
  {
1141
- '(':['c',649],
1142
- Id:[652,635],
1143
- '?':['c',652],
1140
+ '(':['c',651],
1141
+ Id:[654,637],
1142
+ '?':['c',654,,'hide_'],
1144
1143
  },
1145
- [650,451],
1146
- ['m',652,')'],
1147
- [652,641],
1144
+ [652,451],
1145
+ ['m',654,')'],
1146
+ [654,643],
1148
1147
  {
1149
- '*':['c',656,,'precLeft_',24],'/':'*',
1150
- '+':['c',656,,'precLeft_',22],'-':'+',
1151
- '||':['c',656,,'precLeft_',20],
1152
- and:['ck',656,,'precLeft_',4],
1153
- or:['ck',656,,'precLeft_',2],
1154
- '?':['c',653,,'precLeft_',0],
1155
- '<':['c',655,,'precNone_',10],'=':'<','>':'<','!=':'<','<=':'<','<>':'<','>=':'<',
1156
- is:['ck',657,,'precNone_',10],
1157
- not:['ck',659,,'isNegatedRelation','10'],
1158
- in:['g',659,,'precNone_',10],like:'in',between:'in',
1148
+ '*':['c',658,,'precLeft_',24],'/':'*',
1149
+ '+':['c',658,,'precLeft_',22],'-':'+',
1150
+ '||':['c',658,,'precLeft_',20],
1151
+ and:['ck',658,,'precLeft_',4],
1152
+ or:['ck',658,,'precLeft_',2],
1153
+ '?':['c',655,,'precLeft_',0],
1154
+ '<':['c',657,,'precNone_',10],'=':'<','>':'<','!=':'<','<=':'<','<>':'<','>=':'<',
1155
+ is:['ck',659,,'precNone_',10],
1156
+ not:['ck',661,,'isNegatedRelation','10'],
1157
+ in:['g',661,,'precNone_',10],like:'in',between:'in',
1159
1158
  '':0
1160
1159
  },
1161
- [654,641],
1162
- ['m',656,':'],
1163
- {all:['ck',656],any:'all',some:'all','':656},
1164
- [667,641],
1165
- {not:['ck',658],'':658},
1166
- ['mk',667,'null'],
1160
+ [656,643],
1161
+ ['m',658,':'],
1162
+ {all:['ck',658],any:'all',some:'all','':658},
1163
+ [669,643],
1164
+ {not:['ck',660],'':660},
1165
+ ['mk',669,'null'],
1167
1166
  {
1168
- between:['ck',660],
1169
- in:['ck',663],
1170
- like:['ck',664],
1167
+ between:['ck',662],
1168
+ in:['ck',665],
1169
+ like:['ck',666],
1171
1170
  },
1172
- [661,641],
1173
- ['mk',662,'and'],
1174
- [667,641],
1175
- [667,641],
1176
- [665,641],
1177
- {escape:['ck',666],'':667},
1178
- [667,641],
1179
- ['g',652],
1171
+ [663,643],
1172
+ ['mk',664,'and'],
1173
+ [669,643],
1174
+ [669,643],
1175
+ [667,643],
1176
+ {escape:['ck',668],'':669},
1177
+ [669,643],
1178
+ ['g',654],
1180
1179
  'expressionOrQueryParens',
1181
- ['m',670,'(',,,'queryOnLeft'],
1180
+ ['m',672,'(',,,'queryOnLeft'],
1182
1181
  {
1183
- '(':[671,669],
1184
- Id:[673,641,,,'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',
1185
- select:[674,451],
1182
+ '(':[673,671],
1183
+ Id:[675,643,,,'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',
1184
+ select:[676,451],
1186
1185
  },
1187
1186
  {
1188
- '*':[672,642,,,'expr','queryOnLeft'],'+':'*','-':'*','/':'*','<':'*','=':'*','>':'*','?':'*','!=':'*','<=':'*','<>':'*','>=':'*',in:'*',is:'*',or:'*','||':'*',and:'*',not:'*',like:'*',between:'*',
1189
- ',':[674,676,,,'expr','queryOnLeft'],
1190
- limit:[674,454,,'queryOnLeft'],minus:'limit',order:'limit',union:'limit',except:'limit',intersect:'limit',
1191
- '':674
1187
+ '*':[674,644,,,'expr','queryOnLeft'],'+':'*','-':'*','/':'*','<':'*','=':'*','>':'*','?':'*','!=':'*','<=':'*','<>':'*','>=':'*',in:'*',is:'*',or:'*','||':'*',and:'*',not:'*',like:'*',between:'*',
1188
+ ',':[676,678,,,'expr','queryOnLeft'],
1189
+ limit:[676,454,,'queryOnLeft'],minus:'limit',order:'limit',union:'limit',except:'limit',intersect:'limit',
1190
+ '':676
1192
1191
  },
1193
- {',':[674,676],'':674},
1194
- {',':[674,676],'':674},
1192
+ {',':[676,678],'':676},
1193
+ {',':[676,678],'':676},
1195
1194
  ['m',0,')'],
1196
1195
  'continueExpressionslist',
1197
- ['m',677,','],
1198
- {Id:678,'#':678,'(':678,'+':678,'-':678,':':678,'?':678,not:678,case:678,cast:678,null:678,true:678,false:678,Number:678,String:678,exists:678,QuotedLiteral:678},
1199
- {Id:[679,641],'#':'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},
1200
- {',':['c',678],'':0},
1196
+ ['m',679,','],
1197
+ {Id:680,'#':680,'(':680,'+':680,'-':680,':':680,'?':680,not:680,case:680,cast:680,null:680,true:680,false:680,Number:680,String:680,exists:680,QuotedLiteral:680},
1198
+ {Id:[681,643],'#':'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},
1199
+ {',':['c',680],'':0},
1201
1200
  'newAndValuePath',
1202
- ['mk',682,'new'],
1203
- [0,635],
1201
+ ['mk',684,'new'],
1202
+ [0,637],
1204
1203
  'caseExpression',
1205
- ['mk',685,'case'],
1204
+ ['mk',687,'case'],
1206
1205
  {
1207
- Id:[686,641],'#':'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',
1208
- when:['g',686,1],
1209
- '':686
1206
+ Id:[688,643],'#':'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',
1207
+ when:['g',688,1],
1208
+ '':688
1210
1209
  },
1211
- {when:687},
1212
- {when:['ck',688],'':691},
1213
- [689,641],
1214
- ['mk',690,'then'],
1215
- [687,641],
1216
- {else:['ck',692],'':693},
1217
- [693,641],
1210
+ {when:689},
1211
+ {when:['ck',690],'':693},
1212
+ [691,643],
1213
+ ['mk',692,'then'],
1214
+ [689,643],
1215
+ {else:['ck',694],'':695},
1216
+ [695,643],
1218
1217
  ['mk',0,'end'],
1219
1218
  'castFunction',
1220
- ['mk',696,'cast'],
1221
- ['m',697,'('],
1222
- [698,641],
1223
- ['mk',699,'as'],
1224
- [700,404],
1219
+ ['mk',698,'cast'],
1220
+ ['m',699,'('],
1221
+ [700,643],
1222
+ ['mk',701,'as'],
1223
+ [702,404],
1225
1224
  ['m',0,')'],
1226
1225
  'argumentsAndFilter',
1227
- {'(':['c',703,,,,'prepareSpecialFunction'],'':722},
1228
- {Id:['ciA',710,,'isNamedArg'],'':704},
1229
- {Id:[705,724],'#':'Id','(':'Id','*':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Id_all:'Id',Number:'Id',String:'Id',QuotedLiteral:'Id','':721},
1230
- {',':['c',706,,,,'nextFunctionArgument'],'':707},
1226
+ {'(':['c',705,,,,'prepareSpecialFunction'],'':724},
1227
+ {Id:['ciA',712,,'isNamedArg'],'':706},
1228
+ {Id:[707,726],'#':'Id','(':'Id','*':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Id_all:'Id',Number:'Id',String:'Id',QuotedLiteral:'Id','':723},
1229
+ {',':['c',708,,,,'nextFunctionArgument'],'':709},
1231
1230
  {
1232
- Id:[705,724],'#':'Id','(':'Id','*':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Id_all:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id',
1233
- ')':['g',707,1],order:')',
1231
+ Id:[707,726],'#':'Id','(':'Id','*':'Id','+':'Id','-':'Id',':':'Id','?':'Id',not:'Id',case:'Id',cast:'Id',null:'Id',true:'Id',false:'Id',Id_all:'Id',Number:'Id',String:'Id',exists:'Id',QuotedLiteral:'Id',
1232
+ ')':['g',709,1],order:')',
1234
1233
  },
1235
- {order:['ck',708],'':721},
1236
- ['mk',709,'by'],
1237
- [721,744],
1234
+ {order:['ck',710],'':723},
1235
+ ['mk',711,'by'],
1236
+ [723,746],
1238
1237
  {
1239
- ':':['c',711],
1240
- '=>':['c',716],
1238
+ ':':['c',713],
1239
+ '=>':['c',718],
1241
1240
  },
1242
- [712,641],
1243
- {',':['c',713],'':721},
1241
+ [714,643],
1242
+ {',':['c',715],'':723},
1244
1243
  {
1245
- Id:['ciA',714],
1246
- ')':721,
1244
+ Id:['ciA',716],
1245
+ ')':723,
1247
1246
  },
1248
- ['m',715,':'],
1249
- [712,641],
1250
- [717,641],
1251
- {',':['c',718],'':721},
1247
+ ['m',717,':'],
1248
+ [714,643],
1249
+ [719,643],
1250
+ {',':['c',720],'':723},
1252
1251
  {
1253
- Id:['ciA',719],
1254
- ')':721,
1252
+ Id:['ciA',721],
1253
+ ')':723,
1255
1254
  },
1256
- ['m',720,'=>'],
1257
- [717,641],
1258
- ['m',722,')'],
1259
- {'[':[0,535],'':0},
1255
+ ['m',722,'=>'],
1256
+ [719,643],
1257
+ ['m',724,')'],
1258
+ {'[':[0,536],'':0},
1260
1259
  'funcExpression',
1261
1260
  {
1262
1261
  ' lookahead':'lGenericIntroOrExpr',
1263
- Id:[726,641],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1264
- GenericExpr:['ckA',726],
1265
- GenericIntro:['ckA',725],
1262
+ Id:[728,643],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1263
+ GenericExpr:['ckA',728],
1264
+ GenericIntro:['ckA',727],
1266
1265
  },
1267
- [726,641],
1266
+ [728,643],
1268
1267
  {
1269
1268
  ' lookahead':'lGenericSeparator',
1270
- GenericSeparator:['ckA',727],
1269
+ GenericSeparator:['ckA',729],
1271
1270
  '':0
1272
1271
  },
1273
1272
  {
1274
1273
  ' lookahead':'lGenericExpr',
1275
- Id:[726,641],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1276
- GenericExpr:['ckA',726],
1274
+ Id:[728,643],'#':'Id','(':'Id','+':'Id','-':'Id',':':'Id','?':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1275
+ GenericExpr:['ckA',728],
1277
1276
  },
1278
1277
  'overClause',
1279
- ['m',730,'('],
1280
- {partition:['ck',731],'':733},
1281
- ['mk',732,'by'],
1282
- [733,740],
1283
- {order:['ck',734],'':736},
1284
- ['mk',735,'by'],
1285
- [736,744],
1286
- {rows:['ck',737],'':738},
1287
- [738,753],
1278
+ ['m',732,'('],
1279
+ {partition:['ck',733],'':735},
1280
+ ['mk',734,'by'],
1281
+ [735,742],
1282
+ {order:['ck',736],'':738},
1283
+ ['mk',737,'by'],
1284
+ [738,746],
1285
+ {rows:['ck',739],'':740},
1286
+ [740,755],
1288
1287
  ['m',0,')'],
1289
1288
  'expressionsAsXpr',
1290
- [741,641],
1291
- {',':['c',742],'':0},
1292
- [741,641],
1289
+ [743,643],
1290
+ {',':['c',744],'':0},
1291
+ [743,643],
1293
1292
  'orderByClauseAsXpr',
1294
- [745,748],
1295
- {',':['c',746],'':0},
1296
- [745,748],
1293
+ [747,750],
1294
+ {',':['c',748],'':0},
1295
+ [747,750],
1297
1296
  'orderBySpecAsXpr',
1298
- [749,641],
1299
- {asc:['ck',750],desc:'asc','':750},
1300
- {nulls:['ck',751],'':0},
1297
+ [751,643],
1298
+ {asc:['ck',752],desc:'asc','':752},
1299
+ {nulls:['ck',753],'':0},
1301
1300
  {last:['ck',0],first:'last'},
1302
1301
  'windowFrameClause',
1303
1302
  {
1304
- unbounded:['ck',754],
1305
- Number:['c',754],
1306
- current:['ck',755],
1307
- between:['ck',756],
1303
+ unbounded:['ck',756],
1304
+ Number:['c',756],
1305
+ current:['ck',757],
1306
+ between:['ck',758],
1308
1307
  },
1309
1308
  ['mk',0,'preceding'],
1310
1309
  ['mk',0,'row'],
1311
- [757,760],
1312
- ['mk',758,'and'],
1313
- [0,760],
1310
+ [759,762],
1311
+ ['mk',760,'and'],
1312
+ [0,762],
1314
1313
  'windowFrameBoundSpec',
1315
1314
  {
1316
- unbounded:['ck',761],
1317
- Number:['c',761],
1318
- current:['ck',763],
1315
+ unbounded:['ck',763],
1316
+ Number:['c',763],
1317
+ current:['ck',765],
1319
1318
  },
1320
1319
  {
1321
- following:['ck',762],
1322
- preceding:['ck',762],
1320
+ following:['ck',764],
1321
+ preceding:['ck',764],
1323
1322
  },
1324
1323
  ['g',0,[]],
1325
1324
  ['mk',0,'row'],
1326
1325
  'literalValue',
1327
1326
  {
1328
- '#':['c',766],
1327
+ '#':['c',768],
1329
1328
  null:['ck',0],
1330
1329
  true:['ck',0],false:'true',
1331
1330
  Number:['c',0],
@@ -1334,98 +1333,98 @@ QuotedLiteral:['c',0],
1334
1333
  },
1335
1334
  ['mi',0],
1336
1335
  'annoAssignStd',
1337
- ['m',769,'@',,,'annoInSameLine'],
1336
+ ['m',771,'@',,,'annoInSameLine'],
1338
1337
  {
1339
- '(':[0,777],
1340
- Id:[0,782],
1338
+ '(':[0,779],
1339
+ Id:[0,784],
1341
1340
  },
1342
1341
  'annoAssignCol',
1343
- ['m',772,'@'],
1342
+ ['m',774,'@'],
1344
1343
  {
1345
- '(':[0,777],
1346
- Id:[0,782],
1344
+ '(':[0,779],
1345
+ Id:[0,784],
1347
1346
  },
1348
1347
  'annoAssignMid',
1349
- ['m',775,'@',,,'annoInSameLine'],
1348
+ ['m',777,'@',,,'annoInSameLine'],
1350
1349
  {
1351
- '(':[0,777],
1352
- Id:[0,786],
1350
+ '(':[0,779],
1351
+ Id:[0,788],
1353
1352
  },
1354
1353
  'annoAssignParen',
1355
- ['m',778,'(',,,'annoInSameLine'],
1356
- {Id:[779,782],'':780},
1354
+ ['m',780,'(',,,'annoInSameLine'],
1355
+ {Id:[781,784],'':782},
1357
1356
  {
1358
- ',':['c',778],
1359
- ')':780,
1357
+ ',':['c',780],
1358
+ ')':782,
1360
1359
  },
1361
1360
  ['m',0,')'],
1362
1361
  'annoAssignBase',
1363
- [783,786],
1364
- {':':['c',784,,'annoInSameLine'],'':0},
1365
- [0,808],
1362
+ [785,788],
1363
+ {':':['c',786,,'annoInSameLine'],'':0},
1364
+ [0,810],
1366
1365
  'annoNamePath',
1367
- ['miA',787],
1368
- {'.':['c',788],'':790},
1366
+ ['miA',789],
1367
+ {'.':['c',790],'':792},
1369
1368
  {
1370
- Id:['ciA',787],
1371
- '@':['c',789],
1369
+ Id:['ciA',789],
1370
+ '@':['c',791],
1372
1371
  },
1373
- ['miA',787],
1374
- {'#':[0,799,,'annoInSameLine'],'':0},
1372
+ ['miA',789],
1373
+ {'#':[0,801,,'annoInSameLine'],'':0},
1375
1374
  'annoPath',
1376
1375
  {
1377
- Id:['ciA',794],
1378
- '@':['c',793],
1376
+ Id:['ciA',796],
1377
+ '@':['c',795],
1379
1378
  },
1380
- ['miA',794],
1381
- {'.':['c',795],'':797},
1379
+ ['miA',796],
1380
+ {'.':['c',797],'':799},
1382
1381
  {
1383
- Id:['ciA',794],
1384
- '@':['c',796],
1382
+ Id:['ciA',796],
1383
+ '@':['c',798],
1385
1384
  },
1386
- ['miA',794],
1387
- {'#':[0,799],'':0},
1385
+ ['miA',796],
1386
+ {'#':[0,801],'':0},
1388
1387
  'annoPathVariant',
1389
- ['m',800,'#'],
1390
- ['miA',801],
1391
- {'.':['c',802],'':0},
1392
- ['miA',801],
1388
+ ['m',802,'#'],
1389
+ ['miA',803],
1390
+ {'.':['c',804],'':0},
1391
+ ['miA',803],
1393
1392
  'annoStructValue',
1394
- [805,792],
1395
- {':':['c',806],'':0},
1396
- [0,808],
1393
+ [807,794],
1394
+ {':':['c',808],'':0},
1395
+ [0,810],
1397
1396
  'annoValue',
1398
1397
  {
1399
- '#':[0,765],null:'#',true:'#',false:'#',Number:'#',String:'#',QuotedLiteral:'#',
1400
- '+':['c',809],'-':'+',
1401
- Id:[0,792],'@':'Id',
1402
- '{':['c',810],
1403
- '[':['c',814,,,,'arrayAnno'],
1404
- '(':['c',821],
1398
+ '#':[0,767],null:'#',true:'#',false:'#',Number:'#',String:'#',QuotedLiteral:'#',
1399
+ '+':['c',811],'-':'+',
1400
+ Id:[0,794],'@':'Id',
1401
+ '{':['c',812],
1402
+ '[':['c',816,,,,'arrayAnno'],
1403
+ '(':['c',823],
1405
1404
  },
1406
1405
  ['m',0,'Number'],
1407
- {Id:[811,804],'@':'Id','':812},
1406
+ {Id:[813,806],'@':'Id','':814},
1408
1407
  {
1409
- ',':['c',810],
1410
- '}':812,
1408
+ ',':['c',812],
1409
+ '}':814,
1411
1410
  },
1412
- ['g',813],
1411
+ ['g',815],
1413
1412
  ['m',0,'}'],
1414
1413
  {
1415
- Id:[819,808],'#':'Id','(':'Id','+':'Id','-':'Id','@':'Id','[':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1416
- '...':['c',815,,'arrayAnno','ellipsis'],
1417
- '':820
1414
+ Id:[820,810],'#':'Id','(':'Id','+':'Id','-':'Id','@':'Id','[':'Id','{':'Id',Number:'Id',String:'Id',QuotedLiteral:'Id',
1415
+ '...':['c',817,,'arrayAnno','ellipsis'],
1416
+ '':821
1418
1417
  },
1419
- {up:['ck',816],'':818},
1420
- ['mk',817,'to'],
1421
- [818,808],
1422
- ['g',819],
1418
+ {up:['ck',818],'':820},
1419
+ ['mk',819,'to'],
1420
+ [820,810],
1423
1421
  {
1424
- ',':['c',814],
1425
- ']':820,
1422
+ ',':['c',816],
1423
+ ']':821,
1426
1424
  },
1425
+ ['g',822],
1427
1426
  ['m',0,']'],
1428
- [822,633],
1427
+ [824,635],
1429
1428
  ['m',0,')'],
1430
1429
  ]
1431
1430
  class CdlParser extends AstBuildingParser{
@@ -1689,7 +1688,7 @@ this.rule_(64,$next)
1689
1688
  for(;;)switch(this.s){
1690
1689
  case 64:switch(this.lk()){
1691
1690
  case'aspect':this.ck(66);continue
1692
- case'abstract':if(this.ck(65)){ this.warning( 'syntax-deprecated-abstract', this.lb().location ); }continue
1691
+ case'abstract':if(this.ck(65)){ this.warning( 'syntax-deprecated-abstract', this.combineLocation( this.lb(), this.la() ) ); }continue
1693
1692
  default:this.e();continue
1694
1693
  }
1695
1694
  case 65:this.mk(66,'entity');continue
@@ -2218,7 +2217,7 @@ default:this.s=209;continue
2218
2217
  }
2219
2218
  case 209:this.mk(210,'of');continue
2220
2219
  case 210:switch(this.lk()){
2221
- case'one':case'many':if(this.ckP(211,['Id']))card=this.lb();continue
2220
+ case'one':case'many':if(this.lP(['Id'])&&this.gc(211,'noRepeatedCardinality')&&this.ck(211))card=this.lb();continue
2222
2221
  default:this.s=211;continue
2223
2222
  }
2224
2223
  case 211:if(this.simplePath(_={category:'artref'},212)){target=_.ref; this.setAssocAndComposition( art, assoc, card, target ); }continue
@@ -2272,8 +2271,9 @@ case 226:switch(this.lk()){
2272
2271
  case'actions':this.annotateActionsBlock({art:$.art},0);continue
2273
2272
  default:this.gr([';']);continue
2274
2273
  }
2274
+ case 0:{ this.checkWith( keyword ); }
2275
2275
  default:
2276
- this.checkWith( keyword ); this.attachLocation( $.art )
2276
+ this.attachLocation( $.art )
2277
2277
  return this.exit_()
2278
2278
  }
2279
2279
  }
@@ -2354,8 +2354,9 @@ default:this.gr([';']);continue
2354
2354
  }
2355
2355
  case 247:this.selectItemsList({query:$.art,start:this.lb()},0);continue
2356
2356
  case 248:this.artifactsBlock({art:$.art,start:this.lb()},0);continue
2357
+ case 0:{ this.checkWith( keyword ); }
2357
2358
  default:
2358
- this.checkWith( keyword ); this.attachLocation( $.art )
2359
+ this.attachLocation( $.art )
2359
2360
  return this.exit_()
2360
2361
  }
2361
2362
  }
@@ -2843,7 +2844,7 @@ default:this.s=370;continue
2843
2844
  }
2844
2845
  case 370:this.mk(371,'to');continue
2845
2846
  case 371:switch(this.lk()){
2846
- case'one':case'many':if(this.ckP(372,['Id']))card=this.lb();continue
2847
+ case'one':case'many':if(this.lP(['Id'])&&this.gc(372,'noRepeatedCardinality')&&this.ck(372))card=this.lb();continue
2847
2848
  default:this.s=372;continue
2848
2849
  }
2849
2850
  case 372:this.typeAssocProperties({art:$.art,assoc,card},0);continue
@@ -2853,7 +2854,7 @@ default:this.s=374;continue
2853
2854
  }
2854
2855
  case 374:this.mk(375,'of');continue
2855
2856
  case 375:switch(this.lk()){
2856
- case'one':case'many':if(this.ckP(376,['Id','{']))card=this.lb();continue
2857
+ case'one':case'many':if(this.lP(['Id','{'])&&this.gc(376,'noRepeatedCardinality')&&this.ck(376))card=this.lb();continue
2857
2858
  default:this.s=376;continue
2858
2859
  }
2859
2860
  case 376:switch(this.l()){
@@ -3113,10 +3114,9 @@ $.query??={}
3113
3114
  let tab;let _
3114
3115
  this.rule_(445,$next)
3115
3116
  for(;;)switch(this.s){
3116
- case 445:if(this.mk(446,'projection')){ $.query = { op: this.valueWithLocation( 'SELECT' ) }; }continue
3117
+ case 445:if(this.mk(446,'projection')){this.afterBrace(); $.query = { op: this.valueWithLocation( 'SELECT' ) }; }continue
3117
3118
  case 446:this.mk(447,'on');continue
3118
- case 447:if(this.fromRefWithOptAlias(_={},448)){tab=_.expr; this.afterBrace();
3119
- $.query.from = tab; }continue
3119
+ case 447:if(this.fromRefWithOptAlias(_={},448)){tab=_.expr;this.afterBrace(); $.query.from = tab; }continue
3120
3120
  case 448:switch(this.l()){
3121
3121
  case'{':this.selectItemsList({query:$.query,start:undefined},449);continue
3122
3122
  default:this.s=449;continue
@@ -3207,26 +3207,27 @@ case'{':this.selectItemsList({query:$.query,start:undefined},472);continue
3207
3207
  default:this.s=472;continue
3208
3208
  }
3209
3209
  case 472:switch(this.lk()){
3210
- case'excluding':this.excludingClause({query:$.query},478);continue
3211
- default:this.s=478;continue
3212
- }
3213
- case 473:switch(this.l()){
3214
- case'*':if(this.c(474)){ $.query.columns = [ this.valueWithLocation() ]; }continue
3215
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:($.query.columns = [])},474);continue
3216
- default:this.e();continue
3210
+ case'excluding':this.excludingClause({query:$.query},479);continue
3211
+ default:this.s=479;continue
3217
3212
  }
3213
+ case 473:this.s=474;{this.inSelectItem(0,'sqlStyle'); ; }continue
3218
3214
  case 474:switch(this.l()){
3219
- case',':this.c(475);continue
3220
- default:this.s=476;continue
3215
+ case'*':if(this.c(475)){ $.query.columns = [ this.valueWithLocation() ]; }continue
3216
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:($.query.columns = [])},475);continue
3217
+ default:this.e();continue
3221
3218
  }
3222
3219
  case 475:switch(this.l()){
3223
- case'*':if(this.c(474)){ $.query.columns.push( this.valueWithLocation() ); }continue
3224
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query.columns},474);continue
3220
+ case',':this.c(476);continue
3221
+ default:this.s=477;continue
3222
+ }
3223
+ case 476:switch(this.l()){
3224
+ case'*':if(this.c(475)){ $.query.columns.push( this.valueWithLocation() ); }continue
3225
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query.columns},475);continue
3225
3226
  default:this.e();continue
3226
3227
  }
3227
- case 476:this.mk(477,'from');continue
3228
- case 477:this.querySource({query:$.query},478);continue
3229
- case 478:switch(this.lk()){
3228
+ case 477:this.mk(478,'from');continue
3229
+ case 478:this.querySource({query:$.query},479);continue
3230
+ case 479:switch(this.lk()){
3230
3231
  case'group':case'where':case'having':this.whereGroupByHaving({query:$.query},0);continue
3231
3232
  default:this.gr(['limit','minus','order','union','except','intersect']);continue
3232
3233
  }
@@ -3237,19 +3238,19 @@ return this.exit_()
3237
3238
  }
3238
3239
  querySource($,$next){
3239
3240
  let tab;let _
3240
- this.rule_(480,$next)
3241
+ this.rule_(481,$next)
3241
3242
  for(;;)switch(this.s){
3242
- case 480:if(this.tableExpression(_={},481)){tab=_.expr; $.query.from = tab; }continue
3243
- case 481:switch(this.l()){
3244
- case',':this.s=482;{ const { location } = this.la();
3243
+ case 481:if(this.tableExpression(_={},482)){tab=_.expr; $.query.from = tab; }continue
3244
+ case 482:switch(this.l()){
3245
+ case',':this.s=483;{ const { location } = this.la();
3245
3246
  $.query.from = { op: { val: 'join', location }, join: { val: 'cross', location }, args: [tab] }; }continue
3246
3247
  default:this.gr(['group','limit','minus','order','union','where','except','having','intersect']);continue
3247
3248
  }
3248
- case 482:switch(this.l()){
3249
- case',':this.c(483);continue
3249
+ case 483:switch(this.l()){
3250
+ case',':this.c(484);continue
3250
3251
  default:this.gr(['group','limit','minus','order','union','where','except','having','intersect']);continue
3251
3252
  }
3252
- case 483:if(this.tableExpression(_={},482)){tab=_.expr; $.query.from.args.push( tab ); }continue
3253
+ case 484:if(this.tableExpression(_={},483)){tab=_.expr; $.query.from.args.push( tab ); }continue
3253
3254
  case 0:
3254
3255
  this.attachLocation($.query.from)
3255
3256
  default:return this.exit_()
@@ -3258,91 +3259,91 @@ default:return this.exit_()
3258
3259
  tableExpression($,$next,$startState){
3259
3260
  $.expr??={}
3260
3261
  let join;let tab;let card;let cond;let _
3261
- this.rule_($startState??485,$next)
3262
+ this.rule_($startState??486,$next)
3262
3263
  for(;;)switch(this.s){
3263
- case 485:switch(this.l()){
3264
- case'(':this.tableOrQueryParens($,486);continue
3265
- case'Id':this.fromRefWithOptAlias($,487);continue
3264
+ case 486:switch(this.l()){
3265
+ case'(':this.tableOrQueryParens($,487);continue
3266
+ case'Id':this.fromRefWithOptAlias($,488);continue
3266
3267
  default:this.e();continue
3267
3268
  }
3268
- case 486:this.s=487;{ $.expr = this.taggedIfQuery( $.expr ); }continue
3269
- case 487:switch(this.lk()){
3270
- case'cross':if(this.ck(488))join=this.lb();continue
3271
- case'inner':if(this.ck(491))join=this.lb();continue
3272
- case'full':case'left':case'right':if(this.ck(490))join=this.lb();continue
3273
- case'join':if(this.ck(493)){ join = undefined; }continue
3269
+ case 487:this.s=488;{ $.expr = this.taggedIfQuery( $.expr ); }continue
3270
+ case 488:switch(this.lk()){
3271
+ case'cross':if(this.ck(489))join=this.lb();continue
3272
+ case'inner':if(this.ck(492))join=this.lb();continue
3273
+ case'full':case'left':case'right':if(this.ck(491))join=this.lb();continue
3274
+ case'join':if(this.ck(494)){ join = undefined; }continue
3274
3275
  default:this.gr([]);continue
3275
3276
  }
3276
- case 488:if(this.mk(489,'join')){ if ($.expr?.join?.val !== 'cross' || $.expr.$parens) $.expr = { op: this.valueWithLocation(), join: this.valueWithLocation( undefined, join ), args: [ $.expr ] }; }continue
3277
- case 489:switch(this.l()){
3278
- case'(':if(this.tableOrQueryParens(_={},487)){tab=_.expr; $.expr.args.push( this.taggedIfQuery( tab ) );
3277
+ 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
3278
+ case 490:switch(this.l()){
3279
+ case'(':if(this.tableOrQueryParens(_={},488)){tab=_.expr; $.expr.args.push( this.taggedIfQuery( tab ) );
3279
3280
  this.attachLocation( $.expr ); }continue
3280
- case'Id':if(this.fromRefWithOptAlias(_={},487)){tab=_.expr; $.expr.args.push( tab );
3281
+ case'Id':if(this.fromRefWithOptAlias(_={},488)){tab=_.expr; $.expr.args.push( tab );
3281
3282
  this.attachLocation( $.expr ); }continue
3282
3283
  default:this.e();continue
3283
3284
  }
3284
- case 490:switch(this.lk()){
3285
- case'outer':this.ck(491);continue
3286
- default:this.s=491;continue
3287
- }
3288
3285
  case 491:switch(this.lk()){
3289
- case'one':case'many':case'exact':this.joinCardinality(card={},492);continue
3286
+ case'outer':this.ck(492);continue
3290
3287
  default:this.s=492;continue
3291
3288
  }
3292
- case 492:this.mk(493,'join');continue
3293
- case 493:this.s=494;{ $.expr = { op: this.valueWithLocation(), join: this.valueWithLocation( join?.keyword || 'inner', join ), args: [ $.expr ] }; if (card) $.expr.cardinality = card; card = undefined; }continue
3294
- case 494:if(this.tableExpression(_={},495)){tab=_.expr; $.expr.args.push( tab ); this.attachLocation( $.expr ); }continue
3295
- case 495:this.mk(496,'on');continue
3296
- case 496:if(this.condition(_={},487)){cond=_.expr; $.expr.on = cond;
3289
+ case 492:switch(this.lk()){
3290
+ case'one':case'many':case'exact':this.joinCardinality(card={},493);continue
3291
+ default:this.s=493;continue
3292
+ }
3293
+ case 493:this.mk(494,'join');continue
3294
+ 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
3295
+ case 495:if(this.tableExpression(_={},496)){tab=_.expr; $.expr.args.push( tab ); this.attachLocation( $.expr ); }continue
3296
+ case 496:this.mk(497,'on');continue
3297
+ case 497:if(this.condition(_={},488)){cond=_.expr; $.expr.on = cond;
3297
3298
  this.attachLocation( $.expr ); }continue
3298
3299
  default:return this.exit_()
3299
3300
  }
3300
3301
  }
3301
3302
  tableOrQueryParens($,$next){
3302
3303
  $.expr??=undefined
3303
- this.rule_(498,$next)
3304
+ this.rule_(499,$next)
3304
3305
  for(;;)switch(this.s){
3305
- case 498:if(this.m(499,'(')){this.queryOnLeft()}continue;
3306
- case 499:switch(this.lk()){
3307
- case'(':this.tableOrQueryParens($,500);continue
3308
- case'Id':if(this.tableExpression($,501)){this.queryOnLeft(0,'table')}continue;
3309
- case'select':this.queryExpression($,501);continue
3306
+ case 499:if(this.m(500,'(')){this.queryOnLeft()}continue;
3307
+ case 500:switch(this.lk()){
3308
+ case'(':this.tableOrQueryParens($,501);continue
3309
+ case'Id':if(this.tableExpression($,502)){this.queryOnLeft(0,'table')}continue;
3310
+ case'select':this.queryExpression($,502);continue
3310
3311
  default:this.ei();continue
3311
3312
  }
3312
- case 500:switch(this.lk()){
3313
- case'full':case'join':case'left':case'cross':case'inner':case'right':if(this.tableExpression($,501,486)){this.queryOnLeft(0,'table')}continue;
3314
- case'limit':case'minus':case'order':case'union':case'except':case'intersect':this.gc(501,'queryOnLeft')&&this.queryExpression($,501,454);continue
3315
- default:this.s=501;continue
3313
+ case 501:switch(this.lk()){
3314
+ case'full':case'join':case'left':case'cross':case'inner':case'right':if(this.tableExpression($,502,487)){this.queryOnLeft(0,'table')}continue;
3315
+ case'limit':case'minus':case'order':case'union':case'except':case'intersect':this.gc(502,'queryOnLeft')&&this.queryExpression($,502,454);continue
3316
+ default:this.s=502;continue
3316
3317
  }
3317
- case 501:if(this.m(502,')')){ this.surroundByParens( $.expr ); }continue
3318
- case 502:switch(this.lk()){
3319
- case'as':this.gc(0,'queryOnLeft','table')&&this.ck(503);continue
3318
+ case 502:if(this.m(503,')')){ this.surroundByParens( $.expr ); }continue
3319
+ case 503:switch(this.lk()){
3320
+ case'as':this.gc(0,'queryOnLeft','table')&&this.ck(504);continue
3320
3321
  case'Id':if(this.gc(0,'queryOnLeft','tableWithoutAs')&&this.ci(0,'FromAlias')){ $.expr = this.taggedIfQuery( $.expr ); $.expr.name = this.fragileAlias(); }continue
3321
3322
  default:this.gi(0,['full','join','left','cross','inner','right']);continue
3322
3323
  }
3323
- case 503:if(this.mi(0,'FromAlias')){ $.expr = this.taggedIfQuery( $.expr ); $.expr.name = this.identAst(); }continue
3324
+ case 504:if(this.mi(0,'FromAlias')){ $.expr = this.taggedIfQuery( $.expr ); $.expr.name = this.identAst(); }continue
3324
3325
  default:return this.exit_()
3325
3326
  }
3326
3327
  }
3327
3328
  joinCardinality($,$next){
3328
3329
  $.sourceMax??=undefined;$.targetMax??=undefined
3329
- this.rule_(505,$next)
3330
+ this.rule_(506,$next)
3330
3331
  for(;;)switch(this.s){
3331
- case 505:switch(this.lk()){
3332
- case'exact':if(this.ck(506)){ $.sourceMin = this.valueWithLocation( 1 ); }continue
3333
- case'one':this.s=506;continue
3334
- case'many':if(this.ck(507)){ $.sourceMax = this.valueWithLocation( '*' ); }continue
3332
+ case 506:switch(this.lk()){
3333
+ case'exact':if(this.ck(507)){ $.sourceMin = this.valueWithLocation( 1 ); }continue
3334
+ case'one':this.s=507;continue
3335
+ case'many':if(this.ck(508)){ $.sourceMax = this.valueWithLocation( '*' ); }continue
3335
3336
  default:this.e();continue
3336
3337
  }
3337
- case 506:if(this.mk(507,'one')){ $.sourceMax = this.valueWithLocation( 1 ); }continue
3338
- case 507:this.mk(508,'to');continue
3339
- case 508:switch(this.lk()){
3340
- case'exact':if(this.ck(509)){ $.targetMin = this.valueWithLocation( 1 ); }continue
3341
- case'one':this.s=509;continue
3338
+ case 507:if(this.mk(508,'one')){ $.sourceMax = this.valueWithLocation( 1 ); }continue
3339
+ case 508:this.mk(509,'to');continue
3340
+ case 509:switch(this.lk()){
3341
+ case'exact':if(this.ck(510)){ $.targetMin = this.valueWithLocation( 1 ); }continue
3342
+ case'one':this.s=510;continue
3342
3343
  case'many':if(this.ck(0)){ $.targetMax = this.valueWithLocation( '*' ); }continue
3343
3344
  default:this.e();continue
3344
3345
  }
3345
- case 509:if(this.mk(0,'one')){ $.targetMax = this.valueWithLocation( 1 ); }continue
3346
+ case 510:if(this.mk(0,'one')){ $.targetMax = this.valueWithLocation( 1 ); }continue
3346
3347
  default:
3347
3348
  this.attachLocation( $ )
3348
3349
  return this.exit_()
@@ -3350,25 +3351,25 @@ return this.exit_()
3350
3351
  }
3351
3352
  fromRefWithOptAlias($,$next){
3352
3353
  $.expr??={}
3353
- this.rule_(511,$next)
3354
+ this.rule_(512,$next)
3354
3355
  { $.expr.path = []; }
3355
3356
  for(;;)switch(this.s){
3356
- case 511:this.fromPath({table:$.expr,category:'artref'},512);continue
3357
- case 512:switch(this.l()){
3358
- case':':if(this.c(513)){ if (!$.expr.scope) $.expr.scope = $.expr.path.length; else {
3357
+ case 512:this.fromPath({table:$.expr,category:'artref'},513);continue
3358
+ case 513:switch(this.l()){
3359
+ case':':if(this.c(514)){ if (!$.expr.scope) $.expr.scope = $.expr.path.length; else {
3359
3360
  this.warning( 'syntax-invalid-path-separator', this.lb(),
3360
3361
  { '#': 'colon', code: ':', newcode: '.' } );
3361
3362
  } }continue
3362
- default:this.s=514;continue
3363
+ default:this.s=515;continue
3363
3364
  }
3364
- case 513:this.fromPath({table:$.expr,category:'ref'},514);continue
3365
- case 514:switch(this.lk()){
3366
- case'as':this.ck(515);continue
3367
- case'Id':if(this.gc(516,'tableWithoutAs')&&this.ci(0,'FromAlias')){ $.expr.name = this.fragileAlias(); }continue
3368
- default:this.giR(516);continue
3365
+ case 514:this.fromPath({table:$.expr,category:'ref'},515);continue
3366
+ case 515:switch(this.lk()){
3367
+ case'as':this.ck(516);continue
3368
+ case'Id':if(this.ci(0,'FromAlias')){ $.expr.name = this.fragileAlias(); }continue
3369
+ default:this.giR(517);continue
3369
3370
  }
3370
- case 515:if(this.mi(0,'FromAlias')){ $.expr.name = this.identAst(); }continue
3371
- case 516:if(this.gr([])){ this.classifyImplicitName( $.expr.scope ? 'FromElemImplicit' : 'FromImplicit', $.expr ); }continue
3371
+ case 516:if(this.mi(0,'FromAlias')){ $.expr.name = this.identAst(); }continue
3372
+ case 517:if(this.gr([])){ this.classifyImplicitName( $.expr.scope ? 'FromElemImplicit' : 'FromImplicit', $.expr ); }continue
3372
3373
  default:
3373
3374
  this.attachLocation( $.expr )
3374
3375
  return this.exit_()
@@ -3376,25 +3377,25 @@ return this.exit_()
3376
3377
  }
3377
3378
  fromPath($,$next){
3378
3379
  let pathItem
3379
- this.rule_(518,$next)
3380
+ this.rule_(519,$next)
3380
3381
  for(;;)switch(this.s){
3381
- case 518:if(this.mi(519,$.category)){ $.table.path.push( pathItem = this.identAst() ); }continue
3382
- case 519:switch(this.l()){
3383
- case'(':case'[':if(this.fromArgumentsAndFilter({pathStep:pathItem},520)){ pathItem = null; }continue
3384
- default:this.s=520;continue
3385
- }
3382
+ case 519:if(this.mi(520,$.category)){ $.table.path.push( pathItem = this.identAst() ); }continue
3386
3383
  case 520:switch(this.l()){
3387
- case'.':if(this.c(521)){ if (!pathItem && !$.table.scope) {
3384
+ case'(':case'[':if(this.fromArgumentsAndFilter({pathStep:pathItem},521)){ pathItem = null; }continue
3385
+ default:this.s=521;continue
3386
+ }
3387
+ case 521:switch(this.l()){
3388
+ case'.':if(this.gc(0,'notAfterEntityArgOrFilter')&&this.c(522)){ if (!pathItem && !$.table.scope) {
3388
3389
  $.table.scope = $.table.path.length; $.category = 'ref';
3389
3390
  this.warning( 'syntax-invalid-path-separator', this.lb(),
3390
3391
  { '#': 'dot', code: '.', newcode: ':' } );
3391
3392
  } }continue
3392
3393
  default:this.gr(['Id','as']);continue
3393
3394
  }
3394
- case 521:if(this.miA(522,$.category)){ $.table.path.push( pathItem = this.identAst() ); }continue
3395
- case 522:switch(this.l()){
3396
- case'(':case'[':if(this.fromArgumentsAndFilter({pathStep:pathItem},520)){ pathItem = null; }continue
3397
- default:this.s=520;continue
3395
+ case 522:if(this.miA(523,$.category)){ $.table.path.push( pathItem = this.identAst() ); }continue
3396
+ case 523:switch(this.l()){
3397
+ case'(':case'[':if(this.fromArgumentsAndFilter({pathStep:pathItem},521)){ pathItem = null; }continue
3398
+ default:this.s=521;continue
3398
3399
  }
3399
3400
  default:
3400
3401
  this.attachLocation( $.table.path )
@@ -3402,27 +3403,27 @@ return this.exit_()
3402
3403
  }
3403
3404
  }
3404
3405
  fromArgumentsAndFilter($,$next){
3405
- this.rule_(524,$next)
3406
+ this.rule_(525,$next)
3406
3407
  for(;;)switch(this.s){
3407
- case 524:switch(this.l()){
3408
- case'(':if(this.c(525)){ $.pathStep.args = this.createDict(); $.pathStep.$syntax = ':'; }continue
3409
- default:this.s=529;continue
3408
+ case 525:switch(this.l()){
3409
+ case'(':if(this.c(526)){ $.pathStep.args = this.createDict(); $.pathStep.$syntax = ':'; }continue
3410
+ default:this.s=530;continue
3410
3411
  }
3411
- case 525:switch(this.lk()){
3412
- case'Id':this.s=526;continue
3412
+ case 526:switch(this.lk()){
3413
+ case'Id':this.s=527;continue
3413
3414
  default:this.ei();continue
3414
3415
  }
3415
- case 526:switch(this.l()){
3416
- case'Id':this.fromNamedArgument($,527);continue
3417
- default:this.s=528;continue
3418
- }
3419
3416
  case 527:switch(this.l()){
3420
- case',':this.c(526);continue
3421
- case')':this.s=528;continue
3417
+ case'Id':this.fromNamedArgument($,528);continue
3418
+ default:this.s=529;continue
3419
+ }
3420
+ case 528:switch(this.l()){
3421
+ case',':this.c(527);continue
3422
+ case')':this.s=529;continue
3422
3423
  default:this.e();continue
3423
3424
  }
3424
- case 528:this.m(529,')');continue
3425
- case 529:switch(this.l()){
3425
+ case 529:this.m(530,')');continue
3426
+ case 530:switch(this.l()){
3426
3427
  case'[':this.cardinalityAndFilter($,0);continue
3427
3428
  default:this.gr(['Id','.','as']);continue
3428
3429
  }
@@ -3431,219 +3432,220 @@ default:return this.exit_()
3431
3432
  }
3432
3433
  fromNamedArgument($,$next){
3433
3434
  let name;let expr;let _
3434
- this.rule_(531,$next)
3435
+ this.rule_(532,$next)
3435
3436
  for(;;)switch(this.s){
3436
- case 531:if(this.mi(532,'paramname'))name=this.lb();continue
3437
- case 532:this.m(533,':');continue
3438
- case 533:if(this.expression(_={},0)){expr=_.expr; this.addDef( expr, $.pathStep, 'args', 0, this.identAst( name ) ); }continue
3437
+ case 532:if(this.mi(533,'paramname'))name=this.lb();continue
3438
+ case 533:this.m(534,':');continue
3439
+ case 534:if(this.expression(_={},0)){expr=_.expr; this.addDef( expr, $.pathStep, 'args', 0, this.identAst( name ) ); }continue
3439
3440
  default:return this.exit_()
3440
3441
  }
3441
3442
  }
3442
3443
  cardinalityAndFilter($,$next){
3443
- this.rule_(535,$next)
3444
+ this.rule_(536,$next)
3444
3445
  for(;;)switch(this.s){
3445
- case 535:this.m(536,'[');continue
3446
- case 536:switch(this.l()){
3447
- case'Number':if(this.gc(538,'beforeColon')&&this.c(537)){ $.pathStep.cardinality = { targetMax: this.unsignedIntegerLiteral(), location: this.lb().location }; }continue
3448
- default:this.s=538;continue
3449
- }
3450
- case 537:this.m(538,':');continue
3451
- case 538:this.filterClauses({pathStep:$.pathStep},539);continue
3452
- case 539:this.m(0,']');continue
3446
+ case 536:this.m(537,'[');continue
3447
+ case 537:switch(this.l()){
3448
+ case'Number':if(this.gc(539,'beforeColon')&&this.c(538)){ $.pathStep.cardinality = { targetMax: this.unsignedIntegerLiteral(), location: this.lb().location }; }continue
3449
+ default:this.s=539;continue
3450
+ }
3451
+ case 538:this.m(539,':');continue
3452
+ case 539:this.filterClauses({pathStep:$.pathStep},540);continue
3453
+ case 540:this.m(0,']');continue
3453
3454
  default:return this.exit_()
3454
3455
  }
3455
3456
  }
3456
3457
  filterClauses($,$next){
3457
3458
  let cond;let _
3458
- this.rule_(541,$next)
3459
+ this.rule_(542,$next)
3459
3460
  for(;;)switch(this.s){
3460
- case 541:switch(this.lk()){
3461
- case'where':this.ck(542);continue
3462
- 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=542;continue
3463
- case'group':case'limit':case'order':case'having':this.gP(543);continue
3464
- default:this.gi(543);continue
3465
- }
3466
- case 542:if(this.condition(_={},543)){cond=_.expr; $.pathStep.where = cond; }continue
3467
- case 543:switch(this.lk()){
3468
- case'group':this.s=544;{ this.csnParseOnly('syntax-unexpected-sql-clause', 1, { keyword: 'group by' }); }continue
3469
- default:this.s=545;continue
3470
- }
3471
- case 544:this.groupByClause({query:$.pathStep},545);continue
3472
- case 545:switch(this.lk()){
3473
- case'having':if(this.ck(546)){ this.csnParseOnly('syntax-unexpected-sql-clause', -1, { keyword: 'having' }); }continue
3474
- default:this.s=547;continue
3475
- }
3476
- case 546:if(this.condition(_={},547)){cond=_.expr; $.pathStep.having = cond; }continue
3477
- case 547:switch(this.lk()){
3478
- case'limit':case'order':this.s=548;{ 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
3461
+ case 542:switch(this.lk()){
3462
+ case'where':this.ck(543);continue
3463
+ 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
3464
+ case'group':case'limit':case'order':case'having':this.gP(544);continue
3465
+ default:this.gi(544);continue
3466
+ }
3467
+ case 543:if(this.condition(_={},544)){cond=_.expr; $.pathStep.where = cond; }continue
3468
+ case 544:switch(this.lk()){
3469
+ case'group':this.s=545;{ this.csnParseOnly('syntax-unexpected-sql-clause', 1, { keyword: 'group by' }); }continue
3470
+ default:this.s=546;continue
3471
+ }
3472
+ case 545:this.groupByClause({query:$.pathStep},546);continue
3473
+ case 546:switch(this.lk()){
3474
+ case'having':if(this.ck(547)){ this.csnParseOnly('syntax-unexpected-sql-clause', -1, { keyword: 'having' }); }continue
3475
+ default:this.s=548;continue
3476
+ }
3477
+ case 547:if(this.condition(_={},548)){cond=_.expr; $.pathStep.having = cond; }continue
3478
+ case 548:switch(this.lk()){
3479
+ case'limit':case'order':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
3479
3480
  default:this.gr([']']);continue
3480
3481
  }
3481
- case 548:this.orderByLimitOffset({query:$.pathStep},0);continue
3482
+ case 549:this.orderByLimitOffset({query:$.pathStep},0);continue
3482
3483
  default:return this.exit_()
3483
3484
  }
3484
3485
  }
3485
3486
  excludingClause($,$next){
3486
- this.rule_(550,$next)
3487
+ this.rule_(551,$next)
3487
3488
  for(;;)switch(this.s){
3488
- case 550:this.mk(551,'excluding');continue
3489
- case 551:if(this.m(552,'{')){ $.query.excludingDict = this.createDict(); }continue
3490
- case 552:switch(this.l()){
3491
- case'Id':this.s=553;continue
3492
- default:this.e();continue
3493
- }
3489
+ case 551:this.mk(552,'excluding');continue
3490
+ case 552:if(this.m(553,'{')){ $.query.excludingDict = this.createDict(); }continue
3494
3491
  case 553:switch(this.l()){
3495
- case'Id':if(this.ciA(554,'ref')){ this.addDef( { location: this.lb().location }, $.query, 'excludingDict', '', this.identAst() ); }continue
3496
- default:this.s=555;continue
3492
+ case'Id':this.s=554;continue
3493
+ default:this.e();continue
3497
3494
  }
3498
3495
  case 554:switch(this.l()){
3499
- case',':this.c(553);continue
3500
- case'}':this.s=555;continue
3496
+ case'Id':if(this.ciA(555,'ref')){ this.addDef( { location: this.lb().location }, $.query, 'excludingDict', '', this.identAst() ); }continue
3497
+ default:this.s=556;continue
3498
+ }
3499
+ case 555:switch(this.l()){
3500
+ case',':this.c(554);continue
3501
+ case'}':this.s=556;continue
3501
3502
  default:this.e();continue
3502
3503
  }
3503
- case 555:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query.excludingDict ); }continue
3504
+ case 556:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query.excludingDict ); }continue
3504
3505
  default:return this.exit_()
3505
3506
  }
3506
3507
  }
3507
3508
  selectItemsList($,$next){
3508
- this.rule_(557,$next)
3509
+ this.rule_(558,$next)
3509
3510
  for(;;)switch(this.s){
3510
- case 557:if(this.m(558,'{')){this.inSelectItem(0,'top'); $.query.columns = this.createArray( $.start ); }continue
3511
- case 558:switch(this.l()){
3512
- case'*':if(this.c(559)){ $.query.columns.push( this.valueWithLocation() ); }continue
3513
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query.columns},559);continue
3514
- default:this.s=560;continue
3515
- }
3511
+ case 558:if(this.m(559,'{')){this.inSelectItem(0,'top'); $.query.columns = this.createArray( $.start ); }continue
3516
3512
  case 559:switch(this.l()){
3517
- case',':this.c(558);continue
3518
- case'}':this.s=560;continue
3513
+ case'*':if(this.c(560)){ $.query.columns.push( this.valueWithLocation() ); }continue
3514
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query.columns},560);continue
3515
+ default:this.s=561;continue
3516
+ }
3517
+ case 560:switch(this.l()){
3518
+ case',':this.c(559);continue
3519
+ case'}':this.s=561;continue
3519
3520
  default:this.e();continue
3520
3521
  }
3521
- case 560:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query.columns ); }continue
3522
+ case 561:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query.columns ); }continue
3522
3523
  default:return this.exit_()
3523
3524
  }
3524
3525
  }
3525
3526
  nestedSelectItemsList($,$next){
3526
- this.rule_(562,$next)
3527
+ this.rule_(563,$next)
3527
3528
  for(;;)switch(this.s){
3528
- case 562:if(this.m(563,'{')){this.inSelectItem(0,'nested'); $.query[$.clause] = this.createArray(); }continue
3529
- case 563:switch(this.l()){
3530
- case'*':if(this.c(564)){ $.query[$.clause].push( this.valueWithLocation() ); }continue
3531
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query[$.clause]},564);continue
3532
- default:this.s=565;continue
3533
- }
3529
+ case 563:if(this.m(564,'{')){this.inSelectItem(0,'nested'); $.query[$.clause] = this.createArray(); }continue
3534
3530
  case 564:switch(this.l()){
3535
- case',':this.c(563);continue
3536
- case'}':this.s=565;continue
3531
+ case'*':if(this.c(565)){ $.query[$.clause].push( this.valueWithLocation() ); }continue
3532
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'@':case'{':case'Number':case'String':case'QuotedLiteral':this.selectItemDef({columns:$.query[$.clause]},565);continue
3533
+ default:this.s=566;continue
3534
+ }
3535
+ case 565:switch(this.l()){
3536
+ case',':this.c(564);continue
3537
+ case'}':this.s=566;continue
3537
3538
  default:this.e();continue
3538
3539
  }
3539
- case 565:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query[$.clause] ); }continue
3540
+ case 566:if(this.m(0,'}')){this.afterBrace(); this.finalizeDictOrArray( $.query[$.clause] ); }continue
3540
3541
  default:return this.exit_()
3541
3542
  }
3542
3543
  }
3543
3544
  selectItemDef($,$next){
3544
3545
  let art=new XsnArtifact();let alias
3545
3546
  let expr;let as;let target;let cond;let assoc;let card;let _
3546
- this.rule_(567,$next)
3547
+ this.rule_(568,$next)
3547
3548
  { $.columns.push( art );
3548
3549
  this.docComment( art ); }
3549
3550
  for(;;)switch(this.s){
3550
- case 567:switch(this.l()){
3551
- case'@':this.annoAssignCol({art},567);continue
3552
- default:this.s=568;continue
3553
- }
3554
- case 568:switch(this.lk()){
3555
- case'virtual':if(this.lP(['Id','#','(','+','-',':','?','{','key','not','case','cast','null','true','false','Number','String','exists','QuotedLiteral'])&&this.gc(569,'modifierRestriction')&&this.ck(569)){ art.virtual = this.valueWithLocation( true ); }continue
3551
+ case 568:switch(this.l()){
3552
+ case'@':this.annoAssignCol({art},568);continue
3556
3553
  default:this.s=569;continue
3557
3554
  }
3558
3555
  case 569:switch(this.lk()){
3559
- case'key':if(this.gc(570,'modifierRestriction')&&this.ck(570)){ art.key = this.valueWithLocation( true ); }continue
3556
+ 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
3560
3557
  default:this.s=570;continue
3561
3558
  }
3562
- case 570:switch(this.l()){
3563
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},571)){expr=_.expr; art.value = expr; }continue
3564
- case'{':this.nestedSelectItemsList({query:art,clause:'expand'},578);continue
3559
+ case 570:this.s=571;{this.columnExpr(0,'key'); ; }continue
3560
+ case 571:switch(this.lk()){
3561
+ case'key':if(this.gc(572,'modifierRestriction')&&this.ck(572)){ art.key = this.valueWithLocation( true ); }continue
3562
+ default:this.s=572;continue
3563
+ }
3564
+ case 572:switch(this.l()){
3565
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},573)){expr=_.expr; art.value = expr; }continue
3566
+ case'{':this.nestedSelectItemsList({query:art,clause:'expand'},580);continue
3565
3567
  default:this.e();continue
3566
3568
  }
3567
- case 571:switch(this.lk()){
3568
- case'as':if(this.ck(572))as=this.lb();continue
3569
- case'Id':if(this.ci(573,'ItemAlias')){ art.name = this.fragileAlias( true ); }continue
3570
- default:if(this.gi(573)){ alias = this.classifyImplicitName( 'ItemImplicit', expr ); }continue
3571
- }
3572
- case 572:if(this.mi(573,'ItemAlias')){ art.name = this.identAst(); }continue
3573
- case 573:switch(this.l()){
3574
- case'{':this.s=574;{ this.reportExpandInline( art, false ); }continue
3575
- case'.':if(this.c(576)){ this.reportUnexpectedSpace( this.lb(), this.la().location, true );
3569
+ case 573:switch(this.lk()){
3570
+ case'as':if(this.ck(574))as=this.lb();continue
3571
+ case'Id':if(this.ci(577,'ItemAlias')){ art.name = this.fragileAlias( true ); }continue
3572
+ case'.':if(this.c(575)){ this.reportUnexpectedSpace( this.lb(), this.la().location, true );
3576
3573
  this.reportExpandInline( art, as || true );
3577
3574
  if (alias) alias.token.parsedAs = alias.parsedAs; }continue
3578
- default:this.s=581;continue
3575
+ default:if(this.gi(577)){ alias = this.classifyImplicitName( 'ItemImplicit', expr ); }continue
3579
3576
  }
3580
- case 574:this.nestedSelectItemsList({query:art,clause:'expand'},575);continue
3581
- case 575:switch(this.lk()){
3582
- case'excluding':this.excludingClause({query:art},581);continue
3583
- default:this.s=581;continue
3584
- }
3585
- case 576:switch(this.l()){
3586
- case'{':this.nestedSelectItemsList({query:art,clause:'inline'},577);continue
3587
- case'*':if(this.c(581)){ art.inline = [ this.valueWithLocation() ]; }continue
3577
+ case 574:if(this.mi(577,'ItemAlias')){ art.name = this.identAst(); }continue
3578
+ case 575:switch(this.l()){
3579
+ case'{':this.nestedSelectItemsList({query:art,clause:'inline'},576);continue
3580
+ case'*':if(this.c(0)){ art.inline = [ this.valueWithLocation() ]; }continue
3588
3581
  default:this.e();continue
3589
3582
  }
3590
- case 577:switch(this.lk()){
3591
- case'excluding':this.excludingClause({query:art},581);continue
3592
- default:this.s=581;continue
3583
+ case 576:switch(this.lk()){
3584
+ case'excluding':this.excludingClause({query:art},0);continue
3585
+ default:this.gr([',']);continue
3593
3586
  }
3594
- case 578:switch(this.lk()){
3595
- case'excluding':this.excludingClause({query:art},579);continue
3596
- default:this.s=579;continue
3587
+ case 577:switch(this.l()){
3588
+ case'{':this.s=578;{ this.reportExpandInline( art, false ); }continue
3589
+ default:this.s=583;continue
3597
3590
  }
3598
- case 579:this.mk(580,'as');continue
3599
- case 580:if(this.mi(581,'ItemAlias')){ art.name = this.identAst(); }continue
3600
- case 581:this.s=582;{ this.docComment( art ); }continue
3601
- case 582:switch(this.l()){
3602
- case'@':this.annoAssignMid({art},582);continue
3591
+ case 578:this.nestedSelectItemsList({query:art,clause:'expand'},579);continue
3592
+ case 579:switch(this.lk()){
3593
+ case'excluding':this.excludingClause({query:art},583);continue
3603
3594
  default:this.s=583;continue
3604
3595
  }
3605
- case 583:switch(this.l()){
3606
- case':':this.c(584);continue
3596
+ case 580:switch(this.lk()){
3597
+ case'excluding':this.excludingClause({query:art},581);continue
3598
+ default:this.s=581;continue
3599
+ }
3600
+ case 581:this.mk(582,'as');continue
3601
+ case 582:if(this.mi(583,'ItemAlias')){ art.name = this.identAst(); }continue
3602
+ case 583:this.s=584;{this.columnExpr(); this.docComment( art ); }continue
3603
+ case 584:switch(this.l()){
3604
+ case'@':this.annoAssignMid({art},584);continue
3605
+ default:this.s=585;continue
3606
+ }
3607
+ case 585:switch(this.l()){
3608
+ case':':this.c(586);continue
3607
3609
  default:this.gr([',']);continue
3608
3610
  }
3609
- case 584:switch(this.lk()){
3610
- case'type':this.lP()&&this.typeTypeOf({art},598);continue
3611
- case'localized':if(this.ckP(585,['Id'])){ art.localized = this.valueWithLocation( true ); }continue
3612
- case'Id':this.s=585;continue
3613
- case'redirected':this.ckP(586,['to']);continue
3614
- case'association':if(this.ckP(590,['[','to'])){assoc=this.lb(); this.associationInSelectItem( art ); }continue
3615
- case'composition':if(this.ckP(592,['[','of'])){assoc=this.lb(); this.associationInSelectItem( art ); }continue
3611
+ case 586:switch(this.lk()){
3612
+ case'type':this.lP()&&this.typeTypeOf({art},600);continue
3613
+ case'localized':if(this.ckP(587,['Id'])){ art.localized = this.valueWithLocation( true ); }continue
3614
+ case'Id':this.s=587;continue
3615
+ case'redirected':this.ckP(588,['to']);continue
3616
+ case'association':if(this.lP(['[','to'])&&this.ec('columnExpr')&&this.ck(592)){assoc=this.lb(); this.associationInSelectItem( art ); }continue
3617
+ case'composition':if(this.lP(['[','of'])&&this.ec('columnExpr')&&this.ck(594)){assoc=this.lb(); this.associationInSelectItem( art ); }continue
3616
3618
  default:this.ei();continue
3617
3619
  }
3618
- case 585:this.typeRefOptArgs({art},598);continue
3619
- case 586:this.mk(587,'to');continue
3620
- case 587:if(this.simplePath(_={category:'artref'},588)){target=_.ref; art.target = target; }continue
3621
- case 588:switch(this.lk()){
3622
- case'on':this.ck(589);continue
3623
- case'{':this.foreignKeysBlock({art},598);continue
3624
- default:this.s=598;continue
3625
- }
3626
- case 589:if(this.condition(_={},598)){cond=_.expr; art.on = cond; }continue
3627
- case 590:switch(this.l()){
3628
- case'[':this.cardinality({art},591);continue
3629
- default:this.s=591;continue
3620
+ case 587:this.typeRefOptArgs({art},600);continue
3621
+ case 588:this.mk(589,'to');continue
3622
+ case 589:if(this.simplePath(_={category:'artref'},590)){target=_.ref; art.target = target; }continue
3623
+ case 590:switch(this.lk()){
3624
+ case'on':this.ck(591);continue
3625
+ case'{':this.foreignKeysBlock({art},600);continue
3626
+ default:this.s=600;continue
3630
3627
  }
3631
- case 591:this.mk(594,'to');continue
3628
+ case 591:if(this.condition(_={},600)){cond=_.expr; art.on = cond; }continue
3632
3629
  case 592:switch(this.l()){
3633
3630
  case'[':this.cardinality({art},593);continue
3634
3631
  default:this.s=593;continue
3635
3632
  }
3636
- case 593:this.mk(594,'of');continue
3637
- case 594:switch(this.lk()){
3638
- case'one':case'many':if(this.ckP(595,['Id']))card=this.lb();continue
3633
+ case 593:this.mk(596,'to');continue
3634
+ case 594:switch(this.l()){
3635
+ case'[':this.cardinality({art},595);continue
3639
3636
  default:this.s=595;continue
3640
3637
  }
3641
- case 595:if(this.simplePath(_={category:'artref'},596)){target=_.ref; this.setAssocAndComposition( art, assoc, card, target ); }continue
3642
- case 596:this.mk(597,'on');continue
3643
- case 597:if(this.condition(_={},598)){expr=_.expr; art.on = expr; }continue
3644
- case 598:this.s=599;{ this.docComment( art ); }continue
3645
- case 599:switch(this.l()){
3646
- case'@':this.annoAssignStd({art},599);continue
3638
+ case 595:this.mk(596,'of');continue
3639
+ case 596:switch(this.lk()){
3640
+ case'one':case'many':if(this.lP(['Id'])&&this.gc(597,'noRepeatedCardinality')&&this.ck(597))card=this.lb();continue
3641
+ default:this.s=597;continue
3642
+ }
3643
+ case 597:if(this.simplePath(_={category:'artref'},598)){target=_.ref; this.setAssocAndComposition( art, assoc, card, target ); }continue
3644
+ case 598:this.mk(599,'on');continue
3645
+ case 599:if(this.condition(_={},600)){expr=_.expr; art.on = expr; }continue
3646
+ case 600:this.s=601;{ this.docComment( art ); }continue
3647
+ case 601:switch(this.l()){
3648
+ case'@':this.annoAssignStd({art},601);continue
3647
3649
  default:this.gr([',']);continue
3648
3650
  }
3649
3651
  default:
@@ -3653,90 +3655,90 @@ return this.exit_()
3653
3655
  }
3654
3656
  whereGroupByHaving($,$next){
3655
3657
  let cond;let _
3656
- this.rule_(601,$next)
3658
+ this.rule_(603,$next)
3657
3659
  for(;;)switch(this.s){
3658
- case 601:switch(this.lk()){
3659
- case'where':this.ck(602);continue
3660
- default:this.s=603;continue
3661
- }
3662
- case 602:if(this.condition(_={},603)){cond=_.expr; $.query.where = cond; }continue
3663
3660
  case 603:switch(this.lk()){
3664
- case'group':this.groupByClause($,604);continue
3665
- default:this.s=604;continue
3661
+ case'where':this.ck(604);continue
3662
+ default:this.s=605;continue
3666
3663
  }
3667
- case 604:switch(this.lk()){
3668
- case'having':this.ck(605);continue
3664
+ case 604:if(this.condition(_={},605)){cond=_.expr; $.query.where = cond; }continue
3665
+ case 605:switch(this.lk()){
3666
+ case'group':this.groupByClause($,606);continue
3667
+ default:this.s=606;continue
3668
+ }
3669
+ case 606:switch(this.lk()){
3670
+ case'having':this.ck(607);continue
3669
3671
  default:this.gr(['limit','order']);continue
3670
3672
  }
3671
- case 605:if(this.condition(_={},0)){cond=_.expr; $.query.having = cond; }continue
3673
+ case 607:if(this.condition(_={},0)){cond=_.expr; $.query.having = cond; }continue
3672
3674
  default:return this.exit_()
3673
3675
  }
3674
3676
  }
3675
3677
  groupByClause($,$next){
3676
3678
  let expr;let _
3677
- this.rule_(607,$next)
3679
+ this.rule_(609,$next)
3678
3680
  for(;;)switch(this.s){
3679
- case 607:this.mk(608,'group');continue
3680
- case 608:this.mk(609,'by');continue
3681
- case 609:if(this.expression(_={},610)){expr=_.expr; $.query.groupBy = [ expr ]; }continue
3682
- case 610:switch(this.l()){
3683
- case',':this.c(611);continue
3681
+ case 609:this.mk(610,'group');continue
3682
+ case 610:this.mk(611,'by');continue
3683
+ case 611:if(this.expression(_={},612)){expr=_.expr; $.query.groupBy = [ expr ]; }continue
3684
+ case 612:switch(this.l()){
3685
+ case',':this.c(613);continue
3684
3686
  default:this.gr(['limit','order','having']);continue
3685
3687
  }
3686
- case 611:if(this.expression(_={},610)){expr=_.expr; $.query.groupBy.push( expr ); }continue
3688
+ case 613:if(this.expression(_={},612)){expr=_.expr; $.query.groupBy.push( expr ); }continue
3687
3689
  default:return this.exit_()
3688
3690
  }
3689
3691
  }
3690
3692
  orderByLimitOffset($,$next){
3691
3693
  let expr;let _
3692
- this.rule_(613,$next)
3694
+ this.rule_(615,$next)
3693
3695
  for(;;)switch(this.s){
3694
- case 613:switch(this.lk()){
3695
- case'order':this.orderByClause($,614);continue
3696
- default:this.s=614;continue
3696
+ case 615:switch(this.lk()){
3697
+ case'order':this.orderByClause($,616);continue
3698
+ default:this.s=616;continue
3697
3699
  }
3698
- case 614:switch(this.lk()){
3699
- case'limit':this.ck(615);continue
3700
+ case 616:switch(this.lk()){
3701
+ case'limit':this.ck(617);continue
3700
3702
  default:this.gr([]);continue
3701
3703
  }
3702
- case 615:if(this.expression(_={},616)){expr=_.expr; $.query.limit = { rows: expr }; }continue
3703
- case 616:switch(this.lk()){
3704
- case'offset':this.ck(617);continue
3704
+ case 617:if(this.expression(_={},618)){expr=_.expr; $.query.limit = { rows: expr }; }continue
3705
+ case 618:switch(this.lk()){
3706
+ case'offset':this.ck(619);continue
3705
3707
  default:this.gr([]);continue
3706
3708
  }
3707
- case 617:if(this.expression(_={},0)){expr=_.expr; $.query.limit.offset = expr; }continue
3709
+ case 619:if(this.expression(_={},0)){expr=_.expr; $.query.limit.offset = expr; }continue
3708
3710
  default:return this.exit_()
3709
3711
  }
3710
3712
  }
3711
3713
  orderByClause($,$next){
3712
3714
  let expr;let _
3713
- this.rule_(619,$next)
3715
+ this.rule_(621,$next)
3714
3716
  for(;;)switch(this.s){
3715
- case 619:this.mk(620,'order');continue
3716
- case 620:this.mk(621,'by');continue
3717
- case 621:if(this.orderByExpression(_={},622)){expr=_.expr; $.query.orderBy = [ expr ]; }continue
3718
- case 622:switch(this.l()){
3719
- case',':this.c(623);continue
3717
+ case 621:this.mk(622,'order');continue
3718
+ case 622:this.mk(623,'by');continue
3719
+ case 623:if(this.orderByExpression(_={},624)){expr=_.expr; $.query.orderBy = [ expr ]; }continue
3720
+ case 624:switch(this.l()){
3721
+ case',':this.c(625);continue
3720
3722
  default:this.gr(['limit']);continue
3721
3723
  }
3722
- case 623:if(this.orderByExpression(_={},622)){expr=_.expr; $.query.orderBy.push( expr ); }continue
3724
+ case 625:if(this.orderByExpression(_={},624)){expr=_.expr; $.query.orderBy.push( expr ); }continue
3723
3725
  default:return this.exit_()
3724
3726
  }
3725
3727
  }
3726
3728
  orderByExpression($,$next){
3727
3729
  $.expr??=undefined
3728
- this.rule_(625,$next)
3730
+ this.rule_(627,$next)
3729
3731
  for(;;)switch(this.s){
3730
- case 625:this.expression($,626);continue
3731
- case 626:switch(this.lk()){
3732
- case'asc':case'desc':if(this.ck(627)){ $.expr.sort = this.valueWithLocation(); }continue
3733
- default:this.s=627;continue
3732
+ case 627:this.expression($,628);continue
3733
+ case 628:switch(this.lk()){
3734
+ case'asc':case'desc':if(this.ck(629)){ $.expr.sort = this.valueWithLocation(); }continue
3735
+ default:this.s=629;continue
3734
3736
  }
3735
- case 627:switch(this.lk()){
3736
- case'nulls':this.ck(628);continue
3737
+ case 629:switch(this.lk()){
3738
+ case'nulls':this.ck(630);continue
3737
3739
  default:this.gr([',','limit']);continue
3738
3740
  }
3739
- case 628:switch(this.lk()){
3741
+ case 630:switch(this.lk()){
3740
3742
  case'last':case'first':if(this.ck(0)){ $.expr.nulls = this.valueWithLocation(); }continue
3741
3743
  default:this.e();continue
3742
3744
  }
@@ -3746,39 +3748,39 @@ default:return this.exit_()
3746
3748
  conditionEOF($,$next){
3747
3749
  $.cond??=undefined
3748
3750
  let _
3749
- this.rule_(630,$next)
3751
+ this.rule_(632,$next)
3750
3752
  for(;;)switch(this.s){
3751
- case 630:if(this.expression(_={},631))$.cond=_.expr;continue
3752
- case 631:this.m(0,'EOF');continue
3753
+ case 632:if(this.expression(_={},633))$.cond=_.expr;continue
3754
+ case 633:this.m(0,'EOF');continue
3753
3755
  default:return this.exit_()
3754
3756
  }
3755
3757
  }
3756
3758
  condition($,$next){
3757
3759
  $.expr??=undefined
3758
- this.rule_(633,$next)
3760
+ this.rule_(635,$next)
3759
3761
  for(;;)switch(this.s){
3760
- case 633:this.expression($,0);continue
3762
+ case 635:this.expression($,0);continue
3761
3763
  default:return this.exit_()
3762
3764
  }
3763
3765
  }
3764
3766
  valuePath($,$next,$startState){
3765
3767
  $.expr??={ path: [] }
3766
3768
  let pathItem
3767
- this.rule_($startState??635,$next)
3769
+ this.rule_($startState??637,$next)
3768
3770
  for(;;)switch(this.s){
3769
- case 635:if(this.mi(636,'ref')){ $.expr.path.push( pathItem = this.identAst() ); }continue
3770
- case 636:switch(this.l()){
3771
- case'(':case'[':this.argumentsAndFilter({pathStep:pathItem},637);continue
3772
- default:this.s=637;continue
3771
+ case 637:if(this.mi(638,'ref')){ $.expr.path.push( pathItem = this.identAst() ); }continue
3772
+ case 638:switch(this.l()){
3773
+ case'(':case'[':this.argumentsAndFilter({pathStep:pathItem},639);continue
3774
+ default:this.s=639;continue
3773
3775
  }
3774
- case 637:switch(this.l()){
3775
- case'.':this.gc(0,'isDotForPath')&&this.c(638);continue
3776
+ case 639:switch(this.l()){
3777
+ case'.':this.gc(0,'isDotForPath')&&this.c(640);continue
3776
3778
  default:this.gr(['*','+','-','/','<','=','>','?','!=','<=','<>','>=','in','is','or','||','and','not','like','between']);continue
3777
3779
  }
3778
- case 638:if(this.miA(639,'ref')){ $.expr.path.push( pathItem = this.identAst() ); }continue
3779
- case 639:switch(this.l()){
3780
- case'(':case'[':if(this.argumentsAndFilter({pathStep:pathItem},637)){ pathItem = null; }continue
3781
- default:this.s=637;continue
3780
+ case 640:if(this.miA(641,'ref')){ $.expr.path.push( pathItem = this.identAst() ); }continue
3781
+ case 641:switch(this.l()){
3782
+ case'(':case'[':if(this.argumentsAndFilter({pathStep:pathItem},639)){ pathItem = null; }continue
3783
+ default:this.s=639;continue
3782
3784
  }
3783
3785
  default:
3784
3786
  this.attachLocation( $.expr )
@@ -3788,141 +3790,141 @@ return this.exit_()
3788
3790
  expression($,$next,$startState){
3789
3791
  $.expr??={}
3790
3792
  let e;let open;let _
3791
- this.rule_($startState??641,$next)
3793
+ this.rule_($startState??643,$next)
3792
3794
  for(;;)switch(this.s){
3793
- case 641:switch(this.lk()){
3794
- case'(':this.expressionOrQueryParens($,642);continue
3795
- case'#':case'null':case'true':case'false':case'Number':case'String':case'QuotedLiteral':this.literalValue($,652);continue
3796
- case':':if(this.c(643)){ this.reportUnexpectedSpace(); }continue
3797
- case'?':if(this.c(652)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'dynamic', code: '?' } );
3795
+ case 643:switch(this.lk()){
3796
+ case'(':this.expressionOrQueryParens($,644);continue
3797
+ case'#':case'null':case'true':case'false':case'Number':case'String':case'QuotedLiteral':this.literalValue($,654);continue
3798
+ case':':if(this.c(645)){ this.reportUnexpectedSpace(); }continue
3799
+ case'?':if(this.c(654)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'dynamic', code: '?' } );
3798
3800
  $.expr = this.attachLocation({ param: this.valueWithLocation(), scope: 'param' }); }continue
3799
- case'Id':if(this.valuePath(_={},645)){e=_.expr; $.expr = this.valuePathAst( e ); }continue
3800
- case'new':this.lP()&&this.newAndValuePath($,652);continue
3801
- case'exists':if(this.ck(648)){ $.expr = this.applyOpToken(); }continue
3802
- case'case':this.caseExpression($,652);continue
3803
- case'cast':this.castFunction($,652);continue
3804
- case'+':case'-':if(this.ec('precRight_',30)&&this.c(651)){ $.expr = this.applyOpToken(); }continue
3805
- case'not':if(this.ec('precRight_',8)&&this.ck(651)){ $.expr = this.applyOpToken(); }continue
3801
+ case'Id':if(this.valuePath(_={},647)){e=_.expr; $.expr = this.valuePathAst( e ); }continue
3802
+ case'new':this.lP()&&this.newAndValuePath($,654);continue
3803
+ case'exists':if(this.ck(650)){ $.expr = this.applyOpToken(); }continue
3804
+ case'case':this.caseExpression($,654);continue
3805
+ case'cast':this.castFunction($,654);continue
3806
+ case'+':case'-':if(this.ec('precRight_',30)&&this.c(653)){ $.expr = this.applyOpToken(); }continue
3807
+ case'not':if(this.ec('precRight_',8)&&this.ck(653)){ $.expr = this.applyOpToken(); }continue
3806
3808
  default:this.ei();continue
3807
3809
  }
3808
- case 642:this.s=652;{ $.expr = this.taggedIfQuery( $.expr ); }continue
3809
- case 643:switch(this.l()){
3810
- case'Id':if(this.ciA(644,'paramref')){ $.expr = { path: [ this.identAst() ], location: this.startLocation(), scope: 'param' }; }continue
3811
- case'Number':if(this.c(652)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'positional', code: ':' + this.lb().text } );
3810
+ case 644:this.s=654;{ $.expr = this.taggedIfQuery( $.expr ); }continue
3811
+ case 645:switch(this.l()){
3812
+ case'Id':if(this.ciA(646,'paramref')){ $.expr = { path: [ this.identAst() ], location: this.startLocation(), scope: 'param' }; }continue
3813
+ case'Number':if(this.c(654)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'positional', code: ':' + this.lb().text } );
3812
3814
  $.expr = this.attachLocation({ param: this.unsignedIntegerLiteral(), scope: 'param' }); }continue
3813
3815
  default:this.e();continue
3814
3816
  }
3815
- case 644:switch(this.l()){
3816
- case'.':if(this.valuePath($,652,637)){ $.expr = this.valuePathAst( $.expr ); }continue
3817
- default:this.s=652;{ this.attachLocation( $.expr ); }continue
3817
+ case 646:switch(this.l()){
3818
+ case'.':if(this.valuePath($,654,639)){ $.expr = this.valuePathAst( $.expr ); }continue
3819
+ default:this.s=654;{ this.attachLocation( $.expr ); }continue
3818
3820
  }
3819
- case 645:switch(this.lk()){
3820
- case'over':if(this.ck(646)){ this.pushXprToken( $.expr.suffix = [] ); }continue
3821
- default:this.s=647;continue
3821
+ case 647:switch(this.lk()){
3822
+ case'over':if(this.ck(648)){ this.pushXprToken( $.expr.suffix = [] ); }continue
3823
+ default:this.s=649;continue
3822
3824
  }
3823
- case 646:this.overClause(e={outer:$.expr.suffix},647);continue
3824
- case 647:this.s=652;{ this.attachLocation( $.expr ); }continue
3825
- case 648:switch(this.l()){
3826
- case'(':if(this.c(649))open=this.lb();continue
3827
- case'Id':if(this.valuePath(_={},652)){e=_.expr; e = this.valuePathAst( e ); e.$expected = 'exists';
3825
+ case 648:this.overClause(e={outer:$.expr.suffix},649);continue
3826
+ case 649:this.s=654;{ this.attachLocation( $.expr ); }continue
3827
+ case 650:switch(this.l()){
3828
+ case'(':if(this.c(651))open=this.lb();continue
3829
+ case'Id':if(this.valuePath(_={},654)){e=_.expr; e = this.valuePathAst( e ); e.$expected = 'exists';
3828
3830
  $.expr.args.push( e ); this.attachLocation( $.expr ); }continue
3829
- case'?':if(this.c(652)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'dynamic', code: '?' } );
3831
+ case'?':if(this.c(654)){ this.csnParseOnly( 'syntax-unsupported-param', -1, { '#': 'dynamic', code: '?' } );
3830
3832
  $.expr.args.push( { param: this.valueWithLocation(), scope: 'param' } ); this.attachLocation( $.expr ); }continue
3831
3833
  default:this.e();continue
3832
3834
  }
3833
- case 649:if(this.queryExpression(_={},650))e=_.expr;continue
3834
- case 650:if(this.m(652,')')){ $.expr.args.push( this.taggedIfQuery( this.surroundByParens( e, open ) ) );
3835
+ case 651:if(this.queryExpression(_={},652))e=_.expr;continue
3836
+ case 652:if(this.m(654,')')){ $.expr.args.push( this.taggedIfQuery( this.surroundByParens( e, open ) ) );
3835
3837
  this.attachLocation( $.expr ); }continue
3836
- case 651:if(this.expression(_={},652)){e=_.expr; $.expr = this.signedExpression( $.expr, e ); }continue
3837
- case 652:switch(this.lk()){
3838
- case'*':case'/':if(this.gc(0,'precLeft_',24)&&this.c(656)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3839
- case'+':case'-':if(this.gc(0,'precLeft_',22)&&this.c(656)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3840
- case'||':if(this.gc(0,'precLeft_',20)&&this.c(656)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3841
- case'and':if(this.gc(0,'precLeft_',4)&&this.ck(656)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3842
- case'or':if(this.gc(0,'precLeft_',2)&&this.ck(656)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3843
- case'?':if(this.gc(0,'precLeft_',0)&&this.c(653)){ $.expr = this.applyOpToken( $.expr, '?:' ); }continue
3844
- case'<':case'=':case'>':case'!=':case'<=':case'<>':case'>=':if(this.gc(0,'precNone_',10)&&this.c(655)){ $.expr = this.applyOpToken( $.expr ); }continue
3845
- case'is':if(this.gc(0,'precNone_',10)&&this.ck(657)){ $.expr = this.applyOpToken( $.expr ); }continue
3846
- case'not':if(this.gc(0,'isNegatedRelation','10')&&this.ck(659)){ $.expr = this.applyOpToken( $.expr ); }continue
3847
- case'in':case'like':case'between':if(this.gc(0,'precNone_',10)&&this.g(659)){ $.expr = { op: { val: 'ixpr', location: this.la().location }, args: [ $.expr ] }; }continue
3838
+ case 653:if(this.expression(_={},654)){e=_.expr; $.expr = this.signedExpression( $.expr, e ); }continue
3839
+ case 654:switch(this.lk()){
3840
+ case'*':case'/':if(this.gc(0,'precLeft_',24)&&this.c(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3841
+ case'+':case'-':if(this.gc(0,'precLeft_',22)&&this.c(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3842
+ case'||':if(this.gc(0,'precLeft_',20)&&this.c(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3843
+ case'and':if(this.gc(0,'precLeft_',4)&&this.ck(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3844
+ case'or':if(this.gc(0,'precLeft_',2)&&this.ck(658)){ $.expr = this.applyOpToken( $.expr, 'nary' ); }continue
3845
+ case'?':if(this.gc(0,'precLeft_',0)&&this.c(655)){ $.expr = this.applyOpToken( $.expr, '?:' ); }continue
3846
+ case'<':case'=':case'>':case'!=':case'<=':case'<>':case'>=':if(this.gc(0,'precNone_',10)&&this.c(657)){ $.expr = this.applyOpToken( $.expr ); }continue
3847
+ case'is':if(this.gc(0,'precNone_',10)&&this.ck(659)){ $.expr = this.applyOpToken( $.expr ); }continue
3848
+ case'not':if(this.gc(0,'isNegatedRelation','10')&&this.ck(661)){ $.expr = this.applyOpToken( $.expr ); }continue
3849
+ 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
3848
3850
  default:this.gr([]);continue
3849
3851
  }
3850
- case 653:if(this.expression(_={},654)){e=_.expr; $.expr.args.push( e ); }continue
3851
- case 654:if(this.m(656,':')){ this.pushXprToken( $.expr ); }continue
3852
- case 655:switch(this.lk()){
3853
- case'all':case'any':case'some':if(this.ck(656)){ this.pushXprToken( $.expr ); }continue
3854
- default:this.s=656;continue
3855
- }
3856
- case 656:if(this.expression(_={},667)){e=_.expr; $.expr.args.push( e ); }continue
3852
+ case 655:if(this.expression(_={},656)){e=_.expr; $.expr.args.push( e ); }continue
3853
+ case 656:if(this.m(658,':')){ this.pushXprToken( $.expr ); }continue
3857
3854
  case 657:switch(this.lk()){
3858
- case'not':if(this.ck(658)){ this.pushXprToken( $.expr ); }continue
3855
+ case'all':case'any':case'some':if(this.ck(658)){ this.pushXprToken( $.expr ); }continue
3859
3856
  default:this.s=658;continue
3860
3857
  }
3861
- case 658:if(this.mk(667,'null')){ this.pushXprToken( $.expr ); }continue
3858
+ case 658:if(this.expression(_={},669)){e=_.expr; $.expr.args.push( e ); }continue
3862
3859
  case 659:switch(this.lk()){
3863
- case'between':if(this.ck(660)){ this.pushXprToken( $.expr ); }continue
3864
- case'in':if(this.ck(663)){ this.pushXprToken( $.expr ); }continue
3865
- case'like':if(this.ck(664)){ this.pushXprToken( $.expr ); }continue
3860
+ case'not':if(this.ck(660)){ this.pushXprToken( $.expr ); }continue
3861
+ default:this.s=660;continue
3862
+ }
3863
+ case 660:if(this.mk(669,'null')){ this.pushXprToken( $.expr ); }continue
3864
+ case 661:switch(this.lk()){
3865
+ case'between':if(this.ck(662)){ this.pushXprToken( $.expr ); }continue
3866
+ case'in':if(this.ck(665)){ this.pushXprToken( $.expr ); }continue
3867
+ case'like':if(this.ck(666)){ this.pushXprToken( $.expr ); }continue
3866
3868
  default:this.e();continue
3867
3869
  }
3868
- case 660:if(this.expression(_={},661)){e=_.expr; $.expr.args?.push( e ); }continue
3869
- case 661:if(this.mk(662,'and')){ this.pushXprToken( $.expr ); }continue
3870
- case 662:if(this.expression(_={},667)){e=_.expr; $.expr.args?.push( e ); }continue
3871
- case 663:if(this.expression(_={},667)){e=_.expr; $.expr.args?.push( this.secureParens( e ) ); }continue
3872
- case 664:if(this.expression(_={},665)){e=_.expr; $.expr.args?.push( e ); }continue
3873
- case 665:switch(this.lk()){
3874
- case'escape':if(this.ck(666)){ this.pushXprToken( $.expr ); }continue
3875
- default:this.s=667;continue
3876
- }
3870
+ case 662:if(this.expression(_={},663)){e=_.expr; $.expr.args?.push( e ); }continue
3871
+ case 663:if(this.mk(664,'and')){ this.pushXprToken( $.expr ); }continue
3872
+ case 664:if(this.expression(_={},669)){e=_.expr; $.expr.args?.push( e ); }continue
3873
+ case 665:if(this.expression(_={},669)){e=_.expr; $.expr.args?.push( this.secureParens( e ) ); }continue
3877
3874
  case 666:if(this.expression(_={},667)){e=_.expr; $.expr.args?.push( e ); }continue
3878
- case 667:this.s=652;{ this.attachLocation( $.expr ); }continue
3875
+ case 667:switch(this.lk()){
3876
+ case'escape':if(this.ck(668)){ this.pushXprToken( $.expr ); }continue
3877
+ default:this.s=669;continue
3878
+ }
3879
+ case 668:if(this.expression(_={},669)){e=_.expr; $.expr.args?.push( e ); }continue
3880
+ case 669:this.s=654;{ this.attachLocation( $.expr ); }continue
3879
3881
  default:return this.exit_()
3880
3882
  }
3881
3883
  }
3882
3884
  expressionOrQueryParens($,$next){
3883
3885
  $.expr??=undefined
3884
- this.rule_(669,$next)
3886
+ this.rule_(671,$next)
3885
3887
  for(;;)switch(this.s){
3886
- case 669:if(this.m(670,'(')){this.queryOnLeft()}continue;
3887
- case 670:switch(this.lk()){
3888
- case'(':this.expressionOrQueryParens($,671);continue
3889
- 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($,673)){this.queryOnLeft(0,'expr')}continue;
3890
- case'select':this.queryExpression($,674);continue
3888
+ case 671:if(this.m(672,'(')){this.queryOnLeft()}continue;
3889
+ case 672:switch(this.lk()){
3890
+ case'(':this.expressionOrQueryParens($,673);continue
3891
+ 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($,675)){this.queryOnLeft(0,'expr')}continue;
3892
+ case'select':this.queryExpression($,676);continue
3891
3893
  default:this.ei();continue
3892
3894
  }
3893
- case 671:switch(this.lk()){
3894
- 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($,672,642)){this.queryOnLeft(0,'expr')}continue;
3895
- case',':if(this.continueExpressionslist($,674)){this.queryOnLeft(0,'expr')}continue;
3896
- case'limit':case'minus':case'order':case'union':case'except':case'intersect':this.gc(674,'queryOnLeft')&&this.queryExpression($,674,454);continue
3897
- default:this.s=674;continue
3895
+ case 673:switch(this.lk()){
3896
+ 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($,674,644)){this.queryOnLeft(0,'expr')}continue;
3897
+ case',':if(this.continueExpressionslist($,676)){this.queryOnLeft(0,'expr')}continue;
3898
+ case'limit':case'minus':case'order':case'union':case'except':case'intersect':this.gc(676,'queryOnLeft')&&this.queryExpression($,676,454);continue
3899
+ default:this.s=676;continue
3898
3900
  }
3899
- case 672:switch(this.l()){
3900
- case',':this.continueExpressionslist($,674);continue
3901
- default:this.s=674;continue
3901
+ case 674:switch(this.l()){
3902
+ case',':this.continueExpressionslist($,676);continue
3903
+ default:this.s=676;continue
3902
3904
  }
3903
- case 673:switch(this.l()){
3904
- case',':this.continueExpressionslist($,674);continue
3905
- default:this.s=674;continue
3905
+ case 675:switch(this.l()){
3906
+ case',':this.continueExpressionslist($,676);continue
3907
+ default:this.s=676;continue
3906
3908
  }
3907
- case 674:if(this.m(0,')')){ this.surroundByParens( $.expr ); }continue
3909
+ case 676:if(this.m(0,')')){ this.surroundByParens( $.expr ); }continue
3908
3910
  default:return this.exit_()
3909
3911
  }
3910
3912
  }
3911
3913
  continueExpressionslist($,$next){
3912
3914
  let e;let _
3913
- this.rule_(676,$next)
3915
+ this.rule_(678,$next)
3914
3916
  for(;;)switch(this.s){
3915
- case 676:if(this.m(677,',')){ $.expr = { op: this.valueWithLocation( 'list' ), args: [ $.expr ], location: { ... $.expr.$parens?.at( -1 ) ?? $.expr.location } }; }continue
3916
- case 677:switch(this.lk()){
3917
- 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=678;continue
3917
+ case 678:if(this.m(679,',')){ $.expr = { op: this.valueWithLocation( 'list' ), args: [ $.expr ], location: { ... $.expr.$parens?.at( -1 ) ?? $.expr.location } }; }continue
3918
+ case 679:switch(this.lk()){
3919
+ 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=680;continue
3918
3920
  default:this.ei();continue
3919
3921
  }
3920
- case 678:switch(this.lk()){
3921
- 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(_={},679)){e=_.expr; $.expr.args.push( e ); }continue
3922
+ case 680:switch(this.lk()){
3923
+ 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(_={},681)){e=_.expr; $.expr.args.push( e ); }continue
3922
3924
  default:this.gi(0,[')']);continue
3923
3925
  }
3924
- case 679:switch(this.l()){
3925
- case',':this.c(678);continue
3926
+ case 681:switch(this.l()){
3927
+ case',':this.c(680);continue
3926
3928
  default:this.gr([')']);continue
3927
3929
  }
3928
3930
  case 0:{ this.attachLocation( $.expr ); }
@@ -3934,10 +3936,10 @@ return this.exit_()
3934
3936
  newAndValuePath($,$next){
3935
3937
  $.expr??=undefined
3936
3938
  let e;let _
3937
- this.rule_(681,$next)
3939
+ this.rule_(683,$next)
3938
3940
  for(;;)switch(this.s){
3939
- case 681:if(this.mk(682,'new')){ $.expr = this.applyOpToken(); }continue
3940
- case 682:if(this.valuePath(_={},0)){e=_.expr; e = this.valuePathAst( e );
3941
+ case 683:if(this.mk(684,'new')){ $.expr = this.applyOpToken(); }continue
3942
+ case 684:if(this.valuePath(_={},0)){e=_.expr; e = this.valuePathAst( e );
3941
3943
  if (e.op?.val !== 'ixpr') $.expr.args.push( e ); else $.expr.args.push( ...e.args ); }continue
3942
3944
  default:
3943
3945
  this.attachLocation( $.expr )
@@ -3947,31 +3949,31 @@ return this.exit_()
3947
3949
  caseExpression($,$next){
3948
3950
  $.expr??=undefined
3949
3951
  let e;let _
3950
- this.rule_(684,$next)
3952
+ this.rule_(686,$next)
3951
3953
  for(;;)switch(this.s){
3952
- case 684:if(this.mk(685,'case')){ $.expr.op = { val: 'ixpr', location: this.lb().location }; $.expr.args = []; this.pushXprToken( $.expr ); }continue
3953
- case 685:switch(this.lk()){
3954
- 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(_={},686)){e=_.expr; $.expr.args.push( e ); }continue
3955
- case'when':this.gP(686);continue
3956
- default:this.gi(686);continue
3957
- }
3958
- case 686:switch(this.lk()){
3959
- case'when':this.s=687;continue
3954
+ case 686:if(this.mk(687,'case')){ $.expr.op = { val: 'ixpr', location: this.lb().location }; $.expr.args = []; this.pushXprToken( $.expr ); }continue
3955
+ case 687:switch(this.lk()){
3956
+ 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(_={},688)){e=_.expr; $.expr.args.push( e ); }continue
3957
+ case'when':this.gP(688);continue
3958
+ default:this.gi(688);continue
3959
+ }
3960
+ case 688:switch(this.lk()){
3961
+ case'when':this.s=689;continue
3960
3962
  default:this.e();continue
3961
3963
  }
3962
- case 687:switch(this.lk()){
3963
- case'when':if(this.ck(688)){ this.pushXprToken( $.expr ); }continue
3964
- default:this.s=691;continue
3965
- }
3966
- case 688:if(this.expression(_={},689)){e=_.expr; $.expr.args.push( e ); }continue
3967
- case 689:if(this.mk(690,'then')){ this.pushXprToken( $.expr ); }continue
3968
- case 690:if(this.expression(_={},687)){e=_.expr; $.expr.args.push( e ); }continue
3969
- case 691:switch(this.lk()){
3970
- case'else':if(this.ck(692)){ this.pushXprToken( $.expr ); }continue
3964
+ case 689:switch(this.lk()){
3965
+ case'when':if(this.ck(690)){ this.pushXprToken( $.expr ); }continue
3971
3966
  default:this.s=693;continue
3972
3967
  }
3973
- case 692:if(this.expression(_={},693)){e=_.expr; $.expr.args.push( e ); }continue
3974
- case 693:if(this.mk(0,'end')){ this.pushXprToken( $.expr ); }continue
3968
+ case 690:if(this.expression(_={},691)){e=_.expr; $.expr.args.push( e ); }continue
3969
+ case 691:if(this.mk(692,'then')){ this.pushXprToken( $.expr ); }continue
3970
+ case 692:if(this.expression(_={},689)){e=_.expr; $.expr.args.push( e ); }continue
3971
+ case 693:switch(this.lk()){
3972
+ case'else':if(this.ck(694)){ this.pushXprToken( $.expr ); }continue
3973
+ default:this.s=695;continue
3974
+ }
3975
+ case 694:if(this.expression(_={},695)){e=_.expr; $.expr.args.push( e ); }continue
3976
+ case 695:if(this.mk(0,'end')){ this.pushXprToken( $.expr ); }continue
3975
3977
  default:
3976
3978
  this.attachLocation( $.expr )
3977
3979
  return this.exit_()
@@ -3980,14 +3982,14 @@ return this.exit_()
3980
3982
  castFunction($,$next){
3981
3983
  $.expr??=undefined
3982
3984
  let arg;let _
3983
- this.rule_(695,$next)
3985
+ this.rule_(697,$next)
3984
3986
  for(;;)switch(this.s){
3985
- case 695:if(this.mk(696,'cast')){ $.expr.op = this.valueWithLocation(); }continue
3986
- case 696:if(this.m(697,'(')){ $.expr.args = this.createArray(); }continue
3987
- case 697:if(this.expression(_={},698)){arg=_.expr; $.expr.args?.push( arg ); }continue
3988
- case 698:this.mk(699,'as');continue
3989
- case 699:this.typeRefOptArgs({art:$.expr},700);continue
3990
- case 700:if(this.m(0,')')){ this.finalizeDictOrArray( $.expr.args ); }continue
3987
+ case 697:if(this.mk(698,'cast')){ $.expr.op = this.valueWithLocation(); }continue
3988
+ case 698:if(this.m(699,'(')){ $.expr.args = this.createArray(); }continue
3989
+ case 699:if(this.expression(_={},700)){arg=_.expr; $.expr.args?.push( arg ); }continue
3990
+ case 700:this.mk(701,'as');continue
3991
+ case 701:this.typeRefOptArgs({art:$.expr},702);continue
3992
+ case 702:if(this.m(0,')')){ this.finalizeDictOrArray( $.expr.args ); }continue
3991
3993
  default:
3992
3994
  this.attachLocation( $.expr )
3993
3995
  return this.exit_()
@@ -3995,66 +3997,66 @@ return this.exit_()
3995
3997
  }
3996
3998
  argumentsAndFilter($,$next){
3997
3999
  let open;let expr;let id;let _
3998
- this.rule_(702,$next)
4000
+ this.rule_(704,$next)
3999
4001
  for(;;)switch(this.s){
4000
- case 702:switch(this.l()){
4001
- case'(':if(this.c(703)){open=this.lb();this.prepareSpecialFunction(); $.pathStep.args = this.createArray(); }continue
4002
- default:this.s=722;continue
4003
- }
4004
- case 703:switch(this.l()){
4005
- case'Id':if(this.gc(704,'isNamedArg')&&this.ciA(710,'paramname'))id=this.lb();continue
4006
- default:this.s=704;continue
4007
- }
4008
4002
  case 704:switch(this.l()){
4009
- case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'Id_all':case'Number':case'String':case'QuotedLiteral':if(this.funcExpression(_={},705)){expr=_.expr; $.pathStep.args.push( expr ); }continue
4010
- default:this.s=721;continue
4003
+ case'(':if(this.c(705)){open=this.lb();this.prepareSpecialFunction(); $.pathStep.args = this.createArray(); }continue
4004
+ default:this.s=724;continue
4011
4005
  }
4012
4006
  case 705:switch(this.l()){
4013
- case',':if(this.c(706)){this.nextFunctionArgument()}continue;
4014
- default:this.s=707;continue
4007
+ case'Id':if(this.gc(706,'isNamedArg')&&this.ciA(712,'paramname'))id=this.lb();continue
4008
+ default:this.s=706;continue
4015
4009
  }
4016
- case 706:switch(this.lk()){
4017
- case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Id_all':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.funcExpression(_={},705)){expr=_.expr; $.pathStep.args.push( expr ); }continue
4018
- case')':case'order':this.gP(707);continue
4010
+ case 706:switch(this.l()){
4011
+ case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'Id_all':case'Number':case'String':case'QuotedLiteral':if(this.funcExpression(_={},707)){expr=_.expr; $.pathStep.args.push( expr ); }continue
4012
+ default:this.s=723;continue
4013
+ }
4014
+ case 707:switch(this.l()){
4015
+ case',':if(this.c(708)){this.nextFunctionArgument()}continue;
4016
+ default:this.s=709;continue
4017
+ }
4018
+ case 708:switch(this.lk()){
4019
+ case'Id':case'#':case'(':case'*':case'+':case'-':case':':case'?':case'not':case'case':case'cast':case'null':case'true':case'false':case'Id_all':case'Number':case'String':case'exists':case'QuotedLiteral':if(this.funcExpression(_={},707)){expr=_.expr; $.pathStep.args.push( expr ); }continue
4020
+ case')':case'order':this.gP(709);continue
4019
4021
  default:this.ei();continue
4020
4022
  }
4021
- case 707:switch(this.lk()){
4022
- case'order':if(this.ck(708)){ expr = $.pathStep.args[$.pathStep.args.length - 1] = this.applyOpToken( expr ); }continue
4023
- default:this.s=721;continue
4023
+ case 709:switch(this.lk()){
4024
+ case'order':if(this.ck(710)){ expr = $.pathStep.args[$.pathStep.args.length - 1] = this.applyOpToken( expr ); }continue
4025
+ default:this.s=723;continue
4024
4026
  }
4025
- case 708:if(this.mk(709,'by')){ this.pushXprToken( expr ); }continue
4026
- case 709:if(this.orderByClauseAsXpr({outer:expr.args},721)){ this.attachLocation( expr ); }continue
4027
- case 710:switch(this.l()){
4028
- case':':if(this.c(711)){ $.pathStep.args = this.createDict( open ); $.pathStep.$syntax = ':'; }continue
4029
- case'=>':if(this.c(716)){ $.pathStep.args = this.createDict(); }continue
4027
+ case 710:if(this.mk(711,'by')){ this.pushXprToken( expr ); }continue
4028
+ case 711:if(this.orderByClauseAsXpr({outer:expr.args},723)){ this.attachLocation( expr ); }continue
4029
+ case 712:switch(this.l()){
4030
+ case':':if(this.c(713)){ $.pathStep.args = this.createDict( open ); $.pathStep.$syntax = ':'; }continue
4031
+ case'=>':if(this.c(718)){ $.pathStep.args = this.createDict(); }continue
4030
4032
  default:this.e();continue
4031
4033
  }
4032
- case 711:if(this.expression(_={},712)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4033
- case 712:switch(this.l()){
4034
- case',':this.c(713);continue
4035
- default:this.s=721;continue
4034
+ case 713:if(this.expression(_={},714)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4035
+ case 714:switch(this.l()){
4036
+ case',':this.c(715);continue
4037
+ default:this.s=723;continue
4036
4038
  }
4037
- case 713:switch(this.l()){
4038
- case'Id':if(this.ciA(714,'paramname'))id=this.lb();continue
4039
- case')':this.s=721;continue
4039
+ case 715:switch(this.l()){
4040
+ case'Id':if(this.ciA(716,'paramname'))id=this.lb();continue
4041
+ case')':this.s=723;continue
4040
4042
  default:this.e();continue
4041
4043
  }
4042
- case 714:this.m(715,':');continue
4043
- case 715:if(this.expression(_={},712)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4044
- case 716:if(this.expression(_={},717)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4045
- case 717:switch(this.l()){
4046
- case',':this.c(718);continue
4047
- default:this.s=721;continue
4044
+ case 716:this.m(717,':');continue
4045
+ case 717:if(this.expression(_={},714)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4046
+ case 718:if(this.expression(_={},719)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4047
+ case 719:switch(this.l()){
4048
+ case',':this.c(720);continue
4049
+ default:this.s=723;continue
4048
4050
  }
4049
- case 718:switch(this.l()){
4050
- case'Id':if(this.ciA(719,'paramname'))id=this.lb();continue
4051
- case')':this.s=721;continue
4051
+ case 720:switch(this.l()){
4052
+ case'Id':if(this.ciA(721,'paramname'))id=this.lb();continue
4053
+ case')':this.s=723;continue
4052
4054
  default:this.e();continue
4053
4055
  }
4054
- case 719:this.m(720,'=>');continue
4055
- case 720:if(this.expression(_={},717)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4056
- case 721:this.m(722,')');continue
4057
- case 722:switch(this.l()){
4056
+ case 721:this.m(722,'=>');continue
4057
+ case 722:if(this.expression(_={},719)){expr=_.expr; this.addNamedArg( $.pathStep, id, expr ); }continue
4058
+ case 723:if(this.m(724,')')){ this.finalizeDictOrArray( $.pathStep.args ); }continue
4059
+ case 724:switch(this.l()){
4058
4060
  case'[':this.cardinalityAndFilter($,0);continue
4059
4061
  default:this.gr(['*','+','-','.','/','<','=','>','?','!=','<=','<>','>=','in','is','or','||','and','not','like','between']);continue
4060
4062
  }
@@ -4065,22 +4067,22 @@ funcExpression($,$next){
4065
4067
  $.expr??=undefined
4066
4068
  let args
4067
4069
  let tok;let e;let _
4068
- this.rule_(724,$next)
4070
+ this.rule_(726,$next)
4069
4071
  for(;;)switch(this.s){
4070
- case 724:switch(this.lGenericIntroOrExpr()){
4071
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},726))$.expr=_.expr;continue
4072
- case'GenericExpr':if(this.ckA(726)){tok=this.lb(); $.expr = { val: tok.keyword ?? tok.type, location: tok.location, literal: 'token' }; }continue
4073
- case'GenericIntro':if(this.ckA(725)){ $.expr = this.applyOpToken(); args = $.expr.args; }continue
4072
+ case 726:switch(this.lGenericIntroOrExpr()){
4073
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},728))$.expr=_.expr;continue
4074
+ case'GenericExpr':if(this.ckA(728)){tok=this.lb(); $.expr = { val: tok.keyword ?? tok.type, location: tok.location, literal: 'token' }; }continue
4075
+ case'GenericIntro':if(this.ckA(727)){ $.expr = this.applyOpToken(); args = $.expr.args; }continue
4074
4076
  default:this.e();continue
4075
4077
  }
4076
- case 725:if(this.expression(_={},726)){e=_.expr; $.expr.args.push( e ); }continue
4077
- case 726:switch(this.lGenericSeparator()){
4078
- case'GenericSeparator':if(this.ckA(727)){ if (args) this.pushXprToken( args ); else { $.expr= this.applyOpToken( $.expr ); args = $.expr.args; } }continue
4078
+ case 727:if(this.expression(_={},728)){e=_.expr; $.expr.args.push( e ); }continue
4079
+ case 728:switch(this.lGenericSeparator()){
4080
+ case'GenericSeparator':if(this.ckA(729)){ if (args) this.pushXprToken( args ); else { $.expr= this.applyOpToken( $.expr ); args = $.expr.args; } }continue
4079
4081
  default:this.gr([')',',','order']);continue
4080
4082
  }
4081
- case 727:switch(this.lGenericExpr()){
4082
- case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},726)){e=_.expr; args.push( e ); }continue
4083
- case'GenericExpr':if(this.ckA(726)){ this.pushXprToken( args ); }continue
4083
+ case 729:switch(this.lGenericExpr()){
4084
+ case'Id':case'#':case'(':case'+':case'-':case':':case'?':case'Number':case'String':case'QuotedLiteral':if(this.expression(_={},728)){e=_.expr; args.push( e ); }continue
4085
+ case'GenericExpr':if(this.ckA(728)){ this.pushXprToken( args ); }continue
4084
4086
  default:this.e();continue
4085
4087
  }
4086
4088
  default:
@@ -4090,27 +4092,27 @@ return this.exit_()
4090
4092
  }
4091
4093
  overClause($,$next){
4092
4094
  let over=[]
4093
- this.rule_(729,$next)
4095
+ this.rule_(731,$next)
4094
4096
  for(;;)switch(this.s){
4095
- case 729:this.m(730,'(');continue
4096
- case 730:switch(this.lk()){
4097
- case'partition':if(this.ck(731)){ this.pushXprToken( over ); }continue
4098
- default:this.s=733;continue
4099
- }
4100
- case 731:if(this.mk(732,'by')){ this.pushXprToken( over ); }continue
4101
- case 732:this.expressionsAsXpr({outer:over},733);continue
4102
- case 733:switch(this.lk()){
4103
- case'order':if(this.ck(734)){ this.pushXprToken( over ); }continue
4104
- default:this.s=736;continue
4105
- }
4106
- case 734:if(this.mk(735,'by')){ this.pushXprToken( over ); }continue
4107
- case 735:this.orderByClauseAsXpr({outer:over},736);continue
4108
- case 736:switch(this.lk()){
4109
- case'rows':if(this.ck(737)){ this.pushXprToken( over ); }continue
4097
+ case 731:this.m(732,'(');continue
4098
+ case 732:switch(this.lk()){
4099
+ case'partition':if(this.ck(733)){ this.pushXprToken( over ); }continue
4100
+ default:this.s=735;continue
4101
+ }
4102
+ case 733:if(this.mk(734,'by')){ this.pushXprToken( over ); }continue
4103
+ case 734:this.expressionsAsXpr({outer:over},735);continue
4104
+ case 735:switch(this.lk()){
4105
+ case'order':if(this.ck(736)){ this.pushXprToken( over ); }continue
4110
4106
  default:this.s=738;continue
4111
4107
  }
4112
- case 737:this.windowFrameClause({outer:over},738);continue
4113
- case 738:this.m(0,')');continue
4108
+ case 736:if(this.mk(737,'by')){ this.pushXprToken( over ); }continue
4109
+ case 737:this.orderByClauseAsXpr({outer:over},738);continue
4110
+ case 738:switch(this.lk()){
4111
+ case'rows':if(this.ck(739)){ this.pushXprToken( over ); }continue
4112
+ default:this.s=740;continue
4113
+ }
4114
+ case 739:this.windowFrameClause({outer:over},740);continue
4115
+ case 740:this.m(0,')');continue
4114
4116
  default:
4115
4117
  $.outer.push( this.surroundByParens( this.ixprAst( over ) ) )
4116
4118
  return this.exit_()
@@ -4119,14 +4121,14 @@ return this.exit_()
4119
4121
  expressionsAsXpr($,$next){
4120
4122
  let args=[]
4121
4123
  let expr;let _
4122
- this.rule_(740,$next)
4124
+ this.rule_(742,$next)
4123
4125
  for(;;)switch(this.s){
4124
- case 740:if(this.expression(_={},741)){expr=_.expr; args.push( expr ); }continue
4125
- case 741:switch(this.l()){
4126
- case',':if(this.c(742)){ this.pushXprToken( args ); }continue
4126
+ case 742:if(this.expression(_={},743)){expr=_.expr; args.push( expr ); }continue
4127
+ case 743:switch(this.l()){
4128
+ case',':if(this.c(744)){ this.pushXprToken( args ); }continue
4127
4129
  default:this.gr([')','rows','order']);continue
4128
4130
  }
4129
- case 742:if(this.expression(_={},741)){expr=_.expr; args.push( expr ); }continue
4131
+ case 744:if(this.expression(_={},743)){expr=_.expr; args.push( expr ); }continue
4130
4132
  default:
4131
4133
  $.outer.push( this.ixprAst( args ) )
4132
4134
  return this.exit_()
@@ -4134,14 +4136,14 @@ return this.exit_()
4134
4136
  }
4135
4137
  orderByClauseAsXpr($,$next){
4136
4138
  let args=[]
4137
- this.rule_(744,$next)
4139
+ this.rule_(746,$next)
4138
4140
  for(;;)switch(this.s){
4139
- case 744:this.orderBySpecAsXpr({args},745);continue
4140
- case 745:switch(this.l()){
4141
- case',':if(this.c(746)){ this.pushXprToken( args ); }continue
4141
+ case 746:this.orderBySpecAsXpr({args},747);continue
4142
+ case 747:switch(this.l()){
4143
+ case',':if(this.c(748)){ this.pushXprToken( args ); }continue
4142
4144
  default:this.gr([')']);continue
4143
4145
  }
4144
- case 746:this.orderBySpecAsXpr({args},745);continue
4146
+ case 748:this.orderBySpecAsXpr({args},747);continue
4145
4147
  default:
4146
4148
  $.outer.push( this.ixprAst( args ) )
4147
4149
  return this.exit_()
@@ -4149,18 +4151,18 @@ return this.exit_()
4149
4151
  }
4150
4152
  orderBySpecAsXpr($,$next){
4151
4153
  let expr;let _
4152
- this.rule_(748,$next)
4154
+ this.rule_(750,$next)
4153
4155
  for(;;)switch(this.s){
4154
- case 748:if(this.expression(_={},749)){expr=_.expr; $.args.push( expr ); }continue
4155
- case 749:switch(this.lk()){
4156
- case'asc':case'desc':if(this.ck(750)){ this.pushXprToken( $.args ); }continue
4157
- default:this.s=750;continue
4156
+ case 750:if(this.expression(_={},751)){expr=_.expr; $.args.push( expr ); }continue
4157
+ case 751:switch(this.lk()){
4158
+ case'asc':case'desc':if(this.ck(752)){ this.pushXprToken( $.args ); }continue
4159
+ default:this.s=752;continue
4158
4160
  }
4159
- case 750:switch(this.lk()){
4160
- case'nulls':if(this.ck(751)){ this.pushXprToken( $.args ); }continue
4161
+ case 752:switch(this.lk()){
4162
+ case'nulls':if(this.ck(753)){ this.pushXprToken( $.args ); }continue
4161
4163
  default:this.gr([')',',']);continue
4162
4164
  }
4163
- case 751:switch(this.lk()){
4165
+ case 753:switch(this.lk()){
4164
4166
  case'last':case'first':if(this.ck(0)){ this.pushXprToken( $.args ); }continue
4165
4167
  default:this.e();continue
4166
4168
  }
@@ -4169,50 +4171,50 @@ default:return this.exit_()
4169
4171
  }
4170
4172
  windowFrameClause($,$next){
4171
4173
  let args=[]
4172
- this.rule_(753,$next)
4174
+ this.rule_(755,$next)
4173
4175
  for(;;)switch(this.s){
4174
- case 753:switch(this.lk()){
4175
- case'unbounded':if(this.ck(754)){ this.pushXprToken( args ); }continue
4176
- case'Number':if(this.c(754)){ args.push( this.unsignedIntegerLiteral() ); }continue
4177
- case'current':if(this.ck(755)){ this.pushXprToken( args ); }continue
4178
- case'between':if(this.ck(756)){ this.pushXprToken( args ); }continue
4176
+ case 755:switch(this.lk()){
4177
+ case'unbounded':if(this.ck(756)){ this.pushXprToken( args ); }continue
4178
+ case'Number':if(this.c(756)){ args.push( this.unsignedIntegerLiteral() ); }continue
4179
+ case'current':if(this.ck(757)){ this.pushXprToken( args ); }continue
4180
+ case'between':if(this.ck(758)){ this.pushXprToken( args ); }continue
4179
4181
  default:this.e();continue
4180
4182
  }
4181
- case 754:if(this.mk(0,'preceding')){ this.pushXprToken( args ); }continue
4182
- case 755:if(this.mk(0,'row')){ this.pushXprToken( args ); }continue
4183
- case 756:this.windowFrameBoundSpec({args},757);continue
4184
- case 757:if(this.mk(758,'and')){ this.pushXprToken( args ); }continue
4185
- case 758:this.windowFrameBoundSpec({args},0);continue
4183
+ case 756:if(this.mk(0,'preceding')){ this.pushXprToken( args ); }continue
4184
+ case 757:if(this.mk(0,'row')){ this.pushXprToken( args ); }continue
4185
+ case 758:this.windowFrameBoundSpec({args},759);continue
4186
+ case 759:if(this.mk(760,'and')){ this.pushXprToken( args ); }continue
4187
+ case 760:this.windowFrameBoundSpec({args},0);continue
4186
4188
  default:
4187
4189
  $.outer.push( this.ixprAst( args ) )
4188
4190
  return this.exit_()
4189
4191
  }
4190
4192
  }
4191
4193
  windowFrameBoundSpec($,$next){
4192
- this.rule_(760,$next)
4194
+ this.rule_(762,$next)
4193
4195
  for(;;)switch(this.s){
4194
- case 760:switch(this.lk()){
4195
- case'unbounded':if(this.ck(761)){ this.pushXprToken( $.args ); }continue
4196
- case'Number':if(this.c(761)){ $.args.push( this.unsignedIntegerLiteral() ); }continue
4197
- case'current':if(this.ck(763)){ this.pushXprToken( $.args ); }continue
4196
+ case 762:switch(this.lk()){
4197
+ case'unbounded':if(this.ck(763)){ this.pushXprToken( $.args ); }continue
4198
+ case'Number':if(this.c(763)){ $.args.push( this.unsignedIntegerLiteral() ); }continue
4199
+ case'current':if(this.ck(765)){ this.pushXprToken( $.args ); }continue
4198
4200
  default:this.e();continue
4199
4201
  }
4200
- case 761:switch(this.lk()){
4201
- case'following':this.ck(762);continue
4202
- case'preceding':this.ck(762);continue
4202
+ case 763:switch(this.lk()){
4203
+ case'following':this.ck(764);continue
4204
+ case'preceding':this.ck(764);continue
4203
4205
  default:this.e();continue
4204
4206
  }
4205
- case 762:if(this.gr([])){ this.pushXprToken( $.args ); }continue
4206
- case 763:if(this.mk(0,'row')){ this.pushXprToken( $.args ); }continue
4207
+ case 764:if(this.gr([])){ this.pushXprToken( $.args ); }continue
4208
+ case 765:if(this.mk(0,'row')){ this.pushXprToken( $.args ); }continue
4207
4209
  default:return this.exit_()
4208
4210
  }
4209
4211
  }
4210
4212
  literalValue($,$next){
4211
4213
  $.expr??={}
4212
- this.rule_(765,$next)
4214
+ this.rule_(767,$next)
4213
4215
  for(;;)switch(this.s){
4214
- case 765:switch(this.lk()){
4215
- case'#':if(this.c(766)){ this.reportUnexpectedSpace(); }continue
4216
+ case 767:switch(this.lk()){
4217
+ case'#':if(this.c(768)){ this.reportUnexpectedSpace(); }continue
4216
4218
  case'null':if(this.ck(0)){ $.expr = { literal: 'null', val: null }; }continue
4217
4219
  case'true':case'false':if(this.ck(0)){ $.expr = { literal: 'boolean', val: this.lb().keyword === 'true' }; }continue
4218
4220
  case'Number':if(this.c(0)){ $.expr = this.numberLiteral(); }continue
@@ -4220,17 +4222,17 @@ case'String':if(this.c(0)){ $.expr = this.quotedLiteral(); }continue
4220
4222
  case'QuotedLiteral':if(this.c(0)){ $.expr = this.quotedLiteral(); }continue
4221
4223
  default:this.e();continue
4222
4224
  }
4223
- case 766:if(this.mi(0,'enumref')){ $.expr = { literal: 'enum', sym: this.identAst() } }continue
4225
+ case 768:if(this.mi(0,'enumref')){ $.expr = { literal: 'enum', sym: this.identAst() } }continue
4224
4226
  default:
4225
4227
  this.attachLocation( $.expr )
4226
4228
  return this.exit_()
4227
4229
  }
4228
4230
  }
4229
4231
  annoAssignStd($,$next){
4230
- this.rule_(768,$next)
4232
+ this.rule_(770,$next)
4231
4233
  for(;;)switch(this.s){
4232
- case 768:if(this.m(769,'@')){this.annoInSameLine(); this.reportUnexpectedSpace(); }continue
4233
- case 769:switch(this.l()){
4234
+ case 770:if(this.m(771,'@')){this.annoInSameLine(); this.reportUnexpectedSpace(); }continue
4235
+ case 771:switch(this.l()){
4234
4236
  case'(':this.annoAssignParen($,0);continue
4235
4237
  case'Id':this.annoAssignBase($,0);continue
4236
4238
  default:this.e();continue
@@ -4241,10 +4243,10 @@ return this.exit_()
4241
4243
  }
4242
4244
  }
4243
4245
  annoAssignCol($,$next){
4244
- this.rule_(771,$next)
4246
+ this.rule_(773,$next)
4245
4247
  for(;;)switch(this.s){
4246
- case 771:if(this.m(772,'@')){ this.reportUnexpectedSpace(); }continue
4247
- case 772:switch(this.l()){
4248
+ case 773:if(this.m(774,'@')){ this.reportUnexpectedSpace(); }continue
4249
+ case 774:switch(this.l()){
4248
4250
  case'(':this.annoAssignParen($,0);continue
4249
4251
  case'Id':this.annoAssignBase($,0);continue
4250
4252
  default:this.e();continue
@@ -4256,10 +4258,10 @@ return this.exit_()
4256
4258
  }
4257
4259
  annoAssignMid($,$next){
4258
4260
  let name;let _
4259
- this.rule_(774,$next)
4261
+ this.rule_(776,$next)
4260
4262
  for(;;)switch(this.s){
4261
- case 774:if(this.m(775,'@')){this.annoInSameLine(); this.reportUnexpectedSpace(); }continue
4262
- case 775:switch(this.l()){
4263
+ case 776:if(this.m(777,'@')){this.annoInSameLine(); this.reportUnexpectedSpace(); }continue
4264
+ case 777:switch(this.l()){
4263
4265
  case'(':this.annoAssignParen($,0);continue
4264
4266
  case'Id':if(this.annoNamePath(_={category:'anno'},0)){name=_.name; this.assignAnnotation( $.art, {}, name ); this.warnIfColonFollows( name ); }continue
4265
4267
  default:this.e();continue
@@ -4270,33 +4272,33 @@ return this.exit_()
4270
4272
  }
4271
4273
  }
4272
4274
  annoAssignParen($,$next){
4273
- this.rule_(777,$next)
4275
+ this.rule_(779,$next)
4274
4276
  for(;;)switch(this.s){
4275
- case 777:if(this.m(778,'(')){this.annoInSameLine()}continue;
4276
- case 778:switch(this.l()){
4277
- case'Id':this.annoAssignBase({art:$.art},779);continue
4278
- default:this.s=780;continue
4279
- }
4280
- case 779:switch(this.l()){
4281
- case',':this.c(778);continue
4282
- case')':this.s=780;continue
4277
+ case 779:if(this.m(780,'(')){this.annoInSameLine()}continue;
4278
+ case 780:switch(this.l()){
4279
+ case'Id':this.annoAssignBase({art:$.art},781);continue
4280
+ default:this.s=782;continue
4281
+ }
4282
+ case 781:switch(this.l()){
4283
+ case',':this.c(780);continue
4284
+ case')':this.s=782;continue
4283
4285
  default:this.e();continue
4284
4286
  }
4285
- case 780:this.m(0,')');continue
4287
+ case 782:this.m(0,')');continue
4286
4288
  default:return this.exit_()
4287
4289
  }
4288
4290
  }
4289
4291
  annoAssignBase($,$next){
4290
4292
  let value={}
4291
4293
  let name;let _
4292
- this.rule_(782,$next)
4294
+ this.rule_(784,$next)
4293
4295
  for(;;)switch(this.s){
4294
- case 782:if(this.annoNamePath(_={category:'anno'},783))name=_.name;continue
4295
- case 783:switch(this.l()){
4296
- case':':this.gc(0,'annoInSameLine')&&this.c(784);continue
4296
+ case 784:if(this.annoNamePath(_={category:'anno'},785))name=_.name;continue
4297
+ case 785:switch(this.l()){
4298
+ case':':this.gc(0,'annoInSameLine')&&this.c(786);continue
4297
4299
  default:this.gr([]);continue
4298
4300
  }
4299
- case 784:if(this.annoValue(_={},0))value=_.value;continue
4301
+ case 786:if(this.annoValue(_={},0))value=_.value;continue
4300
4302
  default:
4301
4303
  this.assignAnnotation( $.art, value, name || {} )
4302
4304
  return this.exit_()
@@ -4305,20 +4307,20 @@ return this.exit_()
4305
4307
  annoNamePath($,$next){
4306
4308
  $.name??=new XsnName()
4307
4309
  let at
4308
- this.rule_(786,$next)
4310
+ this.rule_(788,$next)
4309
4311
  for(;;)switch(this.s){
4310
- case 786:if(this.miA(787,$.category)){ $.name.path = [ this.identAst() ]; }continue
4311
- case 787:switch(this.l()){
4312
- case'.':this.c(788);continue
4313
- default:this.s=790;continue
4314
- }
4315
- case 788:switch(this.l()){
4316
- case'Id':if(this.ciA(787,$.category)){ $.name.path.push( this.identAst() ); }continue
4317
- case'@':if(this.c(789))at=this.lb();continue
4318
- default:this.e();continue
4312
+ case 788:if(this.miA(789,$.category)){ $.name.path = [ this.identAst() ]; }continue
4313
+ case 789:switch(this.l()){
4314
+ case'.':this.c(790);continue
4315
+ default:this.s=792;continue
4319
4316
  }
4320
- case 789:if(this.miA(787,$.category)){ $.name.path.push( this.identAstWithPrefix( at ) ); }continue
4321
4317
  case 790:switch(this.l()){
4318
+ case'Id':if(this.ciA(789,$.category)){ $.name.path.push( this.identAst() ); }continue
4319
+ case'@':if(this.c(791))at=this.lb();continue
4320
+ default:this.e();continue
4321
+ }
4322
+ case 791:if(this.miA(789,$.category)){ $.name.path.push( this.identAstWithPrefix( at ) ); }continue
4323
+ case 792:switch(this.l()){
4322
4324
  case'#':this.gc(0,'annoInSameLine')&&this.annoPathVariant({nameOrRef:$.name},0);continue
4323
4325
  default:this.gr([]);continue
4324
4326
  }
@@ -4329,25 +4331,25 @@ return this.exit_()
4329
4331
  }
4330
4332
  annoPath($,$next){
4331
4333
  let at
4332
- this.rule_(792,$next)
4334
+ this.rule_(794,$next)
4333
4335
  for(;;)switch(this.s){
4334
- case 792:switch(this.l()){
4335
- case'Id':if(this.ciA(794,$.category)){ $.nameOrRef.path = [ this.identAst() ]; }continue
4336
- case'@':if(this.c(793))at=this.lb();continue
4336
+ case 794:switch(this.l()){
4337
+ case'Id':if(this.ciA(796,$.category)){ $.nameOrRef.path = [ this.identAst() ]; }continue
4338
+ case'@':if(this.c(795))at=this.lb();continue
4337
4339
  default:this.e();continue
4338
4340
  }
4339
- case 793:if(this.miA(794,$.category)){ $.nameOrRef.path = [ this.identAstWithPrefix( at ) ]; }continue
4340
- case 794:switch(this.l()){
4341
- case'.':this.c(795);continue
4342
- default:this.s=797;continue
4341
+ case 795:if(this.miA(796,$.category)){ $.nameOrRef.path = [ this.identAstWithPrefix( at ) ]; }continue
4342
+ case 796:switch(this.l()){
4343
+ case'.':this.c(797);continue
4344
+ default:this.s=799;continue
4343
4345
  }
4344
- case 795:switch(this.l()){
4345
- case'Id':if(this.ciA(794,$.category)){ $.nameOrRef.path.push( this.identAst() ); }continue
4346
- case'@':if(this.c(796))at=this.lb();continue
4346
+ case 797:switch(this.l()){
4347
+ case'Id':if(this.ciA(796,$.category)){ $.nameOrRef.path.push( this.identAst() ); }continue
4348
+ case'@':if(this.c(798))at=this.lb();continue
4347
4349
  default:this.e();continue
4348
4350
  }
4349
- case 796:if(this.miA(794,$.category)){ $.nameOrRef.path.push( this.identAstWithPrefix( at ) ); }continue
4350
- case 797:switch(this.l()){
4351
+ case 798:if(this.miA(796,$.category)){ $.nameOrRef.path.push( this.identAstWithPrefix( at ) ); }continue
4352
+ case 799:switch(this.l()){
4351
4353
  case'#':this.annoPathVariant({nameOrRef:$.nameOrRef},0);continue
4352
4354
  default:this.gr([]);continue
4353
4355
  }
@@ -4357,15 +4359,15 @@ return this.exit_()
4357
4359
  }
4358
4360
  }
4359
4361
  annoPathVariant($,$next){
4360
- this.rule_(799,$next)
4362
+ this.rule_(801,$next)
4361
4363
  for(;;)switch(this.s){
4362
- case 799:if(this.m(800,'#')){ this.reportUnexpectedSpace(); }continue
4363
- case 800:if(this.miA(801,'variant')){ $.nameOrRef.variant = { path: [ this.identAst() ] }; }continue
4364
- case 801:switch(this.l()){
4365
- case'.':this.c(802);continue
4364
+ case 801:if(this.m(802,'#')){ this.reportUnexpectedSpace(); }continue
4365
+ case 802:if(this.miA(803,'variant')){ $.nameOrRef.variant = { path: [ this.identAst() ] }; }continue
4366
+ case 803:switch(this.l()){
4367
+ case'.':this.c(804);continue
4366
4368
  default:this.gr([]);continue
4367
4369
  }
4368
- case 802:if(this.miA(801,'variant')){ $.nameOrRef.variant.path.push( this.identAst() ); }continue
4370
+ case 804:if(this.miA(803,'variant')){ $.nameOrRef.variant.path.push( this.identAst() ); }continue
4369
4371
  default:
4370
4372
  this.attachLocation( $.nameOrRef.variant )
4371
4373
  return this.exit_()
@@ -4375,14 +4377,14 @@ annoStructValue($,$next){
4375
4377
  $.value??={}
4376
4378
  let name=new XsnName()
4377
4379
  let _
4378
- this.rule_(804,$next)
4380
+ this.rule_(806,$next)
4379
4381
  for(;;)switch(this.s){
4380
- case 804:if(this.annoPath({nameOrRef:name,category:'name'},805)){ this.attachLocation( name ); }continue
4381
- case 805:switch(this.l()){
4382
- case':':this.c(806);continue
4382
+ case 806:if(this.annoPath({nameOrRef:name,category:'name'},807)){ this.attachLocation( name ); }continue
4383
+ case 807:switch(this.l()){
4384
+ case':':this.c(808);continue
4383
4385
  default:if(this.gr([',','}'])){ this.attachLocation( $.value ); }continue
4384
4386
  }
4385
- case 806:if(this.annoValue(_={},0))$.value=_.value;continue
4387
+ case 808:if(this.annoValue(_={},0))$.value=_.value;continue
4386
4388
  default:
4387
4389
  $.value.name = name
4388
4390
  return this.exit_()
@@ -4391,51 +4393,51 @@ return this.exit_()
4391
4393
  annoValue($,$next){
4392
4394
  $.value??={}
4393
4395
  let sign;let sub;let ellipsis;let upTo;let _
4394
- this.rule_(808,$next)
4396
+ this.rule_(810,$next)
4395
4397
  for(;;)switch(this.s){
4396
- case 808:switch(this.lk()){
4398
+ case 810:switch(this.lk()){
4397
4399
  case'#':case'null':case'true':case'false':case'Number':case'String':case'QuotedLiteral':if(this.literalValue(_={},0)){$.value=_.expr; this.adjustAnnoNumber( $.value ); }continue
4398
- case'+':case'-':if(this.c(809))sign=this.lb();continue
4400
+ case'+':case'-':if(this.c(811))sign=this.lb();continue
4399
4401
  case'Id':case'@':this.annoPath({nameOrRef:$.value,category:'annoref'},0);continue
4400
- case'{':if(this.c(810)){ if (!this.dynamic_.arrayAnno) $.value.$flatten = [];
4402
+ case'{':if(this.c(812)){ if (!this.dynamic_.arrayAnno) $.value.$flatten = [];
4401
4403
  else { $.value.struct = Object.create(null); $.value.literal = 'struct'; } }continue
4402
- case'[':if(this.c(814)){this.arrayAnno(); $.value.val = []; $.value.literal = 'array' }continue
4403
- case'(':this.c(821);continue
4404
+ case'[':if(this.c(816)){this.arrayAnno(); $.value.val = []; $.value.literal = 'array' }continue
4405
+ case'(':this.c(823);continue
4404
4406
  default:this.ei();continue
4405
4407
  }
4406
- case 809:if(this.m(0,'Number')){ this.adjustAnnoNumber( $.value = this.numberLiteral( sign ) ); }continue
4407
- case 810:switch(this.l()){
4408
- case'Id':case'@':if(this.annoStructValue(_={},811)){sub=_.value; if ($.value.$flatten) $.value.$flatten.push( sub );
4408
+ case 811:if(this.m(0,'Number')){ this.adjustAnnoNumber( $.value = this.numberLiteral( sign ) ); }continue
4409
+ case 812:switch(this.l()){
4410
+ case'Id':case'@':if(this.annoStructValue(_={},813)){sub=_.value; if ($.value.$flatten) $.value.$flatten.push( sub );
4409
4411
  else this.addDef( sub, $.value, 'struct', null, sub.name ); }continue
4410
- default:this.s=812;continue
4412
+ default:this.s=814;continue
4411
4413
  }
4412
- case 811:switch(this.l()){
4413
- case',':this.c(810);continue
4414
- case'}':this.s=812;continue
4414
+ case 813:switch(this.l()){
4415
+ case',':this.c(812);continue
4416
+ case'}':this.s=814;continue
4415
4417
  default:this.e();continue
4416
4418
  }
4417
- case 812:this.s=813;{ this.ec( 'arrayAnno', 'orNotEmpty' ); }continue
4418
- case 813:this.m(0,'}');continue
4419
- case 814:switch(this.l()){
4420
- case'Id':case'#':case'(':case'+':case'-':case'@':case'[':case'{':case'Number':case'String':case'QuotedLiteral':if(this.annoValue(_={},819)){sub=_.value; $.value.val.push( sub ) }continue
4421
- case'...':if(this.gc(820,'arrayAnno','ellipsis')&&this.c(815))ellipsis=this.lb();continue
4422
- default:this.s=820;continue
4423
- }
4424
- case 815:switch(this.lk()){
4425
- case'up':this.ck(816);continue
4426
- default:this.s=818;{ upTo = undefined; }continue
4427
- }
4428
- case 816:this.mk(817,'to');continue
4429
- case 817:if(this.annoValue(_={},818))upTo=_.value;continue
4430
- case 818:this.s=819;{ $.value.val.push( { literal: 'token', val: '...', location: ellipsis.location, upTo: upTo } ); }continue
4431
- case 819:switch(this.l()){
4432
- case',':this.c(814);continue
4433
- case']':this.s=820;continue
4419
+ case 814:this.s=815;{ this.ec( 'arrayAnno', 'orNotEmpty' ); }continue
4420
+ case 815:this.m(0,'}');continue
4421
+ case 816:switch(this.l()){
4422
+ case'Id':case'#':case'(':case'+':case'-':case'@':case'[':case'{':case'Number':case'String':case'QuotedLiteral':if(this.annoValue(_={},820)){sub=_.value; $.value.val.push( sub ) }continue
4423
+ case'...':if(this.gc(821,'arrayAnno','ellipsis')&&this.c(817))ellipsis=this.lb();continue
4424
+ default:this.s=821;continue
4425
+ }
4426
+ case 817:switch(this.lk()){
4427
+ case'up':this.ck(818);continue
4428
+ default:this.s=820;{ $.value.val.push( { literal: 'token', val: '...', location: ellipsis.location } ); }continue
4429
+ }
4430
+ case 818:this.mk(819,'to');continue
4431
+ case 819:if(this.annoValue(_={},820)){upTo=_.value; $.value.val.push( { literal: 'token', val: '...', location: ellipsis.location, upTo: upTo } ); }continue
4432
+ case 820:switch(this.l()){
4433
+ case',':this.c(816);continue
4434
+ case']':this.s=821;continue
4434
4435
  default:this.e();continue
4435
4436
  }
4436
- case 820:this.m(0,']');continue
4437
- case 821:if(this.condition(_={},822))$.value=_.expr;continue
4438
- case 822:if(this.m(0,')')){ $.value.$tokenTexts = this.ruleTokensText(); }continue
4437
+ case 821:this.s=822;{ this.ec( 'arrayAnno', 'bracket' ); }continue
4438
+ case 822:this.m(0,']');continue
4439
+ case 823:if(this.condition(_={},824))$.value=_.expr;continue
4440
+ case 824:if(this.m(0,')')){ $.value.$tokenTexts = this.ruleTokensText(); }continue
4439
4441
  default:
4440
4442
  this.attachLocation( $.value )
4441
4443
  return this.exit_()