@fornari-lanza/domain-design-language-language 0.0.1

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 (35) hide show
  1. package/README.md +24 -0
  2. package/out/domain-design-language-formatter.d.ts +5 -0
  3. package/out/domain-design-language-formatter.js +197 -0
  4. package/out/domain-design-language-formatter.js.map +1 -0
  5. package/out/domain-design-language-module.d.ts +41 -0
  6. package/out/domain-design-language-module.js +50 -0
  7. package/out/domain-design-language-module.js.map +1 -0
  8. package/out/domain-design-language-scope.d.ts +8 -0
  9. package/out/domain-design-language-scope.js +79 -0
  10. package/out/domain-design-language-scope.js.map +1 -0
  11. package/out/domain-design-language-validator.d.ts +39 -0
  12. package/out/domain-design-language-validator.js +468 -0
  13. package/out/domain-design-language-validator.js.map +1 -0
  14. package/out/generated/ast.d.ts +1393 -0
  15. package/out/generated/ast.js +1147 -0
  16. package/out/generated/ast.js.map +1 -0
  17. package/out/generated/grammar.d.ts +6 -0
  18. package/out/generated/grammar.js +3430 -0
  19. package/out/generated/grammar.js.map +1 -0
  20. package/out/generated/module.d.ts +13 -0
  21. package/out/generated/module.js +21 -0
  22. package/out/generated/module.js.map +1 -0
  23. package/out/index.d.ts +5 -0
  24. package/out/index.js +6 -0
  25. package/out/index.js.map +1 -0
  26. package/package.json +49 -0
  27. package/src/domain-design-language-formatter.ts +186 -0
  28. package/src/domain-design-language-module.ts +96 -0
  29. package/src/domain-design-language-scope.ts +132 -0
  30. package/src/domain-design-language-validator.ts +699 -0
  31. package/src/domain-design-language.langium +299 -0
  32. package/src/generated/ast.ts +1737 -0
  33. package/src/generated/grammar.ts +3432 -0
  34. package/src/generated/module.ts +25 -0
  35. package/src/index.ts +5 -0
