@domainlang/language 0.12.0 → 0.13.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 (90) hide show
  1. package/out/ast-augmentation.d.ts +7 -2
  2. package/out/diagram/context-map-diagram-generator.d.ts +9 -2
  3. package/out/diagram/context-map-diagram-generator.js +112 -63
  4. package/out/diagram/context-map-diagram-generator.js.map +1 -1
  5. package/out/generated/ast.d.ts +323 -51
  6. package/out/generated/ast.js +194 -33
  7. package/out/generated/ast.js.map +1 -1
  8. package/out/generated/grammar.js +418 -172
  9. package/out/generated/grammar.js.map +1 -1
  10. package/out/lsp/domain-lang-completion.js +39 -15
  11. package/out/lsp/domain-lang-completion.js.map +1 -1
  12. package/out/lsp/domain-lang-formatter.js +32 -0
  13. package/out/lsp/domain-lang-formatter.js.map +1 -1
  14. package/out/lsp/domain-lang-index-manager.d.ts +2 -3
  15. package/out/lsp/domain-lang-index-manager.js +5 -8
  16. package/out/lsp/domain-lang-index-manager.js.map +1 -1
  17. package/out/lsp/domain-lang-workspace-manager.d.ts +1 -1
  18. package/out/lsp/domain-lang-workspace-manager.js +2 -26
  19. package/out/lsp/domain-lang-workspace-manager.js.map +1 -1
  20. package/out/lsp/explain.js +9 -3
  21. package/out/lsp/explain.js.map +1 -1
  22. package/out/lsp/hover/domain-lang-hover.js +13 -11
  23. package/out/lsp/hover/domain-lang-hover.js.map +1 -1
  24. package/out/lsp/hover/domain-lang-keywords.js +29 -26
  25. package/out/lsp/hover/domain-lang-keywords.js.map +1 -1
  26. package/out/sdk/ast-augmentation.d.ts +29 -21
  27. package/out/sdk/ast-augmentation.js +11 -7
  28. package/out/sdk/ast-augmentation.js.map +1 -1
  29. package/out/sdk/index.d.ts +2 -2
  30. package/out/sdk/index.js +1 -1
  31. package/out/sdk/index.js.map +1 -1
  32. package/out/sdk/loader-node.js +2 -2
  33. package/out/sdk/loader-node.js.map +1 -1
  34. package/out/sdk/patterns.d.ts +50 -61
  35. package/out/sdk/patterns.js +92 -62
  36. package/out/sdk/patterns.js.map +1 -1
  37. package/out/sdk/query.js +54 -43
  38. package/out/sdk/query.js.map +1 -1
  39. package/out/sdk/serializers.js +20 -7
  40. package/out/sdk/serializers.js.map +1 -1
  41. package/out/sdk/types.d.ts +87 -18
  42. package/out/sdk/types.js.map +1 -1
  43. package/out/sdk/validator.js +48 -64
  44. package/out/sdk/validator.js.map +1 -1
  45. package/out/services/performance-optimizer.d.ts +3 -3
  46. package/out/services/performance-optimizer.js +1 -3
  47. package/out/services/performance-optimizer.js.map +1 -1
  48. package/out/services/relationship-inference.d.ts +4 -4
  49. package/out/services/relationship-inference.js +34 -46
  50. package/out/services/relationship-inference.js.map +1 -1
  51. package/out/syntaxes/domain-lang.monarch.js +1 -1
  52. package/out/syntaxes/domain-lang.monarch.js.map +1 -1
  53. package/out/utils/import-utils.d.ts +6 -20
  54. package/out/utils/import-utils.js +3 -63
  55. package/out/utils/import-utils.js.map +1 -1
  56. package/out/validation/constants.d.ts +23 -6
  57. package/out/validation/constants.js +24 -7
  58. package/out/validation/constants.js.map +1 -1
  59. package/out/validation/maps.js +10 -4
  60. package/out/validation/maps.js.map +1 -1
  61. package/out/validation/relationships.d.ts +4 -8
  62. package/out/validation/relationships.js +96 -48
  63. package/out/validation/relationships.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/ast-augmentation.ts +7 -2
  66. package/src/diagram/context-map-diagram-generator.ts +132 -70
  67. package/src/domain-lang.langium +62 -26
  68. package/src/generated/ast.ts +413 -63
  69. package/src/generated/grammar.ts +418 -172
  70. package/src/lsp/domain-lang-completion.ts +42 -15
  71. package/src/lsp/domain-lang-formatter.ts +34 -0
  72. package/src/lsp/domain-lang-index-manager.ts +6 -9
  73. package/src/lsp/domain-lang-workspace-manager.ts +3 -29
  74. package/src/lsp/explain.ts +10 -2
  75. package/src/lsp/hover/domain-lang-hover.ts +10 -8
  76. package/src/lsp/hover/domain-lang-keywords.ts +27 -24
  77. package/src/sdk/ast-augmentation.ts +30 -21
  78. package/src/sdk/index.ts +11 -1
  79. package/src/sdk/loader-node.ts +2 -2
  80. package/src/sdk/patterns.ts +114 -76
  81. package/src/sdk/query.ts +57 -48
  82. package/src/sdk/serializers.ts +20 -7
  83. package/src/sdk/types.ts +92 -17
  84. package/src/sdk/validator.ts +52 -69
  85. package/src/services/performance-optimizer.ts +4 -6
  86. package/src/services/relationship-inference.ts +43 -54
  87. package/src/utils/import-utils.ts +9 -74
  88. package/src/validation/constants.ts +32 -9
  89. package/src/validation/maps.ts +12 -4
  90. package/src/validation/relationships.ts +150 -71
@@ -26,7 +26,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
26
26
  "terminal": {
27
27
  "$type": "RuleCall",
28
28
  "rule": {
29
- "$ref": "#/rules@22"
29
+ "$ref": "#/rules@24"
30
30
  },
31
31
  "arguments": []
32
32
  },
