@sap/cds-compiler 6.3.6 → 6.4.6

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