Hello everyone,
I noticed a small inconsistency between the SysML v2 book/specification and SysIDE regarding the syntax for terminating an action.
In the book/specification, I understand the following code snippet to be valid:
action def ActionDef0 {
first start then fork1;
first fork1 then action1;
first fork1 then action2;
first action1 then join1;
first action2 then join1;
first join1 then terminate;
fork fork1;
join join1;
action action1;
action action2;
}
In SysIDE, however, the previous code is invalid and gives the error:
Unexpected 'terminate'
To make it valid in SysIDE, the termination has to be written on a separate line, as shown below:
action def ActionDef0 {
first start then fork1;
first fork1 then action1;
first fork1 then action2;
first action1 then join1;
first action2 then join1;
first join1;
then terminate;
fork fork1;
join join1;
action action1;
action action2;
}
My understanding is that both snippets should be semantically equivalent, after action1 and action2 complete and reach join1, the containing action is terminated.
Could someone explain why the first form is not accepted by SysIDE? Is this a SysIDE parser limitation, or am I misunderstanding the intended grammar?
Thanks in advance!
