@sap/cds-compiler 5.6.0 → 5.7.2

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