@domainlang/language 0.1.20

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