zenstack 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/LICENSE +21 -0
  2. package/bin/cli +3 -0
  3. package/out/cli/cli-util.js +64 -0
  4. package/out/cli/cli-util.js.map +1 -0
  5. package/out/cli/generator.js +1 -0
  6. package/out/cli/generator.js.map +1 -0
  7. package/out/cli/index.js +90 -0
  8. package/out/cli/index.js.map +1 -0
  9. package/out/extension.js +81 -0
  10. package/out/extension.js.map +1 -0
  11. package/out/generator/data-server/index.js +1 -0
  12. package/out/generator/data-server/index.js.map +1 -0
  13. package/out/generator/next-auth/index.js +196 -0
  14. package/out/generator/next-auth/index.js.map +1 -0
  15. package/out/generator/prisma/index.js +212 -0
  16. package/out/generator/prisma/index.js.map +1 -0
  17. package/out/generator/prisma/prisma-builder.js +307 -0
  18. package/out/generator/prisma/prisma-builder.js.map +1 -0
  19. package/out/generator/react-hooks/index.js +258 -0
  20. package/out/generator/react-hooks/index.js.map +1 -0
  21. package/out/generator/server/data/data-generator.js +376 -0
  22. package/out/generator/server/data/data-generator.js.map +1 -0
  23. package/out/generator/server/data/expression-writer.js +281 -0
  24. package/out/generator/server/data/expression-writer.js.map +1 -0
  25. package/out/generator/server/data/plain-expression-builder.js +53 -0
  26. package/out/generator/server/data/plain-expression-builder.js.map +1 -0
  27. package/out/generator/server/data-generator.js +82 -0
  28. package/out/generator/server/data-generator.js.map +1 -0
  29. package/out/generator/server/expression-writer.js +1 -0
  30. package/out/generator/server/expression-writer.js.map +1 -0
  31. package/out/generator/server/function/function-generator.js +50 -0
  32. package/out/generator/server/function/function-generator.js.map +1 -0
  33. package/out/generator/server/function-generator.js +13 -0
  34. package/out/generator/server/function-generator.js.map +1 -0
  35. package/out/generator/server/index.js +88 -0
  36. package/out/generator/server/index.js.map +1 -0
  37. package/out/generator/server/js-expression-builder.js +1 -0
  38. package/out/generator/server/js-expression-builder.js.map +1 -0
  39. package/out/generator/server/plain-expression-builder.js +1 -0
  40. package/out/generator/server/plain-expression-builder.js.map +1 -0
  41. package/out/generator/server/server-code-generator.js +3 -0
  42. package/out/generator/server/server-code-generator.js.map +1 -0
  43. package/out/generator/server/server-code-writer.js +1 -0
  44. package/out/generator/server/server-code-writer.js.map +1 -0
  45. package/out/generator/service/index.js +72 -0
  46. package/out/generator/service/index.js.map +1 -0
  47. package/out/generator/types.js +10 -0
  48. package/out/generator/types.js.map +1 -0
  49. package/out/generator/utils.js +10 -0
  50. package/out/generator/utils.js.map +1 -0
  51. package/out/language-server/generated/ast.js +386 -0
  52. package/out/language-server/generated/ast.js.map +1 -0
  53. package/out/language-server/generated/grammar.js +2193 -0
  54. package/out/language-server/generated/grammar.js.map +1 -0
  55. package/out/language-server/generated/module.js +23 -0
  56. package/out/language-server/generated/module.js.map +1 -0
  57. package/out/language-server/main.js +12 -0
  58. package/out/language-server/main.js.map +1 -0
  59. package/out/language-server/stdlib.zmodel +21 -0
  60. package/out/language-server/types.js +3 -0
  61. package/out/language-server/types.js.map +1 -0
  62. package/out/language-server/zmodel-index.js +38 -0
  63. package/out/language-server/zmodel-index.js.map +1 -0
  64. package/out/language-server/zmodel-linker.js +239 -0
  65. package/out/language-server/zmodel-linker.js.map +1 -0
  66. package/out/language-server/zmodel-module.js +51 -0
  67. package/out/language-server/zmodel-module.js.map +1 -0
  68. package/out/language-server/zmodel-scope.js +30 -0
  69. package/out/language-server/zmodel-scope.js.map +1 -0
  70. package/out/language-server/zmodel-validator.js +25 -0
  71. package/out/language-server/zmodel-validator.js.map +1 -0
  72. package/out/utils/indent-string.js +25 -0
  73. package/out/utils/indent-string.js.map +1 -0
  74. package/package.json +94 -0
  75. package/src/cli/cli-util.ts +80 -0
  76. package/src/cli/index.ts +80 -0
  77. package/src/extension.ts +76 -0
  78. package/src/generator/next-auth/index.ts +183 -0
  79. package/src/generator/prisma/index.ts +323 -0
  80. package/src/generator/prisma/prisma-builder.ts +366 -0
  81. package/src/generator/react-hooks/index.ts +267 -0
  82. package/src/generator/server/data/data-generator.ts +483 -0
  83. package/src/generator/server/data/expression-writer.ts +350 -0
  84. package/src/generator/server/data/plain-expression-builder.ts +72 -0
  85. package/src/generator/server/function/function-generator.ts +32 -0
  86. package/src/generator/server/index.ts +57 -0
  87. package/src/generator/server/server-code-generator.ts +6 -0
  88. package/src/generator/service/index.ts +43 -0
  89. package/src/generator/types.ts +16 -0
  90. package/src/generator/utils.ts +9 -0
  91. package/src/language-server/generated/ast.ts +603 -0
  92. package/src/language-server/generated/grammar.ts +2190 -0
  93. package/src/language-server/generated/module.ts +24 -0
  94. package/src/language-server/main.ts +12 -0
  95. package/src/language-server/stdlib.zmodel +21 -0
  96. package/src/language-server/types.ts +9 -0
  97. package/src/language-server/zmodel-index.ts +33 -0
  98. package/src/language-server/zmodel-linker.ts +407 -0
  99. package/src/language-server/zmodel-module.ts +90 -0
  100. package/src/language-server/zmodel-scope.ts +21 -0
  101. package/src/language-server/zmodel-validator.ts +35 -0
  102. package/src/language-server/zmodel.langium +186 -0
  103. package/src/utils/indent-string.ts +41 -0