@@ -74,7 +74,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
74
74
  {
75
75
  "$type": "RuleCall",
76
76
  "rule": {
77
- "$ref": "#/rules@23"
77
+ "$ref": "#/rules@25"
78
78
  },
79
79
  "arguments": []
80
80
  }
@@ -159,7 +159,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
159
159
  "terminal": {
160
160
  "$type": "RuleCall",
161
161
  "rule": {
162
- "$ref": "#/rules@27"
162
+ "$ref": "#/rules@29"
163
163
  },
164
164
  "arguments": []
165
165
  }
@@ -183,7 +183,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
183
183
  "terminal": {
184
184
  "$type": "RuleCall",
185
185
  "rule": {
186
- "$ref": "#/rules@25"
186
+ "$ref": "#/rules@27"
187
187
  },
188
188
  "arguments": []
189
189
  },
@@ -214,7 +214,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
214
214
  {
215
215
  "$type": "RuleCall",
216
216
  "rule": {
217
- "$ref": "#/rules@24"
217
+ "$ref": "#/rules@26"
218
218
  },
219
219
  "arguments": []
220
220
  },
@@ -225,7 +225,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
225
225
  "terminal": {
226
226
  "$type": "RuleCall",
227
227
  "rule": {
228
- "$ref": "#/rules@28"
228
+ "$ref": "#/rules@30"
229
229
  },
230
230
  "arguments": []
231
231
  }
@@ -242,7 +242,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
242
242
  {
243
243
  "$type": "RuleCall",
244
244
  "rule": {
245
- "$ref": "#/rules@24"
245
+ "$ref": "#/rules@26"
246
246
  },
247
247
  "arguments": []
248
248
  },
@@ -253,7 +253,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
253
253
  "terminal": {
254
254
  "$type": "RuleCall",
255
255
  "rule": {
256
- "$ref": "#/rules@28"
256
+ "$ref": "#/rules@30"
257
257
  },
258
258
  "arguments": []
259
259
  }
@@ -270,7 +270,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
270
270
  {
271
271
  "$type": "RuleCall",
272
272
  "rule": {
273
- "$ref": "#/rules@24"
273
+ "$ref": "#/rules@26"
274
274
  },
275
275
  "arguments": []
276
276
  },
@@ -286,7 +286,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
286
286
  "terminal": {
287
287
  "$type": "RuleCall",
288
288
  "rule": {
289
- "$ref": "#/rules@25"
289
+ "$ref": "#/rules@27"
290
290
  },
291
291
  "arguments": []
292
292
  },
@@ -339,7 +339,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
339
339
  "terminal": {
340
340
  "$type": "RuleCall",
341
341
  "rule": {
342
- "$ref": "#/rules@27"
342
+ "$ref": "#/rules@29"
343
343
  },
344
344
  "arguments": []
345
345
  }
@@ -363,7 +363,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
363
363
  "terminal": {
364
364
  "$type": "RuleCall",
365
365
  "rule": {
366
- "$ref": "#/rules@25"
366
+ "$ref": "#/rules@27"
367
367
  },
368
368
  "arguments": []
369
369
  },
@@ -396,7 +396,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
396
396
  "terminal": {
397
397
  "$type": "RuleCall",
398
398
  "rule": {
399
- "$ref": "#/rules@25"
399
+ "$ref": "#/rules@27"
400
400
  },
401
401
  "arguments": []
402
402
  },
@@ -426,7 +426,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
426
426
  "terminal": {
427
427
  "$type": "RuleCall",
428
428
  "rule": {
429
- "$ref": "#/rules@25"
429
+ "$ref": "#/rules@27"
430
430
  },
431
431
  "arguments": []
432
432
  },
@@ -460,7 +460,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
460
460
  {
461
461
  "$type": "RuleCall",
462
462
  "rule": {
463
- "$ref": "#/rules@24"
463
+ "$ref": "#/rules@26"
464
464
  },
465
465
  "arguments": []
466
466
  },
@@ -471,7 +471,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
471
471
  "terminal": {
472
472
  "$type": "RuleCall",
473
473
  "rule": {
474
- "$ref": "#/rules@28"
474
+ "$ref": "#/rules@30"
475
475
  },
476
476
  "arguments": []
477
477
  }
@@ -488,7 +488,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
488
488
  {
489
489
  "$type": "RuleCall",
490
490
  "rule": {
491
- "$ref": "#/rules@24"
491
+ "$ref": "#/rules@26"
492
492
  },
493
493
  "arguments": []
494
494
  },
@@ -504,7 +504,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
504
504
  "terminal": {
505
505
  "$type": "RuleCall",
506
506
  "rule": {
507
- "$ref": "#/rules@25"
507
+ "$ref": "#/rules@27"
508
508
  },
509
509
  "arguments": []
510
510
  },
@@ -524,7 +524,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
524
524
  {
525
525
  "$type": "RuleCall",
526
526
  "rule": {
527
- "$ref": "#/rules@24"
527
+ "$ref": "#/rules@26"
528
528
  },
529
529
  "arguments": []
530
530
  },
@@ -540,7 +540,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
540
540
  "terminal": {
541
541
  "$type": "RuleCall",
542
542
  "rule": {
543
- "$ref": "#/rules@25"
543
+ "$ref": "#/rules@27"
544
544
  },
545
545
  "arguments": []
546
546
  },
@@ -560,7 +560,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
560
560
  {
561
561
  "$type": "RuleCall",
562
562
  "rule": {
563
- "$ref": "#/rules@24"
563
+ "$ref": "#/rules@26"
564
564
  },
565
565
  "arguments": []
566
566
  },
@@ -576,7 +576,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
576
576
  "terminal": {
577
577
  "$type": "RuleCall",
578
578
  "rule": {
579
- "$ref": "#/rules@25"
579
+ "$ref": "#/rules@27"
580
580
  },
581
581
  "arguments": []
582
582
  },
