@memoarchitect/tools 0.4.5 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/package.json +8 -8
- package/packages/tools/lib/bin/memo.js +1 -1
- package/packages/tools/lib/browser/index.d.ts +2 -0
- package/packages/tools/lib/browser/index.d.ts.map +1 -1
- package/packages/tools/lib/browser/index.js +2 -0
- package/packages/tools/lib/browser/index.js.map +1 -1
- package/packages/tools/lib/commands/create-package.js +1 -1
- package/packages/tools/lib/commands/dev.d.ts.map +1 -1
- package/packages/tools/lib/commands/dev.js +46 -6
- package/packages/tools/lib/commands/dev.js.map +1 -1
- package/packages/tools/lib/commands/install.js +1 -1
- package/packages/tools/lib/commands/ontology.js +1 -1
- package/packages/tools/lib/commands/ontology.js.map +1 -1
- package/packages/tools/lib/dhf/document-registry.js +5 -5
- package/packages/tools/lib/dhf/document-registry.js.map +1 -1
- package/packages/tools/lib/dhf/template-engine.js +3 -3
- package/packages/tools/lib/dhf/template-engine.js.map +1 -1
- package/packages/tools/lib/importer/cameo-importer.d.ts.map +1 -1
- package/packages/tools/lib/importer/cameo-importer.js +5 -2
- package/packages/tools/lib/importer/cameo-importer.js.map +1 -1
- package/packages/tools/lib/importer/ea-importer.d.ts +1 -1
- package/packages/tools/lib/importer/ea-importer.d.ts.map +1 -1
- package/packages/tools/lib/importer/ea-importer.js +6 -4
- package/packages/tools/lib/importer/ea-importer.js.map +1 -1
- package/packages/tools/lib/index.d.ts +2 -0
- package/packages/tools/lib/index.d.ts.map +1 -1
- package/packages/tools/lib/index.js +2 -0
- package/packages/tools/lib/index.js.map +1 -1
- package/packages/tools/lib/language/generated/ast.d.ts +1774 -142
- package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
- package/packages/tools/lib/language/generated/ast.js +1776 -845
- package/packages/tools/lib/language/generated/ast.js.map +1 -1
- package/packages/tools/lib/language/generated/grammar.d.ts +1 -1
- package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
- package/packages/tools/lib/language/generated/grammar.js +1831 -844
- package/packages/tools/lib/language/generated/grammar.js.map +1 -1
- package/packages/tools/lib/language/generated/module.d.ts +1 -1
- package/packages/tools/lib/language/generated/module.js +1 -1
- package/packages/tools/lib/model/builder.d.ts.map +1 -1
- package/packages/tools/lib/model/builder.js +38 -14
- package/packages/tools/lib/model/builder.js.map +1 -1
- package/packages/tools/lib/model/config.d.ts +11 -1
- package/packages/tools/lib/model/config.d.ts.map +1 -1
- package/packages/tools/lib/model/kind-registry.d.ts +9 -0
- package/packages/tools/lib/model/kind-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/kind-registry.js +26 -3
- package/packages/tools/lib/model/kind-registry.js.map +1 -1
- package/packages/tools/lib/model/layer-resolver.d.ts.map +1 -1
- package/packages/tools/lib/model/layer-resolver.js +15 -0
- package/packages/tools/lib/model/layer-resolver.js.map +1 -1
- package/packages/tools/lib/model/ontology-loader.d.ts +2 -0
- package/packages/tools/lib/model/ontology-loader.d.ts.map +1 -1
- package/packages/tools/lib/model/ontology-loader.js +92 -28
- package/packages/tools/lib/model/ontology-loader.js.map +1 -1
- package/packages/tools/lib/model/parser-utils.d.ts +9 -0
- package/packages/tools/lib/model/parser-utils.d.ts.map +1 -1
- package/packages/tools/lib/model/parser-utils.js +24 -0
- package/packages/tools/lib/model/parser-utils.js.map +1 -1
- package/packages/tools/lib/model/paths.d.ts +0 -2
- package/packages/tools/lib/model/paths.d.ts.map +1 -1
- package/packages/tools/lib/model/paths.js +0 -2
- package/packages/tools/lib/model/paths.js.map +1 -1
- package/packages/tools/lib/model/relationship-legality.d.ts +261 -0
- package/packages/tools/lib/model/relationship-legality.d.ts.map +1 -0
- package/packages/tools/lib/model/relationship-legality.js +391 -0
- package/packages/tools/lib/model/relationship-legality.js.map +1 -0
- package/packages/tools/lib/model/relationship-registry.d.ts +38 -4
- package/packages/tools/lib/model/relationship-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/relationship-registry.js +109 -1
- package/packages/tools/lib/model/relationship-registry.js.map +1 -1
- package/packages/tools/lib/model/semantic.d.ts +42 -0
- package/packages/tools/lib/model/semantic.d.ts.map +1 -1
- package/packages/tools/lib/model/semantic.js +3 -0
- package/packages/tools/lib/model/semantic.js.map +1 -1
- package/packages/tools/lib/model/short-id.js +1 -1
- package/packages/tools/lib/model/short-id.js.map +1 -1
- package/packages/tools/lib/model/source-affinity.d.ts +21 -0
- package/packages/tools/lib/model/source-affinity.d.ts.map +1 -0
- package/packages/tools/lib/model/source-affinity.js +42 -0
- package/packages/tools/lib/model/source-affinity.js.map +1 -0
- package/packages/tools/lib/model/source-graph.d.ts +30 -0
- package/packages/tools/lib/model/source-graph.d.ts.map +1 -0
- package/packages/tools/lib/model/source-graph.js +154 -0
- package/packages/tools/lib/model/source-graph.js.map +1 -0
- package/packages/tools/lib/model/view-kinds.d.ts.map +1 -1
- package/packages/tools/lib/model/view-kinds.js +1 -0
- package/packages/tools/lib/model/view-kinds.js.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.js +2 -15
- package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
- package/packages/tools/lib/protocol/messages.d.ts +92 -8
- package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.d.ts +16 -0
- package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.js +190 -16
- package/packages/tools/lib/server/dev-server.js.map +1 -1
- package/packages/tools/lib/server/file-watcher.d.ts +21 -2
- package/packages/tools/lib/server/file-watcher.d.ts.map +1 -1
- package/packages/tools/lib/server/file-watcher.js +55 -23
- package/packages/tools/lib/server/file-watcher.js.map +1 -1
- package/packages/tools/lib/server/persistor.d.ts +0 -13
- package/packages/tools/lib/server/persistor.d.ts.map +1 -1
- package/packages/tools/lib/server/persistor.js +3 -31
- package/packages/tools/lib/server/persistor.js.map +1 -1
- package/packages/tools/lib/server/relationship-writer.d.ts +104 -0
- package/packages/tools/lib/server/relationship-writer.d.ts.map +1 -0
- package/packages/tools/lib/server/relationship-writer.js +402 -0
- package/packages/tools/lib/server/relationship-writer.js.map +1 -0
- package/packages/tools/lib/server/view-layout-store.d.ts +14 -1
- package/packages/tools/lib/server/view-layout-store.d.ts.map +1 -1
- package/packages/tools/lib/server/view-layout-store.js +63 -11
- package/packages/tools/lib/server/view-layout-store.js.map +1 -1
- package/packages/tools/src/grammar/memo-sysml.langium +102 -18
|
@@ -47,6 +47,9 @@ PackageMember:
|
|
|
47
47
|
| ImportDeclaration
|
|
48
48
|
| DefinitionMember
|
|
49
49
|
| UsageMember
|
|
50
|
+
| ItemUsage
|
|
51
|
+
| AttributeMember
|
|
52
|
+
| UseCaseDeclaration
|
|
50
53
|
| ConnectionUsage
|
|
51
54
|
| AllocateUsage
|
|
52
55
|
| MetadataApplication
|
|
@@ -56,7 +59,10 @@ PackageMember:
|
|
|
56
59
|
// owns a unique package for reliable SysIDE indexing; aliases reconstruct the
|
|
57
60
|
// user-facing hierarchy without reopening packages across documents.
|
|
58
61
|
AliasDeclaration:
|
|
59
|
-
'alias' name=
|
|
62
|
+
'alias' name=AliasName 'for' target=QualifiedName ';';
|
|
63
|
+
|
|
64
|
+
AliasName returns string:
|
|
65
|
+
ID | 'verification';
|
|
60
66
|
|
|
61
67
|
// ─── Import ──────────────────────────────────────────────────────────────────
|
|
62
68
|
|
|
@@ -73,6 +79,8 @@ ImportPath returns string:
|
|
|
73
79
|
DefinitionMember:
|
|
74
80
|
PartDefinition
|
|
75
81
|
| RequirementDefinition
|
|
82
|
+
| VerificationDefinition
|
|
83
|
+
| StateDefinition
|
|
76
84
|
| ActionDefinition
|
|
77
85
|
| ItemDefinition
|
|
78
86
|
| PortDefinition
|
|
@@ -104,6 +112,18 @@ RequirementDefinition:
|
|
|
104
112
|
isAbstract?='abstract'? 'requirement' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
|
|
105
113
|
('{' body+=DefinitionBodyMember* '}' | ';');
|
|
106
114
|
|
|
115
|
+
// SysML v2 verification case definition (VerificationCases::VerificationCase).
|
|
116
|
+
// A behaviour, so it may not specialize a part-based MEMO base.
|
|
117
|
+
VerificationDefinition:
|
|
118
|
+
isAbstract?='abstract'? 'verification' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
|
|
119
|
+
('{' body+=DefinitionBodyMember* '}' | ';');
|
|
120
|
+
|
|
121
|
+
// SysML v2 state definition (States::StateAction) — a behaviour. MEMO uses it
|
|
122
|
+
// for state machines and their mode states; transitions stay part-based.
|
|
123
|
+
StateDefinition:
|
|
124
|
+
isAbstract?='abstract'? 'state' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
|
|
125
|
+
('{' body+=DefinitionBodyMember* '}' | ';');
|
|
126
|
+
|
|
107
127
|
ActionDefinition:
|
|
108
128
|
isAbstract?='abstract'? behaviorKind=('action' | 'operator' | 'function') 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
|
|
109
129
|
('{' body+=ActionDefBodyMember* '}' | ';');
|
|
@@ -116,9 +136,11 @@ PortDefinition:
|
|
|
116
136
|
isAbstract?='abstract'? 'port' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
|
|
117
137
|
('{' body+=DefinitionBodyMember* '}' | ';');
|
|
118
138
|
|
|
139
|
+
// Interface defs, like connection defs, may declare `end` features naming the
|
|
140
|
+
// two sides of the interface (e.g. end providerPort / end consumerPort).
|
|
119
141
|
InterfaceDefinition:
|
|
120
142
|
isAbstract?='abstract'? 'interface' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
|
|
121
|
-
('{' body+=
|
|
143
|
+
('{' body+=ConnectionBodyMember* '}' | ';');
|
|
122
144
|
|
|
123
145
|
ConnectionDefinition:
|
|
124
146
|
isAbstract?='abstract'? 'connection' 'def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
|
|
@@ -151,7 +173,7 @@ ConnectionBodyMember:
|
|
|
151
173
|
EndDeclaration | DefinitionBodyMember;
|
|
152
174
|
|
|
153
175
|
EndDeclaration:
|
|
154
|
-
'end' name=FeatureName (':' type=QualifiedName)? multiplicity=Multiplicity? ';';
|
|
176
|
+
'end' name=FeatureName (':' isConjugated?='~'? type=QualifiedName)? multiplicity=Multiplicity? ';';
|
|
155
177
|
|
|
156
178
|
Multiplicity:
|
|
157
179
|
'[' lower=INT '..' (upper=INT | unbounded?='*') ']'
|
|
@@ -164,27 +186,66 @@ EnumLiteral:
|
|
|
164
186
|
'enum' name=EnumLiteralName ';';
|
|
165
187
|
|
|
166
188
|
EnumLiteralName returns string:
|
|
167
|
-
ID |
|
|
189
|
+
ID | UNRESTRICTED_NAME
|
|
190
|
+
| 'in' | 'out' | 'inout' | 'part' | 'requirement' | 'action' | 'item' | 'port'
|
|
168
191
|
| 'interface' | 'connection' | 'attribute' | 'constraint' | 'enum' | 'view' | 'viewpoint'
|
|
169
|
-
| 'ref' | 'import' | 'package' | 'flow' | 'first' | 'allocate' | 'library' | 'private' | 'public'
|
|
192
|
+
| 'ref' | 'import' | 'package' | 'flow' | 'first' | 'allocate' | 'library' | 'private' | 'public' | 'state' | 'verification'
|
|
193
|
+
| 'use' | 'fork' | 'join';
|
|
170
194
|
|
|
171
195
|
// ─── Usages (instances) ─────────────────────────────────────────────────────
|
|
172
196
|
|
|
173
197
|
UsageMember:
|
|
174
198
|
PartUsage
|
|
175
199
|
| RequirementUsage
|
|
200
|
+
| VerificationUsage
|
|
201
|
+
| StateUsage
|
|
202
|
+
| InterfaceUsage
|
|
176
203
|
| ActionUsage
|
|
177
204
|
| PortUsage
|
|
178
205
|
| ViewUsage;
|
|
179
206
|
|
|
180
207
|
PartUsage:
|
|
181
|
-
'part' name=ID ':' type=QualifiedName
|
|
208
|
+
'part' name=ID (':' type=QualifiedName)?
|
|
209
|
+
('{' body+=UsageBodyMember* '}' | ';');
|
|
210
|
+
|
|
211
|
+
// SysML v2 `use case def` / `use case` share a single leading `use case` token
|
|
212
|
+
// pair. Branching inside one rule keeps the def-vs-usage decision local instead
|
|
213
|
+
// of forcing cross-alternative lookahead past the `case` keyword.
|
|
214
|
+
UseCaseDeclaration:
|
|
215
|
+
isAbstract?='abstract'? 'use' 'case'
|
|
216
|
+
( isDefinition?='def' name=ID specialization=Specialization? (',' additionalSpecializations+=QualifiedName)*
|
|
217
|
+
('{' body+=DefinitionBodyMember* '}' | ';')
|
|
218
|
+
| name=ID (':' type=QualifiedName)?
|
|
219
|
+
('{' usageBody+=UsageBodyMember* '}' | ';')
|
|
220
|
+
);
|
|
221
|
+
|
|
222
|
+
// Item usage: standalone (`item x : T { … }`), directioned port payload
|
|
223
|
+
// (`in item reading : T;` / `out item command : T;`), or a bound feature value.
|
|
224
|
+
ItemUsage:
|
|
225
|
+
direction=('in' | 'out' | 'inout')? 'item' name=MemberName
|
|
226
|
+
(':' type=QualifiedName multiplicity=Multiplicity?)?
|
|
227
|
+
('=' boundRef=QualifiedName)?
|
|
182
228
|
('{' body+=UsageBodyMember* '}' | ';');
|
|
183
229
|
|
|
184
230
|
RequirementUsage:
|
|
185
231
|
'requirement' name=ID ':' type=QualifiedName
|
|
186
232
|
('{' body+=UsageBodyMember* '}' | ';');
|
|
187
233
|
|
|
234
|
+
// SysML v2 verification case usage: `verification vc : SomeCase { … }`.
|
|
235
|
+
VerificationUsage:
|
|
236
|
+
'verification' name=ID ':' type=QualifiedName
|
|
237
|
+
('{' body+=UsageBodyMember* '}' | ';');
|
|
238
|
+
|
|
239
|
+
// SysML v2 state usage: `state modeIdle : ModeState { … }`.
|
|
240
|
+
StateUsage:
|
|
241
|
+
'state' name=ID ':' type=QualifiedName
|
|
242
|
+
('{' body+=UsageBodyMember* '}' | ';');
|
|
243
|
+
|
|
244
|
+
// SysML v2 interface usage: `interface siData : Interface { … }`.
|
|
245
|
+
InterfaceUsage:
|
|
246
|
+
'interface' name=ID ':' type=QualifiedName
|
|
247
|
+
('{' body+=UsageBodyMember* '}' | ';');
|
|
248
|
+
|
|
188
249
|
// ActionUsage supports both typed (action name : Type;) and composite
|
|
189
250
|
// (action name { nested-actions, flows, successions }) forms.
|
|
190
251
|
ActionUsage:
|
|
@@ -211,9 +272,17 @@ ExposePath returns string:
|
|
|
211
272
|
// ─── Connection usage (typed relationship instances) ─────────────────────────
|
|
212
273
|
// Syntax: connection : Type connect end1 ::> ref1 to end2 ::> ref2 ;
|
|
213
274
|
|
|
275
|
+
// A connection usage may carry a name. Named connections get a stable
|
|
276
|
+
// relationship ID that survives rebuilds, which authoring needs for
|
|
277
|
+
// inspection, deletion, and deep links.
|
|
214
278
|
ConnectionUsage:
|
|
215
|
-
'connection' (':' type=QualifiedName)?
|
|
216
|
-
'connect' source=ConnectionEnd 'to' target=ConnectionEnd
|
|
279
|
+
'connection' name=ID? (':' type=QualifiedName)?
|
|
280
|
+
( 'connect' source=ConnectionEnd 'to' target=ConnectionEnd
|
|
281
|
+
('{' body+=UsageBodyMember* '}' | ';')
|
|
282
|
+
| '{' body+=UsageBodyMember*
|
|
283
|
+
'connect' source=ConnectionEnd 'to' target=ConnectionEnd ';'
|
|
284
|
+
'}'
|
|
285
|
+
);
|
|
217
286
|
|
|
218
287
|
ConnectionEnd:
|
|
219
288
|
endName=FeatureName '::>' ref=ReferenceName;
|
|
@@ -230,8 +299,10 @@ ActionParameterMember:
|
|
|
230
299
|
// ─── Behavior: Action usage body ────────────────────────────────────────────
|
|
231
300
|
// Composite actions contain nested actions, flow connections, successions
|
|
232
301
|
|
|
302
|
+
// FlowConnectionUsage / SuccessionUsage / ConnectionUsage are contributed by
|
|
303
|
+
// UsageBodyMember; listing them again here would make the alternatives ambiguous.
|
|
233
304
|
ActionUsageBodyMember:
|
|
234
|
-
ActionUsage | ControlNodeUsage |
|
|
305
|
+
ActionUsage | ControlNodeUsage | UsageBodyMember;
|
|
235
306
|
|
|
236
307
|
// ─── Behavior: Control nodes (fork / join) ──────────────────────────────────
|
|
237
308
|
// SysML v2 activity control nodes. A `fork` splits one incoming control flow
|
|
@@ -285,7 +356,7 @@ ReferenceName returns string:
|
|
|
285
356
|
// ─── Body members ────────────────────────────────────────────────────────────
|
|
286
357
|
|
|
287
358
|
DefinitionBodyMember:
|
|
288
|
-
AttributeMember | PartMember | PortUsage | ViewUsage | RefMember | RequireConstraintMember | MetadataApplication | DocComment;
|
|
359
|
+
AttributeMember | PartMember | PortUsage | ItemUsage | ViewUsage | RefMember | RequireConstraintMember | MetadataApplication | DocComment;
|
|
289
360
|
|
|
290
361
|
// ─── Constraint expression (KerML boolean subset — ADR-1-18) ─────────────────
|
|
291
362
|
// Authored inside constraint def / requirement def bodies as:
|
|
@@ -329,7 +400,7 @@ PrimaryExpr infers ConstraintExpr:
|
|
|
329
400
|
// value — the bare `name = value;` shorthand is non-standard and is not accepted.
|
|
330
401
|
// Use `attribute redefines name = value;` (the form the serializer emits).
|
|
331
402
|
UsageBodyMember:
|
|
332
|
-
AttributeMember | PartMember | PortUsage | ViewUsage | MetadataApplication | DocComment;
|
|
403
|
+
AttributeMember | PartMember | PortUsage | ItemUsage | RefMember | ViewUsage | FlowConnectionUsage | SuccessionUsage | ConnectionUsage | MetadataApplication | DocComment;
|
|
333
404
|
|
|
334
405
|
// ─── Attribute member ────────────────────────────────────────────────────────
|
|
335
406
|
// Two forms:
|
|
@@ -337,8 +408,9 @@ UsageBodyMember:
|
|
|
337
408
|
// attribute redefines name = value ; (value assignment / redefinition)
|
|
338
409
|
|
|
339
410
|
AttributeMember:
|
|
340
|
-
'attribute' redefines?=('redefines' | ':>>')? name=
|
|
341
|
-
(':' type=QualifiedName multiplicity=Multiplicity? '
|
|
411
|
+
'attribute' redefines?=('redefines' | ':>>')? name=MemberName
|
|
412
|
+
(':' type=QualifiedName multiplicity=Multiplicity? ('{' body+=UsageBodyMember* '}' | ';')
|
|
413
|
+
| '=' value=AttributeValue ';');
|
|
342
414
|
|
|
343
415
|
AttributeValue:
|
|
344
416
|
StringValue | RealValue | IntValue | BooleanValue | SetLiteral | EnumValue;
|
|
@@ -385,10 +457,17 @@ PartMember:
|
|
|
385
457
|
('{' body+=UsageBodyMember* '}' | ';');
|
|
386
458
|
|
|
387
459
|
// ─── Reference member ───────────────────────────────────────────────────────
|
|
388
|
-
//
|
|
460
|
+
// Forms:
|
|
461
|
+
// ref subject : TraceableElement[*]; (typed reference feature)
|
|
462
|
+
// ref function : SystemFunction[0..1]; (keyword-named reference)
|
|
463
|
+
// ref item exchangedItem : ExchangeItem; (item-typed reference payload)
|
|
464
|
+
// ref :>> definition = syringeDef; (redefining a reference to a value)
|
|
389
465
|
|
|
390
466
|
RefMember:
|
|
391
|
-
'ref'
|
|
467
|
+
'ref' (isItem?='item')? (redefines?=':>>')? name=FeatureName
|
|
468
|
+
(':' isConjugated?='~'? type=QualifiedName multiplicity=Multiplicity?)?
|
|
469
|
+
('=' value=AttributeValue)?
|
|
470
|
+
';';
|
|
392
471
|
|
|
393
472
|
// ─── Doc comment ─────────────────────────────────────────────────────────────
|
|
394
473
|
// Captured as a single terminal to prevent hidden ML_COMMENT from consuming it
|
|
@@ -415,19 +494,21 @@ QualifiedNameSegment returns string:
|
|
|
415
494
|
// avoid ambiguity with usage prefixes at statement start.
|
|
416
495
|
QualifiedNameTailSegment returns string:
|
|
417
496
|
QualifiedNameSegment
|
|
497
|
+
| UNRESTRICTED_NAME
|
|
418
498
|
| 'in' | 'out' | 'inout' | 'part' | 'requirement' | 'action' | 'item' | 'port'
|
|
419
499
|
| 'interface' | 'connection' | 'attribute' | 'constraint' | 'enum' | 'view' | 'viewpoint'
|
|
420
|
-
| 'ref' | 'import' | 'package' | 'flow' | 'first' | 'allocate' | 'private' | 'public'
|
|
500
|
+
| 'ref' | 'import' | 'package' | 'flow' | 'first' | 'allocate' | 'private' | 'public' | 'state' | 'verification'
|
|
501
|
+
| 'use' | 'fork' | 'join';
|
|
421
502
|
|
|
422
503
|
// Allow keywords as identifiers in member/feature contexts
|
|
423
504
|
MemberName returns string:
|
|
424
505
|
ID | 'requirement' | 'action' | 'item' | 'port' | 'interface' | 'connection'
|
|
425
|
-
| 'attribute' | 'constraint' | 'view' | 'viewpoint' | 'ref' | 'part';
|
|
506
|
+
| 'attribute' | 'constraint' | 'view' | 'viewpoint' | 'ref' | 'part' | 'state' | 'verification';
|
|
426
507
|
|
|
427
508
|
FeatureName returns string:
|
|
428
509
|
ID | 'part' | 'requirement' | 'action' | 'item' | 'port' | 'interface'
|
|
429
510
|
| 'connection' | 'flow' | 'view' | 'viewpoint' | 'attribute' | 'constraint'
|
|
430
|
-
| 'ref' | 'allocate' | 'end' | 'enum' | 'function' | 'operator';
|
|
511
|
+
| 'ref' | 'allocate' | 'end' | 'enum' | 'function' | 'operator' | 'state' | 'verification';
|
|
431
512
|
|
|
432
513
|
// ─── Hidden terminals (skipped by lexer) ─────────────────────────────────────
|
|
433
514
|
|
|
@@ -443,6 +524,9 @@ hidden terminal ML_COMMENT: /\/\*[\s\S]*?\*\//;
|
|
|
443
524
|
terminal DOC_COMMENT: /doc\s+\/\*[\s\S]*?\*\//;
|
|
444
525
|
|
|
445
526
|
terminal ID: /[a-zA-Z_][a-zA-Z0-9_]*/;
|
|
527
|
+
// SysML v2 unrestricted name: any text in single quotes, used when a name would
|
|
528
|
+
// otherwise collide with a reserved word (e.g. enum 'verification';).
|
|
529
|
+
terminal UNRESTRICTED_NAME: /'(?:[^'\\]|\\.)*'/;
|
|
446
530
|
terminal STRING: /"(?:[^"\\]|\\.)*"/;
|
|
447
531
|
// REAL must be declared before INT so the longest-match lexer emits a single
|
|
448
532
|
// REAL token for `20.0` rather than INT `.` INT.
|