Skip to content

Commit 3661b25

Browse files
committed
Merge pull request #640 from Systems-Modeling/ST6RI-824
ST6RI-824 Individual/timeslice/snapshot modeling (SYSML2_-158)
2 parents 5be9a71 + cd8c061 commit 3661b25

35 files changed

Lines changed: 29894 additions & 29691 deletions

org.omg.kerml.expressions.xtext/src/org/omg/kerml/expressions/xtext/KerMLExpressions.xtext

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*****************************************************************************
22
* SysML 2 Pilot Implementation
3-
* Copyright (c) 2018-2024 Model Driven Solutions, Inc.
3+
* Copyright (c) 2018-2025 Model Driven Solutions, Inc.
44
* Copyright (c) 2018 IncQuery Labs Ltd.
55
* Copyright (c) 2019 Maplesoft (Waterloo Maple, Inc.)
66
* Copyright (c) 2019 Mgnite Inc.

org.omg.kerml.xtext/src/org/omg/kerml/xtext/KerML.xtext

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*****************************************************************************
22
* SysML 2 Pilot Implementation
3-
* Copyright (c) 2018-2024 Model Driven Solutions, Inc.
3+
* Copyright (c) 2018-2025 Model Driven Solutions, Inc.
44
* Copyright (c) 2018 IncQuery Labs Ltd.
55
* Copyright (c) 2019 Maplesoft (Waterloo Maple, Inc.)
66
* Copyright (c) 2019 Mgnite Inc.

org.omg.sysml.xpect.tests/src/org/omg/sysml/xpect/tests/simpletests/OccurrenceTest.sysml.xt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,11 @@ package OccurrenceTest {
4949
}
5050
individual occurrence ind : Ind, Occ {
5151
snapshot s3;
52-
individual timeslice t3;
52+
individual timeslice t3 :> ind;
53+
individual snapshot s4 : Ind;
54+
}
55+
56+
occurrence o1 {
57+
occurrence o2;
5358
}
54-
55-
individual snapshot s4 : Ind;
5659
}