@@ -0,0 +1,3432 @@
1
+ /******************************************************************************
2
+ * This file was generated by langium-cli 4.0.0.
3
+ * DO NOT EDIT MANUALLY!
4
+ ******************************************************************************/
5
+
6
+ import type { Grammar } from 'langium';
7
+ import { loadGrammarFromJson } from 'langium';
8
+
9
+ let loadedDomainDesignLanguageGrammar: Grammar | undefined;
10
+ export const DomainDesignLanguageGrammar = (): Grammar => loadedDomainDesignLanguageGrammar ?? (loadedDomainDesignLanguageGrammar = loadGrammarFromJson(`{
11
+ "$type": "Grammar",
12
+ "isDeclared": true,
13
+ "name": "DomainDesignLanguage",
14
+ "rules": [
15
+ {
16
+ "$type": "ParserRule",
17
+ "entry": true,
18
+ "name": "DomainModel",
19
+ "definition": {
20
+ "$type": "Group",
21
+ "elements": [
22
+ {
23
+ "$type": "Assignment",
24
+ "feature": "boundedContext",
25
+ "operator": "=",
26
+ "terminal": {
27
+ "$type": "RuleCall",
28
+ "rule": {
29
+ "$ref": "#/rules@1"
30
+ },
31
+ "arguments": []
32
+ },
33
+ "cardinality": "?"
34
+ },
35
+ {
36
+ "$type": "Assignment",
37
+ "feature": "contextMap",
38
+ "operator": "=",
39
+ "terminal": {
40
+ "$type": "RuleCall",
41
+ "rule": {
42
+ "$ref": "#/rules@4"
43
+ },
44
+ "arguments": []
45
+ },
46
+ "cardinality": "?"
47
+ }
48
+ ]
49
+ },
50
+ "fragment": false,
51
+ "parameters": []
52
+ },
53
+ {
54
+ "$type": "ParserRule",
55
+ "name": "BoundedContext",
56
+ "definition": {
57
+ "$type": "Group",
58
+ "elements": [
59
+ {
60
+ "$type": "Keyword",
61
+ "value": "BoundedContext"
62
+ },
63
+ {
64
+ "$type": "Assignment",
65
+ "feature": "name",
66
+ "operator": "=",
67
+ "terminal": {
68
+ "$type": "RuleCall",
69
+ "rule": {
70
+ "$ref": "#/rules@53"
71
+ },
72
+ "arguments": []
73
+ }
74
+ },
75
+ {
76
+ "$type": "Keyword",
77
+ "value": "{"
78
+ },
79
+ {
80
+ "$type": "Assignment",
81
+ "feature": "description",
82
+ "operator": "=",
83
+ "terminal": {
84
+ "$type": "RuleCall",
85
+ "rule": {
86
+ "$ref": "#/rules@55"
87
+ },
88
+ "arguments": []
89
+ }
90
+ },
91
+ {
92
+ "$type": "Assignment",
93
+ "feature": "ubiquitousLanguage",
94
+ "operator": "=",
95
+ "terminal": {
96
+ "$type": "RuleCall",
97
+ "rule": {
98
+ "$ref": "#/rules@2"
99
+ },
100
+ "arguments": []
101
+ }
102
+ },
103
+ {
104
+ "$type": "Assignment",
105
+ "feature": "aggregates",
106
+ "operator": "+=",
107
+ "terminal": {
108
+ "$type": "RuleCall",
109
+ "rule": {
110
+ "$ref": "#/rules@10"
111
+ },
112
+ "arguments": []
113
+ },
114
+ "cardinality": "*"
115
+ },
116
+ {
117
+ "$type": "Assignment",
118
+ "feature": "domainServices",
119
+ "operator": "+=",
120
+ "terminal": {
121
+ "$type": "RuleCall",
122
+ "rule": {
123
+ "$ref": "#/rules@23"
124
+ },
125
+ "arguments": []
126
+ },
127
+ "cardinality": "*"
128
+ },
129
+ {
130
+ "$type": "Assignment",
131
+ "feature": "ports",
132
+ "operator": "+=",
133
+ "terminal": {
134
+ "$type": "RuleCall",
135
+ "rule": {
136
+ "$ref": "#/rules@26"
137
+ },
138
+ "arguments": []
139
+ },
140
+ "cardinality": "*"
141
+ },
142
+ {
143
+ "$type": "Assignment",
144
+ "feature": "commands",
145
+ "operator": "+=",
146
+ "terminal": {
147
+ "$type": "RuleCall",
148
+ "rule": {
149
+ "$ref": "#/rules@27"
150
+ },
151
+ "arguments": []
152
+ },
153
+ "cardinality": "*"
154
+ },
155
+ {
156
+ "$type": "Assignment",
157
+ "feature": "eventStorming",
158
+ "operator": "=",
159
+ "terminal": {
160
+ "$type": "RuleCall",
161
+ "rule": {
162
+ "$ref": "#/rules@31"
163
+ },
164
+ "arguments": []
165
+ },
166
+ "cardinality": "?"
167
+ },
168
+ {
169
+ "$type": "Keyword",
170
+ "value": "}"
171
+ }
172
+ ]
173
+ },
174
+ "entry": false,
175
+ "fragment": false,
176
+ "parameters": []
177
+ },
178
+ {
179
+ "$type": "ParserRule",
180
+ "name": "UbiquitousLanguageDeclaration",
181
+ "definition": {
182
+ "$type": "Group",
183
+ "elements": [
184
+ {
185
+ "$type": "Keyword",
186
+ "value": "UbiquitousLanguage"
187
+ },
188
+ {
189
+ "$type": "Keyword",
190
+ "value": "{"
191
+ },
192
+ {
193
+ "$type": "Assignment",
194
+ "feature": "terms",
195
+ "operator": "+=",
196
+ "terminal": {
197
+ "$type": "RuleCall",
198
+ "rule": {
199
+ "$ref": "#/rules@3"
200
+ },
201
+ "arguments": []
202
+ },
203
+ "cardinality": "*"
204
+ },
205
+ {
206
+ "$type": "Keyword",
207
+ "value": "}"
208
+ }
209
+ ]
210
+ },
211
+ "entry": false,
212
+ "fragment": false,
213
+ "parameters": []
214
+ },
215
+ {
216
+ "$type": "ParserRule",
217
+ "name": "Term",
218
+ "definition": {
219
+ "$type": "Group",
220
+ "elements": [
221
+ {
222
+ "$type": "Assignment",
223
+ "feature": "name",
224
+ "operator": "=",
225
+ "terminal": {
226
+ "$type": "RuleCall",
227
+ "rule": {
228
+ "$ref": "#/rules@53"
229
+ },
230
+ "arguments": []
231
+ }
232
+ },
233
+ {
234
+ "$type": "Keyword",
235
+ "value": "{"
236
+ },
237
+ {
238
+ "$type": "Keyword",
239
+ "value": "definition:"
240
+ },
241
+ {
242
+ "$type": "Assignment",
243
+ "feature": "definition",
244
+ "operator": "=",
245
+ "terminal": {
246
+ "$type": "RuleCall",
247
+ "rule": {
248
+ "$ref": "#/rules@55"
249
+ },
250
+ "arguments": []
251
+ }
252
+ },
253
+ {
254
+ "$type": "Group",
255
+ "elements": [
256
+ {
257
+ "$type": "Keyword",
258
+ "value": "aliases:"
259
+ },
260
+ {
261
+ "$type": "Keyword",
262
+ "value": "["
263
+ },
264
+ {
265
+ "$type": "Group",
266
+ "elements": [
267
+ {
268
+ "$type": "Assignment",
269
+ "feature": "aliases",
270
+ "operator": "+=",
271
+ "terminal": {
272
+ "$type": "RuleCall",
273
+ "rule": {
274
+ "$ref": "#/rules@55"
275
+ },
276
+ "arguments": []
277
+ }
278
+ },
279
+ {
280
+ "$type": "Group",
281
+ "elements": [
282
+ {
283
+ "$type": "Keyword",
284
+ "value": ","
285
+ },
286
+ {
287
+ "$type": "Assignment",
288
+ "feature": "aliases",
289
+ "operator": "+=",
290
+ "terminal": {
291
+ "$type": "RuleCall",
292
+ "rule": {
293
+ "$ref": "#/rules@55"
294
+ },
295
+ "arguments": []
296
+ }
297
+ }
298
+ ],
299
+ "cardinality": "*"
300
+ }
301
+ ],
302
+ "cardinality": "?"
303
+ },
304
+ {
305
+ "$type": "Keyword",
306
+ "value": "]"
307
+ }
308
+ ],
309
+ "cardinality": "?"
310
+ },
311
+ {
312
+ "$type": "Keyword",
313
+ "value": "}"
314
+ }
315
+ ]
316
+ },
317
+ "entry": false,
318
+ "fragment": false,
319
+ "parameters": []
320
+ },
321
+ {
322
+ "$type": "ParserRule",
323
+ "name": "ContextMap",
324
+ "definition": {
325
+ "$type": "Group",
326
+ "elements": [
327
+ {
328
+ "$type": "Keyword",
329
+ "value": "ContextMap"
330
+ },
331
+ {
332
+ "$type": "Keyword",
333
+ "value": "{"
334
+ },
335
+ {
336
+ "$type": "Assignment",
337
+ "feature": "relationships",
338
+ "operator": "+=",
339
+ "terminal": {
340
+ "$type": "RuleCall",
341
+ "rule": {
342
+ "$ref": "#/rules@5"
343
+ },
344
+ "arguments": []
345
+ },
346
+ "cardinality": "*"
347
+ },
348
+ {
349
+ "$type": "Keyword",
350
+ "value": "}"
351
+ }
352
+ ]
353
+ },
354
+ "entry": false,
355
+ "fragment": false,
356
+ "parameters": []
357
+ },
358
+ {
359
+ "$type": "ParserRule",
360
+ "name": "Relationship",
361
+ "definition": {
362
+ "$type": "Alternatives",
363
+ "elements": [
364
+ {
365
+ "$type": "RuleCall",
366
+ "rule": {
367
+ "$ref": "#/rules@6"
368
+ },
369
+ "arguments": []
370
+ },
371
+ {
372
+ "$type": "RuleCall",
373
+ "rule": {
374
+ "$ref": "#/rules@9"
375
+ },
376
+ "arguments": []
377
+ }
378
+ ]
379
+ },
380
+ "entry": false,
381
+ "fragment": false,
382
+ "parameters": []
383
+ },
384
+ {
385
+ "$type": "ParserRule",
386
+ "name": "AsymmetricRelationship",
387
+ "definition": {
388
+ "$type": "Group",
389
+ "elements": [
390
+ {
391
+ "$type": "Keyword",
392
+ "value": "Relationship"
393
+ },
394
+ {
395
+ "$type": "Keyword",
396
+ "value": "{"
397
+ },
398
+ {
399
+ "$type": "Keyword",
400
+ "value": "upstream:"
401
+ },
402
+ {
403
+ "$type": "Assignment",
404
+ "feature": "upstream",
405
+ "operator": "=",
406
+ "terminal": {
407
+ "$type": "CrossReference",
408
+ "type": {
409
+ "$ref": "#/rules@1"
410
+ },
411
+ "terminal": {
412
+ "$type": "RuleCall",
413
+ "rule": {
414
+ "$ref": "#/rules@53"
415
+ },
416
+ "arguments": []
417
+ },
418
+ "deprecatedSyntax": false,
419
+ "isMulti": false
420
+ }
421
+ },
422
+ {
423
+ "$type": "Group",
424
+ "elements": [
425
+ {
426
+ "$type": "Keyword",
427
+ "value": "["
428
+ },
429
+ {
430
+ "$type": "Assignment",
431
+ "feature": "upstreamRoles",
432
+ "operator": "+=",
433
+ "terminal": {
434
+ "$type": "RuleCall",
435
+ "rule": {
436
+ "$ref": "#/rules@7"
437
+ },
438
+ "arguments": []
439
+ }
440
+ },
441
+ {
442
+ "$type": "Group",
443
+ "elements": [
444
+ {
445
+ "$type": "Keyword",
446
+ "value": ","
447
+ },
448
+ {
449
+ "$type": "Assignment",
450
+ "feature": "upstreamRoles",
451
+ "operator": "+=",
452
+ "terminal": {
453
+ "$type": "RuleCall",
454
+ "rule": {
455
+ "$ref": "#/rules@7"
456
+ },
457
+ "arguments": []
458
+ }
459
+ }
460
+ ],
461
+ "cardinality": "?"
462
+ },
463
+ {
464
+ "$type": "Keyword",
465
+ "value": "]"
466
+ }
467
+ ],
468
+ "cardinality": "?"
469
+ },
470
+ {
471
+ "$type": "Keyword",
472
+ "value": "downstream:"
473
+ },
474
+ {
475
+ "$type": "Assignment",
476
+ "feature": "downstream",
477
+ "operator": "=",
478
+ "terminal": {
479
+ "$type": "CrossReference",
480
+ "type": {
481
+ "$ref": "#/rules@1"
482
+ },
483
+ "terminal": {
484
+ "$type": "RuleCall",
485
+ "rule": {
486
+ "$ref": "#/rules@53"
487
+ },
488
+ "arguments": []
489
+ },
490
+ "deprecatedSyntax": false,
491
+ "isMulti": false
492
+ }
493
+ },
494
+ {
495
+ "$type": "Group",
496
+ "elements": [
497
+ {
498
+ "$type": "Keyword",
499
+ "value": "["
500
+ },
501
+ {
502
+ "$type": "Assignment",
503
+ "feature": "downstreamRole",
504
+ "operator": "=",
505
+ "terminal": {
506
+ "$type": "RuleCall",
507
+ "rule": {
508
+ "$ref": "#/rules@8"
509
+ },
510
+ "arguments": []
511
+ }
512
+ },
513
+ {
514
+ "$type": "Keyword",
515
+ "value": "]"
516
+ }
517
+ ],
518
+ "cardinality": "?"
519
+ },
520
+ {
521
+ "$type": "Assignment",
522
+ "feature": "customerSupplier",
523
+ "operator": "?=",
524
+ "terminal": {
525
+ "$type": "Keyword",
526
+ "value": "Customer/Supplier"
527
+ },
528
+ "cardinality": "?"
529
+ },
530
+ {
531
+ "$type": "Assignment",
532
+ "feature": "description",
533
+ "operator": "=",
534
+ "terminal": {
535
+ "$type": "RuleCall",
536
+ "rule": {
537
+ "$ref": "#/rules@55"
538
+ },
539
+ "arguments": []
540
+ },
541
+ "cardinality": "?"
542
+ },
543
+ {
544
+ "$type": "Keyword",
545
+ "value": "}"
546
+ }
547
+ ]
548
+ },
549
+ "entry": false,
550
+ "fragment": false,
551
+ "parameters": []
552
+ },
553
+ {
554
+ "$type": "ParserRule",
555
+ "name": "UpstreamRole",
556
+ "dataType": "string",
557
+ "definition": {
558
+ "$type": "Alternatives",
559
+ "elements": [
560
+ {
561
+ "$type": "Keyword",
562
+ "value": "OpenHostService"
563
+ },
564
+ {
565
+ "$type": "Keyword",
566
+ "value": "PublishedLanguage"
567
+ }
568
+ ]
569
+ },
570
+ "entry": false,
571
+ "fragment": false,
572
+ "parameters": []
573
+ },
574
+ {
575
+ "$type": "ParserRule",
576
+ "name": "DownstreamRole",
577
+ "dataType": "string",
578
+ "definition": {
579
+ "$type": "Alternatives",
580
+ "elements": [
581
+ {
582
+ "$type": "Keyword",
583
+ "value": "AntiCorruptionLayer"
584
+ },
585
+ {
586
+ "$type": "Keyword",
587
+ "value": "Conformist"
588
+ }
589
+ ]
590
+ },
591
+ "entry": false,
592
+ "fragment": false,
593
+ "parameters": []
594
+ },
595
+ {
596
+ "$type": "ParserRule",
597
+ "name": "SymmetricRelationship",
598
+ "definition": {
599
+ "$type": "Group",
600
+ "elements": [
601
+ {
602
+ "$type": "Keyword",
603
+ "value": "Relationship"
604
+ },
605
+ {
606
+ "$type": "Keyword",
607
+ "value": "{"
608
+ },
609
+ {
610
+ "$type": "Assignment",
611
+ "feature": "type",
612
+ "operator": "=",
613
+ "terminal": {
614
+ "$type": "Alternatives",
615
+ "elements": [
616
+ {
617
+ "$type": "Keyword",
618
+ "value": "Partnership"
619
+ },
620
+ {
621
+ "$type": "Keyword",
622
+ "value": "SharedKernel"
623
+ }
624
+ ]
625
+ }
626
+ },
627
+ {
628
+ "$type": "Keyword",
629
+ "value": "between"
630
+ },
631
+ {
632
+ "$type": "Assignment",
633
+ "feature": "participant1",
634
+ "operator": "=",
635
+ "terminal": {
636
+ "$type": "CrossReference",
637
+ "type": {
638
+ "$ref": "#/rules@1"
639
+ },
640
+ "terminal": {
641
+ "$type": "RuleCall",
642
+ "rule": {
643
+ "$ref": "#/rules@53"
644
+ },
645
+ "arguments": []
646
+ },
647
+ "deprecatedSyntax": false,
648
+ "isMulti": false
649
+ }
650
+ },
651
+ {
652
+ "$type": "Keyword",
653
+ "value": "and"
654
+ },
655
+ {
656
+ "$type": "Assignment",
657
+ "feature": "participant2",
658
+ "operator": "=",
659
+ "terminal": {
660
+ "$type": "CrossReference",
661
+ "type": {
662
+ "$ref": "#/rules@1"
663
+ },
664
+ "terminal": {
665
+ "$type": "RuleCall",
666
+ "rule": {
667
+ "$ref": "#/rules@53"
668
+ },
669
+ "arguments": []
670
+ },
671
+ "deprecatedSyntax": false,
672
+ "isMulti": false
673
+ }
674
+ },
675
+ {
676
+ "$type": "Assignment",
677
+ "feature": "description",
678
+ "operator": "=",
679
+ "terminal": {
680
+ "$type": "RuleCall",
681
+ "rule": {
682
+ "$ref": "#/rules@55"
683
+ },
684
+ "arguments": []
685
+ },
686
+ "cardinality": "?"
687
+ },
688
+ {
689
+ "$type": "Keyword",
690
+ "value": "}"
691
+ }
692
+ ]
693
+ },
694
+ "entry": false,
695
+ "fragment": false,
696
+ "parameters": []
697
+ },
698
+ {
699
+ "$type": "ParserRule",
700
+ "name": "AggregateRoot",
701
+ "definition": {
702
+ "$type": "Group",
703
+ "elements": [
704
+ {
705
+ "$type": "Keyword",
706
+ "value": "AggregateRoot"
707
+ },
708
+ {
709
+ "$type": "Assignment",
710
+ "feature": "name",
711
+ "operator": "=",
712
+ "terminal": {
713
+ "$type": "RuleCall",
714
+ "rule": {
715
+ "$ref": "#/rules@53"
716
+ },
717
+ "arguments": []
718
+ }
719
+ },
720
+ {
721
+ "$type": "Keyword",
722
+ "value": "{"
723
+ },
724
+ {
725
+ "$type": "Assignment",
726
+ "feature": "description",
727
+ "operator": "=",
728
+ "terminal": {
729
+ "$type": "RuleCall",
730
+ "rule": {
731
+ "$ref": "#/rules@55"
732
+ },
733
+ "arguments": []
734
+ }
735
+ },
736
+ {
737
+ "$type": "Group",
738
+ "elements": [
739
+ {
740
+ "$type": "Keyword",
741
+ "value": "enforcedInvariants:"
742
+ },
743
+ {
744
+ "$type": "Keyword",
745
+ "value": "["
746
+ },
747
+ {
748
+ "$type": "Group",
749
+ "elements": [
750
+ {
751
+ "$type": "Assignment",
752
+ "feature": "enforcedInvariants",
753
+ "operator": "+=",
754
+ "terminal": {
755
+ "$type": "RuleCall",
756
+ "rule": {
757
+ "$ref": "#/rules@55"
758
+ },
759
+ "arguments": []
760
+ }
761
+ },
762
+ {
763
+ "$type": "Group",
764
+ "elements": [
765
+ {
766
+ "$type": "Keyword",
767
+ "value": ","
768
+ },
769
+ {
770
+ "$type": "Assignment",
771
+ "feature": "enforcedInvariants",
772
+ "operator": "+=",
773
+ "terminal": {
774
+ "$type": "RuleCall",
775
+ "rule": {
776
+ "$ref": "#/rules@55"
777
+ },
778
+ "arguments": []
779
+ }
780
+ }
781
+ ],
782
+ "cardinality": "*"
783
+ }
784
+ ],
785
+ "cardinality": "?"
786
+ },
787
+ {
788
+ "$type": "Keyword",
789
+ "value": "]"
790
+ }
791
+ ],
792
+ "cardinality": "?"
793
+ },
794
+ {
795
+ "$type": "Group",
796
+ "elements": [
797
+ {
798
+ "$type": "Keyword",
799
+ "value": "correctivePolicies:"
800
+ },
801
+ {
802
+ "$type": "Keyword",
803
+ "value": "["
804
+ },
805
+ {
806
+ "$type": "Group",
807
+ "elements": [
808
+ {
809
+ "$type": "Assignment",
810
+ "feature": "correctivePolicies",
811
+ "operator": "+=",
812
+ "terminal": {
813
+ "$type": "RuleCall",
814
+ "rule": {
815
+ "$ref": "#/rules@55"
816
+ },
817
+ "arguments": []
818
+ }
819
+ },
820
+ {
821
+ "$type": "Group",
822
+ "elements": [
823
+ {
824
+ "$type": "Keyword",
825
+ "value": ","
826
+ },
827
+ {
828
+ "$type": "Assignment",
829
+ "feature": "correctivePolicies",
830
+ "operator": "+=",
831
+ "terminal": {
832
+ "$type": "RuleCall",
833
+ "rule": {
834
+ "$ref": "#/rules@55"
835
+ },
836
+ "arguments": []
837
+ }
838
+ }
839
+ ],
840
+ "cardinality": "*"
841
+ }
842
+ ],
843
+ "cardinality": "?"
844
+ },
845
+ {
846
+ "$type": "Keyword",
847
+ "value": "]"
848
+ }
849
+ ],
850
+ "cardinality": "?"
851
+ },
852
+ {
853
+ "$type": "Assignment",
854
+ "feature": "id",
855
+ "operator": "=",
856
+ "terminal": {
857
+ "$type": "RuleCall",
858
+ "rule": {
859
+ "$ref": "#/rules@44"
860
+ },
861
+ "arguments": []
862
+ }
863
+ },
864
+ {
865
+ "$type": "Assignment",
866
+ "feature": "attributes",
867
+ "operator": "+=",
868
+ "terminal": {
869
+ "$type": "RuleCall",
870
+ "rule": {
871
+ "$ref": "#/rules@11"
872
+ },
873
+ "arguments": []
874
+ },
875
+ "cardinality": "*"
876
+ },
877
+ {
878
+ "$type": "Assignment",
879
+ "feature": "methods",
880
+ "operator": "=",
881
+ "terminal": {
882
+ "$type": "RuleCall",
883
+ "rule": {
884
+ "$ref": "#/rules@12"
885
+ },
886
+ "arguments": []
887
+ },
888
+ "cardinality": "?"
889
+ },
890
+ {
891
+ "$type": "Assignment",
892
+ "feature": "events",
893
+ "operator": "=",
894
+ "terminal": {
895
+ "$type": "RuleCall",
896
+ "rule": {
897
+ "$ref": "#/rules@20"
898
+ },
899
+ "arguments": []
900
+ },
901
+ "cardinality": "?"
902
+ },
903
+ {
904
+ "$type": "Assignment",
905
+ "feature": "exceptions",
906
+ "operator": "=",
907
+ "terminal": {
908
+ "$type": "RuleCall",
909
+ "rule": {
910
+ "$ref": "#/rules@15"
911
+ },
912
+ "arguments": []
913
+ },
914
+ "cardinality": "?"
915
+ },
916
+ {
917
+ "$type": "Keyword",
918
+ "value": "}"
919
+ }
920
+ ]
921
+ },
922
+ "entry": false,
923
+ "fragment": false,
924
+ "parameters": []
925
+ },
926
+ {
927
+ "$type": "ParserRule",
928
+ "name": "AggregateAttribute",
929
+ "definition": {
930
+ "$type": "Group",
931
+ "elements": [
932
+ {
933
+ "$type": "Assignment",
934
+ "feature": "many",
935
+ "operator": "?=",
936
+ "terminal": {
937
+ "$type": "Keyword",
938
+ "value": "many"
939
+ },
940
+ "cardinality": "?"
941
+ },
942
+ {
943
+ "$type": "Assignment",
944
+ "feature": "optional",
945
+ "operator": "?=",
946
+ "terminal": {
947
+ "$type": "Keyword",
948
+ "value": "optional"
949
+ },
950
+ "cardinality": "?"
951
+ },
952
+ {
953
+ "$type": "Assignment",
954
+ "feature": "type",
955
+ "operator": "=",
956
+ "terminal": {
957
+ "$type": "Alternatives",
958
+ "elements": [
959
+ {
960
+ "$type": "RuleCall",
961
+ "rule": {
962
+ "$ref": "#/rules@19"
963
+ },
964
+ "arguments": []
965
+ },
966
+ {
967
+ "$type": "RuleCall",
968
+ "rule": {
969
+ "$ref": "#/rules@17"
970
+ },
971
+ "arguments": []
972
+ },
973
+ {
974
+ "$type": "RuleCall",
975
+ "rule": {
976
+ "$ref": "#/rules@46"
977
+ },
978
+ "arguments": []
979
+ }
980
+ ]
981
+ }
982
+ }
983
+ ]
984
+ },
985
+ "entry": false,
986
+ "fragment": false,
987
+ "parameters": []
988
+ },
989
+ {
990
+ "$type": "ParserRule",
991
+ "name": "MethodsDeclaration",
992
+ "definition": {
993
+ "$type": "Group",
994
+ "elements": [
995
+ {
996
+ "$type": "Keyword",
997
+ "value": "Methods"
998
+ },
999
+ {
1000
+ "$type": "Keyword",
1001
+ "value": "{"
1002
+ },
1003
+ {
1004
+ "$type": "Assignment",
1005
+ "feature": "methods",
1006
+ "operator": "+=",
1007
+ "terminal": {
1008
+ "$type": "RuleCall",
1009
+ "rule": {
1010
+ "$ref": "#/rules@13"
1011
+ },
1012
+ "arguments": []
1013
+ },
1014
+ "cardinality": "*"
1015
+ },
1016
+ {
1017
+ "$type": "Keyword",
1018
+ "value": "}"
1019
+ }
1020
+ ]
1021
+ },
1022
+ "entry": false,
1023
+ "fragment": false,
1024
+ "parameters": []
1025
+ },
1026
+ {
1027
+ "$type": "ParserRule",
1028
+ "name": "Method",
1029
+ "definition": {
1030
+ "$type": "Group",
1031
+ "elements": [
1032
+ {
1033
+ "$type": "Assignment",
1034
+ "feature": "name",
1035
+ "operator": "=",
1036
+ "terminal": {
1037
+ "$type": "RuleCall",
1038
+ "rule": {
1039
+ "$ref": "#/rules@53"
1040
+ },
1041
+ "arguments": []
1042
+ }
1043
+ },
1044
+ {
1045
+ "$type": "Keyword",
1046
+ "value": "("
1047
+ },
1048
+ {
1049
+ "$type": "Assignment",
1050
+ "feature": "input",
1051
+ "operator": "=",
1052
+ "terminal": {
1053
+ "$type": "RuleCall",
1054
+ "rule": {
1055
+ "$ref": "#/rules@14"
1056
+ },
1057
+ "arguments": []
1058
+ },
1059
+ "cardinality": "?"
1060
+ },
1061
+ {
1062
+ "$type": "Keyword",
1063
+ "value": ")"
1064
+ },
1065
+ {
1066
+ "$type": "Keyword",
1067
+ "value": "{"
1068
+ },
1069
+ {
1070
+ "$type": "Assignment",
1071
+ "feature": "description",
1072
+ "operator": "=",
1073
+ "terminal": {
1074
+ "$type": "RuleCall",
1075
+ "rule": {
1076
+ "$ref": "#/rules@55"
1077
+ },
1078
+ "arguments": []
1079
+ },
1080
+ "cardinality": "?"
1081
+ },
1082
+ {
1083
+ "$type": "Keyword",
1084
+ "value": "}"
1085
+ }
1086
+ ]
1087
+ },
1088
+ "entry": false,
1089
+ "fragment": false,
1090
+ "parameters": []
1091
+ },
1092
+ {
1093
+ "$type": "ParserRule",
1094
+ "name": "MethodInput",
1095
+ "definition": {
1096
+ "$type": "Group",
1097
+ "elements": [
1098
+ {
1099
+ "$type": "Assignment",
1100
+ "feature": "attributes",
1101
+ "operator": "+=",
1102
+ "terminal": {
1103
+ "$type": "RuleCall",
1104
+ "rule": {
1105
+ "$ref": "#/rules@47"
1106
+ },
1107
+ "arguments": []
1108
+ }
1109
+ },
1110
+ {
1111
+ "$type": "Group",
1112
+ "elements": [
1113
+ {
1114
+ "$type": "Keyword",
1115
+ "value": ","
1116
+ },
1117
+ {
1118
+ "$type": "Assignment",
1119
+ "feature": "attributes",
1120
+ "operator": "+=",
1121
+ "terminal": {
1122
+ "$type": "RuleCall",
1123
+ "rule": {
1124
+ "$ref": "#/rules@47"
1125
+ },
1126
+ "arguments": []
1127
+ }
1128
+ }
1129
+ ],
1130
+ "cardinality": "*"
1131
+ }
1132
+ ]
1133
+ },
1134
+ "entry": false,
1135
+ "fragment": false,
1136
+ "parameters": []
1137
+ },
1138
+ {
1139
+ "$type": "ParserRule",
1140
+ "name": "ExceptionsDeclaration",
1141
+ "definition": {
1142
+ "$type": "Group",
1143
+ "elements": [
1144
+ {
1145
+ "$type": "Keyword",
1146
+ "value": "DomainExceptions"
1147
+ },
1148
+ {
1149
+ "$type": "Keyword",
1150
+ "value": "{"
1151
+ },
1152
+ {
1153
+ "$type": "Assignment",
1154
+ "feature": "exceptions",
1155
+ "operator": "+=",
1156
+ "terminal": {
1157
+ "$type": "RuleCall",
1158
+ "rule": {
1159
+ "$ref": "#/rules@16"
1160
+ },
1161
+ "arguments": []
1162
+ },
1163
+ "cardinality": "*"
1164
+ },
1165
+ {
1166
+ "$type": "Keyword",
1167
+ "value": "}"
1168
+ }
1169
+ ]
1170
+ },
1171
+ "entry": false,
1172
+ "fragment": false,
1173
+ "parameters": []
1174
+ },
1175
+ {
1176
+ "$type": "ParserRule",
1177
+ "name": "DomainException",
1178
+ "definition": {
1179
+ "$type": "Group",
1180
+ "elements": [
1181
+ {
1182
+ "$type": "Assignment",
1183
+ "feature": "name",
1184
+ "operator": "=",
1185
+ "terminal": {
1186
+ "$type": "RuleCall",
1187
+ "rule": {
1188
+ "$ref": "#/rules@53"
1189
+ },
1190
+ "arguments": []
1191
+ }
1192
+ },
1193
+ {
1194
+ "$type": "Assignment",
1195
+ "feature": "description",
1196
+ "operator": "=",
1197
+ "terminal": {
1198
+ "$type": "RuleCall",
1199
+ "rule": {
1200
+ "$ref": "#/rules@55"
1201
+ },
1202
+ "arguments": []
1203
+ },
1204
+ "cardinality": "?"
1205
+ }
1206
+ ]
1207
+ },
1208
+ "entry": false,
1209
+ "fragment": false,
1210
+ "parameters": []
1211
+ },
1212
+ {
1213
+ "$type": "ParserRule",
1214
+ "name": "Entity",
1215
+ "definition": {
1216
+ "$type": "Group",
1217
+ "elements": [
1218
+ {
1219
+ "$type": "Keyword",
1220
+ "value": "Entity"
1221
+ },
1222
+ {
1223
+ "$type": "Assignment",
1224
+ "feature": "name",
1225
+ "operator": "=",
1226
+ "terminal": {
1227
+ "$type": "RuleCall",
1228
+ "rule": {
1229
+ "$ref": "#/rules@53"
1230
+ },
1231
+ "arguments": []
1232
+ }
1233
+ },
1234
+ {
1235
+ "$type": "Keyword",
1236
+ "value": "{"
1237
+ },
1238
+ {
1239
+ "$type": "Assignment",
1240
+ "feature": "description",
1241
+ "operator": "=",
1242
+ "terminal": {
1243
+ "$type": "RuleCall",
1244
+ "rule": {
1245
+ "$ref": "#/rules@55"
1246
+ },
1247
+ "arguments": []
1248
+ }
1249
+ },
1250
+ {
1251
+ "$type": "Assignment",
1252
+ "feature": "id",
1253
+ "operator": "=",
1254
+ "terminal": {
1255
+ "$type": "RuleCall",
1256
+ "rule": {
1257
+ "$ref": "#/rules@44"
1258
+ },
1259
+ "arguments": []
1260
+ }
1261
+ },
1262
+ {
1263
+ "$type": "Assignment",
1264
+ "feature": "attributes",
1265
+ "operator": "+=",
1266
+ "terminal": {
1267
+ "$type": "RuleCall",
1268
+ "rule": {
1269
+ "$ref": "#/rules@18"
1270
+ },
1271
+ "arguments": []
1272
+ },
1273
+ "cardinality": "*"
1274
+ },
1275
+ {
1276
+ "$type": "Keyword",
1277
+ "value": "}"
1278
+ }
1279
+ ]
1280
+ },
1281
+ "entry": false,
1282
+ "fragment": false,
1283
+ "parameters": []
1284
+ },
1285
+ {
1286
+ "$type": "ParserRule",
1287
+ "name": "EntityAttribute",
1288
+ "definition": {
1289
+ "$type": "Group",
1290
+ "elements": [
1291
+ {
1292
+ "$type": "Assignment",
1293
+ "feature": "many",
1294
+ "operator": "?=",
1295
+ "terminal": {
1296
+ "$type": "Keyword",
1297
+ "value": "many"
1298
+ },
1299
+ "cardinality": "?"
1300
+ },
1301
+ {
1302
+ "$type": "Assignment",
1303
+ "feature": "optional",
1304
+ "operator": "?=",
1305
+ "terminal": {
1306
+ "$type": "Keyword",
1307
+ "value": "optional"
1308
+ },
1309
+ "cardinality": "?"
1310
+ },
1311
+ {
1312
+ "$type": "Assignment",
1313
+ "feature": "type",
1314
+ "operator": "=",
1315
+ "terminal": {
1316
+ "$type": "Alternatives",
1317
+ "elements": [
1318
+ {
1319
+ "$type": "RuleCall",
1320
+ "rule": {
1321
+ "$ref": "#/rules@19"
1322
+ },
1323
+ "arguments": []
1324
+ },
1325
+ {
1326
+ "$type": "RuleCall",
1327
+ "rule": {
1328
+ "$ref": "#/rules@46"
1329
+ },
1330
+ "arguments": []
1331
+ }
1332
+ ]
1333
+ }
1334
+ }
1335
+ ]
1336
+ },
1337
+ "entry": false,
1338
+ "fragment": false,
1339
+ "parameters": []
1340
+ },
1341
+ {
1342
+ "$type": "ParserRule",
1343
+ "name": "ValueObject",
1344
+ "definition": {
1345
+ "$type": "Group",
1346
+ "elements": [
1347
+ {
1348
+ "$type": "Keyword",
1349
+ "value": "ValueObject"
1350
+ },
1351
+ {
1352
+ "$type": "Assignment",
1353
+ "feature": "name",
1354
+ "operator": "=",
1355
+ "terminal": {
1356
+ "$type": "RuleCall",
1357
+ "rule": {
1358
+ "$ref": "#/rules@53"
1359
+ },
1360
+ "arguments": []
1361
+ }
1362
+ },
1363
+ {
1364
+ "$type": "Keyword",
1365
+ "value": "{"
1366
+ },
1367
+ {
1368
+ "$type": "Assignment",
1369
+ "feature": "description",
1370
+ "operator": "=",
1371
+ "terminal": {
1372
+ "$type": "RuleCall",
1373
+ "rule": {
1374
+ "$ref": "#/rules@55"
1375
+ },
1376
+ "arguments": []
1377
+ },
1378
+ "cardinality": "?"
1379
+ },
1380
+ {
1381
+ "$type": "Group",
1382
+ "elements": [
1383
+ {
1384
+ "$type": "Keyword",
1385
+ "value": "enforcedInvariants:"
1386
+ },
1387
+ {
1388
+ "$type": "Keyword",
1389
+ "value": "["
1390
+ },
1391
+ {
1392
+ "$type": "Group",
1393
+ "elements": [
1394
+ {
1395
+ "$type": "Assignment",
1396
+ "feature": "enforcedInvariants",
1397
+ "operator": "+=",
1398
+ "terminal": {
1399
+ "$type": "RuleCall",
1400
+ "rule": {
1401
+ "$ref": "#/rules@55"
1402
+ },
1403
+ "arguments": []
1404
+ }
1405
+ },
1406
+ {
1407
+ "$type": "Group",
1408
+ "elements": [
1409
+ {
1410
+ "$type": "Keyword",
1411
+ "value": ","
1412
+ },
1413
+ {
1414
+ "$type": "Assignment",
1415
+ "feature": "enforcedInvariants",
1416
+ "operator": "+=",
1417
+ "terminal": {
1418
+ "$type": "RuleCall",
1419
+ "rule": {
1420
+ "$ref": "#/rules@55"
1421
+ },
1422
+ "arguments": []
1423
+ }
1424
+ }
1425
+ ],
1426
+ "cardinality": "*"
1427
+ }
1428
+ ],
1429
+ "cardinality": "?"
1430
+ },
1431
+ {
1432
+ "$type": "Keyword",
1433
+ "value": "]"
1434
+ }
1435
+ ],
1436
+ "cardinality": "?"
1437
+ },
1438
+ {
1439
+ "$type": "Assignment",
1440
+ "feature": "attributes",
1441
+ "operator": "+=",
1442
+ "terminal": {
1443
+ "$type": "RuleCall",
1444
+ "rule": {
1445
+ "$ref": "#/rules@48"
1446
+ },
1447
+ "arguments": []
1448
+ },
1449
+ "cardinality": "+"
1450
+ },
1451
+ {
1452
+ "$type": "Keyword",
1453
+ "value": "}"
1454
+ }
1455
+ ]
1456
+ },
1457
+ "entry": false,
1458
+ "fragment": false,
1459
+ "parameters": []
1460
+ },
1461
+ {
1462
+ "$type": "ParserRule",
1463
+ "name": "DomainEventsDeclaration",
1464
+ "definition": {
1465
+ "$type": "Group",
1466
+ "elements": [
1467
+ {
1468
+ "$type": "Keyword",
1469
+ "value": "DomainEvents"
1470
+ },
1471
+ {
1472
+ "$type": "Keyword",
1473
+ "value": "{"
1474
+ },
1475
+ {
1476
+ "$type": "Assignment",
1477
+ "feature": "events",
1478
+ "operator": "+=",
1479
+ "terminal": {
1480
+ "$type": "RuleCall",
1481
+ "rule": {
1482
+ "$ref": "#/rules@21"
1483
+ },
1484
+ "arguments": []
1485
+ },
1486
+ "cardinality": "*"
1487
+ },
1488
+ {
1489
+ "$type": "Keyword",
1490
+ "value": "}"
1491
+ }
1492
+ ]
1493
+ },
1494
+ "entry": false,
1495
+ "fragment": false,
1496
+ "parameters": []
1497
+ },
1498
+ {
1499
+ "$type": "ParserRule",
1500
+ "name": "DomainEvent",
1501
+ "definition": {
1502
+ "$type": "Group",
1503
+ "elements": [
1504
+ {
1505
+ "$type": "Assignment",
1506
+ "feature": "name",
1507
+ "operator": "=",
1508
+ "terminal": {
1509
+ "$type": "RuleCall",
1510
+ "rule": {
1511
+ "$ref": "#/rules@53"
1512
+ },
1513
+ "arguments": []
1514
+ }
1515
+ },
1516
+ {
1517
+ "$type": "Keyword",
1518
+ "value": "{"
1519
+ },
1520
+ {
1521
+ "$type": "Assignment",
1522
+ "feature": "description",
1523
+ "operator": "=",
1524
+ "terminal": {
1525
+ "$type": "RuleCall",
1526
+ "rule": {
1527
+ "$ref": "#/rules@55"
1528
+ },
1529
+ "arguments": []
1530
+ },
1531
+ "cardinality": "?"
1532
+ },
1533
+ {
1534
+ "$type": "Assignment",
1535
+ "feature": "payload",
1536
+ "operator": "=",
1537
+ "terminal": {
1538
+ "$type": "RuleCall",
1539
+ "rule": {
1540
+ "$ref": "#/rules@22"
1541
+ },
1542
+ "arguments": []
1543
+ },
1544
+ "cardinality": "?"
1545
+ },
1546
+ {
1547
+ "$type": "Keyword",
1548
+ "value": "}"
1549
+ }
1550
+ ]
1551
+ },
1552
+ "entry": false,
1553
+ "fragment": false,
1554
+ "parameters": []
1555
+ },
1556
+ {
1557
+ "$type": "ParserRule",
1558
+ "name": "Payload",
1559
+ "definition": {
1560
+ "$type": "Group",
1561
+ "elements": [
1562
+ {
1563
+ "$type": "Keyword",
1564
+ "value": "payload:"
1565
+ },
1566
+ {
1567
+ "$type": "Keyword",
1568
+ "value": "{"
1569
+ },
1570
+ {
1571
+ "$type": "Assignment",
1572
+ "feature": "attributes",
1573
+ "operator": "+=",
1574
+ "terminal": {
1575
+ "$type": "RuleCall",
1576
+ "rule": {
1577
+ "$ref": "#/rules@48"
1578
+ },
1579
+ "arguments": []
1580
+ },
1581
+ "cardinality": "+"
1582
+ },
1583
+ {
1584
+ "$type": "Keyword",
1585
+ "value": "}"
1586
+ }
1587
+ ]
1588
+ },
1589
+ "entry": false,
1590
+ "fragment": false,
1591
+ "parameters": []
1592
+ },
1593
+ {
1594
+ "$type": "ParserRule",
1595
+ "name": "DomainService",
1596
+ "definition": {
1597
+ "$type": "Group",
1598
+ "elements": [
1599
+ {
1600
+ "$type": "Keyword",
1601
+ "value": "DomainService"
1602
+ },
1603
+ {
1604
+ "$type": "Assignment",
1605
+ "feature": "name",
1606
+ "operator": "=",
1607
+ "terminal": {
1608
+ "$type": "RuleCall",
1609
+ "rule": {
1610
+ "$ref": "#/rules@53"
1611
+ },
1612
+ "arguments": []
1613
+ }
1614
+ },
1615
+ {
1616
+ "$type": "Keyword",
1617
+ "value": "{"
1618
+ },
1619
+ {
1620
+ "$type": "Assignment",
1621
+ "feature": "description",
1622
+ "operator": "=",
1623
+ "terminal": {
1624
+ "$type": "RuleCall",
1625
+ "rule": {
1626
+ "$ref": "#/rules@55"
1627
+ },
1628
+ "arguments": []
1629
+ }
1630
+ },
1631
+ {
1632
+ "$type": "Keyword",
1633
+ "value": "type:"
1634
+ },
1635
+ {
1636
+ "$type": "Assignment",
1637
+ "feature": "type",
1638
+ "operator": "=",
1639
+ "terminal": {
1640
+ "$type": "Alternatives",
1641
+ "elements": [
1642
+ {
1643
+ "$type": "Keyword",
1644
+ "value": "contract"
1645
+ },
1646
+ {
1647
+ "$type": "Keyword",
1648
+ "value": "coordination"
1649
+ },
1650
+ {
1651
+ "$type": "Keyword",
1652
+ "value": "calculation"
1653
+ }
1654
+ ]
1655
+ }
1656
+ },
1657
+ {
1658
+ "$type": "Assignment",
1659
+ "feature": "input",
1660
+ "operator": "=",
1661
+ "terminal": {
1662
+ "$type": "RuleCall",
1663
+ "rule": {
1664
+ "$ref": "#/rules@24"
1665
+ },
1666
+ "arguments": []
1667
+ },
1668
+ "cardinality": "?"
1669
+ },
1670
+ {
1671
+ "$type": "Assignment",
1672
+ "feature": "response",
1673
+ "operator": "=",
1674
+ "terminal": {
1675
+ "$type": "RuleCall",
1676
+ "rule": {
1677
+ "$ref": "#/rules@25"
1678
+ },
1679
+ "arguments": []
1680
+ },
1681
+ "cardinality": "?"
1682
+ },
1683
+ {
1684
+ "$type": "Keyword",
1685
+ "value": "}"
1686
+ }
1687
+ ]
1688
+ },
1689
+ "entry": false,
1690
+ "fragment": false,
1691
+ "parameters": []
1692
+ },
1693
+ {
1694
+ "$type": "ParserRule",
1695
+ "name": "DomainServiceInput",
1696
+ "definition": {
1697
+ "$type": "Group",
1698
+ "elements": [
1699
+ {
1700
+ "$type": "Keyword",
1701
+ "value": "input:"
1702
+ },
1703
+ {
1704
+ "$type": "Keyword",
1705
+ "value": "{"
1706
+ },
1707
+ {
1708
+ "$type": "Assignment",
1709
+ "feature": "attributes",
1710
+ "operator": "+=",
1711
+ "terminal": {
1712
+ "$type": "RuleCall",
1713
+ "rule": {
1714
+ "$ref": "#/rules@47"
1715
+ },
1716
+ "arguments": []
1717
+ },
1718
+ "cardinality": "+"
1719
+ },
1720
+ {
1721
+ "$type": "Keyword",
1722
+ "value": "}"
1723
+ }
1724
+ ]
1725
+ },
1726
+ "entry": false,
1727
+ "fragment": false,
1728
+ "parameters": []
1729
+ },
1730
+ {
1731
+ "$type": "ParserRule",
1732
+ "name": "DomainServiceResponse",
1733
+ "definition": {
1734
+ "$type": "Group",
1735
+ "elements": [
1736
+ {
1737
+ "$type": "Keyword",
1738
+ "value": "response:"
1739
+ },
1740
+ {
1741
+ "$type": "Keyword",
1742
+ "value": "{"
1743
+ },
1744
+ {
1745
+ "$type": "Assignment",
1746
+ "feature": "attributes",
1747
+ "operator": "+=",
1748
+ "terminal": {
1749
+ "$type": "Alternatives",
1750
+ "elements": [
1751
+ {
1752
+ "$type": "RuleCall",
1753
+ "rule": {
1754
+ "$ref": "#/rules@47"
1755
+ },
1756
+ "arguments": []
1757
+ },
1758
+ {
1759
+ "$type": "RuleCall",
1760
+ "rule": {
1761
+ "$ref": "#/rules@48"
1762
+ },
1763
+ "arguments": []
1764
+ }
1765
+ ]
1766
+ },
1767
+ "cardinality": "+"
1768
+ },
1769
+ {
1770
+ "$type": "Keyword",
1771
+ "value": "}"
1772
+ }
1773
+ ]
1774
+ },
1775
+ "entry": false,
1776
+ "fragment": false,
1777
+ "parameters": []
1778
+ },
1779
+ {
1780
+ "$type": "ParserRule",
1781
+ "name": "Port",
1782
+ "definition": {
1783
+ "$type": "Group",
1784
+ "elements": [
1785
+ {
1786
+ "$type": "Keyword",
1787
+ "value": "Port"
1788
+ },
1789
+ {
1790
+ "$type": "Assignment",
1791
+ "feature": "name",
1792
+ "operator": "=",
1793
+ "terminal": {
1794
+ "$type": "RuleCall",
1795
+ "rule": {
1796
+ "$ref": "#/rules@53"
1797
+ },
1798
+ "arguments": []
1799
+ }
1800
+ },
1801
+ {
1802
+ "$type": "Keyword",
1803
+ "value": "{"
1804
+ },
1805
+ {
1806
+ "$type": "Assignment",
1807
+ "feature": "description",
1808
+ "operator": "=",
1809
+ "terminal": {
1810
+ "$type": "RuleCall",
1811
+ "rule": {
1812
+ "$ref": "#/rules@55"
1813
+ },
1814
+ "arguments": []
1815
+ },
1816
+ "cardinality": "?"
1817
+ },
1818
+ {
1819
+ "$type": "Keyword",
1820
+ "value": "}"
1821
+ }
1822
+ ]
1823
+ },
1824
+ "entry": false,
1825
+ "fragment": false,
1826
+ "parameters": []
1827
+ },
1828
+ {
1829
+ "$type": "ParserRule",
1830
+ "name": "Command",
1831
+ "definition": {
1832
+ "$type": "Group",
1833
+ "elements": [
1834
+ {
1835
+ "$type": "Keyword",
1836
+ "value": "Command"
1837
+ },
1838
+ {
1839
+ "$type": "Assignment",
1840
+ "feature": "name",
1841
+ "operator": "=",
1842
+ "terminal": {
1843
+ "$type": "RuleCall",
1844
+ "rule": {
1845
+ "$ref": "#/rules@53"
1846
+ },
1847
+ "arguments": []
1848
+ }
1849
+ },
1850
+ {
1851
+ "$type": "Keyword",
1852
+ "value": "{"
1853
+ },
1854
+ {
1855
+ "$type": "Assignment",
1856
+ "feature": "description",
1857
+ "operator": "=",
1858
+ "terminal": {
1859
+ "$type": "RuleCall",
1860
+ "rule": {
1861
+ "$ref": "#/rules@55"
1862
+ },
1863
+ "arguments": []
1864
+ },
1865
+ "cardinality": "?"
1866
+ },
1867
+ {
1868
+ "$type": "Assignment",
1869
+ "feature": "input",
1870
+ "operator": "=",
1871
+ "terminal": {
1872
+ "$type": "RuleCall",
1873
+ "rule": {
1874
+ "$ref": "#/rules@28"
1875
+ },
1876
+ "arguments": []
1877
+ },
1878
+ "cardinality": "?"
1879
+ },
1880
+ {
1881
+ "$type": "Assignment",
1882
+ "feature": "response",
1883
+ "operator": "=",
1884
+ "terminal": {
1885
+ "$type": "RuleCall",
1886
+ "rule": {
1887
+ "$ref": "#/rules@29"
1888
+ },
1889
+ "arguments": []
1890
+ },
1891
+ "cardinality": "?"
1892
+ },
1893
+ {
1894
+ "$type": "Keyword",
1895
+ "value": "uses"
1896
+ },
1897
+ {
1898
+ "$type": "Assignment",
1899
+ "feature": "aggregate",
1900
+ "operator": "=",
1901
+ "terminal": {
1902
+ "$type": "CrossReference",
1903
+ "type": {
1904
+ "$ref": "#/rules@10"
1905
+ },
1906
+ "terminal": {
1907
+ "$type": "RuleCall",
1908
+ "rule": {
1909
+ "$ref": "#/rules@51"
1910
+ },
1911
+ "arguments": []
1912
+ },
1913
+ "deprecatedSyntax": false,
1914
+ "isMulti": false
1915
+ }
1916
+ },
1917
+ {
1918
+ "$type": "Keyword",
1919
+ "value": "emits"
1920
+ },
1921
+ {
1922
+ "$type": "Assignment",
1923
+ "feature": "events",
1924
+ "operator": "+=",
1925
+ "terminal": {
1926
+ "$type": "CrossReference",
1927
+ "type": {
1928
+ "$ref": "#/rules@21"
1929
+ },
1930
+ "terminal": {
1931
+ "$type": "RuleCall",
1932
+ "rule": {
1933
+ "$ref": "#/rules@51"
1934
+ },
1935
+ "arguments": []
1936
+ },
1937
+ "deprecatedSyntax": false,
1938
+ "isMulti": false
1939
+ }
1940
+ },
1941
+ {
1942
+ "$type": "Group",
1943
+ "elements": [
1944
+ {
1945
+ "$type": "Keyword",
1946
+ "value": ","
1947
+ },
1948
+ {
1949
+ "$type": "Assignment",
1950
+ "feature": "events",
1951
+ "operator": "+=",
1952
+ "terminal": {
1953
+ "$type": "CrossReference",
1954
+ "type": {
1955
+ "$ref": "#/rules@21"
1956
+ },
1957
+ "terminal": {
1958
+ "$type": "RuleCall",
1959
+ "rule": {
1960
+ "$ref": "#/rules@51"
1961
+ },
1962
+ "arguments": []
1963
+ },
1964
+ "deprecatedSyntax": false,
1965
+ "isMulti": false
1966
+ }
1967
+ }
1968
+ ],
1969
+ "cardinality": "*"
1970
+ },
1971
+ {
1972
+ "$type": "Group",
1973
+ "elements": [
1974
+ {
1975
+ "$type": "Keyword",
1976
+ "value": "uses"
1977
+ },
1978
+ {
1979
+ "$type": "Assignment",
1980
+ "feature": "domainServices",
1981
+ "operator": "+=",
1982
+ "terminal": {
1983
+ "$type": "CrossReference",
1984
+ "type": {
1985
+ "$ref": "#/rules@23"
1986
+ },
1987
+ "terminal": {
1988
+ "$type": "RuleCall",
1989
+ "rule": {
1990
+ "$ref": "#/rules@51"
1991
+ },
1992
+ "arguments": []
1993
+ },
1994
+ "deprecatedSyntax": false,
1995
+ "isMulti": false
1996
+ }
1997
+ },
1998
+ {
1999
+ "$type": "Group",
2000
+ "elements": [
2001
+ {
2002
+ "$type": "Keyword",
2003
+ "value": ","
2004
+ },
2005
+ {
2006
+ "$type": "Assignment",
2007
+ "feature": "domainServices",
2008
+ "operator": "+=",
2009
+ "terminal": {
2010
+ "$type": "CrossReference",
2011
+ "type": {
2012
+ "$ref": "#/rules@23"
2013
+ },
2014
+ "terminal": {
2015
+ "$type": "RuleCall",
2016
+ "rule": {
2017
+ "$ref": "#/rules@51"
2018
+ },
2019
+ "arguments": []
2020
+ },
2021
+ "deprecatedSyntax": false,
2022
+ "isMulti": false
2023
+ }
2024
+ }
2025
+ ],
2026
+ "cardinality": "*"
2027
+ }
2028
+ ],
2029
+ "cardinality": "?"
2030
+ },
2031
+ {
2032
+ "$type": "Group",
2033
+ "elements": [
2034
+ {
2035
+ "$type": "Keyword",
2036
+ "value": "dependencies:"
2037
+ },
2038
+ {
2039
+ "$type": "Keyword",
2040
+ "value": "["
2041
+ },
2042
+ {
2043
+ "$type": "Assignment",
2044
+ "feature": "dependencies",
2045
+ "operator": "+=",
2046
+ "terminal": {
2047
+ "$type": "RuleCall",
2048
+ "rule": {
2049
+ "$ref": "#/rules@30"
2050
+ },
2051
+ "arguments": []
2052
+ }
2053
+ },
2054
+ {
2055
+ "$type": "Group",
2056
+ "elements": [
2057
+ {
2058
+ "$type": "Keyword",
2059
+ "value": ","
2060
+ },
2061
+ {
2062
+ "$type": "Assignment",
2063
+ "feature": "dependencies",
2064
+ "operator": "+=",
2065
+ "terminal": {
2066
+ "$type": "RuleCall",
2067
+ "rule": {
2068
+ "$ref": "#/rules@30"
2069
+ },
2070
+ "arguments": []
2071
+ }
2072
+ }
2073
+ ],
2074
+ "cardinality": "*"
2075
+ },
2076
+ {
2077
+ "$type": "Keyword",
2078
+ "value": "]"
2079
+ }
2080
+ ],
2081
+ "cardinality": "?"
2082
+ },
2083
+ {
2084
+ "$type": "Keyword",
2085
+ "value": "}"
2086
+ }
2087
+ ]
2088
+ },
2089
+ "entry": false,
2090
+ "fragment": false,
2091
+ "parameters": []
2092
+ },
2093
+ {
2094
+ "$type": "ParserRule",
2095
+ "name": "InputDTO",
2096
+ "definition": {
2097
+ "$type": "Group",
2098
+ "elements": [
2099
+ {
2100
+ "$type": "Keyword",
2101
+ "value": "input:"
2102
+ },
2103
+ {
2104
+ "$type": "Keyword",
2105
+ "value": "{"
2106
+ },
2107
+ {
2108
+ "$type": "Assignment",
2109
+ "feature": "attributes",
2110
+ "operator": "+=",
2111
+ "terminal": {
2112
+ "$type": "RuleCall",
2113
+ "rule": {
2114
+ "$ref": "#/rules@48"
2115
+ },
2116
+ "arguments": []
2117
+ },
2118
+ "cardinality": "+"
2119
+ },
2120
+ {
2121
+ "$type": "Keyword",
2122
+ "value": "}"
2123
+ }
2124
+ ]
2125
+ },
2126
+ "entry": false,
2127
+ "fragment": false,
2128
+ "parameters": []
2129
+ },
2130
+ {
2131
+ "$type": "ParserRule",
2132
+ "name": "ResponseDTO",
2133
+ "definition": {
2134
+ "$type": "Group",
2135
+ "elements": [
2136
+ {
2137
+ "$type": "Keyword",
2138
+ "value": "response:"
2139
+ },
2140
+ {
2141
+ "$type": "Keyword",
2142
+ "value": "{"
2143
+ },
2144
+ {
2145
+ "$type": "Assignment",
2146
+ "feature": "attributes",
2147
+ "operator": "+=",
2148
+ "terminal": {
2149
+ "$type": "RuleCall",
2150
+ "rule": {
2151
+ "$ref": "#/rules@48"
2152
+ },
2153
+ "arguments": []
2154
+ },
2155
+ "cardinality": "+"
2156
+ },
2157
+ {
2158
+ "$type": "Keyword",
2159
+ "value": "}"
2160
+ }
2161
+ ]
2162
+ },
2163
+ "entry": false,
2164
+ "fragment": false,
2165
+ "parameters": []
2166
+ },
2167
+ {
2168
+ "$type": "ParserRule",
2169
+ "name": "Dependency",
2170
+ "definition": {
2171
+ "$type": "Assignment",
2172
+ "feature": "port",
2173
+ "operator": "=",
2174
+ "terminal": {
2175
+ "$type": "CrossReference",
2176
+ "type": {
2177
+ "$ref": "#/rules@26"
2178
+ },
2179
+ "terminal": {
2180
+ "$type": "RuleCall",
2181
+ "rule": {
2182
+ "$ref": "#/rules@51"
2183
+ },
2184
+ "arguments": []
2185
+ },
2186
+ "deprecatedSyntax": false,
2187
+ "isMulti": false
2188
+ }
2189
+ },
2190
+ "entry": false,
2191
+ "fragment": false,
2192
+ "parameters": []
2193
+ },
2194
+ {
2195
+ "$type": "ParserRule",
2196
+ "name": "EventStormingDeclaration",
2197
+ "definition": {
2198
+ "$type": "Group",
2199
+ "elements": [
2200
+ {
2201
+ "$type": "Keyword",
2202
+ "value": "EventStorming"
2203
+ },
2204
+ {
2205
+ "$type": "Keyword",
2206
+ "value": "{"
2207
+ },
2208
+ {
2209
+ "$type": "Assignment",
2210
+ "feature": "elements",
2211
+ "operator": "+=",
2212
+ "terminal": {
2213
+ "$type": "RuleCall",
2214
+ "rule": {
2215
+ "$ref": "#/rules@32"
2216
+ },
2217
+ "arguments": []
2218
+ },
2219
+ "cardinality": "*"
2220
+ },
2221
+ {
2222
+ "$type": "Assignment",
2223
+ "feature": "flows",
2224
+ "operator": "+=",
2225
+ "terminal": {
2226
+ "$type": "RuleCall",
2227
+ "rule": {
2228
+ "$ref": "#/rules@37"
2229
+ },
2230
+ "arguments": []
2231
+ },
2232
+ "cardinality": "*"
2233
+ },
2234
+ {
2235
+ "$type": "Keyword",
2236
+ "value": "}"
2237
+ }
2238
+ ]
2239
+ },
2240
+ "entry": false,
2241
+ "fragment": false,
2242
+ "parameters": []
2243
+ },
2244
+ {
2245
+ "$type": "ParserRule",
2246
+ "name": "EventStormingElement",
2247
+ "definition": {
2248
+ "$type": "Alternatives",
2249
+ "elements": [
2250
+ {
2251
+ "$type": "RuleCall",
2252
+ "rule": {
2253
+ "$ref": "#/rules@33"
2254
+ },
2255
+ "arguments": []
2256
+ },
2257
+ {
2258
+ "$type": "RuleCall",
2259
+ "rule": {
2260
+ "$ref": "#/rules@36"
2261
+ },
2262
+ "arguments": []
2263
+ },
2264
+ {
2265
+ "$type": "RuleCall",
2266
+ "rule": {
2267
+ "$ref": "#/rules@35"
2268
+ },
2269
+ "arguments": []
2270
+ }
2271
+ ]
2272
+ },
2273
+ "entry": false,
2274
+ "fragment": false,
2275
+ "parameters": []
2276
+ },
2277
+ {
2278
+ "$type": "ParserRule",
2279
+ "name": "Actor",
2280
+ "definition": {
2281
+ "$type": "Group",
2282
+ "elements": [
2283
+ {
2284
+ "$type": "Keyword",
2285
+ "value": "Actor"
2286
+ },
2287
+ {
2288
+ "$type": "Assignment",
2289
+ "feature": "name",
2290
+ "operator": "=",
2291
+ "terminal": {
2292
+ "$type": "RuleCall",
2293
+ "rule": {
2294
+ "$ref": "#/rules@53"
2295
+ },
2296
+ "arguments": []
2297
+ }
2298
+ },
2299
+ {
2300
+ "$type": "Keyword",
2301
+ "value": "{"
2302
+ },
2303
+ {
2304
+ "$type": "Assignment",
2305
+ "feature": "description",
2306
+ "operator": "=",
2307
+ "terminal": {
2308
+ "$type": "RuleCall",
2309
+ "rule": {
2310
+ "$ref": "#/rules@55"
2311
+ },
2312
+ "arguments": []
2313
+ },
2314
+ "cardinality": "?"
2315
+ },
2316
+ {
2317
+ "$type": "Keyword",
2318
+ "value": "}"
2319
+ }
2320
+ ]
2321
+ },
2322
+ "entry": false,
2323
+ "fragment": false,
2324
+ "parameters": []
2325
+ },
2326
+ {
2327
+ "$type": "ParserRule",
2328
+ "name": "Policy",
2329
+ "definition": {
2330
+ "$type": "Group",
2331
+ "elements": [
2332
+ {
2333
+ "$type": "Keyword",
2334
+ "value": "Policy"
2335
+ },
2336
+ {
2337
+ "$type": "Assignment",
2338
+ "feature": "name",
2339
+ "operator": "=",
2340
+ "terminal": {
2341
+ "$type": "RuleCall",
2342
+ "rule": {
2343
+ "$ref": "#/rules@53"
2344
+ },
2345
+ "arguments": []
2346
+ }
2347
+ },
2348
+ {
2349
+ "$type": "Keyword",
2350
+ "value": "{"
2351
+ },
2352
+ {
2353
+ "$type": "Assignment",
2354
+ "feature": "description",
2355
+ "operator": "=",
2356
+ "terminal": {
2357
+ "$type": "RuleCall",
2358
+ "rule": {
2359
+ "$ref": "#/rules@55"
2360
+ },
2361
+ "arguments": []
2362
+ },
2363
+ "cardinality": "?"
2364
+ },
2365
+ {
2366
+ "$type": "Keyword",
2367
+ "value": "invokes"
2368
+ },
2369
+ {
2370
+ "$type": "Assignment",
2371
+ "feature": "command",
2372
+ "operator": "=",
2373
+ "terminal": {
2374
+ "$type": "CrossReference",
2375
+ "type": {
2376
+ "$ref": "#/rules@27"
2377
+ },
2378
+ "terminal": {
2379
+ "$type": "RuleCall",
2380
+ "rule": {
2381
+ "$ref": "#/rules@53"
2382
+ },
2383
+ "arguments": []
2384
+ },
2385
+ "deprecatedSyntax": false,
2386
+ "isMulti": false
2387
+ }
2388
+ },
2389
+ {
2390
+ "$type": "Keyword",
2391
+ "value": "}"
2392
+ }
2393
+ ]
2394
+ },
2395
+ "entry": false,
2396
+ "fragment": false,
2397
+ "parameters": []
2398
+ },
2399
+ {
2400
+ "$type": "ParserRule",
2401
+ "name": "ReadModel",
2402
+ "definition": {
2403
+ "$type": "Group",
2404
+ "elements": [
2405
+ {
2406
+ "$type": "Keyword",
2407
+ "value": "ReadModel"
2408
+ },
2409
+ {
2410
+ "$type": "Assignment",
2411
+ "feature": "name",
2412
+ "operator": "=",
2413
+ "terminal": {
2414
+ "$type": "RuleCall",
2415
+ "rule": {
2416
+ "$ref": "#/rules@53"
2417
+ },
2418
+ "arguments": []
2419
+ }
2420
+ },
2421
+ {
2422
+ "$type": "Keyword",
2423
+ "value": "{"
2424
+ },
2425
+ {
2426
+ "$type": "Assignment",
2427
+ "feature": "description",
2428
+ "operator": "=",
2429
+ "terminal": {
2430
+ "$type": "RuleCall",
2431
+ "rule": {
2432
+ "$ref": "#/rules@55"
2433
+ },
2434
+ "arguments": []
2435
+ },
2436
+ "cardinality": "?"
2437
+ },
2438
+ {
2439
+ "$type": "Keyword",
2440
+ "value": "}"
2441
+ }
2442
+ ]
2443
+ },
2444
+ "entry": false,
2445
+ "fragment": false,
2446
+ "parameters": []
2447
+ },
2448
+ {
2449
+ "$type": "ParserRule",
2450
+ "name": "ExternalSystem",
2451
+ "definition": {
2452
+ "$type": "Group",
2453
+ "elements": [
2454
+ {
2455
+ "$type": "Keyword",
2456
+ "value": "ExternalSystem"
2457
+ },
2458
+ {
2459
+ "$type": "Assignment",
2460
+ "feature": "name",
2461
+ "operator": "=",
2462
+ "terminal": {
2463
+ "$type": "RuleCall",
2464
+ "rule": {
2465
+ "$ref": "#/rules@53"
2466
+ },
2467
+ "arguments": []
2468
+ }
2469
+ },
2470
+ {
2471
+ "$type": "Keyword",
2472
+ "value": "{"
2473
+ },
2474
+ {
2475
+ "$type": "Assignment",
2476
+ "feature": "description",
2477
+ "operator": "=",
2478
+ "terminal": {
2479
+ "$type": "RuleCall",
2480
+ "rule": {
2481
+ "$ref": "#/rules@55"
2482
+ },
2483
+ "arguments": []
2484
+ },
2485
+ "cardinality": "?"
2486
+ },
2487
+ {
2488
+ "$type": "Keyword",
2489
+ "value": "}"
2490
+ }
2491
+ ]
2492
+ },
2493
+ "entry": false,
2494
+ "fragment": false,
2495
+ "parameters": []
2496
+ },
2497
+ {
2498
+ "$type": "ParserRule",
2499
+ "name": "ProcessFlow",
2500
+ "definition": {
2501
+ "$type": "Group",
2502
+ "elements": [
2503
+ {
2504
+ "$type": "Keyword",
2505
+ "value": "ProcessFlow"
2506
+ },
2507
+ {
2508
+ "$type": "Assignment",
2509
+ "feature": "name",
2510
+ "operator": "=",
2511
+ "terminal": {
2512
+ "$type": "RuleCall",
2513
+ "rule": {
2514
+ "$ref": "#/rules@53"
2515
+ },
2516
+ "arguments": []
2517
+ }
2518
+ },
2519
+ {
2520
+ "$type": "Keyword",
2521
+ "value": "{"
2522
+ },
2523
+ {
2524
+ "$type": "Assignment",
2525
+ "feature": "description",
2526
+ "operator": "=",
2527
+ "terminal": {
2528
+ "$type": "RuleCall",
2529
+ "rule": {
2530
+ "$ref": "#/rules@55"
2531
+ },
2532
+ "arguments": []
2533
+ },
2534
+ "cardinality": "?"
2535
+ },
2536
+ {
2537
+ "$type": "Assignment",
2538
+ "feature": "given",
2539
+ "operator": "=",
2540
+ "terminal": {
2541
+ "$type": "RuleCall",
2542
+ "rule": {
2543
+ "$ref": "#/rules@38"
2544
+ },
2545
+ "arguments": []
2546
+ },
2547
+ "cardinality": "?"
2548
+ },
2549
+ {
2550
+ "$type": "Assignment",
2551
+ "feature": "command",
2552
+ "operator": "=",
2553
+ "terminal": {
2554
+ "$type": "RuleCall",
2555
+ "rule": {
2556
+ "$ref": "#/rules@39"
2557
+ },
2558
+ "arguments": []
2559
+ }
2560
+ },
2561
+ {
2562
+ "$type": "Assignment",
2563
+ "feature": "reactions",
2564
+ "operator": "+=",
2565
+ "terminal": {
2566
+ "$type": "RuleCall",
2567
+ "rule": {
2568
+ "$ref": "#/rules@40"
2569
+ },
2570
+ "arguments": []
2571
+ },
2572
+ "cardinality": "*"
2573
+ },
2574
+ {
2575
+ "$type": "Keyword",
2576
+ "value": "}"
2577
+ }
2578
+ ]
2579
+ },
2580
+ "entry": false,
2581
+ "fragment": false,
2582
+ "parameters": []
2583
+ },
2584
+ {
2585
+ "$type": "ParserRule",
2586
+ "name": "GivenStep",
2587
+ "definition": {
2588
+ "$type": "Group",
2589
+ "elements": [
2590
+ {
2591
+ "$type": "Keyword",
2592
+ "value": "given"
2593
+ },
2594
+ {
2595
+ "$type": "Assignment",
2596
+ "feature": "actor",
2597
+ "operator": "=",
2598
+ "terminal": {
2599
+ "$type": "CrossReference",
2600
+ "type": {
2601
+ "$ref": "#/rules@33"
2602
+ },
2603
+ "terminal": {
2604
+ "$type": "RuleCall",
2605
+ "rule": {
2606
+ "$ref": "#/rules@53"
2607
+ },
2608
+ "arguments": []
2609
+ },
2610
+ "deprecatedSyntax": false,
2611
+ "isMulti": false
2612
+ }
2613
+ },
2614
+ {
2615
+ "$type": "Keyword",
2616
+ "value": "views"
2617
+ },
2618
+ {
2619
+ "$type": "Assignment",
2620
+ "feature": "readModel",
2621
+ "operator": "=",
2622
+ "terminal": {
2623
+ "$type": "CrossReference",
2624
+ "type": {
2625
+ "$ref": "#/rules@35"
2626
+ },
2627
+ "terminal": {
2628
+ "$type": "RuleCall",
2629
+ "rule": {
2630
+ "$ref": "#/rules@51"
2631
+ },
2632
+ "arguments": []
2633
+ },
2634
+ "deprecatedSyntax": false,
2635
+ "isMulti": false
2636
+ }
2637
+ }
2638
+ ]
2639
+ },
2640
+ "entry": false,
2641
+ "fragment": false,
2642
+ "parameters": []
2643
+ },
2644
+ {
2645
+ "$type": "ParserRule",
2646
+ "name": "ActorCommandStep",
2647
+ "definition": {
2648
+ "$type": "Group",
2649
+ "elements": [
2650
+ {
2651
+ "$type": "Assignment",
2652
+ "feature": "issuer",
2653
+ "operator": "=",
2654
+ "terminal": {
2655
+ "$type": "CrossReference",
2656
+ "type": {
2657
+ "$ref": "#/rules@33"
2658
+ },
2659
+ "terminal": {
2660
+ "$type": "RuleCall",
2661
+ "rule": {
2662
+ "$ref": "#/rules@53"
2663
+ },
2664
+ "arguments": []
2665
+ },
2666
+ "deprecatedSyntax": false,
2667
+ "isMulti": false
2668
+ }
2669
+ },
2670
+ {
2671
+ "$type": "Keyword",
2672
+ "value": "issues"
2673
+ },
2674
+ {
2675
+ "$type": "Assignment",
2676
+ "feature": "command",
2677
+ "operator": "=",
2678
+ "terminal": {
2679
+ "$type": "CrossReference",
2680
+ "type": {
2681
+ "$ref": "#/rules@27"
2682
+ },
2683
+ "terminal": {
2684
+ "$type": "RuleCall",
2685
+ "rule": {
2686
+ "$ref": "#/rules@53"
2687
+ },
2688
+ "arguments": []
2689
+ },
2690
+ "deprecatedSyntax": false,
2691
+ "isMulti": false
2692
+ }
2693
+ }
2694
+ ]
2695
+ },
2696
+ "entry": false,
2697
+ "fragment": false,
2698
+ "parameters": []
2699
+ },
2700
+ {
2701
+ "$type": "ParserRule",
2702
+ "name": "ReactionStep",
2703
+ "definition": {
2704
+ "$type": "Group",
2705
+ "elements": [
2706
+ {
2707
+ "$type": "Keyword",
2708
+ "value": "on"
2709
+ },
2710
+ {
2711
+ "$type": "Assignment",
2712
+ "feature": "trigger",
2713
+ "operator": "=",
2714
+ "terminal": {
2715
+ "$type": "CrossReference",
2716
+ "type": {
2717
+ "$ref": "#/rules@21"
2718
+ },
2719
+ "terminal": {
2720
+ "$type": "RuleCall",
2721
+ "rule": {
2722
+ "$ref": "#/rules@51"
2723
+ },
2724
+ "arguments": []
2725
+ },
2726
+ "deprecatedSyntax": false,
2727
+ "isMulti": false
2728
+ }
2729
+ },
2730
+ {
2731
+ "$type": "Keyword",
2732
+ "value": "then"
2733
+ },
2734
+ {
2735
+ "$type": "Keyword",
2736
+ "value": "{"
2737
+ },
2738
+ {
2739
+ "$type": "Assignment",
2740
+ "feature": "outcomes",
2741
+ "operator": "+=",
2742
+ "terminal": {
2743
+ "$type": "RuleCall",
2744
+ "rule": {
2745
+ "$ref": "#/rules@41"
2746
+ },
2747
+ "arguments": []
2748
+ },
2749
+ "cardinality": "+"
2750
+ },
2751
+ {
2752
+ "$type": "Keyword",
2753
+ "value": "}"
2754
+ }
2755
+ ]
2756
+ },
2757
+ "entry": false,
2758
+ "fragment": false,
2759
+ "parameters": []
2760
+ },
2761
+ {
2762
+ "$type": "ParserRule",
2763
+ "name": "ReactionOutcome",
2764
+ "definition": {
2765
+ "$type": "Alternatives",
2766
+ "elements": [
2767
+ {
2768
+ "$type": "RuleCall",
2769
+ "rule": {
2770
+ "$ref": "#/rules@42"
2771
+ },
2772
+ "arguments": []
2773
+ },
2774
+ {
2775
+ "$type": "RuleCall",
2776
+ "rule": {
2777
+ "$ref": "#/rules@43"
2778
+ },
2779
+ "arguments": []
2780
+ }
2781
+ ]
2782
+ },
2783
+ "entry": false,
2784
+ "fragment": false,
2785
+ "parameters": []
2786
+ },
2787
+ {
2788
+ "$type": "ParserRule",
2789
+ "name": "Projection",
2790
+ "definition": {
2791
+ "$type": "Group",
2792
+ "elements": [
2793
+ {
2794
+ "$type": "Keyword",
2795
+ "value": "projects"
2796
+ },
2797
+ {
2798
+ "$type": "Keyword",
2799
+ "value": "to"
2800
+ },
2801
+ {
2802
+ "$type": "Assignment",
2803
+ "feature": "readModel",
2804
+ "operator": "=",
2805
+ "terminal": {
2806
+ "$type": "CrossReference",
2807
+ "type": {
2808
+ "$ref": "#/rules@35"
2809
+ },
2810
+ "terminal": {
2811
+ "$type": "RuleCall",
2812
+ "rule": {
2813
+ "$ref": "#/rules@51"
2814
+ },
2815
+ "arguments": []
2816
+ },
2817
+ "deprecatedSyntax": false,
2818
+ "isMulti": false
2819
+ }
2820
+ },
2821
+ {
2822
+ "$type": "Group",
2823
+ "elements": [
2824
+ {
2825
+ "$type": "Keyword",
2826
+ "value": "hotspot"
2827
+ },
2828
+ {
2829
+ "$type": "Assignment",
2830
+ "feature": "hotspot",
2831
+ "operator": "=",
2832
+ "terminal": {
2833
+ "$type": "RuleCall",
2834
+ "rule": {
2835
+ "$ref": "#/rules@55"
2836
+ },
2837
+ "arguments": []
2838
+ }
2839
+ }
2840
+ ],
2841
+ "cardinality": "?"
2842
+ }
2843
+ ]
2844
+ },
2845
+ "entry": false,
2846
+ "fragment": false,
2847
+ "parameters": []
2848
+ },
2849
+ {
2850
+ "$type": "ParserRule",
2851
+ "name": "PolicyTrigger",
2852
+ "definition": {
2853
+ "$type": "Group",
2854
+ "elements": [
2855
+ {
2856
+ "$type": "Keyword",
2857
+ "value": "triggers"
2858
+ },
2859
+ {
2860
+ "$type": "Assignment",
2861
+ "feature": "policy",
2862
+ "operator": "=",
2863
+ "terminal": {
2864
+ "$type": "RuleCall",
2865
+ "rule": {
2866
+ "$ref": "#/rules@34"
2867
+ },
2868
+ "arguments": []
2869
+ }
2870
+ },
2871
+ {
2872
+ "$type": "Group",
2873
+ "elements": [
2874
+ {
2875
+ "$type": "Keyword",
2876
+ "value": "hotspot"
2877
+ },
2878
+ {
2879
+ "$type": "Assignment",
2880
+ "feature": "hotspot",
2881
+ "operator": "=",
2882
+ "terminal": {
2883
+ "$type": "RuleCall",
2884
+ "rule": {
2885
+ "$ref": "#/rules@55"
2886
+ },
2887
+ "arguments": []
2888
+ }
2889
+ }
2890
+ ],
2891
+ "cardinality": "?"
2892
+ }
2893
+ ]
2894
+ },
2895
+ "entry": false,
2896
+ "fragment": false,
2897
+ "parameters": []
2898
+ },
2899
+ {
2900
+ "$type": "ParserRule",
2901
+ "name": "UID",
2902
+ "definition": {
2903
+ "$type": "Group",
2904
+ "elements": [
2905
+ {
2906
+ "$type": "Keyword",
2907
+ "value": "UID"
2908
+ },
2909
+ {
2910
+ "$type": "Keyword",
2911
+ "value": "{"
2912
+ },
2913
+ {
2914
+ "$type": "Keyword",
2915
+ "value": "type:"
2916
+ },
2917
+ {
2918
+ "$type": "Assignment",
2919
+ "feature": "type",
2920
+ "operator": "=",
2921
+ "terminal": {
2922
+ "$type": "RuleCall",
2923
+ "rule": {
2924
+ "$ref": "#/rules@45"
2925
+ },
2926
+ "arguments": []
2927
+ }
2928
+ },
2929
+ {
2930
+ "$type": "Group",
2931
+ "elements": [
2932
+ {
2933
+ "$type": "Keyword",
2934
+ "value": "enforcedInvariants:"
2935
+ },
2936
+ {
2937
+ "$type": "Keyword",
2938
+ "value": "["
2939
+ },
2940
+ {
2941
+ "$type": "Group",
2942
+ "elements": [
2943
+ {
2944
+ "$type": "Assignment",
2945
+ "feature": "enforcedInvariants",
2946
+ "operator": "+=",
2947
+ "terminal": {
2948
+ "$type": "RuleCall",
2949
+ "rule": {
2950
+ "$ref": "#/rules@55"
2951
+ },
2952
+ "arguments": []
2953
+ }
2954
+ },
2955
+ {
2956
+ "$type": "Group",
2957
+ "elements": [
2958
+ {
2959
+ "$type": "Keyword",
2960
+ "value": ","
2961
+ },
2962
+ {
2963
+ "$type": "Assignment",
2964
+ "feature": "enforcedInvariants",
2965
+ "operator": "+=",
2966
+ "terminal": {
2967
+ "$type": "RuleCall",
2968
+ "rule": {
2969
+ "$ref": "#/rules@55"
2970
+ },
2971
+ "arguments": []
2972
+ }
2973
+ }
2974
+ ],
2975
+ "cardinality": "*"
2976
+ }
2977
+ ],
2978
+ "cardinality": "?"
2979
+ },
2980
+ {
2981
+ "$type": "Keyword",
2982
+ "value": "]"
2983
+ }
2984
+ ],
2985
+ "cardinality": "?"
2986
+ },
2987
+ {
2988
+ "$type": "Keyword",
2989
+ "value": "}"
2990
+ }
2991
+ ]
2992
+ },
2993
+ "entry": false,
2994
+ "fragment": false,
2995
+ "parameters": []
2996
+ },
2997
+ {
2998
+ "$type": "ParserRule",
2999
+ "name": "IDType",
3000
+ "dataType": "string",
3001
+ "definition": {
3002
+ "$type": "Alternatives",
3003
+ "elements": [
3004
+ {
3005
+ "$type": "Keyword",
3006
+ "value": "string"
3007
+ },
3008
+ {
3009
+ "$type": "Keyword",
3010
+ "value": "number"
3011
+ }
3012
+ ]
3013
+ },
3014
+ "entry": false,
3015
+ "fragment": false,
3016
+ "parameters": []
3017
+ },
3018
+ {
3019
+ "$type": "ParserRule",
3020
+ "name": "Reference",
3021
+ "definition": {
3022
+ "$type": "Group",
3023
+ "elements": [
3024
+ {
3025
+ "$type": "Assignment",
3026
+ "feature": "name",
3027
+ "operator": "=",
3028
+ "terminal": {
3029
+ "$type": "RuleCall",
3030
+ "rule": {
3031
+ "$ref": "#/rules@53"
3032
+ },
3033
+ "arguments": []
3034
+ }
3035
+ },
3036
+ {
3037
+ "$type": "Keyword",
3038
+ "value": ":"
3039
+ },
3040
+ {
3041
+ "$type": "Assignment",
3042
+ "feature": "to",
3043
+ "operator": "=",
3044
+ "terminal": {
3045
+ "$type": "CrossReference",
3046
+ "type": {
3047
+ "$ref": "#/rules@10"
3048
+ },
3049
+ "terminal": {
3050
+ "$type": "RuleCall",
3051
+ "rule": {
3052
+ "$ref": "#/rules@53"
3053
+ },
3054
+ "arguments": []
3055
+ },
3056
+ "deprecatedSyntax": false,
3057
+ "isMulti": false
3058
+ }
3059
+ }
3060
+ ]
3061
+ },
3062
+ "entry": false,
3063
+ "fragment": false,
3064
+ "parameters": []
3065
+ },
3066
+ {
3067
+ "$type": "ParserRule",
3068
+ "name": "DomainAttribute",
3069
+ "definition": {
3070
+ "$type": "Group",
3071
+ "elements": [
3072
+ {
3073
+ "$type": "Assignment",
3074
+ "feature": "many",
3075
+ "operator": "?=",
3076
+ "terminal": {
3077
+ "$type": "Keyword",
3078
+ "value": "many"
3079
+ },
3080
+ "cardinality": "?"
3081
+ },
3082
+ {
3083
+ "$type": "Assignment",
3084
+ "feature": "optional",
3085
+ "operator": "?=",
3086
+ "terminal": {
3087
+ "$type": "Keyword",
3088
+ "value": "optional"
3089
+ },
3090
+ "cardinality": "?"
3091
+ },
3092
+ {
3093
+ "$type": "Assignment",
3094
+ "feature": "name",
3095
+ "operator": "=",
3096
+ "terminal": {
3097
+ "$type": "RuleCall",
3098
+ "rule": {
3099
+ "$ref": "#/rules@53"
3100
+ },
3101
+ "arguments": []
3102
+ }
3103
+ },
3104
+ {
3105
+ "$type": "Keyword",
3106
+ "value": ":"
3107
+ },
3108
+ {
3109
+ "$type": "Assignment",
3110
+ "feature": "type",
3111
+ "operator": "=",
3112
+ "terminal": {
3113
+ "$type": "CrossReference",
3114
+ "type": {
3115
+ "$ref": "#/types@0"
3116
+ },
3117
+ "terminal": {
3118
+ "$type": "RuleCall",
3119
+ "rule": {
3120
+ "$ref": "#/rules@51"
3121
+ },
3122
+ "arguments": []
3123
+ },
3124
+ "deprecatedSyntax": false,
3125
+ "isMulti": false
3126
+ }
3127
+ }
3128
+ ]
3129
+ },
3130
+ "entry": false,
3131
+ "fragment": false,
3132
+ "parameters": []
3133
+ },
3134
+ {
3135
+ "$type": "ParserRule",
3136
+ "name": "PrimitiveAttribute",
3137
+ "definition": {
3138
+ "$type": "Group",
3139
+ "elements": [
3140
+ {
3141
+ "$type": "Assignment",
3142
+ "feature": "many",
3143
+ "operator": "?=",
3144
+ "terminal": {
3145
+ "$type": "Keyword",
3146
+ "value": "many"
3147
+ },
3148
+ "cardinality": "?"
3149
+ },
3150
+ {
3151
+ "$type": "Assignment",
3152
+ "feature": "optional",
3153
+ "operator": "?=",
3154
+ "terminal": {
3155
+ "$type": "Keyword",
3156
+ "value": "optional"
3157
+ },
3158
+ "cardinality": "?"
3159
+ },
3160
+ {
3161
+ "$type": "Assignment",
3162
+ "feature": "name",
3163
+ "operator": "=",
3164
+ "terminal": {
3165
+ "$type": "RuleCall",
3166
+ "rule": {
3167
+ "$ref": "#/rules@53"
3168
+ },
3169
+ "arguments": []
3170
+ }
3171
+ },
3172
+ {
3173
+ "$type": "Keyword",
3174
+ "value": ":"
3175
+ },
3176
+ {
3177
+ "$type": "Assignment",
3178
+ "feature": "type",
3179
+ "operator": "=",
3180
+ "terminal": {
3181
+ "$type": "Alternatives",
3182
+ "elements": [
3183
+ {
3184
+ "$type": "RuleCall",
3185
+ "rule": {
3186
+ "$ref": "#/rules@49"
3187
+ },
3188
+ "arguments": []
3189
+ },
3190
+ {
3191
+ "$type": "RuleCall",
3192
+ "rule": {
3193
+ "$ref": "#/rules@50"
3194
+ },
3195
+ "arguments": []
3196
+ }
3197
+ ]
3198
+ }
3199
+ }
3200
+ ]
3201
+ },
3202
+ "entry": false,
3203
+ "fragment": false,
3204
+ "parameters": []
3205
+ },
3206
+ {
3207
+ "$type": "ParserRule",
3208
+ "name": "Primitive",
3209
+ "dataType": "string",
3210
+ "definition": {
3211
+ "$type": "Alternatives",
3212
+ "elements": [
3213
+ {
3214
+ "$type": "Keyword",
3215
+ "value": "string"
3216
+ },
3217
+ {
3218
+ "$type": "Keyword",
3219
+ "value": "number"
3220
+ },
3221
+ {
3222
+ "$type": "Keyword",
3223
+ "value": "boolean"
3224
+ },
3225
+ {
3226
+ "$type": "Keyword",
3227
+ "value": "date"
3228
+ }
3229
+ ]
3230
+ },
3231
+ "entry": false,
3232
+ "fragment": false,
3233
+ "parameters": []
3234
+ },
3235
+ {
3236
+ "$type": "ParserRule",
3237
+ "name": "Enum",
3238
+ "definition": {
3239
+ "$type": "Group",
3240
+ "elements": [
3241
+ {
3242
+ "$type": "Keyword",
3243
+ "value": "Enum"
3244
+ },
3245
+ {
3246
+ "$type": "Keyword",
3247
+ "value": "("
3248
+ },
3249
+ {
3250
+ "$type": "Assignment",
3251
+ "feature": "values",
3252
+ "operator": "+=",
3253
+ "terminal": {
3254
+ "$type": "RuleCall",
3255
+ "rule": {
3256
+ "$ref": "#/rules@53"
3257
+ },
3258
+ "arguments": []
3259
+ }
3260
+ },
3261
+ {
3262
+ "$type": "Group",
3263
+ "elements": [
3264
+ {
3265
+ "$type": "Keyword",
3266
+ "value": ","
3267
+ },
3268
+ {
3269
+ "$type": "Assignment",
3270
+ "feature": "values",
3271
+ "operator": "+=",
3272
+ "terminal": {
3273
+ "$type": "RuleCall",
3274
+ "rule": {
3275
+ "$ref": "#/rules@53"
3276
+ },
3277
+ "arguments": []
3278
+ }
3279
+ }
3280
+ ],
3281
+ "cardinality": "*"
3282
+ },
3283
+ {
3284
+ "$type": "Keyword",
3285
+ "value": ")"
3286
+ }
3287
+ ]
3288
+ },
3289
+ "entry": false,
3290
+ "fragment": false,
3291
+ "parameters": []
3292
+ },
3293
+ {
3294
+ "$type": "ParserRule",
3295
+ "name": "QualifiedName",
3296
+ "dataType": "string",
3297
+ "definition": {
3298
+ "$type": "Group",
3299
+ "elements": [
3300
+ {
3301
+ "$type": "RuleCall",
3302
+ "rule": {
3303
+ "$ref": "#/rules@53"
3304
+ },
3305
+ "arguments": []
3306
+ },
3307
+ {
3308
+ "$type": "Group",
3309
+ "elements": [
3310
+ {
3311
+ "$type": "Keyword",
3312
+ "value": "."
3313
+ },
3314
+ {
3315
+ "$type": "RuleCall",
3316
+ "rule": {
3317
+ "$ref": "#/rules@53"
3318
+ },
3319
+ "arguments": []
3320
+ }
3321
+ ],
3322
+ "cardinality": "*"
3323
+ }
3324
+ ]
3325
+ },
3326
+ "entry": false,
3327
+ "fragment": false,
3328
+ "parameters": []
3329
+ },
3330
+ {
3331
+ "$type": "TerminalRule",
3332
+ "hidden": true,
3333
+ "name": "WS",
3334
+ "definition": {
3335
+ "$type": "RegexToken",
3336
+ "regex": "/\\\\s+/",
3337
+ "parenthesized": false
3338
+ },
3339
+ "fragment": false
3340
+ },
3341
+ {
3342
+ "$type": "TerminalRule",
3343
+ "name": "ID",
3344
+ "definition": {
3345
+ "$type": "RegexToken",
3346
+ "regex": "/[_a-zA-Z][\\\\w_]*/",
3347
+ "parenthesized": false
3348
+ },
3349
+ "fragment": false,
3350
+ "hidden": false
3351
+ },
3352
+ {
3353
+ "$type": "TerminalRule",
3354
+ "name": "INT",
3355
+ "type": {
3356
+ "$type": "ReturnType",
3357
+ "name": "number"
3358
+ },
3359
+ "definition": {
3360
+ "$type": "RegexToken",
3361
+ "regex": "/[0-9]+/",
3362
+ "parenthesized": false
3363
+ },
3364
+ "fragment": false,
3365
+ "hidden": false
3366
+ },
3367
+ {
3368
+ "$type": "TerminalRule",
3369
+ "name": "STRING",
3370
+ "definition": {
3371
+ "$type": "RegexToken",
3372
+ "regex": "/\\"(\\\\\\\\.|[^\\"\\\\\\\\])*\\"|'(\\\\\\\\.|[^'\\\\\\\\])*'/",
3373
+ "parenthesized": false
3374
+ },
3375
+ "fragment": false,
3376
+ "hidden": false
3377
+ },
3378
+ {
3379
+ "$type": "TerminalRule",
3380
+ "hidden": true,
3381
+ "name": "ML_COMMENT",
3382
+ "definition": {
3383
+ "$type": "RegexToken",
3384
+ "regex": "/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//",
3385
+ "parenthesized": false
3386
+ },
3387
+ "fragment": false
3388
+ },
3389
+ {
3390
+ "$type": "TerminalRule",
3391
+ "hidden": true,
3392
+ "name": "SL_COMMENT",
3393
+ "definition": {
3394
+ "$type": "RegexToken",
3395
+ "regex": "/\\\\/\\\\/[^\\\\n\\\\r]*/",
3396
+ "parenthesized": false
3397
+ },
3398
+ "fragment": false
3399
+ }
3400
+ ],
3401
+ "types": [
3402
+ {
3403
+ "$type": "Type",
3404
+ "name": "DomainObject",
3405
+ "type": {
3406
+ "$type": "UnionType",
3407
+ "types": [
3408
+ {
3409
+ "$type": "SimpleType",
3410
+ "typeRef": {
3411
+ "$ref": "#/rules@19"
3412
+ }
3413
+ },
3414
+ {
3415
+ "$type": "SimpleType",
3416
+ "typeRef": {
3417
+ "$ref": "#/rules@10"
3418
+ }
3419
+ },
3420
+ {
3421
+ "$type": "SimpleType",
3422
+ "typeRef": {
3423
+ "$ref": "#/rules@17"
3424
+ }
3425
+ }
3426
+ ]
3427
+ }
3428
+ }
3429
+ ],
3430
+ "imports": [],
3431
+ "interfaces": []
3432
+ }`));