@@ -596,7 +596,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
596
596
  {
597
597
  "$type": "RuleCall",
598
598
  "rule": {
599
- "$ref": "#/rules@24"
599
+ "$ref": "#/rules@26"
600
600
  },
601
601
  "arguments": []
602
602
  },
@@ -612,7 +612,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
612
612
  "terminal": {
613
613
  "$type": "RuleCall",
614
614
  "rule": {
615
- "$ref": "#/rules@25"
615
+ "$ref": "#/rules@27"
616
616
  },
617
617
  "arguments": []
618
618
  },
@@ -632,7 +632,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
632
632
  {
633
633
  "$type": "RuleCall",
634
634
  "rule": {
635
- "$ref": "#/rules@24"
635
+ "$ref": "#/rules@26"
636
636
  },
637
637
  "arguments": []
638
638
  },
@@ -648,7 +648,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
648
648
  "terminal": {
649
649
  "$type": "RuleCall",
650
650
  "rule": {
651
- "$ref": "#/rules@25"
651
+ "$ref": "#/rules@27"
652
652
  },
653
653
  "arguments": []
654
654
  },
@@ -794,7 +794,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
794
794
  "terminal": {
795
795
  "$type": "RuleCall",
796
796
  "rule": {
797
- "$ref": "#/rules@17"
797
+ "$ref": "#/rules@19"
798
798
  },
799
799
  "arguments": []
800
800
  }
@@ -843,7 +843,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
843
843
  "terminal": {
844
844
  "$type": "RuleCall",
845
845
  "rule": {
846
- "$ref": "#/rules@18"
846
+ "$ref": "#/rules@20"
847
847
  },
848
848
  "arguments": []
849
849
  }
@@ -897,7 +897,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
897
897
  "terminal": {
898
898
  "$type": "RuleCall",
899
899
  "rule": {
900
- "$ref": "#/rules@25"
900
+ "$ref": "#/rules@27"
901
901
  },
902
902
  "arguments": []
903
903
  },
@@ -908,7 +908,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
908
908
  {
909
909
  "$type": "RuleCall",
910
910
  "rule": {
911
- "$ref": "#/rules@24"
911
+ "$ref": "#/rules@26"
912
912
  },
913
913
  "arguments": []
914
914
  },
@@ -919,7 +919,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
919
919
  "terminal": {
920
920
  "$type": "RuleCall",
921
921
  "rule": {
922
- "$ref": "#/rules@28"
922
+ "$ref": "#/rules@30"
923
923
  },
924
924
  "arguments": []
925
925
  }
@@ -947,7 +947,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
947
947
  "terminal": {
948
948
  "$type": "RuleCall",
949
949
  "rule": {
950
- "$ref": "#/rules@27"
950
+ "$ref": "#/rules@29"
951
951
  },
952
952
  "arguments": []
953
953
  }
@@ -976,7 +976,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
976
976
  "terminal": {
977
977
  "$type": "RuleCall",
978
978
  "rule": {
979
- "$ref": "#/rules@27"
979
+ "$ref": "#/rules@29"
980
980
  },
981
981
  "arguments": []
982
982
  }
@@ -1005,7 +1005,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1005
1005
  "terminal": {
1006
1006
  "$type": "RuleCall",
1007
1007
  "rule": {
1008
- "$ref": "#/rules@27"
1008
+ "$ref": "#/rules@29"
1009
1009
  },
1010
1010
  "arguments": []
1011
1011
  }
@@ -1070,7 +1070,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1070
1070
  "terminal": {
1071
1071
  "$type": "RuleCall",
1072
1072
  "rule": {
1073
- "$ref": "#/rules@27"
1073
+ "$ref": "#/rules@29"
1074
1074
  },
1075
1075
  "arguments": []
1076
1076
  }
@@ -1099,7 +1099,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1099
1099
  "terminal": {
1100
1100
  "$type": "RuleCall",
1101
1101
  "rule": {
1102
- "$ref": "#/rules@25"
1102
+ "$ref": "#/rules@27"
1103
1103
  },
1104
1104
  "arguments": []
1105
1105
  },
@@ -1127,7 +1127,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1127
1127
  "terminal": {
1128
1128
  "$type": "RuleCall",
1129
1129
  "rule": {
1130
- "$ref": "#/rules@25"
1130
+ "$ref": "#/rules@27"
1131
1131
  },
1132
1132
  "arguments": []
1133
1133
  },
@@ -1218,7 +1218,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1218
1218
  "terminal": {
1219
1219
  "$type": "RuleCall",
1220
1220
  "rule": {
1221
- "$ref": "#/rules@27"
1221
+ "$ref": "#/rules@29"
1222
1222
  },
1223
1223
  "arguments": []
1224
1224
  }
@@ -1247,7 +1247,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1247
1247
  "terminal": {
1248
1248
  "$type": "RuleCall",
1249
1249
  "rule": {
1250
- "$ref": "#/rules@25"
1250
+ "$ref": "#/rules@27"
1251
1251
  },
1252
1252
  "arguments": []
1253
1253
  },
@@ -1275,7 +1275,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1275
1275
  "terminal": {
1276
1276
  "$type": "RuleCall",
1277
1277
  "rule": {
1278
- "$ref": "#/rules@25"
1278
+ "$ref": "#/rules@27"
1279
1279
  },
1280
1280
  "arguments": []
1281
1281
  },