org.omg.sysml.xpect.tests/src/org/omg/sysml/xpect/tests/validation/invalid/IndividualUsage_Invalid.sysml.xt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ package 'Individuals and Roles' {
4646
// XPECT errors --> "At most one individual definition is allowed." at "individual two_types : A_1, B_1;"
4747
individual two_types : A_1, B_1;
4848

49-
// XPECT errors -->"An individual must be typed by one individual definition." at "individual snapshot b_1_1 : B;"
50-
individual snapshot b_1_1 : B;
49+
// XPECT errors -->"An individual must be typed by one individual definition." at "individual b_1_1 : B;"
50+
individual b_1_1 : B;
5151

5252
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
//*
2+
XPECT_SETUP org.omg.sysml.xpect.tests.validation.valid.SysMLTests
3+
ResourceSet {
4+
ThisFile {}
5+
File {from ="/library.kernel/Base.kerml"}
6+
File {from ="/library.kernel/Links.kerml"}
7+
File {from ="/library.kernel/Occurrences.kerml"}
8+
File {from ="/library.kernel/Objects.kerml"}
9+
File {from ="/library.kernel/Performances.kerml"}
10+
File {from ="/library.kernel/BaseFunctions.kerml"}
11+
File {from ="/library.kernel/ScalarValues.kerml"}
12+
File {from ="/library.kernel/ScalarFunctions.kerml"}
13+
File {from ="/library.systems/Items.sysml"}
14+
File {from ="/library.systems/Parts.sysml"}
15+
File {from ="/library.systems/Ports.sysml"}
16+
File {from ="/library.domain/Quantities and Units/ISQ.sysml"}
17+
File {from ="/library.domain/Quantities and Units/SI.sysml"}
18+
19+
20+
}
21+
Workspace {
22+
JavaProject {
23+
SrcFolder {
24+
ThisFile {}
25+
File {from ="/library.kernel/Base.kerml"}
26+
File {from ="/library.kernel/Links.kerml"}
27+
File {from ="/library.kernel/Occurrences.kerml"}
28+
File {from ="/library.kernel/Objects.kerml"}
29+
File {from ="/library.kernel/Performances.kerml"}
30+
File {from ="/library.kernel/BaseFunctions.kerml"}
31+
File {from ="/library.kernel/ScalarValues.kerml"}
32+
File {from ="/library.kernel/ScalarFunctions.kerml"}
33+
File {from ="/library.systems/Items.sysml"}
34+
File {from ="/library.systems/Parts.sysml"}
35+
File {from ="/library.systems/Ports.sysml"}
36+
File {from ="/library.domain/Quantities and Units/ISQ.sysml"}
37+
File {from ="/library.domain/Quantities and Units/SI.sysml"}
38+
}
39+
}
40+
}
41+
END_SETUP
42+
*/
43+
package PortionUsage_Invalid {
44+
part p1 {
45+
snapshot s1;
46+
timeslice t1 {
47+
snapshot s2;
48+
}
49+
}
50+
51+
// XPECT errors -->"Must be owned by an occurrence definition or usage." at "snapshot s2;"
52+
snapshot s2;
53+
// XPECT errors -->"Must be owned by an occurrence definition or usage." at "timeslice t2;"
54+
timeslice t2;
55+
}

org.omg.sysml.xpect.tests/src/org/omg/sysml/xpect/tests/validation/valid/IndividualUsage.sysml.xt

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,25 +41,8 @@ XPECT_SETUP org.omg.sysml.xpect.tests.validation.valid.SysMLTests
4141
END_SETUP
4242
*/
4343
// XPECT noErrors ---> ""
44-
package 'Individuals and Roles' {
45-
public import ScalarValues::*;
46-
part def Vehicle {
47-
attribute mass : Real;
48-
attribute status : VehicleStatus;
49-
50-
part eng : Engine;
51-
52-
ref driver : Person;
53-
}
54-
55-
attribute def VehicleStatus {
56-
gearSetting : Integer;
57-
acceleratorPosition : Real;
58-
}
59-
60-
part def Engine;
61-
part def Person;
62-
44+
package IndividualUsage_Valid {
45+
part def Vehicle;
6346
part def Wheel;
6447

6548
individual def Vehicle_1 :> Vehicle {
@@ -71,11 +54,11 @@ package 'Individuals and Roles' {
7154

7255
individual vehicle_1 : Vehicle_1 {
7356
snapshot vehicle_1_t0 {
74-
snapshot leftFrontWheel_t0 : Wheel_1 :>> leftFrontWheel;
57+
individual leftFrontWheel_t0 : Wheel_1 :>> leftFrontWheel;
7558
}
7659

77-
snapshot vehicle_1_t1 {
78-
snapshot rightFrontWheel_t1 : Wheel_1 :>> rightFrontWheel;
60+
timeslice vehicle_1_t1 {
61+
individual rightFrontWheel_t1 : Wheel_1 :>> rightFrontWheel;
7962
}
8063

8164
first vehicle_1_t0 then vehicle_1_t1;
236 Bytes
Binary file not shown.

org.omg.sysml.xtext/src-gen/org/omg/sysml/xtext/parser/antlr/internal/InternalSysML.g

Lines changed: 119 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7350,16 +7350,37 @@ ruleOccurrenceDefinitionPrefix[EObject in_current] returns [EObject current=in_
73507350
)?
73517351
(
73527352
(
7353-
lv_isIndividual_1_0='individual'
7354-
{
7355-
newLeafNode(lv_isIndividual_1_0, grammarAccess.getOccurrenceDefinitionPrefixAccess().getIsIndividualIndividualKeyword_1_0());
7356-
}
7357-
{
7358-
if ($current==null) {
7359-
$current = createModelElement(grammarAccess.getOccurrenceDefinitionPrefixRule());
7353+
(
7354+
lv_isIndividual_1_0='individual'
7355+
{
7356+
newLeafNode(lv_isIndividual_1_0, grammarAccess.getOccurrenceDefinitionPrefixAccess().getIsIndividualIndividualKeyword_1_0_0());
73607357
}
7361-
setWithLastConsumed($current, "isIndividual", lv_isIndividual_1_0 != null, "individual");
7362-
}
7358+
{
7359+
if ($current==null) {
7360+
$current = createModelElement(grammarAccess.getOccurrenceDefinitionPrefixRule());
7361+
}
7362+
setWithLastConsumed($current, "isIndividual", lv_isIndividual_1_0 != null, "individual");
7363+
}
7364+
)
7365+
)
7366+
(
7367+
(
7368+
{
7369+
newCompositeNode(grammarAccess.getOccurrenceDefinitionPrefixAccess().getOwnedRelationshipEmptyMultiplicityMemberParserRuleCall_1_1_0());
7370+
}
7371+
lv_ownedRelationship_2_0=ruleEmptyMultiplicityMember
7372+
{
7373+
if ($current==null) {
7374+
$current = createModelElementForParent(grammarAccess.getOccurrenceDefinitionPrefixRule());
7375+
}
7376+
add(
7377+
$current,
7378+
"ownedRelationship",
7379+
lv_ownedRelationship_2_0,
7380+
"org.omg.sysml.xtext.SysML.EmptyMultiplicityMember");
7381+
afterParserOrEnumRuleCall();
7382+
}
7383+
)
73637384
)
73647385
)?
73657386
(
@@ -7369,9 +7390,9 @@ ruleOccurrenceDefinitionPrefix[EObject in_current] returns [EObject current=in_
73697390
}
73707391
newCompositeNode(grammarAccess.getOccurrenceDefinitionPrefixAccess().getDefinitionExtensionKeywordParserRuleCall_2());
73717392
}
7372-
this_DefinitionExtensionKeyword_2=ruleDefinitionExtensionKeyword[$current]
7393+
this_DefinitionExtensionKeyword_3=ruleDefinitionExtensionKeyword[$current]
73737394
{
7374-
$current = $this_DefinitionExtensionKeyword_2.current;
7395+
$current = $this_DefinitionExtensionKeyword_3.current;
73757396
afterParserOrEnumRuleCall();
73767397
}
73777398
)*
@@ -7469,37 +7490,116 @@ ruleIndividualDefinition returns [EObject current=null]
74697490
}
74707491
)
74717492
)
7493+
(
7494+
(
7495+
{
7496+
newCompositeNode(grammarAccess.getIndividualDefinitionAccess().getOwnedRelationshipEmptyMultiplicityMemberParserRuleCall_2_0());
7497+
}
7498+
lv_ownedRelationship_2_0=ruleEmptyMultiplicityMember
7499+
{
7500+
if ($current==null) {
7501+
$current = createModelElementForParent(grammarAccess.getIndividualDefinitionRule());
7502+
}
7503+
add(
7504+
$current,
7505+
"ownedRelationship",
7506+
lv_ownedRelationship_2_0,
7507+
"org.omg.sysml.xtext.SysML.EmptyMultiplicityMember");
7508+
afterParserOrEnumRuleCall();
7509+
}
7510+
)
7511+
)
74727512
(
74737513
{
74747514
if ($current==null) {
74757515
$current = createModelElement(grammarAccess.getIndividualDefinitionRule());
74767516
}
7477-
newCompositeNode(grammarAccess.getIndividualDefinitionAccess().getDefinitionExtensionKeywordParserRuleCall_2());
7517+
newCompositeNode(grammarAccess.getIndividualDefinitionAccess().getDefinitionExtensionKeywordParserRuleCall_3());
74787518
}
7479-
this_DefinitionExtensionKeyword_2=ruleDefinitionExtensionKeyword[$current]
7519+
this_DefinitionExtensionKeyword_3=ruleDefinitionExtensionKeyword[$current]
74807520
{
7481-
$current = $this_DefinitionExtensionKeyword_2.current;
7521+
$current = $this_DefinitionExtensionKeyword_3.current;
74827522
afterParserOrEnumRuleCall();
74837523
}
74847524
)*
7485-
otherlv_3='def'
7525+
otherlv_4='def'
74867526
{
7487-
newLeafNode(otherlv_3, grammarAccess.getIndividualDefinitionAccess().getDefKeyword_3());
7527+
newLeafNode(otherlv_4, grammarAccess.getIndividualDefinitionAccess().getDefKeyword_4());
74887528
}
74897529
{
74907530
if ($current==null) {
74917531
$current = createModelElement(grammarAccess.getIndividualDefinitionRule());
74927532
}
7493-
newCompositeNode(grammarAccess.getIndividualDefinitionAccess().getDefinitionParserRuleCall_4());
7533+
newCompositeNode(grammarAccess.getIndividualDefinitionAccess().getDefinitionParserRuleCall_5());
74947534
}
7495-
this_Definition_4=ruleDefinition[$current]
7535+
this_Definition_5=ruleDefinition[$current]
74967536
{
7497-
$current = $this_Definition_4.current;
7537+
$current = $this_Definition_5.current;
74987538
afterParserOrEnumRuleCall();
74997539
}
75007540
)
75017541
;
75027542

7543+
// Entry rule entryRuleEmptyMultiplicityMember
7544+
entryRuleEmptyMultiplicityMember returns [EObject current=null]:
7545+
{ newCompositeNode(grammarAccess.getEmptyMultiplicityMemberRule()); }
7546+
iv_ruleEmptyMultiplicityMember=ruleEmptyMultiplicityMember
7547+
{ $current=$iv_ruleEmptyMultiplicityMember.current; }
7548+
EOF;
7549+
7550+
// Rule EmptyMultiplicityMember
7551+
ruleEmptyMultiplicityMember returns [EObject current=null]
7552+
@init {
7553+
enterRule();
7554+
}
7555+
@after {
7556+
leaveRule();
7557+
}:
7558+
(
7559+
(
7560+
{
7561+
newCompositeNode(grammarAccess.getEmptyMultiplicityMemberAccess().getOwnedRelatedElementEmptyMultiplicityParserRuleCall_0());
7562+
}
7563+
lv_ownedRelatedElement_0_0=ruleEmptyMultiplicity
7564+
{
7565+
if ($current==null) {
7566+
$current = createModelElementForParent(grammarAccess.getEmptyMultiplicityMemberRule());
7567+
}
7568+
add(
7569+
$current,
7570+
"ownedRelatedElement",
7571+
lv_ownedRelatedElement_0_0,
7572+
"org.omg.sysml.xtext.SysML.EmptyMultiplicity");
7573+
afterParserOrEnumRuleCall();
7574+
}
7575+
)
7576+
)
7577+
;
7578+
7579+
// Entry rule entryRuleEmptyMultiplicity
7580+
entryRuleEmptyMultiplicity returns [EObject current=null]:
7581+
{ newCompositeNode(grammarAccess.getEmptyMultiplicityRule()); }
7582+
iv_ruleEmptyMultiplicity=ruleEmptyMultiplicity
7583+
{ $current=$iv_ruleEmptyMultiplicity.current; }
7584+
EOF;
7585+
7586+
// Rule EmptyMultiplicity
7587+
ruleEmptyMultiplicity returns [EObject current=null]
7588+
@init {
7589+
enterRule();
7590+
}
7591+
@after {
7592+
leaveRule();
7593+
}:
7594+
(
7595+
{
7596+
$current = forceCreateModelElement(
7597+
grammarAccess.getEmptyMultiplicityAccess().getMultiplicityAction(),
7598+
$current);
7599+
}
7600+
)
7601+
;
7602+
75037603
// Entry rule entryRuleOccurrenceUsageKeyword
75047604
entryRuleOccurrenceUsageKeyword returns [String current=null]:
75057605
{ newCompositeNode(grammarAccess.getOccurrenceUsageKeywordRule()); }

0 commit comments

Comments
 (0)