@domainlang/language 0.1.81

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 (188) hide show
  1. package/README.md +32 -0
  2. package/out/ast-augmentation.d.ts +6 -0
  3. package/out/ast-augmentation.js +2 -0
  4. package/out/ast-augmentation.js.map +1 -0
  5. package/out/domain-lang-module.d.ts +55 -0
  6. package/out/domain-lang-module.js +59 -0
  7. package/out/domain-lang-module.js.map +1 -0
  8. package/out/generated/ast.d.ts +770 -0
  9. package/out/generated/ast.js +565 -0
  10. package/out/generated/ast.js.map +1 -0
  11. package/out/generated/grammar.d.ts +6 -0
  12. package/out/generated/grammar.js +2502 -0
  13. package/out/generated/grammar.js.map +1 -0
  14. package/out/generated/module.d.ts +13 -0
  15. package/out/generated/module.js +21 -0
  16. package/out/generated/module.js.map +1 -0
  17. package/out/index.d.ts +13 -0
  18. package/out/index.js +17 -0
  19. package/out/index.js.map +1 -0
  20. package/out/lsp/domain-lang-completion.d.ts +37 -0
  21. package/out/lsp/domain-lang-completion.js +452 -0
  22. package/out/lsp/domain-lang-completion.js.map +1 -0
  23. package/out/lsp/domain-lang-formatter.d.ts +15 -0
  24. package/out/lsp/domain-lang-formatter.js +43 -0
  25. package/out/lsp/domain-lang-formatter.js.map +1 -0
  26. package/out/lsp/domain-lang-naming.d.ts +34 -0
  27. package/out/lsp/domain-lang-naming.js +49 -0
  28. package/out/lsp/domain-lang-naming.js.map +1 -0
  29. package/out/lsp/domain-lang-scope.d.ts +59 -0
  30. package/out/lsp/domain-lang-scope.js +102 -0
  31. package/out/lsp/domain-lang-scope.js.map +1 -0
  32. package/out/lsp/hover/ddd-pattern-explanations.d.ts +50 -0
  33. package/out/lsp/hover/ddd-pattern-explanations.js +196 -0
  34. package/out/lsp/hover/ddd-pattern-explanations.js.map +1 -0
  35. package/out/lsp/hover/domain-lang-hover.d.ts +19 -0
  36. package/out/lsp/hover/domain-lang-hover.js +306 -0
  37. package/out/lsp/hover/domain-lang-hover.js.map +1 -0
  38. package/out/lsp/hover/domain-lang-keywords.d.ts +13 -0
  39. package/out/lsp/hover/domain-lang-keywords.js +47 -0
  40. package/out/lsp/hover/domain-lang-keywords.js.map +1 -0
  41. package/out/main-browser.d.ts +1 -0
  42. package/out/main-browser.js +11 -0
  43. package/out/main-browser.js.map +1 -0
  44. package/out/main.d.ts +1 -0
  45. package/out/main.js +74 -0
  46. package/out/main.js.map +1 -0
  47. package/out/sdk/ast-augmentation.d.ts +136 -0
  48. package/out/sdk/ast-augmentation.js +62 -0
  49. package/out/sdk/ast-augmentation.js.map +1 -0
  50. package/out/sdk/index.d.ts +94 -0
  51. package/out/sdk/index.js +97 -0
  52. package/out/sdk/index.js.map +1 -0
  53. package/out/sdk/indexes.d.ts +16 -0
  54. package/out/sdk/indexes.js +97 -0
  55. package/out/sdk/indexes.js.map +1 -0
  56. package/out/sdk/loader-node.d.ts +47 -0
  57. package/out/sdk/loader-node.js +104 -0
  58. package/out/sdk/loader-node.js.map +1 -0
  59. package/out/sdk/loader.d.ts +49 -0
  60. package/out/sdk/loader.js +85 -0
  61. package/out/sdk/loader.js.map +1 -0
  62. package/out/sdk/patterns.d.ts +93 -0
  63. package/out/sdk/patterns.js +123 -0
  64. package/out/sdk/patterns.js.map +1 -0
  65. package/out/sdk/query.d.ts +90 -0
  66. package/out/sdk/query.js +679 -0
  67. package/out/sdk/query.js.map +1 -0
  68. package/out/sdk/resolution.d.ts +52 -0
  69. package/out/sdk/resolution.js +68 -0
  70. package/out/sdk/resolution.js.map +1 -0
  71. package/out/sdk/types.d.ts +301 -0
  72. package/out/sdk/types.js +8 -0
  73. package/out/sdk/types.js.map +1 -0
  74. package/out/services/dependency-analyzer.d.ts +94 -0
  75. package/out/services/dependency-analyzer.js +279 -0
  76. package/out/services/dependency-analyzer.js.map +1 -0
  77. package/out/services/dependency-resolver.d.ts +123 -0
  78. package/out/services/dependency-resolver.js +252 -0
  79. package/out/services/dependency-resolver.js.map +1 -0
  80. package/out/services/git-url-resolver.browser.d.ts +18 -0
  81. package/out/services/git-url-resolver.browser.js +15 -0
  82. package/out/services/git-url-resolver.browser.js.map +1 -0
  83. package/out/services/git-url-resolver.d.ts +192 -0
  84. package/out/services/git-url-resolver.js +382 -0
  85. package/out/services/git-url-resolver.js.map +1 -0
  86. package/out/services/governance-validator.d.ts +80 -0
  87. package/out/services/governance-validator.js +159 -0
  88. package/out/services/governance-validator.js.map +1 -0
  89. package/out/services/import-resolver.d.ts +18 -0
  90. package/out/services/import-resolver.js +22 -0
  91. package/out/services/import-resolver.js.map +1 -0
  92. package/out/services/performance-optimizer.d.ts +60 -0
  93. package/out/services/performance-optimizer.js +140 -0
  94. package/out/services/performance-optimizer.js.map +1 -0
  95. package/out/services/relationship-inference.d.ts +11 -0
  96. package/out/services/relationship-inference.js +98 -0
  97. package/out/services/relationship-inference.js.map +1 -0
  98. package/out/services/workspace-manager.d.ts +76 -0
  99. package/out/services/workspace-manager.js +323 -0
  100. package/out/services/workspace-manager.js.map +1 -0
  101. package/out/syntaxes/domain-lang.monarch.d.ts +76 -0
  102. package/out/syntaxes/domain-lang.monarch.js +29 -0
  103. package/out/syntaxes/domain-lang.monarch.js.map +1 -0
  104. package/out/utils/import-utils.d.ts +57 -0
  105. package/out/utils/import-utils.js +228 -0
  106. package/out/utils/import-utils.js.map +1 -0
  107. package/out/validation/bounded-context.d.ts +11 -0
  108. package/out/validation/bounded-context.js +79 -0
  109. package/out/validation/bounded-context.js.map +1 -0
  110. package/out/validation/classification.d.ts +3 -0
  111. package/out/validation/classification.js +3 -0
  112. package/out/validation/classification.js.map +1 -0
  113. package/out/validation/constants.d.ts +77 -0
  114. package/out/validation/constants.js +96 -0
  115. package/out/validation/constants.js.map +1 -0
  116. package/out/validation/domain-lang-validator.d.ts +2 -0
  117. package/out/validation/domain-lang-validator.js +27 -0
  118. package/out/validation/domain-lang-validator.js.map +1 -0
  119. package/out/validation/domain.d.ts +11 -0
  120. package/out/validation/domain.js +18 -0
  121. package/out/validation/domain.js.map +1 -0
  122. package/out/validation/import.d.ts +44 -0
  123. package/out/validation/import.js +135 -0
  124. package/out/validation/import.js.map +1 -0
  125. package/out/validation/maps.d.ts +21 -0
  126. package/out/validation/maps.js +56 -0
  127. package/out/validation/maps.js.map +1 -0
  128. package/out/validation/metadata.d.ts +7 -0
  129. package/out/validation/metadata.js +12 -0
  130. package/out/validation/metadata.js.map +1 -0
  131. package/out/validation/model.d.ts +12 -0
  132. package/out/validation/model.js +29 -0
  133. package/out/validation/model.js.map +1 -0
  134. package/out/validation/relationships.d.ts +12 -0
  135. package/out/validation/relationships.js +94 -0
  136. package/out/validation/relationships.js.map +1 -0
  137. package/out/validation/shared.d.ts +6 -0
  138. package/out/validation/shared.js +12 -0
  139. package/out/validation/shared.js.map +1 -0
  140. package/package.json +97 -0
  141. package/src/ast-augmentation.ts +5 -0
  142. package/src/domain-lang-module.ts +100 -0
  143. package/src/domain-lang.langium +356 -0
  144. package/src/generated/ast.ts +999 -0
  145. package/src/generated/grammar.ts +2504 -0
  146. package/src/generated/module.ts +25 -0
  147. package/src/index.ts +17 -0
  148. package/src/lsp/domain-lang-completion.ts +514 -0
  149. package/src/lsp/domain-lang-formatter.ts +51 -0
  150. package/src/lsp/domain-lang-naming.ts +56 -0
  151. package/src/lsp/domain-lang-scope.ts +137 -0
  152. package/src/lsp/hover/ddd-pattern-explanations.ts +237 -0
  153. package/src/lsp/hover/domain-lang-hover.ts +340 -0
  154. package/src/lsp/hover/domain-lang-keywords.ts +50 -0
  155. package/src/main-browser.ts +15 -0
  156. package/src/main.ts +85 -0
  157. package/src/sdk/README.md +297 -0
  158. package/src/sdk/ast-augmentation.ts +157 -0
  159. package/src/sdk/index.ts +128 -0
  160. package/src/sdk/indexes.ts +155 -0
  161. package/src/sdk/loader-node.ts +126 -0
  162. package/src/sdk/loader.ts +99 -0
  163. package/src/sdk/patterns.ts +147 -0
  164. package/src/sdk/query.ts +802 -0
  165. package/src/sdk/resolution.ts +78 -0
  166. package/src/sdk/types.ts +346 -0
  167. package/src/services/dependency-analyzer.ts +381 -0
  168. package/src/services/dependency-resolver.ts +334 -0
  169. package/src/services/git-url-resolver.browser.ts +31 -0
  170. package/src/services/git-url-resolver.ts +524 -0
  171. package/src/services/governance-validator.ts +219 -0
  172. package/src/services/import-resolver.ts +30 -0
  173. package/src/services/performance-optimizer.ts +170 -0
  174. package/src/services/relationship-inference.ts +121 -0
  175. package/src/services/workspace-manager.ts +416 -0
  176. package/src/syntaxes/domain-lang.monarch.ts +29 -0
  177. package/src/utils/import-utils.ts +274 -0
  178. package/src/validation/bounded-context.ts +99 -0
  179. package/src/validation/classification.ts +5 -0
  180. package/src/validation/constants.ts +124 -0
  181. package/src/validation/domain-lang-validator.ts +33 -0
  182. package/src/validation/domain.ts +24 -0
  183. package/src/validation/import.ts +171 -0
  184. package/src/validation/maps.ts +72 -0
  185. package/src/validation/metadata.ts +14 -0
  186. package/src/validation/model.ts +37 -0
  187. package/src/validation/relationships.ts +154 -0
  188. package/src/validation/shared.ts +14 -0