@@ -1302,9 +1302,48 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1302
1302
  {
1303
1303
  "$type": "ParserRule",
1304
1304
  "name": "Relationship",
1305
+ "definition": {
1306
+ "$type": "Alternatives",
1307
+ "elements": [
1308
+ {
1309
+ "$type": "RuleCall",
1310
+ "rule": {
1311
+ "$ref": "#/rules@13"
1312
+ },
1313
+ "arguments": []
1314
+ },
1315
+ {
1316
+ "$type": "RuleCall",
1317
+ "rule": {
1318
+ "$ref": "#/rules@14"
1319
+ },
1320
+ "arguments": []
1321
+ }
1322
+ ]
1323
+ },
1324
+ "entry": false,
1325
+ "fragment": false,
1326
+ "parameters": [],
1327
+ "$comment": "/**\\n * Relationship - Connection between two Bounded Contexts.\\n * Uses entity–relationship–entity structure where the relationship expression\\n * (type, arrow, side annotations) sits between the two entity references.\\n * \\n * Forms:\\n * Directional: Orders [OHS] -> [CF] Payments\\n * Symmetric: CardManagement [SK] AccountManagement\\n * Separate Ways arrow: Orders >< Payments\\n * \\n * [Read more on domainlang.net](https://domainlang.net/reference/language#relationships)\\n */"
1328
+ },
1329
+ {
1330
+ "$type": "ParserRule",
1331
+ "name": "DirectionalRelationship",
1305
1332
  "definition": {
1306
1333
  "$type": "Group",
1307
1334
  "elements": [
1335
+ {
1336
+ "$type": "Assignment",
1337
+ "feature": "left",
1338
+ "operator": "=",
1339
+ "terminal": {
1340
+ "$type": "RuleCall",
1341
+ "rule": {
1342
+ "$ref": "#/rules@15"
1343
+ },
1344
+ "arguments": []
1345
+ }
1346
+ },
1308
1347
  {
1309
1348
  "$type": "Group",
1310
1349
  "elements": [
@@ -1319,7 +1358,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1319
1358
  "terminal": {
1320
1359
  "$type": "RuleCall",
1321
1360
  "rule": {
1322
- "$ref": "#/rules@15"
1361
+ "$ref": "#/rules@17"
1323
1362
  },
1324
1363
  "arguments": []
1325
1364
  }
@@ -1338,7 +1377,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1338
1377
  "terminal": {
1339
1378
  "$type": "RuleCall",
1340
1379
  "rule": {
1341
- "$ref": "#/rules@15"
1380
+ "$ref": "#/rules@17"
1342
1381
  },
1343
1382
  "arguments": []
1344
1383
  }
@@ -1353,18 +1392,6 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1353
1392
  ],
1354
1393
  "cardinality": "?"
1355
1394
  },
1356
- {
1357
- "$type": "Assignment",
1358
- "feature": "left",
1359
- "operator": "=",
1360
- "terminal": {
1361
- "$type": "RuleCall",
1362
- "rule": {
1363
- "$ref": "#/rules@13"
1364
- },
1365
- "arguments": []
1366
- }
1367
- },
1368
1395
  {
1369
1396
  "$type": "Assignment",
1370
1397
  "feature": "arrow",
@@ -1372,7 +1399,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1372
1399
  "terminal": {
1373
1400
  "$type": "RuleCall",
1374
1401
  "rule": {
1375
- "$ref": "#/rules@14"
1402
+ "$ref": "#/rules@16"
1376
1403
  },
1377
1404
  "arguments": []
1378
1405
  }
@@ -1391,7 +1418,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1391
1418
  "terminal": {
1392
1419
  "$type": "RuleCall",
1393
1420
  "rule": {
1394
- "$ref": "#/rules@15"
1421
+ "$ref": "#/rules@17"
1395
1422
  },
1396
1423
  "arguments": []
1397
1424
  }
@@ -1410,7 +1437,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1410
1437
  "terminal": {
1411
1438
  "$type": "RuleCall",
1412
1439
  "rule": {
1413
- "$ref": "#/rules@15"
1440
+ "$ref": "#/rules@17"
1414
1441
  },
1415
1442
  "arguments": []
1416
1443
  }
@@ -1432,42 +1459,93 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1432
1459
  "terminal": {
1433
1460
  "$type": "RuleCall",
1434
1461
  "rule": {
1435
- "$ref": "#/rules@13"
1462
+ "$ref": "#/rules@15"
1463
+ },
1464
+ "arguments": []
1465
+ }
1466
+ }
1467
+ ]
1468
+ },
1469
+ "entry": false,
1470
+ "fragment": false,
1471
+ "parameters": [],
1472
+ "$comment": "/**\\n * Directional relationship - upstream/downstream with optional side patterns.\\n * \\n * Examples:\\n * Orders [OHS] -> [CF] Payments\\n * Orders [S] -> [C] Payments\\n * Orders -> Payments\\n * Orders [OHS] <-> [CF] Payments\\n */"
1473
+ },
1474
+ {
1475
+ "$type": "ParserRule",
1476
+ "name": "SymmetricRelationship",
1477
+ "definition": {
1478
+ "$type": "Group",
1479
+ "elements": [
1480
+ {
1481
+ "$type": "Assignment",
1482
+ "feature": "left",
1483
+ "operator": "=",
1484
+ "terminal": {
1485
+ "$type": "RuleCall",
1486
+ "rule": {
1487
+ "$ref": "#/rules@15"
1436
1488
  },
1437
1489
  "arguments": []
1438
1490
  }
1439
1491
  },
1440
1492
  {
1441
- "$type": "Group",
1493
+ "$type": "Alternatives",
1442
1494
  "elements": [
1443
1495
  {
1444
- "$type": "RuleCall",
1445
- "rule": {
1446
- "$ref": "#/rules@24"
1447
- },
1448
- "arguments": []
1496
+ "$type": "Group",
1497
+ "elements": [
1498
+ {
1499
+ "$type": "Keyword",
1500
+ "value": "["
1501
+ },
1502
+ {
1503
+ "$type": "Assignment",
1504
+ "feature": "pattern",
1505
+ "operator": "=",
1506
+ "terminal": {
1507
+ "$type": "RuleCall",
1508
+ "rule": {
1509
+ "$ref": "#/rules@18"
1510
+ },
1511
+ "arguments": []
1512
+ }
1513
+ },
1514
+ {
1515
+ "$type": "Keyword",
1516
+ "value": "]"
1517
+ }
1518
+ ]
1449
1519
  },
1450
1520
  {
1451
1521
  "$type": "Assignment",
1452
- "feature": "type",
1522
+ "feature": "arrow",
1453
1523
  "operator": "=",
1454
1524
  "terminal": {
1455
- "$type": "RuleCall",
1456
- "rule": {
1457
- "$ref": "#/rules@16"
1458
- },
1459
- "arguments": []
1525
+ "$type": "Keyword",
1526
+ "value": "><"
1460
1527
  }
1461
1528
  }
1462
- ],
1463
- "cardinality": "?"
1529
+ ]
1530
+ },
1531
+ {
1532
+ "$type": "Assignment",
1533
+ "feature": "right",
1534
+ "operator": "=",
1535
+ "terminal": {
1536
+ "$type": "RuleCall",
1537
+ "rule": {
1538
+ "$ref": "#/rules@15"
1539
+ },
1540
+ "arguments": []
1541
+ }
1464
1542
  }
1465
1543
  ]
1466
1544
  },