@@ -0,0 +1,2190 @@
1
+ /******************************************************************************
2
+ * This file was generated by langium-cli 0.4.0.
3
+ * DO NOT EDIT MANUALLY!
4
+ ******************************************************************************/
5
+
6
+ import { loadGrammar, Grammar } from 'langium';
7
+
8
+ let loadedZModelGrammar: Grammar | undefined;
9
+ export const ZModelGrammar = (): Grammar => loadedZModelGrammar ||(loadedZModelGrammar = loadGrammar(`{
10
+ "$type": "Grammar",
11
+ "isDeclared": true,
12
+ "name": "ZModel",
13
+ "rules": [
14
+ {
15
+ "$type": "ParserRule",
16
+ "name": "Model",
17
+ "entry": true,
18
+ "alternatives": {
19
+ "$type": "Assignment",
20
+ "feature": "declarations",
21
+ "operator": "+=",
22
+ "terminal": {
23
+ "$type": "RuleCall",
24
+ "rule": {
25
+ "$refText": "AbstractDeclaration"
26
+ },
27
+ "arguments": []
28
+ },
29
+ "cardinality": "*"
30
+ },
31
+ "definesHiddenTokens": false,
32
+ "fragment": false,
33
+ "hiddenTokens": [],
34
+ "parameters": [],
35
+ "wildcard": false
36
+ },
37
+ {
38
+ "$type": "ParserRule",
39
+ "name": "AbstractDeclaration",
40
+ "alternatives": {
41
+ "$type": "Alternatives",
42
+ "elements": [
43
+ {
44
+ "$type": "RuleCall",
45
+ "rule": {
46
+ "$refText": "DataSource"
47
+ },
48
+ "arguments": []
49
+ },
50
+ {
51
+ "$type": "RuleCall",
52
+ "rule": {
53
+ "$refText": "DataModel"
54
+ },
55
+ "arguments": []
56
+ },
57
+ {
58
+ "$type": "RuleCall",
59
+ "rule": {
60
+ "$refText": "Enum"
61
+ },
62
+ "arguments": []
63
+ },
64
+ {
65
+ "$type": "RuleCall",
66
+ "rule": {
67
+ "$refText": "Function"
68
+ },
69
+ "arguments": []
70
+ },
71
+ {
72
+ "$type": "RuleCall",
73
+ "rule": {
74
+ "$refText": "Attribute"
75
+ },
76
+ "arguments": []
77
+ }
78
+ ]
79
+ },
80
+ "definesHiddenTokens": false,
81
+ "entry": false,
82
+ "fragment": false,
83
+ "hiddenTokens": [],
84
+ "parameters": [],
85
+ "wildcard": false
86
+ },
87
+ {
88
+ "$type": "ParserRule",
89
+ "name": "DataSource",
90
+ "alternatives": {
91
+ "$type": "Group",
92
+ "elements": [
93
+ {
94
+ "$type": "Keyword",
95
+ "value": "datasource"
96
+ },
97
+ {
98
+ "$type": "Assignment",
99
+ "feature": "name",
100
+ "operator": "=",
101
+ "terminal": {
102
+ "$type": "RuleCall",
103
+ "rule": {
104
+ "$refText": "ID"
105
+ },
106
+ "arguments": []
107
+ }
108
+ },
109
+ {
110
+ "$type": "Keyword",
111
+ "value": "{"
112
+ },
113
+ {
114
+ "$type": "Assignment",
115
+ "feature": "fields",
116
+ "operator": "+=",
117
+ "terminal": {
118
+ "$type": "RuleCall",
119
+ "rule": {
120
+ "$refText": "DataSourceField"
121
+ },
122
+ "arguments": []
123
+ },
124
+ "cardinality": "+"
125
+ },
126
+ {
127
+ "$type": "Keyword",
128
+ "value": "}"
129
+ }
130
+ ]
131
+ },
132
+ "definesHiddenTokens": false,
133
+ "entry": false,
134
+ "fragment": false,
135
+ "hiddenTokens": [],
136
+ "parameters": [],
137
+ "wildcard": false
138
+ },
139
+ {
140
+ "$type": "ParserRule",
141
+ "name": "DataSourceField",
142
+ "alternatives": {
143
+ "$type": "Group",
144
+ "elements": [
145
+ {
146
+ "$type": "Assignment",
147
+ "feature": "name",
148
+ "operator": "=",
149
+ "terminal": {
150
+ "$type": "RuleCall",
151
+ "rule": {
152
+ "$refText": "ID"
153
+ },
154
+ "arguments": []
155
+ }
156
+ },
157
+ {
158
+ "$type": "Keyword",
159
+ "value": "="
160
+ },
161
+ {
162
+ "$type": "Assignment",
163
+ "feature": "value",
164
+ "operator": "=",
165
+ "terminal": {
166
+ "$type": "Alternatives",
167
+ "elements": [
168
+ {
169
+ "$type": "RuleCall",
170
+ "rule": {
171
+ "$refText": "LiteralExpr"
172
+ },
173
+ "arguments": []
174
+ },
175
+ {
176
+ "$type": "RuleCall",
177
+ "rule": {
178
+ "$refText": "InvocationExpr"
179
+ },
180
+ "arguments": []
181
+ }
182
+ ]
183
+ }
184
+ }
185
+ ]
186
+ },
187
+ "definesHiddenTokens": false,
188
+ "entry": false,
189
+ "fragment": false,
190
+ "hiddenTokens": [],
191
+ "parameters": [],
192
+ "wildcard": false
193
+ },
194
+ {
195
+ "$type": "ParserRule",
196
+ "name": "Expression",
197
+ "alternatives": {
198
+ "$type": "RuleCall",
199
+ "rule": {
200
+ "$refText": "LogicalExpr"
201
+ },
202
+ "arguments": []
203
+ },
204
+ "definesHiddenTokens": false,
205
+ "entry": false,
206
+ "fragment": false,
207
+ "hiddenTokens": [],
208
+ "parameters": [],
209
+ "wildcard": false
210
+ },
211
+ {
212
+ "$type": "ParserRule",
213
+ "name": "LiteralExpr",
214
+ "alternatives": {
215
+ "$type": "Assignment",
216
+ "feature": "value",
217
+ "operator": "=",
218
+ "terminal": {
219
+ "$type": "Alternatives",
220
+ "elements": [
221
+ {
222
+ "$type": "RuleCall",
223
+ "rule": {
224
+ "$refText": "BOOLEAN"
225
+ },
226
+ "arguments": []
227
+ },
228
+ {
229
+ "$type": "RuleCall",
230
+ "rule": {
231
+ "$refText": "INT"
232
+ },
233
+ "arguments": []
234
+ },
235
+ {
236
+ "$type": "RuleCall",
237
+ "rule": {
238
+ "$refText": "STRING"
239
+ },
240
+ "arguments": []
241
+ }
242
+ ]
243
+ }
244
+ },
245
+ "definesHiddenTokens": false,
246
+ "entry": false,
247
+ "fragment": false,
248
+ "hiddenTokens": [],
249
+ "parameters": [],
250
+ "wildcard": false
251
+ },
252
+ {
253
+ "$type": "ParserRule",
254
+ "name": "ArrayExpr",
255
+ "alternatives": {
256
+ "$type": "Group",
257
+ "elements": [
258
+ {
259
+ "$type": "Keyword",
260
+ "value": "["
261
+ },
262
+ {
263
+ "$type": "Group",
264
+ "elements": [
265
+ {
266
+ "$type": "Assignment",
267
+ "feature": "items",
268
+ "operator": "+=",
269
+ "terminal": {
270
+ "$type": "RuleCall",
271
+ "rule": {
272
+ "$refText": "Expression"
273
+ },
274
+ "arguments": []
275
+ }
276
+ },
277
+ {
278
+ "$type": "Group",
279
+ "elements": [
280
+ {
281
+ "$type": "Keyword",
282
+ "value": ","
283
+ },
284
+ {
285
+ "$type": "Assignment",
286
+ "feature": "items",
287
+ "operator": "+=",
288
+ "terminal": {
289
+ "$type": "RuleCall",
290
+ "rule": {
291
+ "$refText": "Expression"
292
+ },
293
+ "arguments": []
294
+ }
295
+ }
296
+ ],
297
+ "cardinality": "*"
298
+ }
299
+ ],
300
+ "cardinality": "?"
301
+ },
302
+ {
303
+ "$type": "Keyword",
304
+ "value": "]"
305
+ }
306
+ ]
307
+ },
308
+ "definesHiddenTokens": false,
309
+ "entry": false,
310
+ "fragment": false,
311
+ "hiddenTokens": [],
312
+ "parameters": [],
313
+ "wildcard": false
314
+ },
315
+ {
316
+ "$type": "ParserRule",
317
+ "name": "ThisExpr",
318
+ "alternatives": {
319
+ "$type": "Assignment",
320
+ "feature": "value",
321
+ "operator": "=",
322
+ "terminal": {
323
+ "$type": "RuleCall",
324
+ "rule": {
325
+ "$refText": "THIS"
326
+ },
327
+ "arguments": []
328
+ }
329
+ },
330
+ "definesHiddenTokens": false,
331
+ "entry": false,
332
+ "fragment": false,
333
+ "hiddenTokens": [],
334
+ "parameters": [],
335
+ "wildcard": false
336
+ },
337
+ {
338
+ "$type": "ParserRule",
339
+ "name": "NullExpr",
340
+ "alternatives": {
341
+ "$type": "Assignment",
342
+ "feature": "value",
343
+ "operator": "=",
344
+ "terminal": {
345
+ "$type": "RuleCall",
346
+ "rule": {
347
+ "$refText": "NULL"
348
+ },
349
+ "arguments": []
350
+ }
351
+ },
352
+ "definesHiddenTokens": false,
353
+ "entry": false,
354
+ "fragment": false,
355
+ "hiddenTokens": [],
356
+ "parameters": [],
357
+ "wildcard": false
358
+ },
359
+ {
360
+ "$type": "ParserRule",
361
+ "name": "ReferenceExpr",
362
+ "alternatives": {
363
+ "$type": "Group",
364
+ "elements": [
365
+ {
366
+ "$type": "Assignment",
367
+ "feature": "target",
368
+ "operator": "=",
369
+ "terminal": {
370
+ "$type": "CrossReference",
371
+ "type": {
372
+ "$refText": "ReferenceTarget"
373
+ },
374
+ "terminal": {
375
+ "$type": "RuleCall",
376
+ "rule": {
377
+ "$refText": "ID"
378
+ },
379
+ "arguments": []
380
+ },
381
+ "deprecatedSyntax": false
382
+ }
383
+ },
384
+ {
385
+ "$type": "Group",
386
+ "elements": [
387
+ {
388
+ "$type": "Keyword",
389
+ "value": "("
390
+ },
391
+ {
392
+ "$type": "RuleCall",
393
+ "rule": {
394
+ "$refText": "ReferenceArgList"
395
+ },
396
+ "arguments": []
397
+ },
398
+ {
399
+ "$type": "Keyword",
400
+ "value": ")"
401
+ }
402
+ ],
403
+ "cardinality": "?"
404
+ }
405
+ ]
406
+ },
407
+ "definesHiddenTokens": false,
408
+ "entry": false,
409
+ "fragment": false,
410
+ "hiddenTokens": [],
411
+ "parameters": [],
412
+ "wildcard": false
413
+ },
414
+ {
415
+ "$type": "ParserRule",
416
+ "name": "ReferenceArgList",
417
+ "fragment": true,
418
+ "alternatives": {
419
+ "$type": "Group",
420
+ "elements": [
421
+ {
422
+ "$type": "Assignment",
423
+ "feature": "args",
424
+ "operator": "+=",
425
+ "terminal": {
426
+ "$type": "RuleCall",
427
+ "rule": {
428
+ "$refText": "ReferenceArg"
429
+ },
430
+ "arguments": []
431
+ }
432
+ },
433
+ {
434
+ "$type": "Group",
435
+ "elements": [
436
+ {
437
+ "$type": "Keyword",
438
+ "value": ","
439
+ },
440
+ {
441
+ "$type": "Assignment",
442
+ "feature": "args",
443
+ "operator": "+=",
444
+ "terminal": {
445
+ "$type": "RuleCall",
446
+ "rule": {
447
+ "$refText": "ReferenceArg"
448
+ },
449
+ "arguments": []
450
+ }
451
+ }
452
+ ],
453
+ "cardinality": "*"
454
+ }
455
+ ]
456
+ },
457
+ "definesHiddenTokens": false,
458
+ "entry": false,
459
+ "hiddenTokens": [],
460
+ "parameters": [],
461
+ "wildcard": false
462
+ },
463
+ {
464
+ "$type": "ParserRule",
465
+ "name": "ReferenceArg",
466
+ "alternatives": {
467
+ "$type": "Group",
468
+ "elements": [
469
+ {
470
+ "$type": "Assignment",
471
+ "feature": "name",
472
+ "operator": "=",
473
+ "terminal": {
474
+ "$type": "Keyword",
475
+ "value": "sort"
476
+ }
477
+ },
478
+ {
479
+ "$type": "Keyword",
480
+ "value": ":"
481
+ },
482
+ {
483
+ "$type": "Assignment",
484
+ "feature": "value",
485
+ "operator": "=",
486
+ "terminal": {
487
+ "$type": "Alternatives",
488
+ "elements": [
489
+ {
490
+ "$type": "Keyword",
491
+ "value": "Asc"
492
+ },
493
+ {
494
+ "$type": "Keyword",
495
+ "value": "Desc"
496
+ }
497
+ ]
498
+ }
499
+ }
500
+ ]
501
+ },
502
+ "definesHiddenTokens": false,
503
+ "entry": false,
504
+ "fragment": false,
505
+ "hiddenTokens": [],
506
+ "parameters": [],
507
+ "wildcard": false
508
+ },
509
+ {
510
+ "$type": "ParserRule",
511
+ "name": "InvocationExpr",
512
+ "alternatives": {
513
+ "$type": "Group",
514
+ "elements": [
515
+ {
516
+ "$type": "Assignment",
517
+ "feature": "function",
518
+ "operator": "=",
519
+ "terminal": {
520
+ "$type": "CrossReference",
521
+ "type": {
522
+ "$refText": "Function"
523
+ },
524
+ "deprecatedSyntax": false
525
+ }
526
+ },
527
+ {
528
+ "$type": "Keyword",
529
+ "value": "("
530
+ },
531
+ {
532
+ "$type": "RuleCall",
533
+ "rule": {
534
+ "$refText": "ArgumentList"
535
+ },
536
+ "arguments": [],
537
+ "cardinality": "?"
538
+ },
539
+ {
540
+ "$type": "Keyword",
541
+ "value": ")"
542
+ }
543
+ ]
544
+ },
545
+ "definesHiddenTokens": false,
546
+ "entry": false,
547
+ "fragment": false,
548
+ "hiddenTokens": [],
549
+ "parameters": [],
550
+ "wildcard": false
551
+ },
552
+ {
553
+ "$type": "ParserRule",
554
+ "name": "UnaryExpr",
555
+ "alternatives": {
556
+ "$type": "Group",
557
+ "elements": [
558
+ {
559
+ "$type": "Assignment",
560
+ "feature": "operator",
561
+ "operator": "=",
562
+ "terminal": {
563
+ "$type": "Keyword",
564
+ "value": "!"
565
+ }
566
+ },
567
+ {
568
+ "$type": "Assignment",
569
+ "feature": "operand",
570
+ "operator": "=",
571
+ "terminal": {
572
+ "$type": "RuleCall",
573
+ "rule": {
574
+ "$refText": "Expression"
575
+ },
576
+ "arguments": []
577
+ }
578
+ }
579
+ ]
580
+ },
581
+ "definesHiddenTokens": false,
582
+ "entry": false,
583
+ "fragment": false,
584
+ "hiddenTokens": [],
585
+ "parameters": [],
586
+ "wildcard": false
587
+ },
588
+ {
589
+ "$type": "ParserRule",
590
+ "name": "MemberAccessExpr",
591
+ "inferredType": {
592
+ "$type": "InferredType",
593
+ "name": "Expression"
594
+ },
595
+ "alternatives": {
596
+ "$type": "Group",
597
+ "elements": [
598
+ {
599
+ "$type": "RuleCall",
600
+ "rule": {
601
+ "$refText": "PrimaryExpr"
602
+ },
603
+ "arguments": []
604
+ },
605
+ {
606
+ "$type": "Group",
607
+ "elements": [
608
+ {
609
+ "$type": "Action",
610
+ "inferredType": {
611
+ "$type": "InferredType",
612
+ "name": "MemberAccessExpr"
613
+ },
614
+ "feature": "operand",
615
+ "operator": "="
616
+ },
617
+ {
618
+ "$type": "Group",
619
+ "elements": [
620
+ {
621
+ "$type": "Keyword",
622
+ "value": "."
623
+ },
624
+ {
625
+ "$type": "Assignment",
626
+ "feature": "member",
627
+ "operator": "=",
628
+ "terminal": {
629
+ "$type": "CrossReference",
630
+ "type": {
631
+ "$refText": "DataModelField"
632
+ },
633
+ "deprecatedSyntax": false
634
+ }
635
+ }
636
+ ]
637
+ }
638
+ ],
639
+ "cardinality": "*"
640
+ }
641
+ ]
642
+ },
643
+ "definesHiddenTokens": false,
644
+ "entry": false,
645
+ "fragment": false,
646
+ "hiddenTokens": [],
647
+ "parameters": [],
648
+ "wildcard": false
649
+ },
650
+ {
651
+ "$type": "ParserRule",
652
+ "name": "CollectionPredicateExpr",
653
+ "inferredType": {
654
+ "$type": "InferredType",
655
+ "name": "Expression"
656
+ },
657
+ "alternatives": {
658
+ "$type": "Group",
659
+ "elements": [
660
+ {
661
+ "$type": "RuleCall",
662
+ "rule": {
663
+ "$refText": "MemberAccessExpr"
664
+ },
665
+ "arguments": []
666
+ },
667
+ {
668
+ "$type": "Group",
669
+ "elements": [
670
+ {
671
+ "$type": "Action",
672
+ "inferredType": {
673
+ "$type": "InferredType",
674
+ "name": "BinaryExpr"
675
+ },
676
+ "feature": "left",
677
+ "operator": "="
678
+ },
679
+ {
680
+ "$type": "Assignment",
681
+ "feature": "operator",
682
+ "operator": "=",
683
+ "terminal": {
684
+ "$type": "Alternatives",
685
+ "elements": [
686
+ {
687
+ "$type": "Keyword",
688
+ "value": "?"
689
+ },
690
+ {
691
+ "$type": "Keyword",
692
+ "value": "!"
693
+ },
694
+ {
695
+ "$type": "Keyword",
696
+ "value": "^"
697
+ }
698
+ ]
699
+ }
700
+ },
701
+ {
702
+ "$type": "Keyword",
703
+ "value": "["
704
+ },
705
+ {
706
+ "$type": "Assignment",
707
+ "feature": "right",
708
+ "operator": "=",
709
+ "terminal": {
710
+ "$type": "RuleCall",
711
+ "rule": {
712
+ "$refText": "Expression"
713
+ },
714
+ "arguments": []
715
+ }
716
+ },
717
+ {
718
+ "$type": "Keyword",
719
+ "value": "]"
720
+ }
721
+ ],
722
+ "cardinality": "*"
723
+ }
724
+ ]
725
+ },
726
+ "definesHiddenTokens": false,
727
+ "entry": false,
728
+ "fragment": false,
729
+ "hiddenTokens": [],
730
+ "parameters": [],
731
+ "wildcard": false
732
+ },
733
+ {
734
+ "$type": "ParserRule",
735
+ "name": "ComparisonExpr",
736
+ "inferredType": {
737
+ "$type": "InferredType",
738
+ "name": "Expression"
739
+ },
740
+ "alternatives": {
741
+ "$type": "Group",
742
+ "elements": [
743
+ {
744
+ "$type": "RuleCall",
745
+ "rule": {
746
+ "$refText": "CollectionPredicateExpr"
747
+ },
748
+ "arguments": []
749
+ },
750
+ {
751
+ "$type": "Group",
752
+ "elements": [
753
+ {
754
+ "$type": "Action",
755
+ "inferredType": {
756
+ "$type": "InferredType",
757
+ "name": "BinaryExpr"
758
+ },
759
+ "feature": "left",
760
+ "operator": "="
761
+ },
762
+ {
763
+ "$type": "Assignment",
764
+ "feature": "operator",
765
+ "operator": "=",
766
+ "terminal": {
767
+ "$type": "Alternatives",
768
+ "elements": [
769
+ {
770
+ "$type": "Keyword",
771
+ "value": ">"
772
+ },
773
+ {
774
+ "$type": "Keyword",
775
+ "value": "<"
776
+ },
777
+ {
778
+ "$type": "Keyword",
779
+ "value": ">="
780
+ },
781
+ {
782
+ "$type": "Keyword",
783
+ "value": "<="
784
+ }
785
+ ]
786
+ }
787
+ },
788
+ {
789
+ "$type": "Assignment",
790
+ "feature": "right",
791
+ "operator": "=",
792
+ "terminal": {
793
+ "$type": "RuleCall",
794
+ "rule": {
795
+ "$refText": "CollectionPredicateExpr"
796
+ },
797
+ "arguments": []
798
+ }
799
+ }
800
+ ],
801
+ "cardinality": "*"
802
+ }
803
+ ]
804
+ },
805
+ "definesHiddenTokens": false,
806
+ "entry": false,
807
+ "fragment": false,
808
+ "hiddenTokens": [],
809
+ "parameters": [],
810
+ "wildcard": false
811
+ },
812
+ {
813
+ "$type": "ParserRule",
814
+ "name": "EqualityExpr",
815
+ "inferredType": {
816
+ "$type": "InferredType",
817
+ "name": "Expression"
818
+ },
819
+ "alternatives": {
820
+ "$type": "Group",
821
+ "elements": [
822
+ {
823
+ "$type": "RuleCall",
824
+ "rule": {
825
+ "$refText": "ComparisonExpr"
826
+ },
827
+ "arguments": []
828
+ },
829
+ {
830
+ "$type": "Group",
831
+ "elements": [
832
+ {
833
+ "$type": "Action",
834
+ "inferredType": {
835
+ "$type": "InferredType",
836
+ "name": "BinaryExpr"
837
+ },
838
+ "feature": "left",
839
+ "operator": "="
840
+ },
841
+ {
842
+ "$type": "Assignment",
843
+ "feature": "operator",
844
+ "operator": "=",
845
+ "terminal": {
846
+ "$type": "Alternatives",
847
+ "elements": [
848
+ {
849
+ "$type": "Keyword",
850
+ "value": "=="
851
+ },
852
+ {
853
+ "$type": "Keyword",
854
+ "value": "!="
855
+ }
856
+ ]
857
+ }
858
+ },
859
+ {
860
+ "$type": "Assignment",
861
+ "feature": "right",
862
+ "operator": "=",
863
+ "terminal": {
864
+ "$type": "RuleCall",
865
+ "rule": {
866
+ "$refText": "ComparisonExpr"
867
+ },
868
+ "arguments": []
869
+ }
870
+ }
871
+ ],
872
+ "cardinality": "*"
873
+ }
874
+ ]
875
+ },
876
+ "definesHiddenTokens": false,
877
+ "entry": false,
878
+ "fragment": false,
879
+ "hiddenTokens": [],
880
+ "parameters": [],
881
+ "wildcard": false
882
+ },
883
+ {
884
+ "$type": "ParserRule",
885
+ "name": "LogicalExpr",
886
+ "inferredType": {
887
+ "$type": "InferredType",
888
+ "name": "Expression"
889
+ },
890
+ "alternatives": {
891
+ "$type": "Group",
892
+ "elements": [
893
+ {
894
+ "$type": "RuleCall",
895
+ "rule": {
896
+ "$refText": "EqualityExpr"
897
+ },
898
+ "arguments": []
899
+ },
900
+ {
901
+ "$type": "Group",
902
+ "elements": [
903
+ {
904
+ "$type": "Action",
905
+ "inferredType": {
906
+ "$type": "InferredType",
907
+ "name": "BinaryExpr"
908
+ },
909
+ "feature": "left",
910
+ "operator": "="
911
+ },
912
+ {
913
+ "$type": "Assignment",
914
+ "feature": "operator",
915
+ "operator": "=",
916
+ "terminal": {
917
+ "$type": "Alternatives",
918
+ "elements": [
919
+ {
920
+ "$type": "Keyword",
921
+ "value": "&&"
922
+ },
923
+ {
924
+ "$type": "Keyword",
925
+ "value": "||"
926
+ }
927
+ ]
928
+ }
929
+ },
930
+ {
931
+ "$type": "Assignment",
932
+ "feature": "right",
933
+ "operator": "=",
934
+ "terminal": {
935
+ "$type": "RuleCall",
936
+ "rule": {
937
+ "$refText": "EqualityExpr"
938
+ },
939
+ "arguments": []
940
+ }
941
+ }
942
+ ],
943
+ "cardinality": "*"
944
+ }
945
+ ]
946
+ },
947
+ "definesHiddenTokens": false,
948
+ "entry": false,
949
+ "fragment": false,
950
+ "hiddenTokens": [],
951
+ "parameters": [],
952
+ "wildcard": false
953
+ },
954
+ {
955
+ "$type": "ParserRule",
956
+ "name": "PrimaryExpr",
957
+ "inferredType": {
958
+ "$type": "InferredType",
959
+ "name": "Expression"
960
+ },
961
+ "alternatives": {
962
+ "$type": "Alternatives",
963
+ "elements": [
964
+ {
965
+ "$type": "Group",
966
+ "elements": [
967
+ {
968
+ "$type": "Keyword",
969
+ "value": "("
970
+ },
971
+ {
972
+ "$type": "RuleCall",
973
+ "rule": {
974
+ "$refText": "Expression"
975
+ },
976
+ "arguments": []
977
+ },
978
+ {
979
+ "$type": "Keyword",
980
+ "value": ")"
981
+ }
982
+ ]
983
+ },
984
+ {
985
+ "$type": "RuleCall",
986
+ "rule": {
987
+ "$refText": "ThisExpr"
988
+ },
989
+ "arguments": []
990
+ },
991
+ {
992
+ "$type": "RuleCall",
993
+ "rule": {
994
+ "$refText": "NullExpr"
995
+ },
996
+ "arguments": []
997
+ },
998
+ {
999
+ "$type": "RuleCall",
1000
+ "rule": {
1001
+ "$refText": "LiteralExpr"
1002
+ },
1003
+ "arguments": []
1004
+ },
1005
+ {
1006
+ "$type": "RuleCall",
1007
+ "rule": {
1008
+ "$refText": "InvocationExpr"
1009
+ },
1010
+ "arguments": []
1011
+ },
1012
+ {
1013
+ "$type": "RuleCall",
1014
+ "rule": {
1015
+ "$refText": "ArrayExpr"
1016
+ },
1017
+ "arguments": []
1018
+ },
1019
+ {
1020
+ "$type": "RuleCall",
1021
+ "rule": {
1022
+ "$refText": "ReferenceExpr"
1023
+ },
1024
+ "arguments": []
1025
+ },
1026
+ {
1027
+ "$type": "RuleCall",
1028
+ "rule": {
1029
+ "$refText": "UnaryExpr"
1030
+ },
1031
+ "arguments": []
1032
+ }
1033
+ ]
1034
+ },
1035
+ "definesHiddenTokens": false,
1036
+ "entry": false,
1037
+ "fragment": false,
1038
+ "hiddenTokens": [],
1039
+ "parameters": [],
1040
+ "wildcard": false
1041
+ },
1042
+ {
1043
+ "$type": "ParserRule",
1044
+ "name": "ArgumentList",
1045
+ "fragment": true,
1046
+ "alternatives": {
1047
+ "$type": "Group",
1048
+ "elements": [
1049
+ {
1050
+ "$type": "Assignment",
1051
+ "feature": "args",
1052
+ "operator": "+=",
1053
+ "terminal": {
1054
+ "$type": "RuleCall",
1055
+ "rule": {
1056
+ "$refText": "Argument"
1057
+ },
1058
+ "arguments": []
1059
+ }
1060
+ },
1061
+ {
1062
+ "$type": "Group",
1063
+ "elements": [
1064
+ {
1065
+ "$type": "Keyword",
1066
+ "value": ","
1067
+ },
1068
+ {
1069
+ "$type": "Assignment",
1070
+ "feature": "args",
1071
+ "operator": "+=",
1072
+ "terminal": {
1073
+ "$type": "RuleCall",
1074
+ "rule": {
1075
+ "$refText": "Argument"
1076
+ },
1077
+ "arguments": []
1078
+ }
1079
+ }
1080
+ ],
1081
+ "cardinality": "*"
1082
+ }
1083
+ ]
1084
+ },
1085
+ "definesHiddenTokens": false,
1086
+ "entry": false,
1087
+ "hiddenTokens": [],
1088
+ "parameters": [],
1089
+ "wildcard": false
1090
+ },
1091
+ {
1092
+ "$type": "ParserRule",
1093
+ "name": "Argument",
1094
+ "alternatives": {
1095
+ "$type": "Group",
1096
+ "elements": [
1097
+ {
1098
+ "$type": "Group",
1099
+ "elements": [
1100
+ {
1101
+ "$type": "Assignment",
1102
+ "feature": "name",
1103
+ "operator": "=",
1104
+ "terminal": {
1105
+ "$type": "RuleCall",
1106
+ "rule": {
1107
+ "$refText": "ID"
1108
+ },
1109
+ "arguments": []
1110
+ }
1111
+ },
1112
+ {
1113
+ "$type": "Keyword",
1114
+ "value": ":"
1115
+ }
1116
+ ],
1117
+ "cardinality": "?"
1118
+ },
1119
+ {
1120
+ "$type": "Assignment",
1121
+ "feature": "value",
1122
+ "operator": "=",
1123
+ "terminal": {
1124
+ "$type": "RuleCall",
1125
+ "rule": {
1126
+ "$refText": "Expression"
1127
+ },
1128
+ "arguments": []
1129
+ }
1130
+ }
1131
+ ]
1132
+ },
1133
+ "definesHiddenTokens": false,
1134
+ "entry": false,
1135
+ "fragment": false,
1136
+ "hiddenTokens": [],
1137
+ "parameters": [],
1138
+ "wildcard": false
1139
+ },
1140
+ {
1141
+ "$type": "ParserRule",
1142
+ "name": "DataModel",
1143
+ "alternatives": {
1144
+ "$type": "Group",
1145
+ "elements": [
1146
+ {
1147
+ "$type": "Keyword",
1148
+ "value": "model"
1149
+ },
1150
+ {
1151
+ "$type": "Assignment",
1152
+ "feature": "name",
1153
+ "operator": "=",
1154
+ "terminal": {
1155
+ "$type": "RuleCall",
1156
+ "rule": {
1157
+ "$refText": "ID"
1158
+ },
1159
+ "arguments": []
1160
+ }
1161
+ },
1162
+ {
1163
+ "$type": "Keyword",
1164
+ "value": "{"
1165
+ },
1166
+ {
1167
+ "$type": "Alternatives",
1168
+ "elements": [
1169
+ {
1170
+ "$type": "Assignment",
1171
+ "feature": "fields",
1172
+ "operator": "+=",
1173
+ "terminal": {
1174
+ "$type": "RuleCall",
1175
+ "rule": {
1176
+ "$refText": "DataModelField"
1177
+ },
1178
+ "arguments": []
1179
+ }
1180
+ },
1181
+ {
1182
+ "$type": "Assignment",
1183
+ "feature": "attributes",
1184
+ "operator": "+=",
1185
+ "terminal": {
1186
+ "$type": "RuleCall",
1187
+ "rule": {
1188
+ "$refText": "DataModelAttribute"
1189
+ },
1190
+ "arguments": []
1191
+ }
1192
+ }
1193
+ ],
1194
+ "cardinality": "+"
1195
+ },
1196
+ {
1197
+ "$type": "Keyword",
1198
+ "value": "}"
1199
+ }
1200
+ ]
1201
+ },
1202
+ "definesHiddenTokens": false,
1203
+ "entry": false,
1204
+ "fragment": false,
1205
+ "hiddenTokens": [],
1206
+ "parameters": [],
1207
+ "wildcard": false
1208
+ },
1209
+ {
1210
+ "$type": "ParserRule",
1211
+ "name": "DataModelField",
1212
+ "alternatives": {
1213
+ "$type": "Group",
1214
+ "elements": [
1215
+ {
1216
+ "$type": "Assignment",
1217
+ "feature": "name",
1218
+ "operator": "=",
1219
+ "terminal": {
1220
+ "$type": "RuleCall",
1221
+ "rule": {
1222
+ "$refText": "ID"
1223
+ },
1224
+ "arguments": []
1225
+ }
1226
+ },
1227
+ {
1228
+ "$type": "Assignment",
1229
+ "feature": "type",
1230
+ "operator": "=",
1231
+ "terminal": {
1232
+ "$type": "RuleCall",
1233
+ "rule": {
1234
+ "$refText": "DataModelFieldType"
1235
+ },
1236
+ "arguments": []
1237
+ }
1238
+ },
1239
+ {
1240
+ "$type": "Assignment",
1241
+ "feature": "attributes",
1242
+ "operator": "+=",
1243
+ "terminal": {
1244
+ "$type": "RuleCall",
1245
+ "rule": {
1246
+ "$refText": "DataModelFieldAttribute"
1247
+ },
1248
+ "arguments": []
1249
+ },
1250
+ "cardinality": "*"
1251
+ }
1252
+ ]
1253
+ },
1254
+ "definesHiddenTokens": false,
1255
+ "entry": false,
1256
+ "fragment": false,
1257
+ "hiddenTokens": [],
1258
+ "parameters": [],
1259
+ "wildcard": false
1260
+ },
1261
+ {
1262
+ "$type": "ParserRule",
1263
+ "name": "DataModelFieldType",
1264
+ "alternatives": {
1265
+ "$type": "Group",
1266
+ "elements": [
1267
+ {
1268
+ "$type": "Alternatives",
1269
+ "elements": [
1270
+ {
1271
+ "$type": "RuleCall",
1272
+ "rule": {
1273
+ "$refText": "BuiltinType"
1274
+ },
1275
+ "arguments": []
1276
+ },
1277
+ {
1278
+ "$type": "Assignment",
1279
+ "feature": "reference",
1280
+ "operator": "=",
1281
+ "terminal": {
1282
+ "$type": "CrossReference",
1283
+ "type": {
1284
+ "$refText": "TypeDeclaration"
1285
+ },
1286
+ "terminal": {
1287
+ "$type": "RuleCall",
1288
+ "rule": {
1289
+ "$refText": "ID"
1290
+ },
1291
+ "arguments": []
1292
+ },
1293
+ "deprecatedSyntax": false
1294
+ }
1295
+ }
1296
+ ]
1297
+ },
1298
+ {
1299
+ "$type": "Assignment",
1300
+ "feature": "array",
1301
+ "operator": "?=",
1302
+ "terminal": {
1303
+ "$type": "Keyword",
1304
+ "value": "[]"
1305
+ },
1306
+ "cardinality": "?"
1307
+ },
1308
+ {
1309
+ "$type": "Assignment",
1310
+ "feature": "optional",
1311
+ "operator": "?=",
1312
+ "terminal": {
1313
+ "$type": "Keyword",
1314
+ "value": "?"
1315
+ },
1316
+ "cardinality": "?"
1317
+ }
1318
+ ]
1319
+ },
1320
+ "definesHiddenTokens": false,
1321
+ "entry": false,
1322
+ "fragment": false,
1323
+ "hiddenTokens": [],
1324
+ "parameters": [],
1325
+ "wildcard": false
1326
+ },
1327
+ {
1328
+ "$type": "ParserRule",
1329
+ "name": "Enum",
1330
+ "alternatives": {
1331
+ "$type": "Group",
1332
+ "elements": [
1333
+ {
1334
+ "$type": "Keyword",
1335
+ "value": "enum"
1336
+ },
1337
+ {
1338
+ "$type": "Assignment",
1339
+ "feature": "name",
1340
+ "operator": "=",
1341
+ "terminal": {
1342
+ "$type": "RuleCall",
1343
+ "rule": {
1344
+ "$refText": "ID"
1345
+ },
1346
+ "arguments": []
1347
+ }
1348
+ },
1349
+ {
1350
+ "$type": "Keyword",
1351
+ "value": "{"
1352
+ },
1353
+ {
1354
+ "$type": "Assignment",
1355
+ "feature": "fields",
1356
+ "operator": "+=",
1357
+ "terminal": {
1358
+ "$type": "RuleCall",
1359
+ "rule": {
1360
+ "$refText": "EnumField"
1361
+ },
1362
+ "arguments": []
1363
+ },
1364
+ "cardinality": "+"
1365
+ },
1366
+ {
1367
+ "$type": "Keyword",
1368
+ "value": "}"
1369
+ }
1370
+ ]
1371
+ },
1372
+ "definesHiddenTokens": false,
1373
+ "entry": false,
1374
+ "fragment": false,
1375
+ "hiddenTokens": [],
1376
+ "parameters": [],
1377
+ "wildcard": false
1378
+ },
1379
+ {
1380
+ "$type": "ParserRule",
1381
+ "name": "EnumField",
1382
+ "alternatives": {
1383
+ "$type": "Assignment",
1384
+ "feature": "name",
1385
+ "operator": "=",
1386
+ "terminal": {
1387
+ "$type": "RuleCall",
1388
+ "rule": {
1389
+ "$refText": "ID"
1390
+ },
1391
+ "arguments": []
1392
+ }
1393
+ },
1394
+ "definesHiddenTokens": false,
1395
+ "entry": false,
1396
+ "fragment": false,
1397
+ "hiddenTokens": [],
1398
+ "parameters": [],
1399
+ "wildcard": false
1400
+ },
1401
+ {
1402
+ "$type": "ParserRule",
1403
+ "name": "Function",
1404
+ "alternatives": {
1405
+ "$type": "Group",
1406
+ "elements": [
1407
+ {
1408
+ "$type": "Keyword",
1409
+ "value": "function"
1410
+ },
1411
+ {
1412
+ "$type": "Assignment",
1413
+ "feature": "name",
1414
+ "operator": "=",
1415
+ "terminal": {
1416
+ "$type": "RuleCall",
1417
+ "rule": {
1418
+ "$refText": "ID"
1419
+ },
1420
+ "arguments": []
1421
+ }
1422
+ },
1423
+ {
1424
+ "$type": "Keyword",
1425
+ "value": "("
1426
+ },
1427
+ {
1428
+ "$type": "Group",
1429
+ "elements": [
1430
+ {
1431
+ "$type": "Assignment",
1432
+ "feature": "params",
1433
+ "operator": "+=",
1434
+ "terminal": {
1435
+ "$type": "RuleCall",
1436
+ "rule": {
1437
+ "$refText": "FunctionParam"
1438
+ },
1439
+ "arguments": []
1440
+ }
1441
+ },
1442
+ {
1443
+ "$type": "Group",
1444
+ "elements": [
1445
+ {
1446
+ "$type": "Keyword",
1447
+ "value": ","
1448
+ },
1449
+ {
1450
+ "$type": "Assignment",
1451
+ "feature": "params",
1452
+ "operator": "+=",
1453
+ "terminal": {
1454
+ "$type": "RuleCall",
1455
+ "rule": {
1456
+ "$refText": "FunctionParam"
1457
+ },
1458
+ "arguments": []
1459
+ }
1460
+ }
1461
+ ],
1462
+ "cardinality": "*"
1463
+ }
1464
+ ],
1465
+ "cardinality": "?"
1466
+ },
1467
+ {
1468
+ "$type": "Keyword",
1469
+ "value": ")"
1470
+ },
1471
+ {
1472
+ "$type": "Assignment",
1473
+ "feature": "returnType",
1474
+ "operator": "=",
1475
+ "terminal": {
1476
+ "$type": "RuleCall",
1477
+ "rule": {
1478
+ "$refText": "FunctionParamType"
1479
+ },
1480
+ "arguments": []
1481
+ }
1482
+ },
1483
+ {
1484
+ "$type": "Keyword",
1485
+ "value": "{"
1486
+ },
1487
+ {
1488
+ "$type": "Assignment",
1489
+ "feature": "expression",
1490
+ "operator": "=",
1491
+ "terminal": {
1492
+ "$type": "RuleCall",
1493
+ "rule": {
1494
+ "$refText": "Expression"
1495
+ },
1496
+ "arguments": []
1497
+ },
1498
+ "cardinality": "?"
1499
+ },
1500
+ {
1501
+ "$type": "Keyword",
1502
+ "value": "}"
1503
+ }
1504
+ ]
1505
+ },
1506
+ "definesHiddenTokens": false,
1507
+ "entry": false,
1508
+ "fragment": false,
1509
+ "hiddenTokens": [],
1510
+ "parameters": [],
1511
+ "wildcard": false
1512
+ },
1513
+ {
1514
+ "$type": "ParserRule",
1515
+ "name": "FunctionParam",
1516
+ "alternatives": {
1517
+ "$type": "Group",
1518
+ "elements": [
1519
+ {
1520
+ "$type": "Assignment",
1521
+ "feature": "name",
1522
+ "operator": "=",
1523
+ "terminal": {
1524
+ "$type": "RuleCall",
1525
+ "rule": {
1526
+ "$refText": "ID"
1527
+ },
1528
+ "arguments": []
1529
+ }
1530
+ },
1531
+ {
1532
+ "$type": "Assignment",
1533
+ "feature": "type",
1534
+ "operator": "=",
1535
+ "terminal": {
1536
+ "$type": "RuleCall",
1537
+ "rule": {
1538
+ "$refText": "FunctionParamType"
1539
+ },
1540
+ "arguments": []
1541
+ }
1542
+ }
1543
+ ]
1544
+ },
1545
+ "definesHiddenTokens": false,
1546
+ "entry": false,
1547
+ "fragment": false,
1548
+ "hiddenTokens": [],
1549
+ "parameters": [],
1550
+ "wildcard": false
1551
+ },
1552
+ {
1553
+ "$type": "ParserRule",
1554
+ "name": "FunctionParamType",
1555
+ "alternatives": {
1556
+ "$type": "Group",
1557
+ "elements": [
1558
+ {
1559
+ "$type": "Alternatives",
1560
+ "elements": [
1561
+ {
1562
+ "$type": "RuleCall",
1563
+ "rule": {
1564
+ "$refText": "BuiltinType"
1565
+ },
1566
+ "arguments": []
1567
+ },
1568
+ {
1569
+ "$type": "Assignment",
1570
+ "feature": "reference",
1571
+ "operator": "=",
1572
+ "terminal": {
1573
+ "$type": "CrossReference",
1574
+ "type": {
1575
+ "$refText": "TypeDeclaration"
1576
+ },
1577
+ "deprecatedSyntax": false
1578
+ }
1579
+ }
1580
+ ]
1581
+ },
1582
+ {
1583
+ "$type": "Assignment",
1584
+ "feature": "array",
1585
+ "operator": "?=",
1586
+ "terminal": {
1587
+ "$type": "Keyword",
1588
+ "value": "[]"
1589
+ },
1590
+ "cardinality": "?"
1591
+ }
1592
+ ]
1593
+ },
1594
+ "definesHiddenTokens": false,
1595
+ "entry": false,
1596
+ "fragment": false,
1597
+ "hiddenTokens": [],
1598
+ "parameters": [],
1599
+ "wildcard": false
1600
+ },
1601
+ {
1602
+ "$type": "ParserRule",
1603
+ "name": "Attribute",
1604
+ "alternatives": {
1605
+ "$type": "Group",
1606
+ "elements": [
1607
+ {
1608
+ "$type": "Keyword",
1609
+ "value": "attribute"
1610
+ },
1611
+ {
1612
+ "$type": "Assignment",
1613
+ "feature": "name",
1614
+ "operator": "=",
1615
+ "terminal": {
1616
+ "$type": "RuleCall",
1617
+ "rule": {
1618
+ "$refText": "ID"
1619
+ },
1620
+ "arguments": []
1621
+ }
1622
+ },
1623
+ {
1624
+ "$type": "Keyword",
1625
+ "value": "("
1626
+ },
1627
+ {
1628
+ "$type": "Group",
1629
+ "elements": [
1630
+ {
1631
+ "$type": "Assignment",
1632
+ "feature": "params",
1633
+ "operator": "+=",
1634
+ "terminal": {
1635
+ "$type": "RuleCall",
1636
+ "rule": {
1637
+ "$refText": "AttributeParam"
1638
+ },
1639
+ "arguments": []
1640
+ }
1641
+ },
1642
+ {
1643
+ "$type": "Group",
1644
+ "elements": [
1645
+ {
1646
+ "$type": "Keyword",
1647
+ "value": ","
1648
+ },
1649
+ {
1650
+ "$type": "Assignment",
1651
+ "feature": "params",
1652
+ "operator": "+=",
1653
+ "terminal": {
1654
+ "$type": "RuleCall",
1655
+ "rule": {
1656
+ "$refText": "AttributeParam"
1657
+ },
1658
+ "arguments": []
1659
+ }
1660
+ }
1661
+ ],
1662
+ "cardinality": "*"
1663
+ }
1664
+ ],
1665
+ "cardinality": "?"
1666
+ },
1667
+ {
1668
+ "$type": "Keyword",
1669
+ "value": ")"
1670
+ }
1671
+ ]
1672
+ },
1673
+ "definesHiddenTokens": false,
1674
+ "entry": false,
1675
+ "fragment": false,
1676
+ "hiddenTokens": [],
1677
+ "parameters": [],
1678
+ "wildcard": false
1679
+ },
1680
+ {
1681
+ "$type": "ParserRule",
1682
+ "name": "AttributeParam",
1683
+ "alternatives": {
1684
+ "$type": "Group",
1685
+ "elements": [
1686
+ {
1687
+ "$type": "Assignment",
1688
+ "feature": "positional",
1689
+ "operator": "?=",
1690
+ "terminal": {
1691
+ "$type": "Keyword",
1692
+ "value": "_"
1693
+ }
1694
+ },
1695
+ {
1696
+ "$type": "Assignment",
1697
+ "feature": "name",
1698
+ "operator": "=",
1699
+ "terminal": {
1700
+ "$type": "RuleCall",
1701
+ "rule": {
1702
+ "$refText": "ID"
1703
+ },
1704
+ "arguments": []
1705
+ }
1706
+ },
1707
+ {
1708
+ "$type": "Assignment",
1709
+ "feature": "type",
1710
+ "operator": "=",
1711
+ "terminal": {
1712
+ "$type": "RuleCall",
1713
+ "rule": {
1714
+ "$refText": "AttributeParamType"
1715
+ },
1716
+ "arguments": []
1717
+ }
1718
+ }
1719
+ ]
1720
+ },
1721
+ "definesHiddenTokens": false,
1722
+ "entry": false,
1723
+ "fragment": false,
1724
+ "hiddenTokens": [],
1725
+ "parameters": [],
1726
+ "wildcard": false
1727
+ },
1728
+ {
1729
+ "$type": "ParserRule",
1730
+ "name": "AttributeParamType",
1731
+ "alternatives": {
1732
+ "$type": "Group",
1733
+ "elements": [
1734
+ {
1735
+ "$type": "Alternatives",
1736
+ "elements": [
1737
+ {
1738
+ "$type": "RuleCall",
1739
+ "rule": {
1740
+ "$refText": "BuiltinType"
1741
+ },
1742
+ "arguments": []
1743
+ },
1744
+ {
1745
+ "$type": "Assignment",
1746
+ "feature": "type",
1747
+ "operator": "=",
1748
+ "terminal": {
1749
+ "$type": "Keyword",
1750
+ "value": "FieldReference"
1751
+ }
1752
+ }
1753
+ ]
1754
+ },
1755
+ {
1756
+ "$type": "Assignment",
1757
+ "feature": "array",
1758
+ "operator": "?=",
1759
+ "terminal": {
1760
+ "$type": "Keyword",
1761
+ "value": "[]"
1762
+ }
1763
+ },
1764
+ {
1765
+ "$type": "Assignment",
1766
+ "feature": "optional",
1767
+ "operator": "?=",
1768
+ "terminal": {
1769
+ "$type": "Keyword",
1770
+ "value": "?"
1771
+ }
1772
+ }
1773
+ ]
1774
+ },
1775
+ "definesHiddenTokens": false,
1776
+ "entry": false,
1777
+ "fragment": false,
1778
+ "hiddenTokens": [],
1779
+ "parameters": [],
1780
+ "wildcard": false
1781
+ },
1782
+ {
1783
+ "$type": "ParserRule",
1784
+ "name": "DataModelFieldAttribute",
1785
+ "alternatives": {
1786
+ "$type": "Group",
1787
+ "elements": [
1788
+ {
1789
+ "$type": "Keyword",
1790
+ "value": "@"
1791
+ },
1792
+ {
1793
+ "$type": "Assignment",
1794
+ "feature": "decl",
1795
+ "operator": "=",
1796
+ "terminal": {
1797
+ "$type": "CrossReference",
1798
+ "type": {
1799
+ "$refText": "Attribute"
1800
+ },
1801
+ "deprecatedSyntax": false
1802
+ }
1803
+ },
1804
+ {
1805
+ "$type": "Group",
1806
+ "elements": [
1807
+ {
1808
+ "$type": "Keyword",
1809
+ "value": "("
1810
+ },
1811
+ {
1812
+ "$type": "RuleCall",
1813
+ "rule": {
1814
+ "$refText": "AttributeArgList"
1815
+ },
1816
+ "arguments": [],
1817
+ "cardinality": "?"
1818
+ },
1819
+ {
1820
+ "$type": "Keyword",
1821
+ "value": ")"
1822
+ }
1823
+ ],
1824
+ "cardinality": "?"
1825
+ }
1826
+ ]
1827
+ },
1828
+ "definesHiddenTokens": false,
1829
+ "entry": false,
1830
+ "fragment": false,
1831
+ "hiddenTokens": [],
1832
+ "parameters": [],
1833
+ "wildcard": false
1834
+ },
1835
+ {
1836
+ "$type": "ParserRule",
1837
+ "name": "DataModelAttribute",
1838
+ "alternatives": {
1839
+ "$type": "Group",
1840
+ "elements": [
1841
+ {
1842
+ "$type": "Keyword",
1843
+ "value": "@@"
1844
+ },
1845
+ {
1846
+ "$type": "Assignment",
1847
+ "feature": "decl",
1848
+ "operator": "=",
1849
+ "terminal": {
1850
+ "$type": "CrossReference",
1851
+ "type": {
1852
+ "$refText": "Attribute"
1853
+ },
1854
+ "deprecatedSyntax": false
1855
+ }
1856
+ },
1857
+ {
1858
+ "$type": "Group",
1859
+ "elements": [
1860
+ {
1861
+ "$type": "Keyword",
1862
+ "value": "("
1863
+ },
1864
+ {
1865
+ "$type": "RuleCall",
1866
+ "rule": {
1867
+ "$refText": "AttributeArgList"
1868
+ },
1869
+ "arguments": [],
1870
+ "cardinality": "?"
1871
+ },
1872
+ {
1873
+ "$type": "Keyword",
1874
+ "value": ")"
1875
+ }
1876
+ ],
1877
+ "cardinality": "?"
1878
+ }
1879
+ ]
1880
+ },
1881
+ "definesHiddenTokens": false,
1882
+ "entry": false,
1883
+ "fragment": false,
1884
+ "hiddenTokens": [],
1885
+ "parameters": [],
1886
+ "wildcard": false
1887
+ },
1888
+ {
1889
+ "$type": "ParserRule",
1890
+ "name": "AttributeArgList",
1891
+ "fragment": true,
1892
+ "alternatives": {
1893
+ "$type": "Group",
1894
+ "elements": [
1895
+ {
1896
+ "$type": "Assignment",
1897
+ "feature": "args",
1898
+ "operator": "+=",
1899
+ "terminal": {
1900
+ "$type": "RuleCall",
1901
+ "rule": {
1902
+ "$refText": "AttributeArg"
1903
+ },
1904
+ "arguments": []
1905
+ }
1906
+ },
1907
+ {
1908
+ "$type": "Group",
1909
+ "elements": [
1910
+ {
1911
+ "$type": "Keyword",
1912
+ "value": ","
1913
+ },
1914
+ {
1915
+ "$type": "Assignment",
1916
+ "feature": "args",
1917
+ "operator": "+=",
1918
+ "terminal": {
1919
+ "$type": "RuleCall",
1920
+ "rule": {
1921
+ "$refText": "AttributeArg"
1922
+ },
1923
+ "arguments": []
1924
+ }
1925
+ }
1926
+ ],
1927
+ "cardinality": "*"
1928
+ }
1929
+ ]
1930
+ },
1931
+ "definesHiddenTokens": false,
1932
+ "entry": false,
1933
+ "hiddenTokens": [],
1934
+ "parameters": [],
1935
+ "wildcard": false
1936
+ },
1937
+ {
1938
+ "$type": "ParserRule",
1939
+ "name": "AttributeArg",
1940
+ "alternatives": {
1941
+ "$type": "Group",
1942
+ "elements": [
1943
+ {
1944
+ "$type": "Group",
1945
+ "elements": [
1946
+ {
1947
+ "$type": "Assignment",
1948
+ "feature": "name",
1949
+ "operator": "=",
1950
+ "terminal": {
1951
+ "$type": "RuleCall",
1952
+ "rule": {
1953
+ "$refText": "ID"
1954
+ },
1955
+ "arguments": []
1956
+ }
1957
+ },
1958
+ {
1959
+ "$type": "Keyword",
1960
+ "value": ":"
1961
+ }
1962
+ ],
1963
+ "cardinality": "?"
1964
+ },
1965
+ {
1966
+ "$type": "Assignment",
1967
+ "feature": "value",
1968
+ "operator": "=",
1969
+ "terminal": {
1970
+ "$type": "RuleCall",
1971
+ "rule": {
1972
+ "$refText": "Expression"
1973
+ },
1974
+ "arguments": []
1975
+ }
1976
+ }
1977
+ ]
1978
+ },
1979
+ "definesHiddenTokens": false,
1980
+ "entry": false,
1981
+ "fragment": false,
1982
+ "hiddenTokens": [],
1983
+ "parameters": [],
1984
+ "wildcard": false
1985
+ },
1986
+ {
1987
+ "$type": "ParserRule",
1988
+ "name": "BuiltinType",
1989
+ "fragment": true,
1990
+ "alternatives": {
1991
+ "$type": "Assignment",
1992
+ "feature": "type",
1993
+ "operator": "=",
1994
+ "terminal": {
1995
+ "$type": "Alternatives",
1996
+ "elements": [
1997
+ {
1998
+ "$type": "Keyword",
1999
+ "value": "String"
2000
+ },
2001
+ {
2002
+ "$type": "Keyword",
2003
+ "value": "Boolean"
2004
+ },
2005
+ {
2006
+ "$type": "Keyword",
2007
+ "value": "Int"
2008
+ },
2009
+ {
2010
+ "$type": "Keyword",
2011
+ "value": "DateTime"
2012
+ },
2013
+ {
2014
+ "$type": "Keyword",
2015
+ "value": "JSON"
2016
+ }
2017
+ ]
2018
+ }
2019
+ },
2020
+ "definesHiddenTokens": false,
2021
+ "entry": false,
2022
+ "hiddenTokens": [],
2023
+ "parameters": [],
2024
+ "wildcard": false
2025
+ },
2026
+ {
2027
+ "$type": "TerminalRule",
2028
+ "hidden": true,
2029
+ "name": "WS",
2030
+ "terminal": {
2031
+ "$type": "RegexToken",
2032
+ "regex": "\\\\s+"
2033
+ },
2034
+ "fragment": false
2035
+ },
2036
+ {
2037
+ "$type": "TerminalRule",
2038
+ "name": "BOOLEAN",
2039
+ "type": {
2040
+ "$type": "ReturnType",
2041
+ "name": "boolean"
2042
+ },
2043
+ "terminal": {
2044
+ "$type": "RegexToken",
2045
+ "regex": "true|false"
2046
+ },
2047
+ "fragment": false,
2048
+ "hidden": false
2049
+ },
2050
+ {
2051
+ "$type": "TerminalRule",
2052
+ "name": "NULL",
2053
+ "terminal": {
2054
+ "$type": "CharacterRange",
2055
+ "left": {
2056
+ "$type": "Keyword",
2057
+ "value": "null"
2058
+ }
2059
+ },
2060
+ "fragment": false,
2061
+ "hidden": false
2062
+ },
2063
+ {
2064
+ "$type": "TerminalRule",
2065
+ "name": "THIS",
2066
+ "terminal": {
2067
+ "$type": "CharacterRange",
2068
+ "left": {
2069
+ "$type": "Keyword",
2070
+ "value": "this"
2071
+ }
2072
+ },
2073
+ "fragment": false,
2074
+ "hidden": false
2075
+ },
2076
+ {
2077
+ "$type": "TerminalRule",
2078
+ "name": "ID",
2079
+ "terminal": {
2080
+ "$type": "RegexToken",
2081
+ "regex": "[_a-zA-Z][\\\\w_]*"
2082
+ },
2083
+ "fragment": false,
2084
+ "hidden": false
2085
+ },
2086
+ {
2087
+ "$type": "TerminalRule",
2088
+ "name": "STRING",
2089
+ "terminal": {
2090
+ "$type": "RegexToken",
2091
+ "regex": "\\"[^\\"]*\\"|'[^']*'"
2092
+ },
2093
+ "fragment": false,
2094
+ "hidden": false
2095
+ },
2096
+ {
2097
+ "$type": "TerminalRule",
2098
+ "name": "INT",
2099
+ "type": {
2100
+ "$type": "ReturnType",
2101
+ "name": "number"
2102
+ },
2103
+ "terminal": {
2104
+ "$type": "RegexToken",
2105
+ "regex": "[+-]?[0-9]+"
2106
+ },
2107
+ "fragment": false,
2108
+ "hidden": false
2109
+ },
2110
+ {
2111
+ "$type": "TerminalRule",
2112
+ "hidden": true,
2113
+ "name": "ML_COMMENT",
2114
+ "terminal": {
2115
+ "$type": "RegexToken",
2116
+ "regex": "\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/"
2117
+ },
2118
+ "fragment": false
2119
+ },
2120
+ {
2121
+ "$type": "TerminalRule",
2122
+ "hidden": true,
2123
+ "name": "SL_COMMENT",
2124
+ "terminal": {
2125
+ "$type": "RegexToken",
2126
+ "regex": "\\\\/\\\\/[^\\\\n\\\\r]*"
2127
+ },
2128
+ "fragment": false
2129
+ }
2130
+ ],
2131
+ "types": [
2132
+ {
2133
+ "$type": "Type",
2134
+ "typeAlternatives": [
2135
+ {
2136
+ "$type": "AtomType",
2137
+ "refType": {
2138
+ "$refText": "FunctionParam"
2139
+ },
2140
+ "isArray": false,
2141
+ "isRef": false
2142
+ },
2143
+ {
2144
+ "$type": "AtomType",
2145
+ "refType": {
2146
+ "$refText": "DataModelField"
2147
+ },
2148
+ "isArray": false,
2149
+ "isRef": false
2150
+ },
2151
+ {
2152
+ "$type": "AtomType",
2153
+ "refType": {
2154
+ "$refText": "EnumField"
2155
+ },
2156
+ "isArray": false,
2157
+ "isRef": false
2158
+ }
2159
+ ],
2160
+ "name": "ReferenceTarget"
2161
+ },
2162
+ {
2163
+ "$type": "Type",
2164
+ "typeAlternatives": [
2165
+ {
2166
+ "$type": "AtomType",
2167
+ "refType": {
2168
+ "$refText": "DataModel"
2169
+ },
2170
+ "isArray": false,
2171
+ "isRef": false
2172
+ },
2173
+ {
2174
+ "$type": "AtomType",
2175
+ "refType": {
2176
+ "$refText": "Enum"
2177
+ },
2178
+ "isArray": false,
2179
+ "isRef": false
2180
+ }
2181
+ ],
2182
+ "name": "TypeDeclaration"
2183
+ }
2184
+ ],
2185
+ "definesHiddenTokens": false,
2186
+ "hiddenTokens": [],
2187
+ "imports": [],
2188
+ "interfaces": [],
2189
+ "usedGrammars": []
2190
+ }`));