@@ -0,0 +1,2504 @@
1
+ /******************************************************************************
2
+ * This file was generated by langium-cli 4.1.0.
3
+ * DO NOT EDIT MANUALLY!
4
+ ******************************************************************************/
5
+
6
+ import type { Grammar } from 'langium';
7
+ import { loadGrammarFromJson } from 'langium';
8
+
9
+ let loadedDomainLangGrammar: Grammar | undefined;
10
+ export const DomainLangGrammar = (): Grammar => loadedDomainLangGrammar ?? (loadedDomainLangGrammar = loadGrammarFromJson(`{
11
+ "$type": "Grammar",
12
+ "isDeclared": true,
13
+ "name": "DomainLang",
14
+ "rules": [
15
+ {
16
+ "$type": "ParserRule",
17
+ "entry": true,
18
+ "name": "Model",
19
+ "definition": {
20
+ "$type": "Group",
21
+ "elements": [
22
+ {
23
+ "$type": "Assignment",
24
+ "feature": "imports",
25
+ "operator": "+=",
26
+ "terminal": {
27
+ "$type": "RuleCall",
28
+ "rule": {
29
+ "$ref": "#/rules@22"
30
+ },
31
+ "arguments": []
32
+ },
33
+ "cardinality": "*"
34
+ },
35
+ {
36
+ "$type": "Assignment",
37
+ "feature": "children",
38
+ "operator": "+=",
39
+ "terminal": {
40
+ "$type": "RuleCall",
41
+ "rule": {
42
+ "$ref": "#/rules@1"
43
+ },
44
+ "arguments": []
45
+ },
46
+ "cardinality": "*"
47
+ }
48
+ ]
49
+ },
50
+ "fragment": false,
51
+ "parameters": [],
52
+ "$comment": "/**\\n * Root AST node - aggregates all top-level DDD elements.\\n * Produces the entry point for parsing .dlang files.\\n */"
53
+ },
54
+ {
55
+ "$type": "ParserRule",
56
+ "name": "StructureElement",
57
+ "definition": {
58
+ "$type": "Alternatives",
59
+ "elements": [
60
+ {
61
+ "$type": "RuleCall",
62
+ "rule": {
63
+ "$ref": "#/rules@2"
64
+ },
65
+ "arguments": []
66
+ },
67
+ {
68
+ "$type": "RuleCall",
69
+ "rule": {
70
+ "$ref": "#/rules@9"
71
+ },
72
+ "arguments": []
73
+ },
74
+ {
75
+ "$type": "RuleCall",
76
+ "rule": {
77
+ "$ref": "#/rules@23"
78
+ },
79
+ "arguments": []
80
+ }
81
+ ]
82
+ },
83
+ "entry": false,
84
+ "fragment": false,
85
+ "parameters": [],
86
+ "$comment": "/**\\n * Top-level elements that can appear in the model.\\n * Unifies all major DDD constructs for flexible ordering.\\n */"
87
+ },
88
+ {
89
+ "$type": "ParserRule",
90
+ "name": "Type",
91
+ "definition": {
92
+ "$type": "Alternatives",
93
+ "elements": [
94
+ {
95
+ "$type": "RuleCall",
96
+ "rule": {
97
+ "$ref": "#/rules@3"
98
+ },
99
+ "arguments": []
100
+ },
101
+ {
102
+ "$type": "RuleCall",
103
+ "rule": {
104
+ "$ref": "#/rules@4"
105
+ },
106
+ "arguments": []
107
+ },
108
+ {
109
+ "$type": "RuleCall",
110
+ "rule": {
111
+ "$ref": "#/rules@6"
112
+ },
113
+ "arguments": []
114
+ },
115
+ {
116
+ "$type": "RuleCall",
117
+ "rule": {
118
+ "$ref": "#/rules@7"
119
+ },
120
+ "arguments": []
121
+ },
122
+ {
123
+ "$type": "RuleCall",
124
+ "rule": {
125
+ "$ref": "#/rules@8"
126
+ },
127
+ "arguments": []
128
+ }
129
+ ]
130
+ },
131
+ "entry": false,
132
+ "fragment": false,
133
+ "parameters": [],
134
+ "$comment": "/**\\n * Union of all main DDD type constructs.\\n */"
135
+ },
136
+ {
137
+ "$type": "ParserRule",
138
+ "name": "Domain",
139
+ "definition": {
140
+ "$type": "Group",
141
+ "elements": [
142
+ {
143
+ "$type": "Alternatives",
144
+ "elements": [
145
+ {
146
+ "$type": "Keyword",
147
+ "value": "Domain",
148
+ "$comment": "/** A Domain represents a sphere of knowledge, influence, or activity. In DDD, it is the subject area to which the user applies a program. Example: Sales, Shipping, Accounting. */"
149
+ },
150
+ {
151
+ "$type": "Keyword",
152
+ "value": "dom"
153
+ }
154
+ ]
155
+ },
156
+ {
157
+ "$type": "Assignment",
158
+ "feature": "name",
159
+ "operator": "=",
160
+ "terminal": {
161
+ "$type": "RuleCall",
162
+ "rule": {
163
+ "$ref": "#/rules@27"
164
+ },
165
+ "arguments": []
166
+ }
167
+ },
168
+ {
169
+ "$type": "Group",
170
+ "elements": [
171
+ {
172
+ "$type": "Keyword",
173
+ "value": "in"
174
+ },
175
+ {
176
+ "$type": "Assignment",
177
+ "feature": "parent",
178
+ "operator": "=",
179
+ "terminal": {
180
+ "$type": "CrossReference",
181
+ "type": {
182
+ "$ref": "#/rules@3"
183
+ },
184
+ "terminal": {
185
+ "$type": "RuleCall",
186
+ "rule": {
187
+ "$ref": "#/rules@25"
188
+ },
189
+ "arguments": []
190
+ },
191
+ "deprecatedSyntax": false,
192
+ "isMulti": false
193
+ }
194
+ }
195
+ ],
196
+ "cardinality": "?"
197
+ },
198
+ {
199
+ "$type": "Group",
200
+ "elements": [
201
+ {
202
+ "$type": "Keyword",
203
+ "value": "{"
204
+ },
205
+ {
206
+ "$type": "Alternatives",
207
+ "elements": [
208
+ {
209
+ "$type": "Group",
210
+ "elements": [
211
+ {
212
+ "$type": "Keyword",
213
+ "value": "description"
214
+ },
215
+ {
216
+ "$type": "RuleCall",
217
+ "rule": {
218
+ "$ref": "#/rules@24"
219
+ },
220
+ "arguments": []
221
+ },
222
+ {
223
+ "$type": "Assignment",
224
+ "feature": "description",
225
+ "operator": "=",
226
+ "terminal": {
227
+ "$type": "RuleCall",
228
+ "rule": {
229
+ "$ref": "#/rules@28"
230
+ },
231
+ "arguments": []
232
+ }
233
+ }
234
+ ]
235
+ },
236
+ {
237
+ "$type": "Group",
238
+ "elements": [
239
+ {
240
+ "$type": "Keyword",
241
+ "value": "vision"
242
+ },
243
+ {
244
+ "$type": "RuleCall",
245
+ "rule": {
246
+ "$ref": "#/rules@24"
247
+ },
248
+ "arguments": []
249
+ },
250
+ {
251
+ "$type": "Assignment",
252
+ "feature": "vision",
253
+ "operator": "=",
254
+ "terminal": {
255
+ "$type": "RuleCall",
256
+ "rule": {
257
+ "$ref": "#/rules@28"
258
+ },
259
+ "arguments": []
260
+ }
261
+ }
262
+ ]
263
+ },
264
+ {
265
+ "$type": "Group",
266
+ "elements": [
267
+ {
268
+ "$type": "Keyword",
269
+ "value": "type"
270
+ },
271
+ {
272
+ "$type": "RuleCall",
273
+ "rule": {
274
+ "$ref": "#/rules@24"
275
+ },
276
+ "arguments": []
277
+ },
278
+ {
279
+ "$type": "Assignment",
280
+ "feature": "type",
281
+ "operator": "=",
282
+ "terminal": {
283
+ "$type": "CrossReference",
284
+ "type": {
285
+ "$ref": "#/rules@7"
286
+ },
287
+ "terminal": {
288
+ "$type": "RuleCall",
289
+ "rule": {
290
+ "$ref": "#/rules@25"
291
+ },
292
+ "arguments": []
293
+ },
294
+ "deprecatedSyntax": false,
295
+ "isMulti": false
296
+ }
297
+ }
298
+ ]
299
+ }
300
+ ],
301
+ "cardinality": "*"
302
+ },
303
+ {
304
+ "$type": "Keyword",
305
+ "value": "}"
306
+ }
307
+ ],
308
+ "cardinality": "?"
309
+ }
310
+ ]
311
+ },
312
+ "entry": false,
313
+ "fragment": false,
314
+ "parameters": [],
315
+ "$comment": "/**\\n * Domain - A sphere of knowledge or activity in DDD.\\n * Can be nested via \`in\` to show subdomain hierarchy.\\n * The \`type\` property indicates strategic importance (Core, Supporting, Generic) per Bounded Context Canvas.\\n * Body is optional - allows header-only Domain definitions.\\n */"
316
+ },
317
+ {
318
+ "$type": "ParserRule",
319
+ "name": "BoundedContext",
320
+ "definition": {
321
+ "$type": "Group",
322
+ "elements": [
323
+ {
324
+ "$type": "Alternatives",
325
+ "elements": [
326
+ {
327
+ "$type": "Keyword",
328
+ "value": "BoundedContext",
329
+ "$comment": "/** A Bounded Context defines the boundary within which a particular domain model is defined and applicable. It is a central pattern in DDD for managing complexity. Example: SalesContext, SupportContext. */"
330
+ },
331
+ {
332
+ "$type": "Keyword",
333
+ "value": "bc"
334
+ }
335
+ ]
336
+ },
337
+ {
338
+ "$type": "Assignment",
339
+ "feature": "name",
340
+ "operator": "=",
341
+ "terminal": {
342
+ "$type": "RuleCall",
343
+ "rule": {
344
+ "$ref": "#/rules@27"
345
+ },
346
+ "arguments": []
347
+ }
348
+ },
349
+ {
350
+ "$type": "Group",
351
+ "elements": [
352
+ {
353
+ "$type": "Keyword",
354
+ "value": "for"
355
+ },
356
+ {
357
+ "$type": "Assignment",
358
+ "feature": "domain",
359
+ "operator": "=",
360
+ "terminal": {
361
+ "$type": "CrossReference",
362
+ "type": {
363
+ "$ref": "#/rules@3"
364
+ },
365
+ "terminal": {
366
+ "$type": "RuleCall",
367
+ "rule": {
368
+ "$ref": "#/rules@25"
369
+ },
370
+ "arguments": []
371
+ },
372
+ "deprecatedSyntax": false,
373
+ "isMulti": false
374
+ }
375
+ }
376
+ ],
377
+ "cardinality": "?"
378
+ },
379
+ {
380
+ "$type": "Group",
381
+ "elements": [
382
+ {
383
+ "$type": "Group",
384
+ "elements": [
385
+ {
386
+ "$type": "Keyword",
387
+ "value": "as"
388
+ },
389
+ {
390
+ "$type": "Assignment",
391
+ "feature": "classification",
392
+ "operator": "+=",
393
+ "terminal": {
394
+ "$type": "CrossReference",
395
+ "type": {
396
+ "$ref": "#/rules@7"
397
+ },
398
+ "terminal": {
399
+ "$type": "RuleCall",
400
+ "rule": {
401
+ "$ref": "#/rules@25"
402
+ },
403
+ "arguments": []
404
+ },
405
+ "deprecatedSyntax": false,
406
+ "isMulti": false
407
+ }
408
+ }
409
+ ],
410
+ "cardinality": "?"
411
+ },
412
+ {
413
+ "$type": "Group",
414
+ "elements": [
415
+ {
416
+ "$type": "Keyword",
417
+ "value": "by"
418
+ },
419
+ {
420
+ "$type": "Assignment",
421
+ "feature": "team",
422
+ "operator": "+=",
423
+ "terminal": {
424
+ "$type": "CrossReference",
425
+ "type": {
426
+ "$ref": "#/rules@6"
427
+ },
428
+ "terminal": {
429
+ "$type": "RuleCall",
430
+ "rule": {
431
+ "$ref": "#/rules@25"
432
+ },
433
+ "arguments": []
434
+ },
435
+ "deprecatedSyntax": false,
436
+ "isMulti": false
437
+ }
438
+ }
439
+ ],
440
+ "cardinality": "?"
441
+ }
442
+ ],
443
+ "cardinality": "?"
444
+ },
445
+ {
446
+ "$type": "Group",
447
+ "elements": [
448
+ {
449
+ "$type": "Keyword",
450
+ "value": "{"
451
+ },
452
+ {
453
+ "$type": "Alternatives",
454
+ "elements": [
455
+ {
456
+ "$type": "Group",
457
+ "elements": [
458
+ {
459
+ "$type": "Keyword",
460
+ "value": "description"
461
+ },
462
+ {
463
+ "$type": "RuleCall",
464
+ "rule": {
465
+ "$ref": "#/rules@24"
466
+ },
467
+ "arguments": []
468
+ },
469
+ {
470
+ "$type": "Assignment",
471
+ "feature": "description",
472
+ "operator": "=",
473
+ "terminal": {
474
+ "$type": "RuleCall",
475
+ "rule": {
476
+ "$ref": "#/rules@28"
477
+ },
478
+ "arguments": []
479
+ }
480
+ }
481
+ ]
482
+ },
483
+ {
484
+ "$type": "Group",
485
+ "elements": [
486
+ {
487
+ "$type": "Keyword",
488
+ "value": "classification"
489
+ },
490
+ {
491
+ "$type": "RuleCall",
492
+ "rule": {
493
+ "$ref": "#/rules@24"
494
+ },
495
+ "arguments": []
496
+ },
497
+ {
498
+ "$type": "Assignment",
499
+ "feature": "classification",
500
+ "operator": "+=",
501
+ "terminal": {
502
+ "$type": "CrossReference",
503
+ "type": {
504
+ "$ref": "#/rules@7"
505
+ },
506
+ "terminal": {
507
+ "$type": "RuleCall",
508
+ "rule": {
509
+ "$ref": "#/rules@25"
510
+ },
511
+ "arguments": []
512
+ },
513
+ "deprecatedSyntax": false,
514
+ "isMulti": false
515
+ }
516
+ }
517
+ ]
518
+ },
519
+ {
520
+ "$type": "Group",
521
+ "elements": [
522
+ {
523
+ "$type": "Keyword",
524
+ "value": "team"
525
+ },
526
+ {
527
+ "$type": "RuleCall",
528
+ "rule": {
529
+ "$ref": "#/rules@24"
530
+ },
531
+ "arguments": []
532
+ },
533
+ {
534
+ "$type": "Assignment",
535
+ "feature": "team",
536
+ "operator": "+=",
537
+ "terminal": {
538
+ "$type": "CrossReference",
539
+ "type": {
540
+ "$ref": "#/rules@6"
541
+ },
542
+ "terminal": {
543
+ "$type": "RuleCall",
544
+ "rule": {
545
+ "$ref": "#/rules@25"
546
+ },
547
+ "arguments": []
548
+ },
549
+ "deprecatedSyntax": false,
550
+ "isMulti": false
551
+ }
552
+ }
553
+ ]
554
+ },
555
+ {
556
+ "$type": "Group",
557
+ "elements": [
558
+ {
559
+ "$type": "Keyword",
560
+ "value": "businessModel"
561
+ },
562
+ {
563
+ "$type": "RuleCall",
564
+ "rule": {
565
+ "$ref": "#/rules@24"
566
+ },
567
+ "arguments": []
568
+ },
569
+ {
570
+ "$type": "Assignment",
571
+ "feature": "businessModel",
572
+ "operator": "=",
573
+ "terminal": {
574
+ "$type": "CrossReference",
575
+ "type": {
576
+ "$ref": "#/rules@7"
577
+ },
578
+ "terminal": {
579
+ "$type": "RuleCall",
580
+ "rule": {
581
+ "$ref": "#/rules@25"
582
+ },
583
+ "arguments": []
584
+ },
585
+ "deprecatedSyntax": false,
586
+ "isMulti": false
587
+ }
588
+ }
589
+ ]
590
+ },
591
+ {
592
+ "$type": "Group",
593
+ "elements": [
594
+ {
595
+ "$type": "Keyword",
596
+ "value": "evolution"
597
+ },
598
+ {
599
+ "$type": "RuleCall",
600
+ "rule": {
601
+ "$ref": "#/rules@24"
602
+ },
603
+ "arguments": []
604
+ },
605
+ {
606
+ "$type": "Assignment",
607
+ "feature": "evolution",
608
+ "operator": "=",
609
+ "terminal": {
610
+ "$type": "CrossReference",
611
+ "type": {
612
+ "$ref": "#/rules@7"
613
+ },
614
+ "terminal": {
615
+ "$type": "RuleCall",
616
+ "rule": {
617
+ "$ref": "#/rules@25"
618
+ },
619
+ "arguments": []
620
+ },
621
+ "deprecatedSyntax": false,
622
+ "isMulti": false
623
+ }
624
+ }
625
+ ]
626
+ },
627
+ {
628
+ "$type": "Group",
629
+ "elements": [
630
+ {
631
+ "$type": "Keyword",
632
+ "value": "archetype"
633
+ },
634
+ {
635
+ "$type": "RuleCall",
636
+ "rule": {
637
+ "$ref": "#/rules@24"
638
+ },
639
+ "arguments": []
640
+ },
641
+ {
642
+ "$type": "Assignment",
643
+ "feature": "archetype",
644
+ "operator": "=",
645
+ "terminal": {
646
+ "$type": "CrossReference",
647
+ "type": {
648
+ "$ref": "#/rules@7"
649
+ },
650
+ "terminal": {
651
+ "$type": "RuleCall",
652
+ "rule": {
653
+ "$ref": "#/rules@25"
654
+ },
655
+ "arguments": []
656
+ },
657
+ "deprecatedSyntax": false,
658
+ "isMulti": false
659
+ }
660
+ }
661
+ ]
662
+ },
663
+ {
664
+ "$type": "Group",
665
+ "elements": [
666
+ {
667
+ "$type": "Alternatives",
668
+ "elements": [
669
+ {
670
+ "$type": "Keyword",
671
+ "value": "metadata"
672
+ },
673
+ {
674
+ "$type": "Keyword",
675
+ "value": "meta"
676
+ }
677
+ ]
678
+ },
679
+ {
680
+ "$type": "Keyword",
681
+ "value": "{"
682
+ },
683
+ {
684
+ "$type": "Assignment",
685
+ "feature": "metadata",
686
+ "operator": "+=",
687
+ "terminal": {
688
+ "$type": "RuleCall",
689
+ "rule": {
690
+ "$ref": "#/rules@5"
691
+ },
692
+ "arguments": []
693
+ },
694
+ "cardinality": "*"
695
+ },
696
+ {
697
+ "$type": "Keyword",
698
+ "value": "}"
699
+ }
700
+ ]
701
+ },
702
+ {
703
+ "$type": "Group",
704
+ "elements": [
705
+ {
706
+ "$type": "Alternatives",
707
+ "elements": [
708
+ {
709
+ "$type": "Keyword",
710
+ "value": "relationships"
711
+ },
712
+ {
713
+ "$type": "Keyword",
714
+ "value": "integrations"
715
+ }
716
+ ]
717
+ },
718
+ {
719
+ "$type": "Keyword",
720
+ "value": "{"
721
+ },
722
+ {
723
+ "$type": "Group",
724
+ "elements": [
725
+ {
726
+ "$type": "Assignment",
727
+ "feature": "relationships",
728
+ "operator": "+=",
729
+ "terminal": {
730
+ "$type": "RuleCall",
731
+ "rule": {
732
+ "$ref": "#/rules@12"
733
+ },
734
+ "arguments": []
735
+ }
736
+ },
737
+ {
738
+ "$type": "Group",
739
+ "elements": [
740
+ {
741
+ "$type": "Keyword",
742
+ "value": ",",
743
+ "cardinality": "?"
744
+ },
745
+ {
746
+ "$type": "Assignment",
747
+ "feature": "relationships",
748
+ "operator": "+=",
749
+ "terminal": {
750
+ "$type": "RuleCall",
751
+ "rule": {
752
+ "$ref": "#/rules@12"
753
+ },
754
+ "arguments": []
755
+ }
756
+ }
757
+ ],
758
+ "cardinality": "*"
759
+ }
760
+ ],
761
+ "cardinality": "*"
762
+ },
763
+ {
764
+ "$type": "Keyword",
765
+ "value": "}"
766
+ }
767
+ ]
768
+ },
769
+ {
770
+ "$type": "Group",
771
+ "elements": [
772
+ {
773
+ "$type": "Alternatives",
774
+ "elements": [
775
+ {
776
+ "$type": "Keyword",
777
+ "value": "terminology"
778
+ },
779
+ {
780
+ "$type": "Keyword",
781
+ "value": "glossary"
782
+ }
783
+ ]
784
+ },
785
+ {
786
+ "$type": "Keyword",
787
+ "value": "{"
788
+ },
789
+ {
790
+ "$type": "Group",
791
+ "elements": [
792
+ {
793
+ "$type": "Assignment",
794
+ "feature": "terminology",
795
+ "operator": "+=",
796
+ "terminal": {
797
+ "$type": "RuleCall",
798
+ "rule": {
799
+ "$ref": "#/rules@17"
800
+ },
801
+ "arguments": []
802
+ }
803
+ },
804
+ {
805
+ "$type": "Keyword",
806
+ "value": ",",
807
+ "cardinality": "?"
808
+ }
809
+ ],
810
+ "cardinality": "*"
811
+ },
812
+ {
813
+ "$type": "Keyword",
814
+ "value": "}"
815
+ }
816
+ ]
817
+ },
818
+ {
819
+ "$type": "Group",
820
+ "elements": [
821
+ {
822
+ "$type": "Alternatives",
823
+ "elements": [
824
+ {
825
+ "$type": "Keyword",
826
+ "value": "decisions"
827
+ },
828
+ {
829
+ "$type": "Keyword",
830
+ "value": "rules"
831
+ }
832
+ ]
833
+ },
834
+ {
835
+ "$type": "Keyword",
836
+ "value": "{"
837
+ },
838
+ {
839
+ "$type": "Group",
840
+ "elements": [
841
+ {
842
+ "$type": "Assignment",
843
+ "feature": "decisions",
844
+ "operator": "+=",
845
+ "terminal": {
846
+ "$type": "RuleCall",
847
+ "rule": {
848
+ "$ref": "#/rules@18"
849
+ },
850
+ "arguments": []
851
+ }
852
+ },
853
+ {
854
+ "$type": "Keyword",
855
+ "value": ",",
856
+ "cardinality": "?"
857
+ }
858
+ ],
859
+ "cardinality": "*"
860
+ },
861
+ {
862
+ "$type": "Keyword",
863
+ "value": "}"
864
+ }
865
+ ]
866
+ }
867
+ ],
868
+ "cardinality": "*"
869
+ },
870
+ {
871
+ "$type": "Keyword",
872
+ "value": "}"
873
+ }
874
+ ],
875
+ "cardinality": "?"
876
+ }
877
+ ]
878
+ },
879
+ "entry": false,
880
+ "fragment": false,
881
+ "parameters": [],
882
+ "$comment": "/**\\n * Bounded Context - A boundary within which a domain model is defined.\\n * Central pattern in DDD for managing complexity and team boundaries.\\n * Belongs to exactly ONE domain (fundamental DDD principle).\\n * Body properties can appear in any order. Validation enforces at-most-once constraint.\\n * The \`classification\` property indicates strategic importance per Bounded Context Canvas.\\n * The \`evolution\` property indicates maturity stage per Wardley Maps/BC Canvas.\\n * The \`archetype\` property indicates behavioral role per DDD archetypes (Gateway, Execution, etc).\\n */"
883
+ },
884
+ {
885
+ "$type": "ParserRule",
886
+ "name": "MetadataEntry",
887
+ "definition": {
888
+ "$type": "Group",
889
+ "elements": [
890
+ {
891
+ "$type": "Assignment",
892
+ "feature": "key",
893
+ "operator": "=",
894
+ "terminal": {
895
+ "$type": "CrossReference",
896
+ "type": {
897
+ "$ref": "#/rules@8"
898
+ },
899
+ "terminal": {
900
+ "$type": "RuleCall",
901
+ "rule": {
902
+ "$ref": "#/rules@25"
903
+ },
904
+ "arguments": []
905
+ },
906
+ "deprecatedSyntax": false,
907
+ "isMulti": false
908
+ }
909
+ },
910
+ {
911
+ "$type": "RuleCall",
912
+ "rule": {
913
+ "$ref": "#/rules@24"
914
+ },
915
+ "arguments": []
916
+ },
917
+ {
918
+ "$type": "Assignment",
919
+ "feature": "value",
920
+ "operator": "=",
921
+ "terminal": {
922
+ "$type": "RuleCall",
923
+ "rule": {
924
+ "$ref": "#/rules@28"
925
+ },
926
+ "arguments": []
927
+ }
928
+ }
929
+ ]
930
+ },
931
+ "entry": false,
932
+ "fragment": false,
933
+ "parameters": []
934
+ },
935
+ {
936
+ "$type": "ParserRule",
937
+ "name": "Team",
938
+ "definition": {
939
+ "$type": "Group",
940
+ "elements": [
941
+ {
942
+ "$type": "Keyword",
943
+ "value": "Team"
944
+ },
945
+ {
946
+ "$type": "Assignment",
947
+ "feature": "name",
948
+ "operator": "=",
949
+ "terminal": {
950
+ "$type": "RuleCall",
951
+ "rule": {
952
+ "$ref": "#/rules@27"
953
+ },
954
+ "arguments": []
955
+ }
956
+ }
957
+ ]
958
+ },
959
+ "entry": false,
960
+ "fragment": false,
961
+ "parameters": [],
962
+ "$comment": "/**\\n * Team - People responsible for a Bounded Context or Domain.\\n * Represents organizational boundaries in DDD.\\n */"
963
+ },
964
+ {
965
+ "$type": "ParserRule",
966
+ "name": "Classification",
967
+ "definition": {
968
+ "$type": "Group",
969
+ "elements": [
970
+ {
971
+ "$type": "Keyword",
972
+ "value": "Classification"
973
+ },
974
+ {
975
+ "$type": "Assignment",
976
+ "feature": "name",
977
+ "operator": "=",
978
+ "terminal": {
979
+ "$type": "RuleCall",
980
+ "rule": {
981
+ "$ref": "#/rules@27"
982
+ },
983
+ "arguments": []
984
+ }
985
+ }
986
+ ]
987
+ },
988
+ "entry": false,
989
+ "fragment": false,
990
+ "parameters": [],
991
+ "$comment": "/**\\n * Classification - Reusable label for categorizing elements.\\n * Examples: Core, Supporting, Generic, Strategic, Commodity, Architectural, Business, Technical.\\n */"
992
+ },
993
+ {
994
+ "$type": "ParserRule",
995
+ "name": "Metadata",
996
+ "definition": {
997
+ "$type": "Group",
998
+ "elements": [
999
+ {
1000
+ "$type": "Keyword",
1001
+ "value": "Metadata"
1002
+ },
1003
+ {
1004
+ "$type": "Assignment",
1005
+ "feature": "name",
1006
+ "operator": "=",
1007
+ "terminal": {
1008
+ "$type": "RuleCall",
1009
+ "rule": {
1010
+ "$ref": "#/rules@27"
1011
+ },
1012
+ "arguments": []
1013
+ }
1014
+ }
1015
+ ]
1016
+ },
1017
+ "entry": false,
1018
+ "fragment": false,
1019
+ "parameters": [],
1020
+ "$comment": "/**\\n * Metadata - Defines a key that can be used in metadata blocks.\\n * Examples: Language, Framework, Database, Repository.\\n * Can be defined locally or imported from stdlib.\\n */"
1021
+ },
1022
+ {
1023
+ "$type": "ParserRule",
1024
+ "name": "ObjectMap",
1025
+ "definition": {
1026
+ "$type": "Alternatives",
1027
+ "elements": [
1028
+ {
1029
+ "$type": "RuleCall",
1030
+ "rule": {
1031
+ "$ref": "#/rules@10"
1032
+ },
1033
+ "arguments": []
1034
+ },
1035
+ {
1036
+ "$type": "RuleCall",
1037
+ "rule": {
1038
+ "$ref": "#/rules@11"
1039
+ },
1040
+ "arguments": []
1041
+ }
1042
+ ]
1043
+ },
1044
+ "entry": false,
1045
+ "fragment": false,
1046
+ "parameters": [],
1047
+ "$comment": "/**\\n * Union of mapping constructs for visualizing architecture.\\n */"
1048
+ },
1049
+ {
1050
+ "$type": "ParserRule",
1051
+ "name": "ContextMap",
1052
+ "definition": {
1053
+ "$type": "Group",
1054
+ "elements": [
1055
+ {
1056
+ "$type": "Alternatives",
1057
+ "elements": [
1058
+ {
1059
+ "$type": "Keyword",
1060
+ "value": "ContextMap",
1061
+ "$comment": "/** A Context Map visualizes and documents the relationships between Bounded Contexts, including their integration patterns. */"
1062
+ },
1063
+ {
1064
+ "$type": "Keyword",
1065
+ "value": "cmap"
1066
+ }
1067
+ ]
1068
+ },
1069
+ {
1070
+ "$type": "Assignment",
1071
+ "feature": "name",
1072
+ "operator": "=",
1073
+ "terminal": {
1074
+ "$type": "RuleCall",
1075
+ "rule": {
1076
+ "$ref": "#/rules@27"
1077
+ },
1078
+ "arguments": []
1079
+ }
1080
+ },
1081
+ {
1082
+ "$type": "Keyword",
1083
+ "value": "{"
1084
+ },
1085
+ {
1086
+ "$type": "Group",
1087
+ "elements": [
1088
+ {
1089
+ "$type": "Keyword",
1090
+ "value": "contains"
1091
+ },
1092
+ {
1093
+ "$type": "Assignment",
1094
+ "feature": "boundedContexts",
1095
+ "operator": "+=",
1096
+ "terminal": {
1097
+ "$type": "CrossReference",
1098
+ "isMulti": true,
1099
+ "type": {
1100
+ "$ref": "#/rules@4"
1101
+ },
1102
+ "terminal": {
1103
+ "$type": "RuleCall",
1104
+ "rule": {
1105
+ "$ref": "#/rules@25"
1106
+ },
1107
+ "arguments": []
1108
+ },
1109
+ "deprecatedSyntax": false
1110
+ }
1111
+ },
1112
+ {
1113
+ "$type": "Group",
1114
+ "elements": [
1115
+ {
1116
+ "$type": "Keyword",
1117
+ "value": ",",
1118
+ "cardinality": "?"
1119
+ },
1120
+ {
1121
+ "$type": "Assignment",
1122
+ "feature": "boundedContexts",
1123
+ "operator": "+=",
1124
+ "terminal": {
1125
+ "$type": "CrossReference",
1126
+ "isMulti": true,
1127
+ "type": {
1128
+ "$ref": "#/rules@4"
1129
+ },
1130
+ "terminal": {
1131
+ "$type": "RuleCall",
1132
+ "rule": {
1133
+ "$ref": "#/rules@25"
1134
+ },
1135
+ "arguments": []
1136
+ },
1137
+ "deprecatedSyntax": false
1138
+ }
1139
+ }
1140
+ ],
1141
+ "cardinality": "*"
1142
+ }
1143
+ ],
1144
+ "cardinality": "*"
1145
+ },
1146
+ {
1147
+ "$type": "Group",
1148
+ "elements": [
1149
+ {
1150
+ "$type": "Assignment",
1151
+ "feature": "relationships",
1152
+ "operator": "+=",
1153
+ "terminal": {
1154
+ "$type": "RuleCall",
1155
+ "rule": {
1156
+ "$ref": "#/rules@12"
1157
+ },
1158
+ "arguments": []
1159
+ }
1160
+ },
1161
+ {
1162
+ "$type": "Group",
1163
+ "elements": [
1164
+ {
1165
+ "$type": "Keyword",
1166
+ "value": ",",
1167
+ "cardinality": "?"
1168
+ },
1169
+ {
1170
+ "$type": "Assignment",
1171
+ "feature": "relationships",
1172
+ "operator": "+=",
1173
+ "terminal": {
1174
+ "$type": "RuleCall",
1175
+ "rule": {
1176
+ "$ref": "#/rules@12"
1177
+ },
1178
+ "arguments": []
1179
+ }
1180
+ }
1181
+ ],
1182
+ "cardinality": "*"
1183
+ }
1184
+ ],
1185
+ "cardinality": "*"
1186
+ },
1187
+ {
1188
+ "$type": "Keyword",
1189
+ "value": "}"
1190
+ }
1191
+ ]
1192
+ },
1193
+ "entry": false,
1194
+ "fragment": false,
1195
+ "parameters": [],
1196
+ "$comment": "/**\\n * Context Map - Visualizes relationships between Bounded Contexts.\\n * Shows integration patterns and team interactions.\\n */"
1197
+ },
1198
+ {
1199
+ "$type": "ParserRule",
1200
+ "name": "DomainMap",
1201
+ "definition": {
1202
+ "$type": "Group",
1203
+ "elements": [
1204
+ {
1205
+ "$type": "Alternatives",
1206
+ "elements": [
1207
+ {
1208
+ "$type": "Keyword",
1209
+ "value": "DomainMap",
1210
+ "$comment": "/** A Domain Map visualizes and documents the relationships between Domains. */"
1211
+ },
1212
+ {
1213
+ "$type": "Keyword",
1214
+ "value": "dmap"
1215
+ }
1216
+ ]
1217
+ },
1218
+ {
1219
+ "$type": "Assignment",
1220
+ "feature": "name",
1221
+ "operator": "=",
1222
+ "terminal": {
1223
+ "$type": "RuleCall",
1224
+ "rule": {
1225
+ "$ref": "#/rules@27"
1226
+ },
1227
+ "arguments": []
1228
+ }
1229
+ },
1230
+ {
1231
+ "$type": "Keyword",
1232
+ "value": "{"
1233
+ },
1234
+ {
1235
+ "$type": "Group",
1236
+ "elements": [
1237
+ {
1238
+ "$type": "Keyword",
1239
+ "value": "contains"
1240
+ },
1241
+ {
1242
+ "$type": "Assignment",
1243
+ "feature": "domains",
1244
+ "operator": "+=",
1245
+ "terminal": {
1246
+ "$type": "CrossReference",
1247
+ "isMulti": true,
1248
+ "type": {
1249
+ "$ref": "#/rules@3"
1250
+ },
1251
+ "terminal": {
1252
+ "$type": "RuleCall",
1253
+ "rule": {
1254
+ "$ref": "#/rules@25"
1255
+ },
1256
+ "arguments": []
1257
+ },
1258
+ "deprecatedSyntax": false
1259
+ }
1260
+ },
1261
+ {
1262
+ "$type": "Group",
1263
+ "elements": [
1264
+ {
1265
+ "$type": "Keyword",
1266
+ "value": ",",
1267
+ "cardinality": "?"
1268
+ },
1269
+ {
1270
+ "$type": "Assignment",
1271
+ "feature": "domains",
1272
+ "operator": "+=",
1273
+ "terminal": {
1274
+ "$type": "CrossReference",
1275
+ "isMulti": true,
1276
+ "type": {
1277
+ "$ref": "#/rules@3"
1278
+ },
1279
+ "terminal": {
1280
+ "$type": "RuleCall",
1281
+ "rule": {
1282
+ "$ref": "#/rules@25"
1283
+ },
1284
+ "arguments": []
1285
+ },
1286
+ "deprecatedSyntax": false
1287
+ }
1288
+ }
1289
+ ],
1290
+ "cardinality": "*"
1291
+ }
1292
+ ],
1293
+ "cardinality": "*"
1294
+ },
1295
+ {
1296
+ "$type": "Keyword",
1297
+ "value": "}"
1298
+ }
1299
+ ]
1300
+ },
1301
+ "entry": false,
1302
+ "fragment": false,
1303
+ "parameters": [],
1304
+ "$comment": "/**\\n * Domain Map - Visualizes relationships between Domains.\\n * Shows high-level domain organization and subdomain structure.\\n */"
1305
+ },
1306
+ {
1307
+ "$type": "ParserRule",
1308
+ "name": "Relationship",
1309
+ "definition": {
1310
+ "$type": "Group",
1311
+ "elements": [
1312
+ {
1313
+ "$type": "Group",
1314
+ "elements": [
1315
+ {
1316
+ "$type": "Keyword",
1317
+ "value": "["
1318
+ },
1319
+ {
1320
+ "$type": "Assignment",
1321
+ "feature": "leftPatterns",
1322
+ "operator": "+=",
1323
+ "terminal": {
1324
+ "$type": "RuleCall",
1325
+ "rule": {
1326
+ "$ref": "#/rules@15"
1327
+ },
1328
+ "arguments": []
1329
+ }
1330
+ },
1331
+ {
1332
+ "$type": "Group",
1333
+ "elements": [
1334
+ {
1335
+ "$type": "Keyword",
1336
+ "value": ","
1337
+ },
1338
+ {
1339
+ "$type": "Assignment",
1340
+ "feature": "leftPatterns",
1341
+ "operator": "+=",
1342
+ "terminal": {
1343
+ "$type": "RuleCall",
1344
+ "rule": {
1345
+ "$ref": "#/rules@15"
1346
+ },
1347
+ "arguments": []
1348
+ }
1349
+ }
1350
+ ],
1351
+ "cardinality": "*"
1352
+ },
1353
+ {
1354
+ "$type": "Keyword",
1355
+ "value": "]"
1356
+ }
1357
+ ],
1358
+ "cardinality": "?"
1359
+ },
1360
+ {
1361
+ "$type": "Assignment",
1362
+ "feature": "left",
1363
+ "operator": "=",
1364
+ "terminal": {
1365
+ "$type": "RuleCall",
1366
+ "rule": {
1367
+ "$ref": "#/rules@13"
1368
+ },
1369
+ "arguments": []
1370
+ }
1371
+ },
1372
+ {
1373
+ "$type": "Assignment",
1374
+ "feature": "arrow",
1375
+ "operator": "=",
1376
+ "terminal": {
1377
+ "$type": "RuleCall",
1378
+ "rule": {
1379
+ "$ref": "#/rules@14"
1380
+ },
1381
+ "arguments": []
1382
+ }
1383
+ },
1384
+ {
1385
+ "$type": "Group",
1386
+ "elements": [
1387
+ {
1388
+ "$type": "Keyword",
1389
+ "value": "["
1390
+ },
1391
+ {
1392
+ "$type": "Assignment",
1393
+ "feature": "rightPatterns",
1394
+ "operator": "+=",
1395
+ "terminal": {
1396
+ "$type": "RuleCall",
1397
+ "rule": {
1398
+ "$ref": "#/rules@15"
1399
+ },
1400
+ "arguments": []
1401
+ }
1402
+ },
1403
+ {
1404
+ "$type": "Group",
1405
+ "elements": [
1406
+ {
1407
+ "$type": "Keyword",
1408
+ "value": ","
1409
+ },
1410
+ {
1411
+ "$type": "Assignment",
1412
+ "feature": "rightPatterns",
1413
+ "operator": "+=",
1414
+ "terminal": {
1415
+ "$type": "RuleCall",
1416
+ "rule": {
1417
+ "$ref": "#/rules@15"
1418
+ },
1419
+ "arguments": []
1420
+ }
1421
+ }
1422
+ ],
1423
+ "cardinality": "*"
1424
+ },
1425
+ {
1426
+ "$type": "Keyword",
1427
+ "value": "]"
1428
+ }
1429
+ ],
1430
+ "cardinality": "?"
1431
+ },
1432
+ {
1433
+ "$type": "Assignment",
1434
+ "feature": "right",
1435
+ "operator": "=",
1436
+ "terminal": {
1437
+ "$type": "RuleCall",
1438
+ "rule": {
1439
+ "$ref": "#/rules@13"
1440
+ },
1441
+ "arguments": []
1442
+ }
1443
+ },
1444
+ {
1445
+ "$type": "Group",
1446
+ "elements": [
1447
+ {
1448
+ "$type": "RuleCall",
1449
+ "rule": {
1450
+ "$ref": "#/rules@24"
1451
+ },
1452
+ "arguments": []
1453
+ },
1454
+ {
1455
+ "$type": "Assignment",
1456
+ "feature": "type",
1457
+ "operator": "=",
1458
+ "terminal": {
1459
+ "$type": "RuleCall",
1460
+ "rule": {
1461
+ "$ref": "#/rules@16"
1462
+ },
1463
+ "arguments": []
1464
+ }
1465
+ }
1466
+ ],
1467
+ "cardinality": "?"
1468
+ }
1469
+ ]
1470
+ },
1471
+ "entry": false,
1472
+ "fragment": false,
1473
+ "parameters": [],
1474
+ "$comment": "/**\\n * Relationship - Connection between two Bounded Contexts.\\n * Supports DDD integration patterns (ACL, OHS, PL, etc.) and relationship types.\\n */"
1475
+ },
1476
+ {
1477
+ "$type": "ParserRule",
1478
+ "name": "BoundedContextRef",
1479
+ "definition": {
1480
+ "$type": "Alternatives",
1481
+ "elements": [
1482
+ {
1483
+ "$type": "Group",
1484
+ "elements": [
1485
+ {
1486
+ "$type": "Action",
1487
+ "inferredType": {
1488
+ "$type": "InferredType",
1489
+ "name": "ThisRef"
1490
+ }
1491
+ },
1492
+ {
1493
+ "$type": "Keyword",
1494
+ "value": "this"
1495
+ }
1496
+ ]
1497
+ },
1498
+ {
1499
+ "$type": "Assignment",
1500
+ "feature": "link",
1501
+ "operator": "=",
1502
+ "terminal": {
1503
+ "$type": "CrossReference",
1504
+ "type": {
1505
+ "$ref": "#/rules@4"
1506
+ },
1507
+ "terminal": {
1508
+ "$type": "RuleCall",
1509
+ "rule": {
1510
+ "$ref": "#/rules@25"
1511
+ },
1512
+ "arguments": []
1513
+ },
1514
+ "deprecatedSyntax": false,
1515
+ "isMulti": false
1516
+ }
1517
+ }
1518
+ ]
1519
+ },
1520
+ "entry": false,
1521
+ "fragment": false,
1522
+ "parameters": [],
1523
+ "$comment": "/**\\n * Context reference - can be 'this' (self-reference) or a qualified name.\\n */"
1524
+ },
1525
+ {
1526
+ "$type": "ParserRule",
1527
+ "name": "RelationshipArrow",
1528
+ "dataType": "string",
1529
+ "definition": {
1530
+ "$type": "Alternatives",
1531
+ "elements": [
1532
+ {
1533
+ "$type": "Keyword",
1534
+ "value": "<->"
1535
+ },
1536
+ {
1537
+ "$type": "Keyword",
1538
+ "value": "->"
1539
+ },
1540
+ {
1541
+ "$type": "Keyword",
1542
+ "value": "<-"
1543
+ },
1544
+ {
1545
+ "$type": "Keyword",
1546
+ "value": "><"
1547
+ }
1548
+ ]
1549
+ },
1550
+ "entry": false,
1551
+ "fragment": false,
1552
+ "parameters": [],
1553
+ "$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 */"
1554
+ },
1555
+ {
1556
+ "$type": "ParserRule",
1557
+ "name": "IntegrationPattern",
1558
+ "dataType": "string",
1559
+ "definition": {
1560
+ "$type": "Alternatives",
1561
+ "elements": [
1562
+ {
1563
+ "$type": "Keyword",
1564
+ "value": "PL"
1565
+ },
1566
+ {
1567
+ "$type": "Keyword",
1568
+ "value": "PublishedLanguage"
1569
+ },
1570
+ {
1571
+ "$type": "Keyword",
1572
+ "value": "OHS"
1573
+ },
1574
+ {
1575
+ "$type": "Keyword",
1576
+ "value": "OpenHostService"
1577
+ },
1578
+ {
1579
+ "$type": "Keyword",
1580
+ "value": "CF"
1581
+ },
1582
+ {
1583
+ "$type": "Keyword",
1584
+ "value": "Conformist"
1585
+ },
1586
+ {
1587
+ "$type": "Keyword",
1588
+ "value": "ACL"
1589
+ },
1590
+ {
1591
+ "$type": "Keyword",
1592
+ "value": "AntiCorruptionLayer"
1593
+ },
1594
+ {
1595
+ "$type": "Keyword",
1596
+ "value": "P"
1597
+ },
1598
+ {
1599
+ "$type": "Keyword",
1600
+ "value": "Partnership"
1601
+ },
1602
+ {
1603
+ "$type": "Keyword",
1604
+ "value": "SK"
1605
+ },
1606
+ {
1607
+ "$type": "Keyword",
1608
+ "value": "SharedKernel"
1609
+ },
1610
+ {
1611
+ "$type": "Keyword",
1612
+ "value": "BBoM"
1613
+ },
1614
+ {
1615
+ "$type": "Keyword",
1616
+ "value": "BigBallOfMud"
1617
+ }
1618
+ ]
1619
+ },
1620
+ "entry": false,
1621
+ "fragment": false,
1622
+ "parameters": [],
1623
+ "$comment": "/**\\n * DDD Integration Patterns (used in relationships).\\n */"
1624
+ },
1625
+ {
1626
+ "$type": "ParserRule",
1627
+ "name": "RelationshipType",
1628
+ "dataType": "string",
1629
+ "definition": {
1630
+ "$type": "Alternatives",
1631
+ "elements": [
1632
+ {
1633
+ "$type": "Keyword",
1634
+ "value": "Partnership"
1635
+ },
1636
+ {
1637
+ "$type": "Keyword",
1638
+ "value": "SharedKernel"
1639
+ },
1640
+ {
1641
+ "$type": "Keyword",
1642
+ "value": "CustomerSupplier"
1643
+ },
1644
+ {
1645
+ "$type": "Keyword",
1646
+ "value": "UpstreamDownstream"
1647
+ },
1648
+ {
1649
+ "$type": "Keyword",
1650
+ "value": "SeparateWays"
1651
+ }
1652
+ ]
1653
+ },
1654
+ "entry": false,
1655
+ "fragment": false,
1656
+ "parameters": [],
1657
+ "$comment": "/**\\n * DDD Relationship Types.\\n */"
1658
+ },
1659
+ {
1660
+ "$type": "ParserRule",
1661
+ "name": "DomainTerm",
1662
+ "definition": {
1663
+ "$type": "Group",
1664
+ "elements": [
1665
+ {
1666
+ "$type": "Alternatives",
1667
+ "elements": [
1668
+ {
1669
+ "$type": "Keyword",
1670
+ "value": "Term"
1671
+ },
1672
+ {
1673
+ "$type": "Keyword",
1674
+ "value": "term"
1675
+ }
1676
+ ]
1677
+ },
1678
+ {
1679
+ "$type": "Assignment",
1680
+ "feature": "name",
1681
+ "operator": "=",
1682
+ "terminal": {
1683
+ "$type": "RuleCall",
1684
+ "rule": {
1685
+ "$ref": "#/rules@27"
1686
+ },
1687
+ "arguments": []
1688
+ }
1689
+ },
1690
+ {
1691
+ "$type": "Group",
1692
+ "elements": [
1693
+ {
1694
+ "$type": "RuleCall",
1695
+ "rule": {
1696
+ "$ref": "#/rules@24"
1697
+ },
1698
+ "arguments": []
1699
+ },
1700
+ {
1701
+ "$type": "Assignment",
1702
+ "feature": "meaning",
1703
+ "operator": "=",
1704
+ "terminal": {
1705
+ "$type": "RuleCall",
1706
+ "rule": {
1707
+ "$ref": "#/rules@28"
1708
+ },
1709
+ "arguments": []
1710
+ }
1711
+ }
1712
+ ],
1713
+ "cardinality": "?"
1714
+ },
1715
+ {
1716
+ "$type": "Group",
1717
+ "elements": [
1718
+ {
1719
+ "$type": "Alternatives",
1720
+ "elements": [
1721
+ {
1722
+ "$type": "Keyword",
1723
+ "value": "aka"
1724
+ },
1725
+ {
1726
+ "$type": "Keyword",
1727
+ "value": "synonyms"
1728
+ }
1729
+ ]
1730
+ },
1731
+ {
1732
+ "$type": "RuleCall",
1733
+ "rule": {
1734
+ "$ref": "#/rules@24"
1735
+ },
1736
+ "arguments": [],
1737
+ "cardinality": "?"
1738
+ },
1739
+ {
1740
+ "$type": "Assignment",
1741
+ "feature": "synonyms",
1742
+ "operator": "+=",
1743
+ "terminal": {
1744
+ "$type": "RuleCall",
1745
+ "rule": {
1746
+ "$ref": "#/rules@27"
1747
+ },
1748
+ "arguments": []
1749
+ }
1750
+ },
1751
+ {
1752
+ "$type": "Group",
1753
+ "elements": [
1754
+ {
1755
+ "$type": "Keyword",
1756
+ "value": ","
1757
+ },
1758
+ {
1759
+ "$type": "Assignment",
1760
+ "feature": "synonyms",
1761
+ "operator": "+=",
1762
+ "terminal": {
1763
+ "$type": "RuleCall",
1764
+ "rule": {
1765
+ "$ref": "#/rules@27"
1766
+ },
1767
+ "arguments": []
1768
+ }
1769
+ }
1770
+ ],
1771
+ "cardinality": "*"
1772
+ }
1773
+ ],
1774
+ "cardinality": "?"
1775
+ },
1776
+ {
1777
+ "$type": "Group",
1778
+ "elements": [
1779
+ {
1780
+ "$type": "Keyword",
1781
+ "value": "examples"
1782
+ },
1783
+ {
1784
+ "$type": "RuleCall",
1785
+ "rule": {
1786
+ "$ref": "#/rules@24"
1787
+ },
1788
+ "arguments": [],
1789
+ "cardinality": "?"
1790
+ },
1791
+ {
1792
+ "$type": "Assignment",
1793
+ "feature": "examples",
1794
+ "operator": "+=",
1795
+ "terminal": {
1796
+ "$type": "RuleCall",
1797
+ "rule": {
1798
+ "$ref": "#/rules@28"
1799
+ },
1800
+ "arguments": []
1801
+ }
1802
+ },
1803
+ {
1804
+ "$type": "Group",
1805
+ "elements": [
1806
+ {
1807
+ "$type": "Keyword",
1808
+ "value": ","
1809
+ },
1810
+ {
1811
+ "$type": "Assignment",
1812
+ "feature": "examples",
1813
+ "operator": "+=",
1814
+ "terminal": {
1815
+ "$type": "RuleCall",
1816
+ "rule": {
1817
+ "$ref": "#/rules@28"
1818
+ },
1819
+ "arguments": []
1820
+ }
1821
+ }
1822
+ ],
1823
+ "cardinality": "*"
1824
+ }
1825
+ ],
1826
+ "cardinality": "?"
1827
+ }
1828
+ ]
1829
+ },
1830
+ "entry": false,
1831
+ "fragment": false,
1832
+ "parameters": [],
1833
+ "$comment": "/**\\n * Domain Terminology - Ubiquitous language terms with definitions.\\n * Supports synonyms and examples for richer glossaries.\\n */"
1834
+ },
1835
+ {
1836
+ "$type": "ParserRule",
1837
+ "name": "AbstractDecision",
1838
+ "definition": {
1839
+ "$type": "Alternatives",
1840
+ "elements": [
1841
+ {
1842
+ "$type": "RuleCall",
1843
+ "rule": {
1844
+ "$ref": "#/rules@19"
1845
+ },
1846
+ "arguments": []
1847
+ },
1848
+ {
1849
+ "$type": "RuleCall",
1850
+ "rule": {
1851
+ "$ref": "#/rules@20"
1852
+ },
1853
+ "arguments": []
1854
+ },
1855
+ {
1856
+ "$type": "RuleCall",
1857
+ "rule": {
1858
+ "$ref": "#/rules@21"
1859
+ },
1860
+ "arguments": []
1861
+ }
1862
+ ]
1863
+ },
1864
+ "entry": false,
1865
+ "fragment": false,
1866
+ "parameters": [],
1867
+ "$comment": "/**\\n * Decisions, Policies, and Business Rules.\\n * All types are interchangeable - use what reads best for your domain.\\n */"
1868
+ },
1869
+ {
1870
+ "$type": "ParserRule",
1871
+ "name": "Decision",
1872
+ "definition": {
1873
+ "$type": "Group",
1874
+ "elements": [
1875
+ {
1876
+ "$type": "Alternatives",
1877
+ "elements": [
1878
+ {
1879
+ "$type": "Keyword",
1880
+ "value": "Decision",
1881
+ "$comment": "/** A documented choice or rule that affects the model or process. */"
1882
+ },
1883
+ {
1884
+ "$type": "Keyword",
1885
+ "value": "decision"
1886
+ }
1887
+ ]
1888
+ },
1889
+ {
1890
+ "$type": "Group",
1891
+ "elements": [
1892
+ {
1893
+ "$type": "Keyword",
1894
+ "value": "["
1895
+ },
1896
+ {
1897
+ "$type": "Assignment",
1898
+ "feature": "classification",
1899
+ "operator": "=",
1900
+ "terminal": {
1901
+ "$type": "CrossReference",
1902
+ "type": {
1903
+ "$ref": "#/rules@7"
1904
+ },
1905
+ "terminal": {
1906
+ "$type": "RuleCall",
1907
+ "rule": {
1908
+ "$ref": "#/rules@25"
1909
+ },
1910
+ "arguments": []
1911
+ },
1912
+ "deprecatedSyntax": false,
1913
+ "isMulti": false
1914
+ }
1915
+ },
1916
+ {
1917
+ "$type": "Keyword",
1918
+ "value": "]"
1919
+ }
1920
+ ],
1921
+ "cardinality": "?"
1922
+ },
1923
+ {
1924
+ "$type": "Assignment",
1925
+ "feature": "name",
1926
+ "operator": "=",
1927
+ "terminal": {
1928
+ "$type": "RuleCall",
1929
+ "rule": {
1930
+ "$ref": "#/rules@27"
1931
+ },
1932
+ "arguments": []
1933
+ }
1934
+ },
1935
+ {
1936
+ "$type": "RuleCall",
1937
+ "rule": {
1938
+ "$ref": "#/rules@24"
1939
+ },
1940
+ "arguments": []
1941
+ },
1942
+ {
1943
+ "$type": "Assignment",
1944
+ "feature": "value",
1945
+ "operator": "=",
1946
+ "terminal": {
1947
+ "$type": "RuleCall",
1948
+ "rule": {
1949
+ "$ref": "#/rules@28"
1950
+ },
1951
+ "arguments": []
1952
+ }
1953
+ }
1954
+ ]
1955
+ },
1956
+ "entry": false,
1957
+ "fragment": false,
1958
+ "parameters": []
1959
+ },
1960
+ {
1961
+ "$type": "ParserRule",
1962
+ "name": "Policy",
1963
+ "definition": {
1964
+ "$type": "Group",
1965
+ "elements": [
1966
+ {
1967
+ "$type": "Alternatives",
1968
+ "elements": [
1969
+ {
1970
+ "$type": "Keyword",
1971
+ "value": "Policy",
1972
+ "$comment": "/** A business rule or guideline that governs behavior within a context. */"
1973
+ },
1974
+ {
1975
+ "$type": "Keyword",
1976
+ "value": "policy"
1977
+ }
1978
+ ]
1979
+ },
1980
+ {
1981
+ "$type": "Group",
1982
+ "elements": [
1983
+ {
1984
+ "$type": "Keyword",
1985
+ "value": "["
1986
+ },
1987
+ {
1988
+ "$type": "Assignment",
1989
+ "feature": "classification",
1990
+ "operator": "=",
1991
+ "terminal": {
1992
+ "$type": "CrossReference",
1993
+ "type": {
1994
+ "$ref": "#/rules@7"
1995
+ },
1996
+ "terminal": {
1997
+ "$type": "RuleCall",
1998
+ "rule": {
1999
+ "$ref": "#/rules@25"
2000
+ },
2001
+ "arguments": []
2002
+ },
2003
+ "deprecatedSyntax": false,
2004
+ "isMulti": false
2005
+ }
2006
+ },
2007
+ {
2008
+ "$type": "Keyword",
2009
+ "value": "]"
2010
+ }
2011
+ ],
2012
+ "cardinality": "?"
2013
+ },
2014
+ {
2015
+ "$type": "Assignment",
2016
+ "feature": "name",
2017
+ "operator": "=",
2018
+ "terminal": {
2019
+ "$type": "RuleCall",
2020
+ "rule": {
2021
+ "$ref": "#/rules@27"
2022
+ },
2023
+ "arguments": []
2024
+ }
2025
+ },
2026
+ {
2027
+ "$type": "RuleCall",
2028
+ "rule": {
2029
+ "$ref": "#/rules@24"
2030
+ },
2031
+ "arguments": []
2032
+ },
2033
+ {
2034
+ "$type": "Assignment",
2035
+ "feature": "value",
2036
+ "operator": "=",
2037
+ "terminal": {
2038
+ "$type": "RuleCall",
2039
+ "rule": {
2040
+ "$ref": "#/rules@28"
2041
+ },
2042
+ "arguments": []
2043
+ }
2044
+ }
2045
+ ]
2046
+ },
2047
+ "entry": false,
2048
+ "fragment": false,
2049
+ "parameters": []
2050
+ },
2051
+ {
2052
+ "$type": "ParserRule",
2053
+ "name": "BusinessRule",
2054
+ "definition": {
2055
+ "$type": "Group",
2056
+ "elements": [
2057
+ {
2058
+ "$type": "Alternatives",
2059
+ "elements": [
2060
+ {
2061
+ "$type": "Keyword",
2062
+ "value": "Rule",
2063
+ "$comment": "/** A business rule or guideline that governs behavior within a context. */"
2064
+ },
2065
+ {
2066
+ "$type": "Keyword",
2067
+ "value": "rule"
2068
+ }
2069
+ ]
2070
+ },
2071
+ {
2072
+ "$type": "Group",
2073
+ "elements": [
2074
+ {
2075
+ "$type": "Keyword",
2076
+ "value": "["
2077
+ },
2078
+ {
2079
+ "$type": "Assignment",
2080
+ "feature": "classification",
2081
+ "operator": "=",
2082
+ "terminal": {
2083
+ "$type": "CrossReference",
2084
+ "type": {
2085
+ "$ref": "#/rules@7"
2086
+ },
2087
+ "terminal": {
2088
+ "$type": "RuleCall",
2089
+ "rule": {
2090
+ "$ref": "#/rules@25"
2091
+ },
2092
+ "arguments": []
2093
+ },
2094
+ "deprecatedSyntax": false,
2095
+ "isMulti": false
2096
+ }
2097
+ },
2098
+ {
2099
+ "$type": "Keyword",
2100
+ "value": "]"
2101
+ }
2102
+ ],
2103
+ "cardinality": "?"
2104
+ },
2105
+ {
2106
+ "$type": "Assignment",
2107
+ "feature": "name",
2108
+ "operator": "=",
2109
+ "terminal": {
2110
+ "$type": "RuleCall",
2111
+ "rule": {
2112
+ "$ref": "#/rules@27"
2113
+ },
2114
+ "arguments": []
2115
+ }
2116
+ },
2117
+ {
2118
+ "$type": "RuleCall",
2119
+ "rule": {
2120
+ "$ref": "#/rules@24"
2121
+ },
2122
+ "arguments": []
2123
+ },
2124
+ {
2125
+ "$type": "Assignment",
2126
+ "feature": "value",
2127
+ "operator": "=",
2128
+ "terminal": {
2129
+ "$type": "RuleCall",
2130
+ "rule": {
2131
+ "$ref": "#/rules@28"
2132
+ },
2133
+ "arguments": []
2134
+ }
2135
+ }
2136
+ ]
2137
+ },
2138
+ "entry": false,
2139
+ "fragment": false,
2140
+ "parameters": []
2141
+ },
2142
+ {
2143
+ "$type": "ParserRule",
2144
+ "name": "ImportStatement",
2145
+ "definition": {
2146
+ "$type": "Group",
2147
+ "elements": [
2148
+ {
2149
+ "$type": "Alternatives",
2150
+ "elements": [
2151
+ {
2152
+ "$type": "Keyword",
2153
+ "value": "Import"
2154
+ },
2155
+ {
2156
+ "$type": "Keyword",
2157
+ "value": "import"
2158
+ }
2159
+ ],
2160
+ "$comment": "/** Imports types or namespaces from another file or module, enabling reuse and modularity. */"
2161
+ },
2162
+ {
2163
+ "$type": "Alternatives",
2164
+ "elements": [
2165
+ {
2166
+ "$type": "Group",
2167
+ "elements": [
2168
+ {
2169
+ "$type": "Keyword",
2170
+ "value": "{"
2171
+ },
2172
+ {
2173
+ "$type": "Assignment",
2174
+ "feature": "symbols",
2175
+ "operator": "+=",
2176
+ "terminal": {
2177
+ "$type": "RuleCall",
2178
+ "rule": {
2179
+ "$ref": "#/rules@27"
2180
+ },
2181
+ "arguments": []
2182
+ }
2183
+ },
2184
+ {
2185
+ "$type": "Group",
2186
+ "elements": [
2187
+ {
2188
+ "$type": "Keyword",
2189
+ "value": ","
2190
+ },
2191
+ {
2192
+ "$type": "Assignment",
2193
+ "feature": "symbols",
2194
+ "operator": "+=",
2195
+ "terminal": {
2196
+ "$type": "RuleCall",
2197
+ "rule": {
2198
+ "$ref": "#/rules@27"
2199
+ },
2200
+ "arguments": []
2201
+ }
2202
+ }
2203
+ ],
2204
+ "cardinality": "*"
2205
+ },
2206
+ {
2207
+ "$type": "Keyword",
2208
+ "value": "}"
2209
+ },
2210
+ {
2211
+ "$type": "Keyword",
2212
+ "value": "from"
2213
+ },
2214
+ {
2215
+ "$type": "Assignment",
2216
+ "feature": "uri",
2217
+ "operator": "=",
2218
+ "terminal": {
2219
+ "$type": "RuleCall",
2220
+ "rule": {
2221
+ "$ref": "#/rules@28"
2222
+ },
2223
+ "arguments": []
2224
+ }
2225
+ }
2226
+ ]
2227
+ },
2228
+ {
2229
+ "$type": "Group",
2230
+ "elements": [
2231
+ {
2232
+ "$type": "Assignment",
2233
+ "feature": "uri",
2234
+ "operator": "=",
2235
+ "terminal": {
2236
+ "$type": "RuleCall",
2237
+ "rule": {
2238
+ "$ref": "#/rules@28"
2239
+ },
2240
+ "arguments": []
2241
+ }
2242
+ },
2243
+ {
2244
+ "$type": "Group",
2245
+ "elements": [
2246
+ {
2247
+ "$type": "Keyword",
2248
+ "value": "integrity"
2249
+ },
2250
+ {
2251
+ "$type": "Assignment",
2252
+ "feature": "integrity",
2253
+ "operator": "=",
2254
+ "terminal": {
2255
+ "$type": "RuleCall",
2256
+ "rule": {
2257
+ "$ref": "#/rules@28"
2258
+ },
2259
+ "arguments": []
2260
+ }
2261
+ }
2262
+ ],
2263
+ "cardinality": "?"
2264
+ },
2265
+ {
2266
+ "$type": "Group",
2267
+ "elements": [
2268
+ {
2269
+ "$type": "Keyword",
2270
+ "value": "as"
2271
+ },
2272
+ {
2273
+ "$type": "Assignment",
2274
+ "feature": "alias",
2275
+ "operator": "=",
2276
+ "terminal": {
2277
+ "$type": "RuleCall",
2278
+ "rule": {
2279
+ "$ref": "#/rules@27"
2280
+ },
2281
+ "arguments": []
2282
+ }
2283
+ }
2284
+ ],
2285
+ "cardinality": "?"
2286
+ }
2287
+ ]
2288
+ }
2289
+ ]
2290
+ }
2291
+ ],
2292
+ "$comment": "/** Imports types or namespaces from another file or module, enabling reuse and modularity. */"
2293
+ },
2294
+ "entry": false,
2295
+ "fragment": false,
2296
+ "parameters": [],
2297
+ "$comment": "/**\\n * Import Statement - Git-native import system inspired by Go modules and Deno.\\n * \\n * Supported formats:\\n * - Local files: import \\"./shared/types.dlang\\"\\n * - Workspace-relative: import \\"~/contexts/sales.dlang\\"\\n * - GitHub packages: import \\"owner/repo@v1.0.0\\"\\n * - GitLab/Git URLs: import \\"https://gitlab.com/owner/repo@v1.0.0\\"\\n * - With aliases: import \\"ddd-patterns/core@v2.1.0\\" as DDD\\n * - Named imports: import { OrderContext } from \\"./contexts.dlang\\"\\n */"
2298
+ },
2299
+ {
2300
+ "$type": "ParserRule",
2301
+ "name": "NamespaceDeclaration",
2302
+ "definition": {
2303
+ "$type": "Group",
2304
+ "elements": [
2305
+ {
2306
+ "$type": "Alternatives",
2307
+ "elements": [
2308
+ {
2309
+ "$type": "Keyword",
2310
+ "value": "Namespace",
2311
+ "$comment": "/** Namespaces organize large models into hierarchical qualified names for symbol resolution. */"
2312
+ },
2313
+ {
2314
+ "$type": "Keyword",
2315
+ "value": "ns"
2316
+ }
2317
+ ]
2318
+ },
2319
+ {
2320
+ "$type": "Assignment",
2321
+ "feature": "name",
2322
+ "operator": "=",
2323
+ "terminal": {
2324
+ "$type": "RuleCall",
2325
+ "rule": {
2326
+ "$ref": "#/rules@25"
2327
+ },
2328
+ "arguments": []
2329
+ }
2330
+ },
2331
+ {
2332
+ "$type": "Keyword",
2333
+ "value": "{"
2334
+ },
2335
+ {
2336
+ "$type": "Assignment",
2337
+ "feature": "children",
2338
+ "operator": "+=",
2339
+ "terminal": {
2340
+ "$type": "RuleCall",
2341
+ "rule": {
2342
+ "$ref": "#/rules@1"
2343
+ },
2344
+ "arguments": []
2345
+ },
2346
+ "cardinality": "*"
2347
+ },
2348
+ {
2349
+ "$type": "Keyword",
2350
+ "value": "}"
2351
+ }
2352
+ ]
2353
+ },
2354
+ "entry": false,
2355
+ "fragment": false,
2356
+ "parameters": [],
2357
+ "$comment": "/**\\n * Namespace Declaration - Hierarchical namespacing for organizing models.\\n * Combines package modularity with group-style nesting.\\n */"
2358
+ },
2359
+ {
2360
+ "$type": "ParserRule",
2361
+ "name": "Assignment",
2362
+ "dataType": "string",
2363
+ "definition": {
2364
+ "$type": "Alternatives",
2365
+ "elements": [
2366
+ {
2367
+ "$type": "Keyword",
2368
+ "value": ":"
2369
+ },
2370
+ {
2371
+ "$type": "Keyword",
2372
+ "value": "is"
2373
+ },
2374
+ {
2375
+ "$type": "Keyword",
2376
+ "value": "="
2377
+ }
2378
+ ]
2379
+ },
2380
+ "entry": false,
2381
+ "fragment": false,
2382
+ "parameters": [],
2383
+ "$comment": "/**\\n * Assignment operators - flexible syntax.\\n */"
2384
+ },
2385
+ {
2386
+ "$type": "ParserRule",
2387
+ "name": "QualifiedName",
2388
+ "dataType": "string",
2389
+ "definition": {
2390
+ "$type": "Group",
2391
+ "elements": [
2392
+ {
2393
+ "$type": "RuleCall",
2394
+ "rule": {
2395
+ "$ref": "#/rules@27"
2396
+ },
2397
+ "arguments": []
2398
+ },
2399
+ {
2400
+ "$type": "Group",
2401
+ "elements": [
2402
+ {
2403
+ "$type": "Keyword",
2404
+ "value": "."
2405
+ },
2406
+ {
2407
+ "$type": "RuleCall",
2408
+ "rule": {
2409
+ "$ref": "#/rules@27"
2410
+ },
2411
+ "arguments": []
2412
+ }
2413
+ ],
2414
+ "cardinality": "*"
2415
+ }
2416
+ ]
2417
+ },
2418
+ "entry": false,
2419
+ "fragment": false,
2420
+ "parameters": [],
2421
+ "$comment": "/**\\n * Qualified Name - Hierarchical namespacing with dots.\\n */"
2422
+ },
2423
+ {
2424
+ "$type": "TerminalRule",
2425
+ "hidden": true,
2426
+ "name": "WS",
2427
+ "definition": {
2428
+ "$type": "RegexToken",
2429
+ "regex": "/\\\\s+/",
2430
+ "parenthesized": false
2431
+ },
2432
+ "fragment": false
2433
+ },
2434
+ {
2435
+ "$type": "TerminalRule",
2436
+ "name": "ID",
2437
+ "definition": {
2438
+ "$type": "RegexToken",
2439
+ "regex": "/[_a-zA-Z][\\\\w_-]*/",
2440
+ "parenthesized": false
2441
+ },
2442
+ "fragment": false,
2443
+ "hidden": false
2444
+ },
2445
+ {
2446
+ "$type": "TerminalRule",
2447
+ "name": "STRING",
2448
+ "definition": {
2449
+ "$type": "RegexToken",
2450
+ "regex": "/\\"(\\\\\\\\.|[^\\"\\\\\\\\])*\\"|'(\\\\\\\\.|[^'\\\\\\\\])*'/",
2451
+ "parenthesized": false
2452
+ },
2453
+ "fragment": false,
2454
+ "hidden": false
2455
+ },
2456
+ {
2457
+ "$type": "TerminalRule",
2458
+ "hidden": true,
2459
+ "name": "ML_COMMENT",
2460
+ "definition": {
2461
+ "$type": "RegexToken",
2462
+ "regex": "/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//",
2463
+ "parenthesized": false
2464
+ },
2465
+ "fragment": false
2466
+ },
2467
+ {
2468
+ "$type": "TerminalRule",
2469
+ "hidden": true,
2470
+ "name": "SL_COMMENT",
2471
+ "definition": {
2472
+ "$type": "RegexToken",
2473
+ "regex": "/\\\\/\\\\/[^\\\\n\\\\r]*/",
2474
+ "parenthesized": false
2475
+ },
2476
+ "fragment": false
2477
+ }
2478
+ ],
2479
+ "types": [
2480
+ {
2481
+ "$type": "Type",
2482
+ "name": "Container",
2483
+ "type": {
2484
+ "$type": "UnionType",
2485
+ "types": [
2486
+ {
2487
+ "$type": "SimpleType",
2488
+ "typeRef": {
2489
+ "$ref": "#/rules@23"
2490
+ }
2491
+ },
2492
+ {
2493
+ "$type": "SimpleType",
2494
+ "typeRef": {
2495
+ "$ref": "#/rules@0"
2496
+ }
2497
+ }
2498
+ ]
2499
+ }
2500
+ }
2501
+ ],
2502
+ "imports": [],
2503
+ "interfaces": []
2504
+ }`));