1467
1545
  "entry": false,
1468
1546
  "fragment": false,
1469
1547
  "parameters": [],
1470
- "$comment": "/**\\n * Relationship - Connection between two Bounded Contexts.\\n * Supports DDD integration patterns (ACL, OHS, PL, etc.) and relationship types.\\n * \\n * [Read more on domainlang.net](https://domainlang.net/reference/language#relationships)\\n */"
1548
+ "$comment": "/**\\n * Symmetric relationship - mutual pattern between two contexts, no directionality.\\n * \\n * Examples:\\n * CardManagement [SK] AccountManagement\\n * Orders [P] Payments\\n * Orders >< Payments\\n * Orders [SW] Payments\\n */"
1471
1549
  },
1472
1550
  {
1473
1551
  "$type": "ParserRule",
@@ -1503,7 +1581,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1503
1581
  "terminal": {
1504
1582
  "$type": "RuleCall",
1505
1583
  "rule": {
1506
- "$ref": "#/rules@25"
1584
+ "$ref": "#/rules@27"
1507
1585
  },
1508
1586
  "arguments": []
1509
1587
  },
@@ -1520,7 +1598,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1520
1598
  },
1521
1599
  {
1522
1600
  "$type": "ParserRule",
1523
- "name": "RelationshipArrow",
1601
+ "name": "DirectionalArrow",
1524
1602
  "dataType": "string",
1525
1603
  "definition": {
1526
1604
  "$type": "Alternatives",
@@ -1536,121 +1614,289 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1536
1614
  {
1537
1615
  "$type": "Keyword",
1538
1616
  "value": "<-"
1539
- },
1540
- {
1541
- "$type": "Keyword",
1542
- "value": "><"
1543
1617
  }
1544
1618
  ]
1545
1619
  },
1546
1620
  "entry": false,
1547
1621
  "fragment": false,
1548
1622
  "parameters": [],
1549
- "$comment": "/**\\n * Relationship arrows - symbolic and named types.\\n * \\n * Arrow semantics:\\n * -> Upstream to downstream (left provides, right consumes)\\n * <- Downstream to upstream (right provides, left consumes)\\n * <-> Bidirectional/Partnership (mutual dependency)\\n * >< Separate Ways (no integration, teams go their own way)\\n */"
1623
+ "$comment": "/**\\n * Directional relationship arrows.\\n * \\n * Arrow semantics:\\n * -> Upstream to downstream (left provides, right consumes)\\n * <- Downstream to upstream (right provides, left consumes)\\n * <-> Bidirectional (mutual data flow with explicit patterns)\\n */"
1550
1624
  },
1551
1625
  {
1552
1626
  "$type": "ParserRule",
1553
- "name": "IntegrationPattern",
1554
- "dataType": "string",
1627
+ "name": "SidePattern",
1555
1628
  "definition": {
1556
1629
  "$type": "Alternatives",
1557
1630
  "elements": [
1558
1631
  {
1559
- "$type": "Keyword",
1560
- "value": "PL"
1561
- },
1562
- {
1563
- "$type": "Keyword",
1564
- "value": "PublishedLanguage"
1565
- },
1566
- {
1567
- "$type": "Keyword",
1568
- "value": "OHS"
1569
- },
1570
- {
1571
- "$type": "Keyword",
1572
- "value": "OpenHostService"
1573
- },
1574
- {
1575
- "$type": "Keyword",
1576
- "value": "CF"
1577
- },
1578
- {
1579
- "$type": "Keyword",
1580
- "value": "Conformist"
1581
- },
1582
- {
1583
- "$type": "Keyword",
1584
- "value": "ACL"
1585
- },
1586
- {
1587
- "$type": "Keyword",
1588
- "value": "AntiCorruptionLayer"
1632
+ "$type": "Group",
1633
+ "elements": [
1634
+ {
1635
+ "$type": "Action",
1636
+ "inferredType": {
1637
+ "$type": "InferredType",
1638
+ "name": "OpenHostService"
1639
+ }
1640
+ },
1641
+ {
1642
+ "$type": "Alternatives",
1643
+ "elements": [
1644
+ {
1645
+ "$type": "Keyword",
1646
+ "value": "OHS"
1647
+ },
1648
+ {
1649
+ "$type": "Keyword",
1650
+ "value": "OpenHostService"
1651
+ }
1652
+ ]
1653
+ }
1654
+ ]
1589
1655
  },
1590
1656
  {
1591
- "$type": "Keyword",
1592
- "value": "P"
1657
+ "$type": "Group",
1658
+ "elements": [
1659
+ {
1660
+ "$type": "Action",
1661
+ "inferredType": {
1662
+ "$type": "InferredType",
1663
+ "name": "PublishedLanguage"
1664
+ }
1665
+ },
1666
+ {
1667
+ "$type": "Alternatives",
1668
+ "elements": [
1669
+ {
1670
+ "$type": "Keyword",
1671
+ "value": "PL"
1672
+ },
1673
+ {
1674
+ "$type": "Keyword",
1675
+ "value": "PublishedLanguage"
1676
+ }
1677
+ ]
1678
+ }
1679
+ ]
1593
1680
  },
1594
1681
  {
1595
- "$type": "Keyword",
1596
- "value": "Partnership"
1682
+ "$type": "Group",
1683
+ "elements": [
1684
+ {
1685
+ "$type": "Action",
1686
+ "inferredType": {
1687
+ "$type": "InferredType",
1688
+ "name": "Conformist"
1689
+ }
1690
+ },
1691
+ {
1692
+ "$type": "Alternatives",
1693
+ "elements": [
1694
+ {
1695
+ "$type": "Keyword",
1696
+ "value": "CF"
1697
+ },
1698
+ {
1699
+ "$type": "Keyword",
1700
+ "value": "Conformist"
1701
+ }
1702
+ ]
1703
+ }
1704
+ ]
1597
1705
  },
1598
1706
  {
1599
- "$type": "Keyword",
1600
- "value": "SK"
1707
+ "$type": "Group",
1708
+ "elements": [
1709
+ {
1710
+ "$type": "Action",
1711
+ "inferredType": {
1712
+ "$type": "InferredType",
1713
+ "name": "AntiCorruptionLayer"
1714
+ }
1715
+ },
1716
+ {
1717
+ "$type": "Alternatives",
1718
+ "elements": [
1719
+ {
1720
+ "$type": "Keyword",
1721
+ "value": "ACL"
1722
+ },
1723
+ {
1724
+ "$type": "Keyword",
1725
+ "value": "AntiCorruptionLayer"
1726
+ }
1727
+ ]
1728
+ }
1729
+ ]
1601
1730
  },
1602
1731
  {
1603
- "$type": "Keyword",
1604
- "value": "SharedKernel"
1732
+ "$type": "Group",
1733
+ "elements": [
1734
+ {
1735
+ "$type": "Action",
1736
+ "inferredType": {
1737
+ "$type": "InferredType",
1738
+ "name": "Supplier"
1739
+ }
1740
+ },
1741
+ {
1742
+ "$type": "Alternatives",
1743
+ "elements": [
1744
+ {
1745
+ "$type": "Keyword",
1746
+ "value": "S"
1747
+ },
1748
+ {
1749
+ "$type": "Keyword",
1750
+ "value": "Supplier"
1751
+ }
1752
+ ]
1753
+ }
1754
+ ]
1605
1755
  },
1606
1756
  {
1607
- "$type": "Keyword",
1608
- "value": "BBoM"
1757
+ "$type": "Group",
1758
+ "elements": [
1759
+ {
1760
+ "$type": "Action",
1761
+ "inferredType": {
1762
+ "$type": "InferredType",
1763
+ "name": "Customer"
1764
+ }
1765
+ },
1766
+ {
1767
+ "$type": "Alternatives",
1768
+ "elements": [
1769
+ {
1770
+ "$type": "Keyword",
1771
+ "value": "C"
1772
+ },
1773
+ {
1774
+ "$type": "Keyword",
1775
+ "value": "Customer"
1776
+ }
1777
+ ]
1778
+ }
1779
+ ]
1609
1780
  },
1610
1781
  {
1611
- "$type": "Keyword",
1612
- "value": "BigBallOfMud"
1782
+ "$type": "Group",
1783
+ "elements": [
1784
+ {
1785
+ "$type": "Action",
1786
+ "inferredType": {
1787
+ "$type": "InferredType",
1788
+ "name": "BigBallOfMud"
1789
+ }
1790
+ },
1791
+ {
1792
+ "$type": "Alternatives",
1793
+ "elements": [
1794
+ {
1795
+ "$type": "Keyword",
1796
+ "value": "BBoM"
1797
+ },
1798
+ {
1799
+ "$type": "Keyword",
1800
+ "value": "BigBallOfMud"
1801
+ }
1802
+ ]
1803
+ }
1804
+ ]
1613
1805
  }
1614
1806
  ]
1615
1807
  },
1616
1808
  "entry": false,
1617
1809
  "fragment": false,
1618
1810
  "parameters": [],
1619
- "$comment": "/**\\n * DDD Integration Patterns (used in relationships).\\n */"
1811
+ "$comment": "/**\\n * DDD Side Patterns - describe one side's role in a directional relationship.\\n * Each pattern produces a distinct AST node type via {infer} actions.\\n * Short and long forms parse to the same node type.\\n */"
1620
1812
  },
1621
1813
  {
1622
1814
  "$type": "ParserRule",
1623
- "name": "RelationshipType",
1624
- "dataType": "string",
1815
+ "name": "SymmetricPattern",
1625
1816
  "definition": {
1626
1817
  "$type": "Alternatives",
1627
1818
  "elements": [
1628
1819
  {
1629
- "$type": "Keyword",
1630
- "value": "Partnership"
1631
- },
1632
- {
1633
- "$type": "Keyword",
1634
- "value": "SharedKernel"
1635
- },
1636
- {
1637
- "$type": "Keyword",
1638
- "value": "CustomerSupplier"
1820
+ "$type": "Group",
1821
+ "elements": [
1822
+ {
1823
+ "$type": "Action",
1824
+ "inferredType": {
1825
+ "$type": "InferredType",
1826
+ "name": "SharedKernel"
1827
+ }
1828
+ },
1829
+ {
1830
+ "$type": "Alternatives",
1831
+ "elements": [
1832
+ {
1833
+ "$type": "Keyword",
1834
+ "value": "SK"
1835
+ },
1836
+ {
1837
+ "$type": "Keyword",
1838
+ "value": "SharedKernel"
1839
+ }
1840
+ ]
1841
+ }
1842
+ ]
1639
1843
  },
1640
1844
  {
1641
- "$type": "Keyword",
1642
- "value": "UpstreamDownstream"
1845
+ "$type": "Group",
1846
+ "elements": [
1847
+ {
1848
+ "$type": "Action",
1849
+ "inferredType": {
1850
+ "$type": "InferredType",
1851
+ "name": "Partnership"
1852
+ }
1853
+ },
1854
+ {
1855
+ "$type": "Alternatives",
1856
+ "elements": [
1857
+ {
1858
+ "$type": "Keyword",
1859
+ "value": "P"
1860
+ },
1861
+ {
1862
+ "$type": "Keyword",
1863
+ "value": "Partnership"
1864
+ }
1865
+ ]
1866
+ }
1867
+ ]
1643
1868
  },
1644
1869
  {
1645
- "$type": "Keyword",
1646
- "value": "SeparateWays"
1870
+ "$type": "Group",
1871
+ "elements": [
1872
+ {
1873
+ "$type": "Action",
1874
+ "inferredType": {
1875
+ "$type": "InferredType",
1876
+ "name": "SeparateWays"
1877
+ }
1878
+ },
1879
+ {
1880
+ "$type": "Alternatives",
1881
+ "elements": [
1882
+ {
1883
+ "$type": "Keyword",
1884
+ "value": "SW"
1885
+ },
1886
+ {
1887
+ "$type": "Keyword",
1888
+ "value": "SeparateWays"
1889
+ }
1890
+ ]
1891
+ }
1892
+ ]
1647
1893
  }
1648
1894
  ]
1649
1895
  },
1650
1896
  "entry": false,
1651
1897
  "fragment": false,
1652
1898
  "parameters": [],
1653
- "$comment": "/**\\n * DDD Relationship Types.\\n */"
1899
+ "$comment": "/**\\n * DDD Symmetric Patterns - describe the relationship between two contexts.\\n * These are mutual/shared patterns, not directional.\\n */"
1654
1900
  },
1655
1901
  {
1656
1902
  "$type": "ParserRule",
@@ -1678,7 +1924,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1678
1924
  "terminal": {
1679
1925
  "$type": "RuleCall",
1680
1926
  "rule": {
1681
- "$ref": "#/rules@27"
1927
+ "$ref": "#/rules@29"
1682
1928
  },
1683
1929
  "arguments": []
1684
1930
  }
@@ -1689,7 +1935,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1689
1935
  {
1690
1936
  "$type": "RuleCall",
1691
1937
  "rule": {
1692
- "$ref": "#/rules@24"
1938
+ "$ref": "#/rules@26"
1693
1939
  },
1694
1940
  "arguments": []
1695
1941
  },
@@ -1700,7 +1946,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1700
1946
  "terminal": {
1701
1947
  "$type": "RuleCall",
1702
1948
  "rule": {
1703
- "$ref": "#/rules@28"
1949
+ "$ref": "#/rules@30"
1704
1950
  },
1705
1951
  "arguments": []
1706
1952
  }
@@ -1727,7 +1973,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1727
1973
  {
1728
1974
  "$type": "RuleCall",
1729
1975
  "rule": {
1730
- "$ref": "#/rules@24"
1976
+ "$ref": "#/rules@26"
1731
1977
  },
1732
1978
  "arguments": [],
1733
1979
  "cardinality": "?"
@@ -1739,7 +1985,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1739
1985
  "terminal": {
1740
1986
  "$type": "RuleCall",
1741
1987
  "rule": {
1742
- "$ref": "#/rules@27"
1988
+ "$ref": "#/rules@29"
1743
1989
  },
1744
1990
  "arguments": []
1745
1991
  }
@@ -1758,7 +2004,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1758
2004
  "terminal": {
1759
2005
  "$type": "RuleCall",
1760
2006
  "rule": {
1761
- "$ref": "#/rules@27"
2007
+ "$ref": "#/rules@29"
1762
2008
  },
1763
2009
  "arguments": []
1764
2010
  }
@@ -1779,7 +2025,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1779
2025
  {
1780
2026
  "$type": "RuleCall",
1781
2027
  "rule": {
1782
- "$ref": "#/rules@24"
2028
+ "$ref": "#/rules@26"
1783
2029
  },
1784
2030
  "arguments": [],
1785
2031
  "cardinality": "?"
@@ -1791,7 +2037,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1791
2037
  "terminal": {
1792
2038
  "$type": "RuleCall",
1793
2039
  "rule": {
1794
- "$ref": "#/rules@28"
2040
+ "$ref": "#/rules@30"
1795
2041
  },
1796
2042
  "arguments": []
1797
2043
  }
@@ -1810,7 +2056,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1810
2056
  "terminal": {
1811
2057
  "$type": "RuleCall",
1812
2058
  "rule": {
1813
- "$ref": "#/rules@28"
2059
+ "$ref": "#/rules@30"
1814
2060
  },
1815
2061
  "arguments": []
1816
2062
  }
@@ -1837,21 +2083,21 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1837
2083
  {
1838
2084
  "$type": "RuleCall",
1839
2085
  "rule": {
1840
- "$ref": "#/rules@19"
2086
+ "$ref": "#/rules@21"
1841
2087
  },
1842
2088
  "arguments": []
1843
2089
  },
1844
2090
  {
1845
2091
  "$type": "RuleCall",
1846
2092
  "rule": {
1847
- "$ref": "#/rules@20"
2093
+ "$ref": "#/rules@22"
1848
2094
  },
1849
2095
  "arguments": []
1850
2096
  },
1851
2097
  {
1852
2098
  "$type": "RuleCall",
1853
2099
  "rule": {
1854
- "$ref": "#/rules@21"
2100
+ "$ref": "#/rules@23"
1855
2101
  },
1856
2102
  "arguments": []
1857
2103
  }
@@ -1900,7 +2146,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1900
2146
  "terminal": {
1901
2147
  "$type": "RuleCall",
1902
2148
  "rule": {
1903
- "$ref": "#/rules@25"
2149
+ "$ref": "#/rules@27"
1904
2150
  },
1905
2151
  "arguments": []
1906
2152
  },
@@ -1922,7 +2168,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1922
2168
  "terminal": {
1923
2169
  "$type": "RuleCall",
1924
2170
  "rule": {
1925
- "$ref": "#/rules@27"
2171
+ "$ref": "#/rules@29"
1926
2172
  },
1927
2173
  "arguments": []
1928
2174
  }
@@ -1930,7 +2176,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1930
2176
  {
1931
2177
  "$type": "RuleCall",
1932
2178
  "rule": {
1933
- "$ref": "#/rules@24"
2179
+ "$ref": "#/rules@26"
1934
2180
  },
1935
2181
  "arguments": []
1936
2182
  },
@@ -1941,7 +2187,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1941
2187
  "terminal": {
1942
2188
  "$type": "RuleCall",
1943
2189
  "rule": {
1944
- "$ref": "#/rules@28"
2190
+ "$ref": "#/rules@30"
1945
2191
  },
1946
2192
  "arguments": []
1947
2193
  }
@@ -1990,7 +2236,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
1990
2236
  "terminal": {
1991
2237
  "$type": "RuleCall",
1992
2238
  "rule": {
1993
- "$ref": "#/rules@25"
2239
+ "$ref": "#/rules@27"
1994
2240
  },
1995
2241
  "arguments": []
1996
2242
  },
@@ -2012,7 +2258,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2012
2258
  "terminal": {
2013
2259
  "$type": "RuleCall",
2014
2260
  "rule": {
2015
- "$ref": "#/rules@27"
2261
+ "$ref": "#/rules@29"
2016
2262
  },
2017
2263
  "arguments": []
2018
2264
  }
@@ -2020,7 +2266,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2020
2266
  {
2021
2267
  "$type": "RuleCall",
2022
2268
  "rule": {
2023
- "$ref": "#/rules@24"
2269
+ "$ref": "#/rules@26"
2024
2270
  },
2025
2271
  "arguments": []
2026
2272
  },
@@ -2031,7 +2277,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2031
2277
  "terminal": {
2032
2278
  "$type": "RuleCall",
2033
2279
  "rule": {
2034
- "$ref": "#/rules@28"
2280
+ "$ref": "#/rules@30"
2035
2281
  },
2036
2282
  "arguments": []
2037
2283
  }
@@ -2080,7 +2326,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2080
2326
  "terminal": {
2081
2327
  "$type": "RuleCall",
2082
2328
  "rule": {
2083
- "$ref": "#/rules@25"
2329
+ "$ref": "#/rules@27"
2084
2330
  },
2085
2331
  "arguments": []
2086
2332
  },
@@ -2102,7 +2348,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2102
2348
  "terminal": {
2103
2349
  "$type": "RuleCall",
2104
2350
  "rule": {
2105
- "$ref": "#/rules@27"
2351
+ "$ref": "#/rules@29"
2106
2352
  },
2107
2353
  "arguments": []
2108
2354
  }
@@ -2110,7 +2356,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2110
2356
  {
2111
2357
  "$type": "RuleCall",
2112
2358
  "rule": {
2113
- "$ref": "#/rules@24"
2359
+ "$ref": "#/rules@26"
2114
2360
  },
2115
2361
  "arguments": []
2116
2362
  },
@@ -2121,7 +2367,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2121
2367
  "terminal": {
2122
2368
  "$type": "RuleCall",
2123
2369
  "rule": {
2124
- "$ref": "#/rules@28"
2370
+ "$ref": "#/rules@30"
2125
2371
  },
2126
2372
  "arguments": []
2127
2373
  }
@@ -2158,7 +2404,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2158
2404
  "terminal": {
2159
2405
  "$type": "RuleCall",
2160
2406
  "rule": {
2161
- "$ref": "#/rules@28"
2407
+ "$ref": "#/rules@30"
2162
2408
  },
2163
2409
  "arguments": []
2164
2410
  }
@@ -2177,7 +2423,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2177
2423
  "terminal": {
2178
2424
  "$type": "RuleCall",
2179
2425
  "rule": {
2180
- "$ref": "#/rules@27"
2426
+ "$ref": "#/rules@29"
2181
2427
  },
2182
2428
  "arguments": []
2183
2429
  }
@@ -2218,7 +2464,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2218
2464
  "terminal": {
2219
2465
  "$type": "RuleCall",
2220
2466
  "rule": {
2221
- "$ref": "#/rules@25"
2467
+ "$ref": "#/rules@27"
2222
2468
  },
2223
2469
  "arguments": []
2224
2470
  }
@@ -2287,7 +2533,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2287
2533
  {
2288
2534
  "$type": "RuleCall",
2289
2535
  "rule": {
2290
- "$ref": "#/rules@27"
2536
+ "$ref": "#/rules@29"
2291
2537
  },
2292
2538
  "arguments": []
2293
2539
  },
@@ -2301,7 +2547,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2301
2547
  {
2302
2548
  "$type": "RuleCall",
2303
2549
  "rule": {
2304
- "$ref": "#/rules@27"
2550
+ "$ref": "#/rules@29"
2305
2551
  },
2306
2552
  "arguments": []
2307
2553
  }
@@ -2381,7 +2627,7 @@ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (load
2381
2627
  {
2382
2628
  "$type": "SimpleType",
2383
2629
  "typeRef": {
2384
- "$ref": "#/rules@23"
2630
+ "$ref": "#/rules@25"
2385
2631
  }
2386
2632
  },
2387
2633
  {