diff options
15 files changed, 284 insertions, 150 deletions
diff --git a/language-ide/src/main/java/org/eclipse/viatra/solver/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java b/language-ide/src/main/java/org/eclipse/viatra/solver/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java index b1a69e9d..f9a1fb7b 100644 --- a/language-ide/src/main/java/org/eclipse/viatra/solver/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java +++ b/language-ide/src/main/java/org/eclipse/viatra/solver/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java | |||
@@ -35,7 +35,7 @@ public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighli | |||
35 | private static final String PREDICATE_CLASS = "problem-predicate"; | 35 | private static final String PREDICATE_CLASS = "problem-predicate"; |
36 | private static final String ERROR_CLASS = "problem-error"; | 36 | private static final String ERROR_CLASS = "problem-error"; |
37 | private static final String NODE_CLASS = "problem-node"; | 37 | private static final String NODE_CLASS = "problem-node"; |
38 | private static final String ENUM_NODE_CLASS = "problem-enum-node"; | 38 | private static final String UNIQUE_NODE_CLASS = "problem-unique-node"; |
39 | private static final String NEW_NODE_CLASS = "problem-new-node"; | 39 | private static final String NEW_NODE_CLASS = "problem-new-node"; |
40 | private static final String PARAMETER_CLASS = "problem-parameter"; | 40 | private static final String PARAMETER_CLASS = "problem-parameter"; |
41 | private static final String VARIABLE_CLASS = "problem-variable"; | 41 | private static final String VARIABLE_CLASS = "problem-variable"; |
@@ -132,8 +132,8 @@ public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighli | |||
132 | if (eObject instanceof Node) { | 132 | if (eObject instanceof Node) { |
133 | classesBuilder.add(NODE_CLASS); | 133 | classesBuilder.add(NODE_CLASS); |
134 | var node = (Node) eObject; | 134 | var node = (Node) eObject; |
135 | if (ProblemUtil.isEnumNode(node)) { | 135 | if (ProblemUtil.isUniqueNode(node)) { |
136 | classesBuilder.add(ENUM_NODE_CLASS); | 136 | classesBuilder.add(UNIQUE_NODE_CLASS); |
137 | } | 137 | } |
138 | if (ProblemUtil.isNewNode(node)) { | 138 | if (ProblemUtil.isNewNode(node)) { |
139 | classesBuilder.add(NEW_NODE_CLASS); | 139 | classesBuilder.add(NEW_NODE_CLASS); |
diff --git a/language-model/problem.aird b/language-model/problem.aird index 1339af12..f2192e65 100644 --- a/language-model/problem.aird +++ b/language-model/problem.aird | |||
@@ -7,7 +7,7 @@ | |||
7 | <semanticResources>build/resources/main/model/problem.genmodel</semanticResources> | 7 | <semanticResources>build/resources/main/model/problem.genmodel</semanticResources> |
8 | <ownedViews xmi:type="viewpoint:DView" uid="_CsAAYKA4EeuqkpDnuik1sg"> | 8 | <ownedViews xmi:type="viewpoint:DView" uid="_CsAAYKA4EeuqkpDnuik1sg"> |
9 | <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> | 9 | <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> |
10 | <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_CsYa4KA4EeuqkpDnuik1sg" name="problem" repPath="#_CsUwgKA4EeuqkpDnuik1sg" changeId="9e6149a4-5a12-44f9-8e40-b3da58c59eb4"> | 10 | <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_CsYa4KA4EeuqkpDnuik1sg" name="problem" repPath="#_CsUwgKA4EeuqkpDnuik1sg" changeId="06203da9-3aa0-4459-90ab-809823eee3f6"> |
11 | <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> | 11 | <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> |
12 | <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/> | 12 | <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/> |
13 | </ownedRepresentationDescriptors> | 13 | </ownedRepresentationDescriptors> |
@@ -169,11 +169,15 @@ | |||
169 | <styles xmi:type="notation:FontStyle" xmi:id="_NAri8aA9EeuqkpDnuik1sg" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/> | 169 | <styles xmi:type="notation:FontStyle" xmi:id="_NAri8aA9EeuqkpDnuik1sg" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/> |
170 | <layoutConstraint xmi:type="notation:Location" xmi:id="_NAri8qA9EeuqkpDnuik1sg"/> | 170 | <layoutConstraint xmi:type="notation:Location" xmi:id="_NAri8qA9EeuqkpDnuik1sg"/> |
171 | </children> | 171 | </children> |
172 | <children xmi:type="notation:Node" xmi:id="_Y3GDAAGzEey7cfH5K6RyCw" type="3010" element="_Y2m60AGzEey7cfH5K6RyCw"> | ||
173 | <styles xmi:type="notation:FontStyle" xmi:id="_Y3GDAQGzEey7cfH5K6RyCw" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/> | ||
174 | <layoutConstraint xmi:type="notation:Location" xmi:id="_Y3GDAgGzEey7cfH5K6RyCw"/> | ||
175 | </children> | ||
172 | <styles xmi:type="notation:SortingStyle" xmi:id="_p9xZ0qA8EeuqkpDnuik1sg"/> | 176 | <styles xmi:type="notation:SortingStyle" xmi:id="_p9xZ0qA8EeuqkpDnuik1sg"/> |
173 | <styles xmi:type="notation:FilteringStyle" xmi:id="_p9xZ06A8EeuqkpDnuik1sg"/> | 177 | <styles xmi:type="notation:FilteringStyle" xmi:id="_p9xZ06A8EeuqkpDnuik1sg"/> |
174 | </children> | 178 | </children> |
175 | <styles xmi:type="notation:ShapeStyle" xmi:id="_p9wywaA8EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> | 179 | <styles xmi:type="notation:ShapeStyle" xmi:id="_p9wywaA8EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> |
176 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p9wywqA8EeuqkpDnuik1sg" x="1872" y="528" width="120" height="100"/> | 180 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p9wywqA8EeuqkpDnuik1sg" x="1872" y="528" width="120" height="111"/> |
177 | </children> | 181 | </children> |
178 | <children xmi:type="notation:Node" xmi:id="_xsq_MKA8EeuqkpDnuik1sg" type="2003" element="_xsYrUKA8EeuqkpDnuik1sg"> | 182 | <children xmi:type="notation:Node" xmi:id="_xsq_MKA8EeuqkpDnuik1sg" type="2003" element="_xsYrUKA8EeuqkpDnuik1sg"> |
179 | <children xmi:type="notation:Node" xmi:id="_xsrmQKA8EeuqkpDnuik1sg" type="5007"/> | 183 | <children xmi:type="notation:Node" xmi:id="_xsrmQKA8EeuqkpDnuik1sg" type="5007"/> |
@@ -199,6 +203,10 @@ | |||
199 | <styles xmi:type="notation:FontStyle" xmi:id="_JW_fcaA9EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> | 203 | <styles xmi:type="notation:FontStyle" xmi:id="_JW_fcaA9EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> |
200 | <layoutConstraint xmi:type="notation:Location" xmi:id="_JW_fcqA9EeuqkpDnuik1sg"/> | 204 | <layoutConstraint xmi:type="notation:Location" xmi:id="_JW_fcqA9EeuqkpDnuik1sg"/> |
201 | </children> | 205 | </children> |
206 | <children xmi:type="notation:Node" xmi:id="_9LOjcAGzEey7cfH5K6RyCw" type="3010" element="_9K7BcAGzEey7cfH5K6RyCw"> | ||
207 | <styles xmi:type="notation:FontStyle" xmi:id="_9LOjcQGzEey7cfH5K6RyCw" fontName="Noto Sans" fontHeight="8"/> | ||
208 | <layoutConstraint xmi:type="notation:Location" xmi:id="_9LOjcgGzEey7cfH5K6RyCw"/> | ||
209 | </children> | ||
202 | <styles xmi:type="notation:SortingStyle" xmi:id="_BMfjNaA9EeuqkpDnuik1sg"/> | 210 | <styles xmi:type="notation:SortingStyle" xmi:id="_BMfjNaA9EeuqkpDnuik1sg"/> |
203 | <styles xmi:type="notation:FilteringStyle" xmi:id="_BMfjNqA9EeuqkpDnuik1sg"/> | 211 | <styles xmi:type="notation:FilteringStyle" xmi:id="_BMfjNqA9EeuqkpDnuik1sg"/> |
204 | </children> | 212 | </children> |
@@ -413,6 +421,24 @@ | |||
413 | <styles xmi:type="notation:ShapeStyle" xmi:id="_9Tu6EdeAEeufiOvRR5sVhg" fontName="Noto Sans" fontHeight="8"/> | 421 | <styles xmi:type="notation:ShapeStyle" xmi:id="_9Tu6EdeAEeufiOvRR5sVhg" fontName="Noto Sans" fontHeight="8"/> |
414 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Tu6EteAEeufiOvRR5sVhg" x="2136" y="528" width="144" height="100"/> | 422 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Tu6EteAEeufiOvRR5sVhg" x="2136" y="528" width="144" height="100"/> |
415 | </children> | 423 | </children> |
424 | <children xmi:type="notation:Node" xmi:id="_pdJrwAGyEey7cfH5K6RyCw" type="2003" element="_pcXBkAGyEey7cfH5K6RyCw"> | ||
425 | <children xmi:type="notation:Node" xmi:id="_pdOkQAGyEey7cfH5K6RyCw" type="5007"/> | ||
426 | <children xmi:type="notation:Node" xmi:id="_pdOkQQGyEey7cfH5K6RyCw" type="7004"> | ||
427 | <styles xmi:type="notation:SortingStyle" xmi:id="_pdOkQgGyEey7cfH5K6RyCw"/> | ||
428 | <styles xmi:type="notation:FilteringStyle" xmi:id="_pdOkQwGyEey7cfH5K6RyCw"/> | ||
429 | </children> | ||
430 | <styles xmi:type="notation:ShapeStyle" xmi:id="_pdJrwQGyEey7cfH5K6RyCw" fontName="Noto Sans" fontHeight="8"/> | ||
431 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pdJrwgGyEey7cfH5K6RyCw" x="132" y="528" width="120" height="100"/> | ||
432 | </children> | ||
433 | <children xmi:type="notation:Node" xmi:id="_SNlYYAGzEey7cfH5K6RyCw" type="2003" element="_SNSdcAGzEey7cfH5K6RyCw"> | ||
434 | <children xmi:type="notation:Node" xmi:id="_SNlYYwGzEey7cfH5K6RyCw" type="5007"/> | ||
435 | <children xmi:type="notation:Node" xmi:id="_SNlYZAGzEey7cfH5K6RyCw" type="7004"> | ||
436 | <styles xmi:type="notation:SortingStyle" xmi:id="_SNlYZQGzEey7cfH5K6RyCw"/> | ||
437 | <styles xmi:type="notation:FilteringStyle" xmi:id="_SNlYZgGzEey7cfH5K6RyCw"/> | ||
438 | </children> | ||
439 | <styles xmi:type="notation:ShapeStyle" xmi:id="_SNlYYQGzEey7cfH5K6RyCw" fontName="Noto Sans" fontHeight="8"/> | ||
440 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SNlYYgGzEey7cfH5K6RyCw" x="1836" y="840" width="180" height="100"/> | ||
441 | </children> | ||
416 | <styles xmi:type="notation:DiagramStyle" xmi:id="_CsZB8qA4EeuqkpDnuik1sg"/> | 442 | <styles xmi:type="notation:DiagramStyle" xmi:id="_CsZB8qA4EeuqkpDnuik1sg"/> |
417 | <edges xmi:type="notation:Edge" xmi:id="_ODhSQKA4EeuqkpDnuik1sg" type="4001" element="_ODPlcKA4EeuqkpDnuik1sg" source="_JT0o8KA4EeuqkpDnuik1sg" target="_EfWNUKA4EeuqkpDnuik1sg"> | 443 | <edges xmi:type="notation:Edge" xmi:id="_ODhSQKA4EeuqkpDnuik1sg" type="4001" element="_ODPlcKA4EeuqkpDnuik1sg" source="_JT0o8KA4EeuqkpDnuik1sg" target="_EfWNUKA4EeuqkpDnuik1sg"> |
418 | <children xmi:type="notation:Node" xmi:id="_ODhSRKA4EeuqkpDnuik1sg" type="6001"> | 444 | <children xmi:type="notation:Node" xmi:id="_ODhSRKA4EeuqkpDnuik1sg" type="6001"> |
@@ -592,17 +618,17 @@ | |||
592 | </edges> | 618 | </edges> |
593 | <edges xmi:type="notation:Edge" xmi:id="_vWH0AKA7EeuqkpDnuik1sg" type="4001" element="_vWBGaKA7EeuqkpDnuik1sg" source="_sdPX0KA6EeuqkpDnuik1sg" target="_rRhWIKA7EeuqkpDnuik1sg"> | 619 | <edges xmi:type="notation:Edge" xmi:id="_vWH0AKA7EeuqkpDnuik1sg" type="4001" element="_vWBGaKA7EeuqkpDnuik1sg" source="_sdPX0KA6EeuqkpDnuik1sg" target="_rRhWIKA7EeuqkpDnuik1sg"> |
594 | <children xmi:type="notation:Node" xmi:id="_vWH0BKA7EeuqkpDnuik1sg" type="6001"> | 620 | <children xmi:type="notation:Node" xmi:id="_vWH0BKA7EeuqkpDnuik1sg" type="6001"> |
595 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWH0BaA7EeuqkpDnuik1sg" x="-105" y="-4"/> | 621 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWH0BaA7EeuqkpDnuik1sg" x="-32" y="77"/> |
596 | </children> | 622 | </children> |
597 | <children xmi:type="notation:Node" xmi:id="_vWH0BqA7EeuqkpDnuik1sg" type="6002"> | 623 | <children xmi:type="notation:Node" xmi:id="_vWH0BqA7EeuqkpDnuik1sg" type="6002"> |
598 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWH0B6A7EeuqkpDnuik1sg" y="10"/> | 624 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWH0B6A7EeuqkpDnuik1sg" y="10"/> |
599 | </children> | 625 | </children> |
600 | <children xmi:type="notation:Node" xmi:id="_vWH0CKA7EeuqkpDnuik1sg" type="6003"> | 626 | <children xmi:type="notation:Node" xmi:id="_vWH0CKA7EeuqkpDnuik1sg" type="6003"> |
601 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWH0CaA7EeuqkpDnuik1sg" x="-59" y="-55"/> | 627 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWH0CaA7EeuqkpDnuik1sg" x="47" y="-79"/> |
602 | </children> | 628 | </children> |
603 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_vWH0AaA7EeuqkpDnuik1sg" routing="Tree"/> | 629 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_vWH0AaA7EeuqkpDnuik1sg" routing="Tree"/> |
604 | <styles xmi:type="notation:FontStyle" xmi:id="_vWH0AqA7EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> | 630 | <styles xmi:type="notation:FontStyle" xmi:id="_vWH0AqA7EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> |
605 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vWH0A6A7EeuqkpDnuik1sg" points="[0, 0, -190, 191]$[0, -48, -190, 143]$[156, -48, -34, 143]$[156, -142, -34, 49]"/> | 631 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vWH0A6A7EeuqkpDnuik1sg" points="[0, 0, -153, 191]$[0, -96, -153, 95]$[107, -96, -46, 95]$[107, -142, -46, 49]"/> |
606 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vWIbEKA7EeuqkpDnuik1sg" id="(0.8135593220338984,0.0)"/> | 632 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vWIbEKA7EeuqkpDnuik1sg" id="(0.8135593220338984,0.0)"/> |
607 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vWIbEaA7EeuqkpDnuik1sg" id="(0.5,0.5)"/> | 633 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vWIbEaA7EeuqkpDnuik1sg" id="(0.5,0.5)"/> |
608 | </edges> | 634 | </edges> |
@@ -699,7 +725,7 @@ | |||
699 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_w-zMkaA8EeuqkpDnuik1sg" routing="Rectilinear"/> | 725 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_w-zMkaA8EeuqkpDnuik1sg" routing="Rectilinear"/> |
700 | <styles xmi:type="notation:FontStyle" xmi:id="_w-zMkqA8EeuqkpDnuik1sg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> | 726 | <styles xmi:type="notation:FontStyle" xmi:id="_w-zMkqA8EeuqkpDnuik1sg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> |
701 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w-zMk6A8EeuqkpDnuik1sg" points="[0, -13, 1130, -13]$[-1130, -13, 0, -13]"/> | 727 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w-zMk6A8EeuqkpDnuik1sg" points="[0, -13, 1130, -13]$[-1130, -13, 0, -13]"/> |
702 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w-zzpKA8EeuqkpDnuik1sg" id="(0.0,0.5)"/> | 728 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w-zzpKA8EeuqkpDnuik1sg" id="(0.0,0.44954128440366975)"/> |
703 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w-zzpaA8EeuqkpDnuik1sg" id="(1.0,0.5)"/> | 729 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w-zzpaA8EeuqkpDnuik1sg" id="(1.0,0.5)"/> |
704 | </edges> | 730 | </edges> |
705 | <edges xmi:type="notation:Edge" xmi:id="_4eaYwKA8EeuqkpDnuik1sg" type="4001" element="_4eU5TqA8EeuqkpDnuik1sg" source="_D1D6MKA4EeuqkpDnuik1sg" target="_xsq_MKA8EeuqkpDnuik1sg"> | 731 | <edges xmi:type="notation:Edge" xmi:id="_4eaYwKA8EeuqkpDnuik1sg" type="4001" element="_4eU5TqA8EeuqkpDnuik1sg" source="_D1D6MKA4EeuqkpDnuik1sg" target="_xsq_MKA8EeuqkpDnuik1sg"> |
@@ -736,18 +762,18 @@ | |||
736 | </edges> | 762 | </edges> |
737 | <edges xmi:type="notation:Edge" xmi:id="_mQXegKA9EeuqkpDnuik1sg" type="4001" element="_mQFKsqA9EeuqkpDnuik1sg" source="_p9wywKA8EeuqkpDnuik1sg" target="_e73WIKA9EeuqkpDnuik1sg"> | 763 | <edges xmi:type="notation:Edge" xmi:id="_mQXegKA9EeuqkpDnuik1sg" type="4001" element="_mQFKsqA9EeuqkpDnuik1sg" source="_p9wywKA8EeuqkpDnuik1sg" target="_e73WIKA9EeuqkpDnuik1sg"> |
738 | <children xmi:type="notation:Node" xmi:id="_mQYFkKA9EeuqkpDnuik1sg" type="6001"> | 764 | <children xmi:type="notation:Node" xmi:id="_mQYFkKA9EeuqkpDnuik1sg" type="6001"> |
739 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mQYFkaA9EeuqkpDnuik1sg" x="-60" y="-10"/> | 765 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mQYFkaA9EeuqkpDnuik1sg" x="-100" y="-10"/> |
740 | </children> | 766 | </children> |
741 | <children xmi:type="notation:Node" xmi:id="_mQYFkqA9EeuqkpDnuik1sg" type="6002"> | 767 | <children xmi:type="notation:Node" xmi:id="_mQYFkqA9EeuqkpDnuik1sg" type="6002"> |
742 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mQYFk6A9EeuqkpDnuik1sg" x="-60" y="10"/> | 768 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mQYFk6A9EeuqkpDnuik1sg" x="-100" y="10"/> |
743 | </children> | 769 | </children> |
744 | <children xmi:type="notation:Node" xmi:id="_mQYFlKA9EeuqkpDnuik1sg" type="6003"> | 770 | <children xmi:type="notation:Node" xmi:id="_mQYFlKA9EeuqkpDnuik1sg" type="6003"> |
745 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mQYFlaA9EeuqkpDnuik1sg" x="-60" y="10"/> | 771 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mQYFlaA9EeuqkpDnuik1sg" x="-100" y="10"/> |
746 | </children> | 772 | </children> |
747 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_mQXegaA9EeuqkpDnuik1sg" routing="Tree"/> | 773 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_mQXegaA9EeuqkpDnuik1sg" routing="Tree"/> |
748 | <styles xmi:type="notation:FontStyle" xmi:id="_mQXegqA9EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> | 774 | <styles xmi:type="notation:FontStyle" xmi:id="_mQXegqA9EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> |
749 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mQXeg6A9EeuqkpDnuik1sg" points="[0, -5, 1059, 143]$[0, -41, 1059, 107]$[-1058, -41, 1, 107]$[-1058, -99, 1, 49]"/> | 775 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mQXeg6A9EeuqkpDnuik1sg" points="[0, -4, 1065, 143]$[0, -40, 1065, 107]$[-1064, -40, 1, 107]$[-1064, -98, 1, 49]"/> |
750 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQYFlqA9EeuqkpDnuik1sg" id="(0.4745762711864407,0.04081632653061224)"/> | 776 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQYFlqA9EeuqkpDnuik1sg" id="(0.4745762711864407,0.03669724770642201)"/> |
751 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQYFl6A9EeuqkpDnuik1sg" id="(0.5,0.5)"/> | 777 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mQYFl6A9EeuqkpDnuik1sg" id="(0.5,0.5)"/> |
752 | </edges> | 778 | </edges> |
753 | <edges xmi:type="notation:Edge" xmi:id="_m0CMQKA9EeuqkpDnuik1sg" type="4001" element="_mzziwKA9EeuqkpDnuik1sg" source="_fit3kKA5EeuqkpDnuik1sg" target="_e73WIKA9EeuqkpDnuik1sg"> | 779 | <edges xmi:type="notation:Edge" xmi:id="_m0CMQKA9EeuqkpDnuik1sg" type="4001" element="_mzziwKA9EeuqkpDnuik1sg" source="_fit3kKA5EeuqkpDnuik1sg" target="_e73WIKA9EeuqkpDnuik1sg"> |
@@ -960,17 +986,17 @@ | |||
960 | </edges> | 986 | </edges> |
961 | <edges xmi:type="notation:Edge" xmi:id="_-X6xcNawEeuymriYTNxK2g" type="4001" element="_-XLKltawEeuymriYTNxK2g" source="_JT0o8KA4EeuqkpDnuik1sg" target="_xsq_MKA8EeuqkpDnuik1sg"> | 987 | <edges xmi:type="notation:Edge" xmi:id="_-X6xcNawEeuymriYTNxK2g" type="4001" element="_-XLKltawEeuymriYTNxK2g" source="_JT0o8KA4EeuqkpDnuik1sg" target="_xsq_MKA8EeuqkpDnuik1sg"> |
962 | <children xmi:type="notation:Node" xmi:id="_-X_C4NawEeuymriYTNxK2g" type="6001"> | 988 | <children xmi:type="notation:Node" xmi:id="_-X_C4NawEeuymriYTNxK2g" type="6001"> |
963 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-X_C4dawEeuymriYTNxK2g" x="-2" y="-308"/> | 989 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-X_C4dawEeuymriYTNxK2g" x="11" y="-334"/> |
964 | </children> | 990 | </children> |
965 | <children xmi:type="notation:Node" xmi:id="_-X_p8NawEeuymriYTNxK2g" type="6002"> | 991 | <children xmi:type="notation:Node" xmi:id="_-X_p8NawEeuymriYTNxK2g" type="6002"> |
966 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-X_p8dawEeuymriYTNxK2g" x="-2" y="10"/> | 992 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-X_p8dawEeuymriYTNxK2g" x="-6" y="10"/> |
967 | </children> | 993 | </children> |
968 | <children xmi:type="notation:Node" xmi:id="_-YARANawEeuymriYTNxK2g" type="6003"> | 994 | <children xmi:type="notation:Node" xmi:id="_-YARANawEeuymriYTNxK2g" type="6003"> |
969 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-YARAdawEeuymriYTNxK2g" x="-316" y="-140"/> | 995 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-YARAdawEeuymriYTNxK2g" x="-312" y="-166"/> |
970 | </children> | 996 | </children> |
971 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_-X6xcdawEeuymriYTNxK2g" routing="Rectilinear"/> | 997 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_-X6xcdawEeuymriYTNxK2g" routing="Rectilinear"/> |
972 | <styles xmi:type="notation:FontStyle" xmi:id="_-X6xctawEeuymriYTNxK2g" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> | 998 | <styles xmi:type="notation:FontStyle" xmi:id="_-X6xctawEeuymriYTNxK2g" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> |
973 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-X6xc9awEeuymriYTNxK2g" points="[-58, 86, -288, 422]$[-58, 132, -288, 468]$[288, 132, 58, 468]$[288, -298, 58, 38]"/> | 999 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-X6xc9awEeuymriYTNxK2g" points="[-58, 86, -288, 422]$[-58, 132, -288, 468]$[314, 132, 84, 468]$[314, -298, 84, 38]"/> |
974 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YCtQNawEeuymriYTNxK2g" id="(1.0,0.12244897959183673)"/> | 1000 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YCtQNawEeuymriYTNxK2g" id="(1.0,0.12244897959183673)"/> |
975 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YCtQdawEeuymriYTNxK2g" id="(0.0,0.6122448979591837)"/> | 1001 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YCtQdawEeuymriYTNxK2g" id="(0.0,0.6122448979591837)"/> |
976 | </edges> | 1002 | </edges> |
@@ -1056,17 +1082,17 @@ | |||
1056 | </edges> | 1082 | </edges> |
1057 | <edges xmi:type="notation:Edge" xmi:id="_gRXLkNbGEeuymriYTNxK2g" type="4001" element="_gRDCgNbGEeuymriYTNxK2g" source="_M6O-0NbGEeuymriYTNxK2g" target="_xsq_MKA8EeuqkpDnuik1sg"> | 1083 | <edges xmi:type="notation:Edge" xmi:id="_gRXLkNbGEeuymriYTNxK2g" type="4001" element="_gRDCgNbGEeuymriYTNxK2g" source="_M6O-0NbGEeuymriYTNxK2g" target="_xsq_MKA8EeuqkpDnuik1sg"> |
1058 | <children xmi:type="notation:Node" xmi:id="_gRXLlNbGEeuymriYTNxK2g" type="6001"> | 1084 | <children xmi:type="notation:Node" xmi:id="_gRXLlNbGEeuymriYTNxK2g" type="6001"> |
1059 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gRXLldbGEeuymriYTNxK2g" x="-13" y="-41"/> | 1085 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gRXLldbGEeuymriYTNxK2g" x="-2" y="-41"/> |
1060 | </children> | 1086 | </children> |
1061 | <children xmi:type="notation:Node" xmi:id="_gRXyoNbGEeuymriYTNxK2g" type="6002"> | 1087 | <children xmi:type="notation:Node" xmi:id="_gRXyoNbGEeuymriYTNxK2g" type="6002"> |
1062 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gRXyodbGEeuymriYTNxK2g" x="79" y="10"/> | 1088 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gRXyodbGEeuymriYTNxK2g" x="98" y="10"/> |
1063 | </children> | 1089 | </children> |
1064 | <children xmi:type="notation:Node" xmi:id="_gRXyotbGEeuymriYTNxK2g" type="6003"> | 1090 | <children xmi:type="notation:Node" xmi:id="_gRXyotbGEeuymriYTNxK2g" type="6003"> |
1065 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gRXyo9bGEeuymriYTNxK2g" x="4" y="10"/> | 1091 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gRXyo9bGEeuymriYTNxK2g" x="7" y="10"/> |
1066 | </children> | 1092 | </children> |
1067 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_gRXLkdbGEeuymriYTNxK2g" routing="Rectilinear"/> | 1093 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_gRXLkdbGEeuymriYTNxK2g" routing="Rectilinear"/> |
1068 | <styles xmi:type="notation:FontStyle" xmi:id="_gRXLktbGEeuymriYTNxK2g" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> | 1094 | <styles xmi:type="notation:FontStyle" xmi:id="_gRXLktbGEeuymriYTNxK2g" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> |
1069 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gRXLk9bGEeuymriYTNxK2g" points="[25, 48, -35, 334]$[60, 48, 0, 334]$[60, -286, 0, 0]"/> | 1095 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gRXLk9bGEeuymriYTNxK2g" points="[25, 48, -35, 334]$[82, 48, 22, 334]$[82, -286, 22, 0]"/> |
1070 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gRXypNbGEeuymriYTNxK2g" id="(0.788135593220339,0.0)"/> | 1096 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gRXypNbGEeuymriYTNxK2g" id="(0.788135593220339,0.0)"/> |
1071 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gRXypdbGEeuymriYTNxK2g" id="(0.3050847457627119,1.0)"/> | 1097 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gRXypdbGEeuymriYTNxK2g" id="(0.3050847457627119,1.0)"/> |
1072 | </edges> | 1098 | </edges> |
@@ -1243,7 +1269,7 @@ | |||
1243 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_YAyoAdeAEeufiOvRR5sVhg" routing="Rectilinear"/> | 1269 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_YAyoAdeAEeufiOvRR5sVhg" routing="Rectilinear"/> |
1244 | <styles xmi:type="notation:FontStyle" xmi:id="_YAyoAteAEeufiOvRR5sVhg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> | 1270 | <styles xmi:type="notation:FontStyle" xmi:id="_YAyoAteAEeufiOvRR5sVhg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> |
1245 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YAyoA9eAEeufiOvRR5sVhg" points="[0, 0, 0, -82]$[0, 82, 0, 0]"/> | 1271 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YAyoA9eAEeufiOvRR5sVhg" points="[0, 0, 0, -82]$[0, 82, 0, 0]"/> |
1246 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YAzPENeAEeufiOvRR5sVhg" id="(0.4406779661016949,1.0)"/> | 1272 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YAzPENeAEeufiOvRR5sVhg" id="(0.4406779661016949,0.8990825688073395)"/> |
1247 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YAzPEdeAEeufiOvRR5sVhg" id="(0.45112781954887216,0.0)"/> | 1273 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YAzPEdeAEeufiOvRR5sVhg" id="(0.45112781954887216,0.0)"/> |
1248 | </edges> | 1274 | </edges> |
1249 | <edges xmi:type="notation:Edge" xmi:id="_dDz18NeAEeufiOvRR5sVhg" type="4001" element="_dDd3wteAEeufiOvRR5sVhg" source="_OWhiINeAEeufiOvRR5sVhg" target="_VikSENeAEeufiOvRR5sVhg"> | 1275 | <edges xmi:type="notation:Edge" xmi:id="_dDz18NeAEeufiOvRR5sVhg" type="4001" element="_dDd3wteAEeufiOvRR5sVhg" source="_OWhiINeAEeufiOvRR5sVhg" target="_VikSENeAEeufiOvRR5sVhg"> |
@@ -1374,6 +1400,54 @@ | |||
1374 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WiUCateBEeufiOvRR5sVhg" id="(0.5070422535211268,1.0)"/> | 1400 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WiUCateBEeufiOvRR5sVhg" id="(0.5070422535211268,1.0)"/> |
1375 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WiUCa9eBEeufiOvRR5sVhg" id="(0.8135593220338984,0.0)"/> | 1401 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WiUCa9eBEeufiOvRR5sVhg" id="(0.8135593220338984,0.0)"/> |
1376 | </edges> | 1402 | </edges> |
1403 | <edges xmi:type="notation:Edge" xmi:id="_s7wgoAGyEey7cfH5K6RyCw" type="4001" element="_s68oXAGyEey7cfH5K6RyCw" source="_pdJrwAGyEey7cfH5K6RyCw" target="_e73WIKA9EeuqkpDnuik1sg"> | ||
1404 | <children xmi:type="notation:Node" xmi:id="_s7xuwAGyEey7cfH5K6RyCw" type="6001"> | ||
1405 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s7xuwQGyEey7cfH5K6RyCw" y="-10"/> | ||
1406 | </children> | ||
1407 | <children xmi:type="notation:Node" xmi:id="_s7yV0AGyEey7cfH5K6RyCw" type="6002"> | ||
1408 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s7yV0QGyEey7cfH5K6RyCw" y="10"/> | ||
1409 | </children> | ||
1410 | <children xmi:type="notation:Node" xmi:id="_s7yV0gGyEey7cfH5K6RyCw" type="6003"> | ||
1411 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s7yV0wGyEey7cfH5K6RyCw" y="10"/> | ||
1412 | </children> | ||
1413 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_s7wgoQGyEey7cfH5K6RyCw" routing="Tree"/> | ||
1414 | <styles xmi:type="notation:FontStyle" xmi:id="_s7wgogGyEey7cfH5K6RyCw" fontName="Noto Sans" fontHeight="8"/> | ||
1415 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s7wgowGyEey7cfH5K6RyCw" points="[0, -9, -684, 192]$[0, -45, -684, 156]$[685, -45, 1, 156]$[685, -103, 1, 98]"/> | ||
1416 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s71ZIAGyEey7cfH5K6RyCw" id="(0.652542372881356,0.061224489795918366)"/> | ||
1417 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s71ZIQGyEey7cfH5K6RyCw" id="(0.5,0.0)"/> | ||
1418 | </edges> | ||
1419 | <edges xmi:type="notation:Edge" xmi:id="_zKMY0AGyEey7cfH5K6RyCw" type="4001" element="_zJpmRgGyEey7cfH5K6RyCw" source="_pdJrwAGyEey7cfH5K6RyCw" target="_xsq_MKA8EeuqkpDnuik1sg"> | ||
1420 | <children xmi:type="notation:Node" xmi:id="_zKM_4AGyEey7cfH5K6RyCw" type="6001"> | ||
1421 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zKM_4QGyEey7cfH5K6RyCw" x="-463" y="19"/> | ||
1422 | </children> | ||
1423 | <children xmi:type="notation:Node" xmi:id="_zKM_4gGyEey7cfH5K6RyCw" type="6002"> | ||
1424 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zKM_4wGyEey7cfH5K6RyCw" x="-91" y="10"/> | ||
1425 | </children> | ||
1426 | <children xmi:type="notation:Node" xmi:id="_zKM_5AGyEey7cfH5K6RyCw" type="6003"> | ||
1427 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zKM_5QGyEey7cfH5K6RyCw" x="-88" y="10"/> | ||
1428 | </children> | ||
1429 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_zKMY0QGyEey7cfH5K6RyCw" routing="Rectilinear"/> | ||
1430 | <styles xmi:type="notation:FontStyle" xmi:id="_zKMY0gGyEey7cfH5K6RyCw" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> | ||
1431 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zKMY0wGyEey7cfH5K6RyCw" points="[-7, -15, -830, 120]$[-7, -63, -830, 72]$[859, -63, 36, 72]$[859, -109, 36, 26]"/> | ||
1432 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zKNm8AGyEey7cfH5K6RyCw" id="(0.5508474576271186,0.15306122448979592)"/> | ||
1433 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zKNm8QGyEey7cfH5K6RyCw" id="(0.0,0.7346938775510204)"/> | ||
1434 | </edges> | ||
1435 | <edges xmi:type="notation:Edge" xmi:id="_WAr2kAGzEey7cfH5K6RyCw" type="4001" element="_WAUqNgGzEey7cfH5K6RyCw" source="_SNlYYAGzEey7cfH5K6RyCw" target="_VikSENeAEeufiOvRR5sVhg"> | ||
1436 | <children xmi:type="notation:Node" xmi:id="_WAsdoAGzEey7cfH5K6RyCw" type="6001"> | ||
1437 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WAsdoQGzEey7cfH5K6RyCw" y="-10"/> | ||
1438 | </children> | ||
1439 | <children xmi:type="notation:Node" xmi:id="_WAsdogGzEey7cfH5K6RyCw" type="6002"> | ||
1440 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WAsdowGzEey7cfH5K6RyCw" y="10"/> | ||
1441 | </children> | ||
1442 | <children xmi:type="notation:Node" xmi:id="_WAsdpAGzEey7cfH5K6RyCw" type="6003"> | ||
1443 | <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WAsdpQGzEey7cfH5K6RyCw" y="10"/> | ||
1444 | </children> | ||
1445 | <styles xmi:type="notation:ConnectorStyle" xmi:id="_WAr2kQGzEey7cfH5K6RyCw" routing="Tree"/> | ||
1446 | <styles xmi:type="notation:FontStyle" xmi:id="_WAr2kgGzEey7cfH5K6RyCw" fontName="Noto Sans" fontHeight="8"/> | ||
1447 | <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WAr2kwGzEey7cfH5K6RyCw" points="[0, 0, -60, 132]$[0, -16, -60, 116]$[67, -16, 7, 116]$[67, -34, 7, 98]"/> | ||
1448 | <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WAsdpgGzEey7cfH5K6RyCw" id="(0.25842696629213485,0.07142857142857142)"/> | ||
1449 | <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WAsdpwGzEey7cfH5K6RyCw" id="(0.45112781954887216,0.0)"/> | ||
1450 | </edges> | ||
1377 | </data> | 1451 | </data> |
1378 | </ownedAnnotationEntries> | 1452 | </ownedAnnotationEntries> |
1379 | <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_Csiy8KA4EeuqkpDnuik1sg" source="DANNOTATION_CUSTOMIZATION_KEY"> | 1453 | <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_Csiy8KA4EeuqkpDnuik1sg" source="DANNOTATION_CUSTOMIZATION_KEY"> |
@@ -1849,7 +1923,7 @@ | |||
1849 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> | 1923 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> |
1850 | <arrangeConstraints>KEEP_SIZE</arrangeConstraints> | 1924 | <arrangeConstraints>KEEP_SIZE</arrangeConstraints> |
1851 | <arrangeConstraints>KEEP_RATIO</arrangeConstraints> | 1925 | <arrangeConstraints>KEEP_RATIO</arrangeConstraints> |
1852 | <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ZT0WKteAEeufiOvRR5sVhg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> | 1926 | <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Zdc4dwGzEey7cfH5K6RyCw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> |
1853 | <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> | 1927 | <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> |
1854 | </ownedStyle> | 1928 | </ownedStyle> |
1855 | <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> | 1929 | <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> |
@@ -1861,6 +1935,14 @@ | |||
1861 | </ownedStyle> | 1935 | </ownedStyle> |
1862 | <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> | 1936 | <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> |
1863 | </ownedElements> | 1937 | </ownedElements> |
1938 | <ownedElements xmi:type="diagram:DNodeListElement" uid="_Y2m60AGzEey7cfH5K6RyCw" name="default : EBoolean = false" tooltipText=""> | ||
1939 | <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//Assertion/default"/> | ||
1940 | <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//Assertion/default"/> | ||
1941 | <ownedStyle xmi:type="diagram:BundledImage" uid="_ZdetkwGzEey7cfH5K6RyCw" labelAlignment="LEFT"> | ||
1942 | <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/> | ||
1943 | </ownedStyle> | ||
1944 | <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> | ||
1945 | </ownedElements> | ||
1864 | </ownedDiagramElements> | 1946 | </ownedDiagramElements> |
1865 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_w-iG36A8EeuqkpDnuik1sg" name="[0..1] relation" sourceNode="_p9d30KA8EeuqkpDnuik1sg" targetNode="_EfNqcKA4EeuqkpDnuik1sg"> | 1947 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_w-iG36A8EeuqkpDnuik1sg" name="[0..1] relation" sourceNode="_p9d30KA8EeuqkpDnuik1sg" targetNode="_EfNqcKA4EeuqkpDnuik1sg"> |
1866 | <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//Assertion/relation"/> | 1948 | <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//Assertion/relation"/> |
@@ -1876,7 +1958,7 @@ | |||
1876 | </ownedStyle> | 1958 | </ownedStyle> |
1877 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> | 1959 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> |
1878 | </ownedDiagramElements> | 1960 | </ownedDiagramElements> |
1879 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_xsYrUKA8EeuqkpDnuik1sg" name="Node" tooltipText="" outgoingEdges="_QlymotbNEeuymriYTNxK2g" incomingEdges="_4eU5TqA8EeuqkpDnuik1sg _-XLKltawEeuymriYTNxK2g _gRDCgNbGEeuymriYTNxK2g _vRo4VteAEeufiOvRR5sVhg _AmBxQNeBEeufiOvRR5sVhg" width="12" height="10"> | 1961 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_xsYrUKA8EeuqkpDnuik1sg" name="Node" tooltipText="" outgoingEdges="_QlymotbNEeuymriYTNxK2g" incomingEdges="_4eU5TqA8EeuqkpDnuik1sg _-XLKltawEeuymriYTNxK2g _gRDCgNbGEeuymriYTNxK2g _vRo4VteAEeufiOvRR5sVhg _AmBxQNeBEeufiOvRR5sVhg _zJpmRgGyEey7cfH5K6RyCw" width="12" height="10"> |
1880 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Node"/> | 1962 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Node"/> |
1881 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Node"/> | 1963 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Node"/> |
1882 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> | 1964 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> |
@@ -1934,6 +2016,14 @@ | |||
1934 | </ownedStyle> | 2016 | </ownedStyle> |
1935 | <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> | 2017 | <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> |
1936 | </ownedElements> | 2018 | </ownedElements> |
2019 | <ownedElements xmi:type="diagram:DNodeListElement" uid="_9K7BcAGzEey7cfH5K6RyCw" name="ERROR" tooltipText=""> | ||
2020 | <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/ERROR"/> | ||
2021 | <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/ERROR"/> | ||
2022 | <ownedStyle xmi:type="diagram:BundledImage" uid="_9K8PkAGzEey7cfH5K6RyCw" labelAlignment="LEFT"> | ||
2023 | <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/> | ||
2024 | </ownedStyle> | ||
2025 | <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> | ||
2026 | </ownedElements> | ||
1937 | </ownedDiagramElements> | 2027 | </ownedDiagramElements> |
1938 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_QTzgkKA9EeuqkpDnuik1sg" name="ScopeDeclaration" tooltipText="" outgoingEdges="_vdptgqA9EeuqkpDnuik1sg _F2vPU6A-EeuqkpDnuik1sg" width="12" height="10"> | 2028 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_QTzgkKA9EeuqkpDnuik1sg" name="ScopeDeclaration" tooltipText="" outgoingEdges="_vdptgqA9EeuqkpDnuik1sg _F2vPU6A-EeuqkpDnuik1sg" width="12" height="10"> |
1939 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ScopeDeclaration"/> | 2029 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ScopeDeclaration"/> |
@@ -1946,7 +2036,7 @@ | |||
1946 | </ownedStyle> | 2036 | </ownedStyle> |
1947 | <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> | 2037 | <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> |
1948 | </ownedDiagramElements> | 2038 | </ownedDiagramElements> |
1949 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_e7ydoKA9EeuqkpDnuik1sg" name="Statement" tooltipText="" incomingEdges="_hU64ZqA9EeuqkpDnuik1sg _mQFKsqA9EeuqkpDnuik1sg _mzziwKA9EeuqkpDnuik1sg _plK3JqA9EeuqkpDnuik1sg _vdptgqA9EeuqkpDnuik1sg _WX_5w9bGEeuymriYTNxK2g _DkzPhteBEeufiOvRR5sVhg" width="12" height="10"> | 2039 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_e7ydoKA9EeuqkpDnuik1sg" name="Statement" tooltipText="" incomingEdges="_hU64ZqA9EeuqkpDnuik1sg _mQFKsqA9EeuqkpDnuik1sg _mzziwKA9EeuqkpDnuik1sg _plK3JqA9EeuqkpDnuik1sg _vdptgqA9EeuqkpDnuik1sg _WX_5w9bGEeuymriYTNxK2g _DkzPhteBEeufiOvRR5sVhg _s68oXAGyEey7cfH5K6RyCw" width="12" height="10"> |
1950 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Statement"/> | 2040 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Statement"/> |
1951 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Statement"/> | 2041 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Statement"/> |
1952 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> | 2042 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> |
@@ -1974,12 +2064,12 @@ | |||
1974 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_mQFKsqA9EeuqkpDnuik1sg" sourceNode="_p9d30KA8EeuqkpDnuik1sg" targetNode="_e7ydoKA9EeuqkpDnuik1sg"> | 2064 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_mQFKsqA9EeuqkpDnuik1sg" sourceNode="_p9d30KA8EeuqkpDnuik1sg" targetNode="_e7ydoKA9EeuqkpDnuik1sg"> |
1975 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Assertion"/> | 2065 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Assertion"/> |
1976 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Assertion"/> | 2066 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Assertion"/> |
1977 | <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ZT8SGteAEeufiOvRR5sVhg" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree"> | 2067 | <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Zdk0XQGzEey7cfH5K6RyCw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree"> |
1978 | <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/> | 2068 | <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/> |
1979 | <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_ZT8SG9eAEeufiOvRR5sVhg" showIcon="false"> | 2069 | <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_Zdk0XgGzEey7cfH5K6RyCw" showIcon="false"> |
1980 | <labelFormat>italic</labelFormat> | 2070 | <labelFormat>italic</labelFormat> |
1981 | </beginLabelStyle> | 2071 | </beginLabelStyle> |
1982 | <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ZT8SHNeAEeufiOvRR5sVhg" showIcon="false"/> | 2072 | <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Zdk0XwGzEey7cfH5K6RyCw" showIcon="false"/> |
1983 | </ownedStyle> | 2073 | </ownedStyle> |
1984 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> | 2074 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> |
1985 | </ownedDiagramElements> | 2075 | </ownedDiagramElements> |
@@ -2540,7 +2630,7 @@ | |||
2540 | </ownedStyle> | 2630 | </ownedStyle> |
2541 | <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> | 2631 | <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> |
2542 | </ownedDiagramElements> | 2632 | </ownedDiagramElements> |
2543 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_ViJbUNeAEeufiOvRR5sVhg" name="AssertionArgument" tooltipText="" incomingEdges="_YAoQHdeAEeufiOvRR5sVhg _dDd3wteAEeufiOvRR5sVhg _g_aI1teAEeufiOvRR5sVhg" width="12" height="10"> | 2633 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_ViJbUNeAEeufiOvRR5sVhg" name="AssertionArgument" tooltipText="" incomingEdges="_YAoQHdeAEeufiOvRR5sVhg _dDd3wteAEeufiOvRR5sVhg _g_aI1teAEeufiOvRR5sVhg _WAUqNgGzEey7cfH5K6RyCw" width="12" height="10"> |
2544 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssertionArgument"/> | 2634 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssertionArgument"/> |
2545 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssertionArgument"/> | 2635 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssertionArgument"/> |
2546 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> | 2636 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> |
@@ -2690,6 +2780,65 @@ | |||
2690 | </ownedStyle> | 2780 | </ownedStyle> |
2691 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> | 2781 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> |
2692 | </ownedDiagramElements> | 2782 | </ownedDiagramElements> |
2783 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_pcXBkAGyEey7cfH5K6RyCw" name="UniqueDeclaration" tooltipText="" outgoingEdges="_s68oXAGyEey7cfH5K6RyCw _zJpmRgGyEey7cfH5K6RyCw" width="12" height="10"> | ||
2784 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//UniqueDeclaration"/> | ||
2785 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//UniqueDeclaration"/> | ||
2786 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> | ||
2787 | <arrangeConstraints>KEEP_SIZE</arrangeConstraints> | ||
2788 | <arrangeConstraints>KEEP_RATIO</arrangeConstraints> | ||
2789 | <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_pcYPsAGyEey7cfH5K6RyCw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> | ||
2790 | <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> | ||
2791 | </ownedStyle> | ||
2792 | <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> | ||
2793 | </ownedDiagramElements> | ||
2794 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_s68oXAGyEey7cfH5K6RyCw" sourceNode="_pcXBkAGyEey7cfH5K6RyCw" targetNode="_e7ydoKA9EeuqkpDnuik1sg"> | ||
2795 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//UniqueDeclaration"/> | ||
2796 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//UniqueDeclaration"/> | ||
2797 | <ownedStyle xmi:type="diagram:EdgeStyle" uid="_s69PYAGyEey7cfH5K6RyCw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree"> | ||
2798 | <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/> | ||
2799 | <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_s69PYQGyEey7cfH5K6RyCw" showIcon="false"> | ||
2800 | <labelFormat>italic</labelFormat> | ||
2801 | </beginLabelStyle> | ||
2802 | <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_s69PYgGyEey7cfH5K6RyCw" showIcon="false"/> | ||
2803 | </ownedStyle> | ||
2804 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> | ||
2805 | </ownedDiagramElements> | ||
2806 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_zJpmRgGyEey7cfH5K6RyCw" name="[0..*] nodes" sourceNode="_pcXBkAGyEey7cfH5K6RyCw" targetNode="_xsYrUKA8EeuqkpDnuik1sg"> | ||
2807 | <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//UniqueDeclaration/nodes"/> | ||
2808 | <semanticElements xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//UniqueDeclaration/nodes"/> | ||
2809 | <ownedStyle xmi:type="diagram:EdgeStyle" uid="_zJqNUAGyEey7cfH5K6RyCw" description="_L-JhMKA4EeuqkpDnuik1sg" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> | ||
2810 | <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_zJqNUgGyEey7cfH5K6RyCw" showIcon="false"> | ||
2811 | <customFeatures>labelSize</customFeatures> | ||
2812 | </centerLabelStyle> | ||
2813 | <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_zJqNUQGyEey7cfH5K6RyCw" showIcon="false" labelColor="39,76,114"> | ||
2814 | <customFeatures>labelSize</customFeatures> | ||
2815 | </endLabelStyle> | ||
2816 | </ownedStyle> | ||
2817 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> | ||
2818 | </ownedDiagramElements> | ||
2819 | <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_SNSdcAGzEey7cfH5K6RyCw" name="WildcardAssertionArgument" tooltipText="" outgoingEdges="_WAUqNgGzEey7cfH5K6RyCw" width="12" height="10"> | ||
2820 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//WildcardAssertionArgument"/> | ||
2821 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//WildcardAssertionArgument"/> | ||
2822 | <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> | ||
2823 | <arrangeConstraints>KEEP_SIZE</arrangeConstraints> | ||
2824 | <arrangeConstraints>KEEP_RATIO</arrangeConstraints> | ||
2825 | <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_SNSdcQGzEey7cfH5K6RyCw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> | ||
2826 | <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/> | ||
2827 | </ownedStyle> | ||
2828 | <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> | ||
2829 | </ownedDiagramElements> | ||
2830 | <ownedDiagramElements xmi:type="diagram:DEdge" uid="_WAUqNgGzEey7cfH5K6RyCw" sourceNode="_SNSdcAGzEey7cfH5K6RyCw" targetNode="_ViJbUNeAEeufiOvRR5sVhg"> | ||
2831 | <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//WildcardAssertionArgument"/> | ||
2832 | <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//WildcardAssertionArgument"/> | ||
2833 | <ownedStyle xmi:type="diagram:EdgeStyle" uid="_WAUqNwGzEey7cfH5K6RyCw" targetArrow="InputClosedArrow" routingStyle="tree"> | ||
2834 | <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/> | ||
2835 | <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_WAUqOAGzEey7cfH5K6RyCw" showIcon="false"> | ||
2836 | <labelFormat>italic</labelFormat> | ||
2837 | </beginLabelStyle> | ||
2838 | <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_WAUqOQGzEey7cfH5K6RyCw" showIcon="false"/> | ||
2839 | </ownedStyle> | ||
2840 | <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> | ||
2841 | </ownedDiagramElements> | ||
2693 | <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> | 2842 | <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> |
2694 | <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_CsWlsKA4EeuqkpDnuik1sg"/> | 2843 | <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_CsWlsKA4EeuqkpDnuik1sg"/> |
2695 | <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> | 2844 | <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> |
diff --git a/language-model/src/main/resources/model/problem.ecore b/language-model/src/main/resources/model/problem.ecore index 43d69a86..95653ca4 100644 --- a/language-model/src/main/resources/model/problem.ecore +++ b/language-model/src/main/resources/model/problem.ecore | |||
@@ -64,12 +64,15 @@ | |||
64 | <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//LogicValue"/> | 64 | <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//LogicValue"/> |
65 | <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1" | 65 | <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" upperBound="-1" |
66 | eType="#//AssertionArgument" containment="true"/> | 66 | eType="#//AssertionArgument" containment="true"/> |
67 | <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" | ||
68 | defaultValueLiteral="false"/> | ||
67 | </eClassifiers> | 69 | </eClassifiers> |
68 | <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//VariableOrNode"/> | 70 | <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//VariableOrNode"/> |
69 | <eClassifiers xsi:type="ecore:EEnum" name="LogicValue"> | 71 | <eClassifiers xsi:type="ecore:EEnum" name="LogicValue"> |
70 | <eLiterals name="TRUE" literal="TRUE"/> | 72 | <eLiterals name="TRUE" literal="TRUE"/> |
71 | <eLiterals name="FALSE" value="1"/> | 73 | <eLiterals name="FALSE" value="1"/> |
72 | <eLiterals name="UNKNOWN" value="2"/> | 74 | <eLiterals name="UNKNOWN" value="2"/> |
75 | <eLiterals name="ERROR" value="3"/> | ||
73 | </eClassifiers> | 76 | </eClassifiers> |
74 | <eClassifiers xsi:type="ecore:EClass" name="ScopeDeclaration" eSuperTypes="#//Statement"> | 77 | <eClassifiers xsi:type="ecore:EClass" name="ScopeDeclaration" eSuperTypes="#//Statement"> |
75 | <eStructuralFeatures xsi:type="ecore:EReference" name="typeScopes" upperBound="-1" | 78 | <eStructuralFeatures xsi:type="ecore:EReference" name="typeScopes" upperBound="-1" |
@@ -134,4 +137,9 @@ | |||
134 | <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Constant" | 137 | <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Constant" |
135 | containment="true"/> | 138 | containment="true"/> |
136 | </eClassifiers> | 139 | </eClassifiers> |
140 | <eClassifiers xsi:type="ecore:EClass" name="UniqueDeclaration" eSuperTypes="#//Statement"> | ||
141 | <eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1" | ||
142 | eType="#//Node" containment="true"/> | ||
143 | </eClassifiers> | ||
144 | <eClassifiers xsi:type="ecore:EClass" name="WildcardAssertionArgument" eSuperTypes="#//AssertionArgument"/> | ||
137 | </ecore:EPackage> | 145 | </ecore:EPackage> |
diff --git a/language-model/src/main/resources/model/problem.genmodel b/language-model/src/main/resources/model/problem.genmodel index fb93d60e..baadd435 100644 --- a/language-model/src/main/resources/model/problem.genmodel +++ b/language-model/src/main/resources/model/problem.genmodel | |||
@@ -14,6 +14,7 @@ | |||
14 | <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/TRUE"/> | 14 | <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/TRUE"/> |
15 | <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/FALSE"/> | 15 | <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/FALSE"/> |
16 | <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/UNKNOWN"/> | 16 | <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/UNKNOWN"/> |
17 | <genEnumLiterals ecoreEnumLiteral="problem.ecore#//LogicValue/ERROR"/> | ||
17 | </genEnums> | 18 | </genEnums> |
18 | <genClasses ecoreClass="problem.ecore#//Problem"> | 19 | <genClasses ecoreClass="problem.ecore#//Problem"> |
19 | <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/> | 20 | <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/> |
@@ -64,6 +65,7 @@ | |||
64 | <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Assertion/relation"/> | 65 | <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Assertion/relation"/> |
65 | <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Assertion/value"/> | 66 | <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Assertion/value"/> |
66 | <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Assertion/arguments"/> | 67 | <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Assertion/arguments"/> |
68 | <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//Assertion/default"/> | ||
67 | </genClasses> | 69 | </genClasses> |
68 | <genClasses ecoreClass="problem.ecore#//Node"/> | 70 | <genClasses ecoreClass="problem.ecore#//Node"/> |
69 | <genClasses ecoreClass="problem.ecore#//ScopeDeclaration"> | 71 | <genClasses ecoreClass="problem.ecore#//ScopeDeclaration"> |
@@ -117,5 +119,9 @@ | |||
117 | <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NodeValueAssertion/node"/> | 119 | <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//NodeValueAssertion/node"/> |
118 | <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//NodeValueAssertion/value"/> | 120 | <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//NodeValueAssertion/value"/> |
119 | </genClasses> | 121 | </genClasses> |
122 | <genClasses ecoreClass="problem.ecore#//UniqueDeclaration"> | ||
123 | <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//UniqueDeclaration/nodes"/> | ||
124 | </genClasses> | ||
125 | <genClasses ecoreClass="problem.ecore#//WildcardAssertionArgument"/> | ||
120 | </genPackages> | 126 | </genPackages> |
121 | </genmodel:GenModel> | 127 | </genmodel:GenModel> |
diff --git a/language-mwe2/src/main/java/org/eclipse/viatra/solver/language/mwe2/ProblemWebIntegrationFragment.java b/language-mwe2/src/main/java/org/eclipse/viatra/solver/language/mwe2/ProblemWebIntegrationFragment.java index 78311e0d..8a2c6538 100644 --- a/language-mwe2/src/main/java/org/eclipse/viatra/solver/language/mwe2/ProblemWebIntegrationFragment.java +++ b/language-mwe2/src/main/java/org/eclipse/viatra/solver/language/mwe2/ProblemWebIntegrationFragment.java | |||
@@ -13,8 +13,6 @@ public class ProblemWebIntegrationFragment extends WebIntegrationFragment { | |||
13 | 13 | ||
14 | public ProblemWebIntegrationFragment() { | 14 | public ProblemWebIntegrationFragment() { |
15 | setFramework(Framework.CODEMIRROR.name()); | 15 | setFramework(Framework.CODEMIRROR.name()); |
16 | // We use our custom token style for single-quoted names | ||
17 | addSuppressPattern("string_singleQuote"); | ||
18 | // Use the CodeMirror default .cm-number instead of .cm-constant.cm-numeric | 16 | // Use the CodeMirror default .cm-number instead of .cm-constant.cm-numeric |
19 | addSuppressPattern("number_decimal"); | 17 | addSuppressPattern("number_decimal"); |
20 | // We use our own custom single-line comments | 18 | // We use our own custom single-line comments |
@@ -39,12 +37,9 @@ public class ProblemWebIntegrationFragment extends WebIntegrationFragment { | |||
39 | @Override | 37 | @Override |
40 | protected Multimap<String, String> createCodeMirrorPatterns(String langId, Set<String> keywords) { | 38 | protected Multimap<String, String> createCodeMirrorPatterns(String langId, Set<String> keywords) { |
41 | Multimap<String, String> patterns = super.createCodeMirrorPatterns(langId, keywords); | 39 | Multimap<String, String> patterns = super.createCodeMirrorPatterns(langId, keywords); |
42 | // We use our custom token style for single-quoted names | ||
43 | patterns.put(START_STATE, "{token: \"quoted-name\", regex: \"['](?:(?:\\\\\\\\.)|(?:[^'\\\\\\\\]))*?[']\"}"); | ||
44 | // Use the CodeMirror default .cm-number instead of .cm-constant.cm-numeric | 40 | // Use the CodeMirror default .cm-number instead of .cm-constant.cm-numeric |
45 | patterns.put(START_STATE, | 41 | patterns.put(START_STATE, |
46 | "{token: \"number\", regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"}"); | 42 | "{token: \"number\", regex: \"[+-]?\\\\d+(?:(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?)?\\\\b\"}"); |
47 | patterns.put(START_STATE, "{token: \"number\", regex: \"[*]\"}"); | ||
48 | // We use our own custom single-line comments | 43 | // We use our own custom single-line comments |
49 | patterns.put(START_STATE, "{token: \"comment\", regex: \"%.*$\"}"); | 44 | patterns.put(START_STATE, "{token: \"comment\", regex: \"%.*$\"}"); |
50 | patterns.put(START_STATE, "{token: \"comment\", regex: \"\\\\/\\\\/.*$\"}"); | 45 | patterns.put(START_STATE, "{token: \"comment\", regex: \"\\\\/\\\\/.*$\"}"); |
@@ -53,7 +48,7 @@ public class ProblemWebIntegrationFragment extends WebIntegrationFragment { | |||
53 | patterns.put(START_STATE, "{token: \"lparen\", indent: true, regex: \"[[({]\"}"); | 48 | patterns.put(START_STATE, "{token: \"lparen\", indent: true, regex: \"[[({]\"}"); |
54 | patterns.put(START_STATE, "{token: \"rparen\", dedent: true, regex: \"[\\\\])}]\"}"); | 49 | patterns.put(START_STATE, "{token: \"rparen\", dedent: true, regex: \"[\\\\])}]\"}"); |
55 | patterns.putAll(PREDICATE_BODY_STATE, patterns.get(START_STATE)); | 50 | patterns.putAll(PREDICATE_BODY_STATE, patterns.get(START_STATE)); |
56 | patterns.put(START_STATE, "{indent: true, push: \"" + PREDICATE_BODY_STATE + "\", regex: \"<=>\"}"); | 51 | patterns.put(START_STATE, "{indent: true, push: \"" + PREDICATE_BODY_STATE + "\", regex: \"<->\"}"); |
57 | patterns.put(PREDICATE_BODY_STATE, | 52 | patterns.put(PREDICATE_BODY_STATE, |
58 | "{dedent: true, dedentIfLineStart: false, pop: true, regex: \"\\\\.\\\\s*$\"}"); | 53 | "{dedent: true, dedentIfLineStart: false, pop: true, regex: \"\\\\.\\\\s*$\"}"); |
59 | patterns.put(PREDICATE_BODY_STATE, "{indent: true, dedent: true, regex: \"[;]\"}"); | 54 | patterns.put(PREDICATE_BODY_STATE, "{indent: true, dedent: true, regex: \"[;]\"}"); |
diff --git a/language-web/src/main/css/index.scss b/language-web/src/main/css/index.scss index 3ed91824..c92588b8 100644 --- a/language-web/src/main/css/index.scss +++ b/language-web/src/main/css/index.scss | |||
@@ -127,7 +127,7 @@ li.CodeMirror-hint-active { | |||
127 | font-weight: 700; | 127 | font-weight: 700; |
128 | } | 128 | } |
129 | 129 | ||
130 | .cm-quoted-name, .problem-enum-node { | 130 | .problem-unique-node { |
131 | @extend .cm-atom; | 131 | @extend .cm-atom; |
132 | } | 132 | } |
133 | 133 | ||
diff --git a/language-web/src/main/js/index.jsx b/language-web/src/main/js/index.jsx index b3277a30..40b02b14 100644 --- a/language-web/src/main/js/index.jsx +++ b/language-web/src/main/js/index.jsx | |||
@@ -25,15 +25,17 @@ enum TaxStatus { | |||
25 | } | 25 | } |
26 | 26 | ||
27 | % A child cannot have any dependents. | 27 | % A child cannot have any dependents. |
28 | error invalidTaxStatus(Person p) <=> | 28 | error invalidTaxStatus(Person p) <-> |
29 | taxStatus(p, child), children(p, _q). | 29 | taxStatus(p, child), children(p, _q). |
30 | 30 | ||
31 | Family('family'). | 31 | unique family. |
32 | members('family', anne). | 32 | Family(family). |
33 | members('family', bob). | 33 | members(family, anne). |
34 | members('family', ciri). | 34 | members(family, bob). |
35 | members(family, ciri). | ||
35 | children(anne, ciri). | 36 | children(anne, ciri). |
36 | ?children(bob, ciri). | 37 | ?children(bob, ciri). |
38 | default children(ciri, *): false. | ||
37 | taxStatus(anne, adult). | 39 | taxStatus(anne, adult). |
38 | age(anne, 35). | 40 | age(anne, 35). |
39 | bobAge: 27. | 41 | bobAge: 27. |
diff --git a/language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext b/language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext index 9e032a13..d4fa6f35 100644 --- a/language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext +++ b/language/src/main/java/org/eclipse/viatra/solver/language/Problem.xtext | |||
@@ -8,7 +8,8 @@ Problem: | |||
8 | statements+=Statement*; | 8 | statements+=Statement*; |
9 | 9 | ||
10 | Statement: | 10 | Statement: |
11 | ClassDeclaration | EnumDeclaration | PredicateDefinition | Assertion | NodeValueAssertion | ScopeDeclaration; | 11 | ClassDeclaration | EnumDeclaration | PredicateDefinition | Assertion | NodeValueAssertion | ScopeDeclaration | |
12 | UniqueDeclaration; | ||
12 | 13 | ||
13 | ClassDeclaration: | 14 | ClassDeclaration: |
14 | abstract?="abstract"? "class" | 15 | abstract?="abstract"? "class" |
@@ -25,7 +26,7 @@ EnumLiteral returns Node: | |||
25 | name=Identifier; | 26 | name=Identifier; |
26 | 27 | ||
27 | ReferenceDeclaration: | 28 | ReferenceDeclaration: |
28 | (containment?="contains" | "refers")? | 29 | (-> (containment?="contains" | "refers"))? |
29 | referenceType=[Relation|QualifiedName] | 30 | referenceType=[Relation|QualifiedName] |
30 | ("[" multiplicity=Multiplicity "]")? | 31 | ("[" multiplicity=Multiplicity "]")? |
31 | name=Identifier | 32 | name=Identifier |
@@ -35,7 +36,7 @@ PredicateDefinition: | |||
35 | (error?="error" "pred"? | "pred") | 36 | (error?="error" "pred"? | "pred") |
36 | name=Identifier | 37 | name=Identifier |
37 | "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" | 38 | "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" |
38 | ("<=>" bodies+=Conjunction (";" bodies+=Conjunction)*)? | 39 | ("<->" bodies+=Conjunction (";" bodies+=Conjunction)*)? |
39 | "."; | 40 | "."; |
40 | 41 | ||
41 | Parameter: | 42 | Parameter: |
@@ -65,6 +66,7 @@ ConstantArgument: | |||
65 | constant=Constant; | 66 | constant=Constant; |
66 | 67 | ||
67 | Assertion: | 68 | Assertion: |
69 | default?="default"? | ||
68 | (relation=[Relation|QualifiedName] | 70 | (relation=[Relation|QualifiedName] |
69 | "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")" | 71 | "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")" |
70 | ":" value=LogicValue | | 72 | ":" value=LogicValue | |
@@ -74,16 +76,19 @@ Assertion: | |||
74 | "."; | 76 | "."; |
75 | 77 | ||
76 | AssertionArgument: | 78 | AssertionArgument: |
77 | NodeAssertionArgument | ConstantAssertionArgument; | 79 | NodeAssertionArgument | WildcardAssertionArgument | ConstantAssertionArgument; |
78 | 80 | ||
79 | NodeAssertionArgument: | 81 | NodeAssertionArgument: |
80 | node=[Node|QualifiedName]; | 82 | node=[Node|QualifiedName]; |
81 | 83 | ||
84 | WildcardAssertionArgument: | ||
85 | {WildcardAssertionArgument} "*"; | ||
86 | |||
82 | ConstantAssertionArgument: | 87 | ConstantAssertionArgument: |
83 | constant=Constant; | 88 | constant=Constant; |
84 | 89 | ||
85 | enum LogicValue: | 90 | enum LogicValue: |
86 | TRUE="true" | FALSE="false" | UNKNOWN="unknown"; | 91 | TRUE="true" | FALSE="false" | UNKNOWN="unknown" | ERROR="error"; |
87 | 92 | ||
88 | enum ShortLogicValue returns LogicValue: | 93 | enum ShortLogicValue returns LogicValue: |
89 | FALSE="!" | UNKNOWN="?"; | 94 | FALSE="!" | UNKNOWN="?"; |
@@ -126,14 +131,18 @@ RangeMultiplicity: | |||
126 | ExactMultiplicity: | 131 | ExactMultiplicity: |
127 | exactValue=INT; | 132 | exactValue=INT; |
128 | 133 | ||
134 | UniqueDeclaration: | ||
135 | "unique" nodes+=EnumLiteral ("," nodes+=EnumLiteral)* "."; | ||
136 | |||
129 | UpperBound returns ecore::EInt: | 137 | UpperBound returns ecore::EInt: |
130 | INT | "*"; | 138 | INT | "*"; |
131 | 139 | ||
132 | QualifiedName hidden(): | 140 | QualifiedName hidden(): |
133 | QUOTED_ID | Identifier ("::" Identifier)*; | 141 | Identifier ("::" Identifier)*; |
134 | 142 | ||
135 | Identifier: | 143 | Identifier: |
136 | ID | "true" | "false"; | 144 | ID | "true" | "false" | "unknown" | "error" | "class" | "abstract" | "extends" | "enum" | "pred" | "scope" | |
145 | "unique" | "default" | "problem" | "contains" | "refers"; | ||
137 | 146 | ||
138 | Integer returns ecore::EInt hidden(): | 147 | Integer returns ecore::EInt hidden(): |
139 | "-"? INT; | 148 | "-"? INT; |
@@ -143,18 +152,11 @@ Real returns ecore::EDouble: | |||
143 | 152 | ||
144 | @Override | 153 | @Override |
145 | terminal ID: | 154 | terminal ID: |
146 | ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*; | 155 | ('a'..'z' | 'A'..'Z' | '_') ('a'..'z' | 'A'..'Z' | '_' | '0'..'9')*; |
147 | 156 | ||
148 | terminal EXPONENTIAL: | 157 | terminal EXPONENTIAL: |
149 | INT ("e" | "E") ("+" | "-")? INT; | 158 | INT ("e" | "E") ("+" | "-")? INT; |
150 | 159 | ||
151 | @Override | 160 | @Override |
152 | terminal STRING: | ||
153 | '"' ('\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\' | '"'))* '"'; | ||
154 | |||
155 | terminal QUOTED_ID: | ||
156 | "'" ('\\' . /* 'b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\' */ | !('\\' | "'"))* "'"; | ||
157 | |||
158 | @Override | ||
159 | terminal SL_COMMENT: | 161 | terminal SL_COMMENT: |
160 | ('%' | '//') !('\n' | '\r')* ('\r'? '\n')?; | 162 | ('%' | '//') !('\n' | '\r')* ('\r'? '\n')?; |
diff --git a/language/src/main/java/org/eclipse/viatra/solver/language/ProblemUtil.java b/language/src/main/java/org/eclipse/viatra/solver/language/ProblemUtil.java index 2d7fede6..1581186c 100644 --- a/language/src/main/java/org/eclipse/viatra/solver/language/ProblemUtil.java +++ b/language/src/main/java/org/eclipse/viatra/solver/language/ProblemUtil.java | |||
@@ -16,7 +16,6 @@ import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; | |||
16 | import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration; | 16 | import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration; |
17 | import org.eclipse.viatra.solver.language.model.problem.Relation; | 17 | import org.eclipse.viatra.solver.language.model.problem.Relation; |
18 | import org.eclipse.viatra.solver.language.model.problem.Variable; | 18 | import org.eclipse.viatra.solver.language.model.problem.Variable; |
19 | import org.eclipse.viatra.solver.language.naming.NamingUtil; | ||
20 | import org.eclipse.viatra.solver.language.scoping.ProblemGlobalScopeProvider; | 19 | import org.eclipse.viatra.solver.language.scoping.ProblemGlobalScopeProvider; |
21 | 20 | ||
22 | import com.google.common.collect.ImmutableList; | 21 | import com.google.common.collect.ImmutableList; |
@@ -32,12 +31,10 @@ public final class ProblemUtil { | |||
32 | return variable.eContainingFeature() == ProblemPackage.Literals.VARIABLE_OR_NODE_ARGUMENT__SINGLETON_VARIABLE; | 31 | return variable.eContainingFeature() == ProblemPackage.Literals.VARIABLE_OR_NODE_ARGUMENT__SINGLETON_VARIABLE; |
33 | } | 32 | } |
34 | 33 | ||
35 | public static boolean isEnumLiteral(Node node) { | 34 | public static boolean isUniqueNode(Node node) { |
36 | return node.eContainingFeature() == ProblemPackage.Literals.ENUM_DECLARATION__LITERALS; | 35 | var containingFeature = node.eContainingFeature(); |
37 | } | 36 | return containingFeature == ProblemPackage.Literals.UNIQUE_DECLARATION__NODES |
38 | 37 | || containingFeature == ProblemPackage.Literals.ENUM_DECLARATION__LITERALS; | |
39 | public static boolean isEnumNode(Node node) { | ||
40 | return NamingUtil.isQuotedName(node.getName()) || isEnumLiteral(node); | ||
41 | } | 38 | } |
42 | 39 | ||
43 | public static boolean isNewNode(Node node) { | 40 | public static boolean isNewNode(Node node) { |
diff --git a/language/src/main/java/org/eclipse/viatra/solver/language/naming/NamingUtil.java b/language/src/main/java/org/eclipse/viatra/solver/language/naming/NamingUtil.java index decc014a..edd455bb 100644 --- a/language/src/main/java/org/eclipse/viatra/solver/language/naming/NamingUtil.java +++ b/language/src/main/java/org/eclipse/viatra/solver/language/naming/NamingUtil.java | |||
@@ -4,8 +4,6 @@ import java.util.regex.Pattern; | |||
4 | 4 | ||
5 | public final class NamingUtil { | 5 | public final class NamingUtil { |
6 | private static final String SINGLETON_VARIABLE_PREFIX = "_"; | 6 | private static final String SINGLETON_VARIABLE_PREFIX = "_"; |
7 | |||
8 | private static final String ENUM_NODE_NAME_QUOTE = "'"; | ||
9 | 7 | ||
10 | private static final Pattern ID_REGEX = Pattern.compile("[_a-zA-Z][_0-9a-zA-Z]*"); | 8 | private static final Pattern ID_REGEX = Pattern.compile("[_a-zA-Z][_0-9a-zA-Z]*"); |
11 | 9 | ||
@@ -20,16 +18,8 @@ public final class NamingUtil { | |||
20 | public static boolean isSingletonVariableName(String name) { | 18 | public static boolean isSingletonVariableName(String name) { |
21 | return name != null && name.startsWith(SINGLETON_VARIABLE_PREFIX); | 19 | return name != null && name.startsWith(SINGLETON_VARIABLE_PREFIX); |
22 | } | 20 | } |
23 | |||
24 | public static boolean isQuotedName(String name) { | ||
25 | return name != null && name.startsWith(ENUM_NODE_NAME_QUOTE) && name.endsWith(ENUM_NODE_NAME_QUOTE); | ||
26 | } | ||
27 | 21 | ||
28 | public static boolean isValidId(String name) { | 22 | public static boolean isValidId(String name) { |
29 | return name != null && ID_REGEX.matcher(name).matches(); | 23 | return name != null && ID_REGEX.matcher(name).matches(); |
30 | } | 24 | } |
31 | |||
32 | public static boolean isValidNodeName(String name) { | ||
33 | return isValidId(name) || isQuotedName(name); | ||
34 | } | ||
35 | } | 25 | } |
diff --git a/language/src/main/java/org/eclipse/viatra/solver/language/resource/NodeNameCollector.java b/language/src/main/java/org/eclipse/viatra/solver/language/resource/NodeNameCollector.java index 597dd92d..e9533c25 100644 --- a/language/src/main/java/org/eclipse/viatra/solver/language/resource/NodeNameCollector.java +++ b/language/src/main/java/org/eclipse/viatra/solver/language/resource/NodeNameCollector.java | |||
@@ -2,24 +2,16 @@ package org.eclipse.viatra.solver.language.resource; | |||
2 | 2 | ||
3 | import java.util.List; | 3 | import java.util.List; |
4 | import java.util.Set; | 4 | import java.util.Set; |
5 | import java.util.function.Predicate; | ||
6 | 5 | ||
7 | import org.eclipse.emf.ecore.EObject; | 6 | import org.eclipse.emf.ecore.EObject; |
8 | import org.eclipse.emf.ecore.EStructuralFeature; | 7 | import org.eclipse.emf.ecore.EStructuralFeature; |
9 | import org.eclipse.viatra.solver.language.model.problem.Argument; | ||
10 | import org.eclipse.viatra.solver.language.model.problem.Assertion; | 8 | import org.eclipse.viatra.solver.language.model.problem.Assertion; |
11 | import org.eclipse.viatra.solver.language.model.problem.AssertionArgument; | 9 | import org.eclipse.viatra.solver.language.model.problem.AssertionArgument; |
12 | import org.eclipse.viatra.solver.language.model.problem.Atom; | ||
13 | import org.eclipse.viatra.solver.language.model.problem.Conjunction; | ||
14 | import org.eclipse.viatra.solver.language.model.problem.Literal; | ||
15 | import org.eclipse.viatra.solver.language.model.problem.NegativeLiteral; | ||
16 | import org.eclipse.viatra.solver.language.model.problem.NodeAssertionArgument; | 10 | import org.eclipse.viatra.solver.language.model.problem.NodeAssertionArgument; |
17 | import org.eclipse.viatra.solver.language.model.problem.NodeValueAssertion; | 11 | import org.eclipse.viatra.solver.language.model.problem.NodeValueAssertion; |
18 | import org.eclipse.viatra.solver.language.model.problem.PredicateDefinition; | ||
19 | import org.eclipse.viatra.solver.language.model.problem.Problem; | 12 | import org.eclipse.viatra.solver.language.model.problem.Problem; |
20 | import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; | 13 | import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; |
21 | import org.eclipse.viatra.solver.language.model.problem.Statement; | 14 | import org.eclipse.viatra.solver.language.model.problem.Statement; |
22 | import org.eclipse.viatra.solver.language.model.problem.VariableOrNodeArgument; | ||
23 | import org.eclipse.viatra.solver.language.naming.NamingUtil; | 15 | import org.eclipse.viatra.solver.language.naming.NamingUtil; |
24 | import org.eclipse.xtext.linking.impl.LinkingHelper; | 16 | import org.eclipse.xtext.linking.impl.LinkingHelper; |
25 | import org.eclipse.xtext.naming.IQualifiedNameConverter; | 17 | import org.eclipse.xtext.naming.IQualifiedNameConverter; |
@@ -64,57 +56,26 @@ public class NodeNameCollector { | |||
64 | collectAssertionNodeNames((Assertion) statement); | 56 | collectAssertionNodeNames((Assertion) statement); |
65 | } else if (statement instanceof NodeValueAssertion) { | 57 | } else if (statement instanceof NodeValueAssertion) { |
66 | collectNodeValueAssertionNodeNames((NodeValueAssertion) statement); | 58 | collectNodeValueAssertionNodeNames((NodeValueAssertion) statement); |
67 | } else if (statement instanceof PredicateDefinition) { | ||
68 | collectPredicateDefinitionNodeNames((PredicateDefinition) statement); | ||
69 | } | 59 | } |
70 | } | 60 | } |
71 | 61 | ||
72 | protected void collectAssertionNodeNames(Assertion assertion) { | 62 | protected void collectAssertionNodeNames(Assertion assertion) { |
73 | for (AssertionArgument argument : assertion.getArguments()) { | 63 | for (AssertionArgument argument : assertion.getArguments()) { |
74 | if (argument instanceof NodeAssertionArgument) { | 64 | if (argument instanceof NodeAssertionArgument) { |
75 | collectNodeNames(argument, ProblemPackage.Literals.NODE_ASSERTION_ARGUMENT__NODE, | 65 | collectNodeNames(argument, ProblemPackage.Literals.NODE_ASSERTION_ARGUMENT__NODE); |
76 | NamingUtil::isValidNodeName); | ||
77 | } | 66 | } |
78 | } | 67 | } |
79 | } | 68 | } |
80 | 69 | ||
81 | protected void collectNodeValueAssertionNodeNames(NodeValueAssertion nodeValueAssertion) { | 70 | protected void collectNodeValueAssertionNodeNames(NodeValueAssertion nodeValueAssertion) { |
82 | collectNodeNames(nodeValueAssertion, ProblemPackage.Literals.NODE_VALUE_ASSERTION__NODE, | 71 | collectNodeNames(nodeValueAssertion, ProblemPackage.Literals.NODE_VALUE_ASSERTION__NODE); |
83 | NamingUtil::isValidNodeName); | ||
84 | } | 72 | } |
85 | 73 | ||
86 | protected void collectPredicateDefinitionNodeNames(PredicateDefinition predicateDefinition) { | 74 | private void collectNodeNames(EObject eObject, EStructuralFeature feature) { |
87 | for (Conjunction body : predicateDefinition.getBodies()) { | ||
88 | for (Literal literal : body.getLiterals()) { | ||
89 | collectLiteralNodeNames(literal); | ||
90 | } | ||
91 | } | ||
92 | } | ||
93 | |||
94 | protected void collectLiteralNodeNames(Literal literal) { | ||
95 | Atom atom = null; | ||
96 | if (literal instanceof Atom) { | ||
97 | atom = (Atom) literal; | ||
98 | } else if (literal instanceof NegativeLiteral) { | ||
99 | var negativeLiteral = (NegativeLiteral) literal; | ||
100 | atom = negativeLiteral.getAtom(); | ||
101 | } | ||
102 | if (atom == null) { | ||
103 | return; | ||
104 | } | ||
105 | for (Argument argument : atom.getArguments()) { | ||
106 | if (argument instanceof VariableOrNodeArgument) { | ||
107 | collectNodeNames(argument, ProblemPackage.Literals.VARIABLE_OR_NODE_ARGUMENT__VARIABLE_OR_NODE, | ||
108 | NamingUtil::isQuotedName); | ||
109 | } | ||
110 | } | ||
111 | } | ||
112 | |||
113 | private void collectNodeNames(EObject eObject, EStructuralFeature feature, Predicate<String> condition) { | ||
114 | List<INode> nodes = NodeModelUtils.findNodesForFeature(eObject, feature); | 75 | List<INode> nodes = NodeModelUtils.findNodesForFeature(eObject, feature); |
115 | for (INode node : nodes) { | 76 | for (INode node : nodes) { |
116 | var nodeName = linkingHelper.getCrossRefNodeAsString(node, true); | 77 | var nodeName = linkingHelper.getCrossRefNodeAsString(node, true); |
117 | if (!condition.test(nodeName)) { | 78 | if (!NamingUtil.isValidId(nodeName)) { |
118 | continue; | 79 | continue; |
119 | } | 80 | } |
120 | var qualifiedName = qualifiedNameConverter.toQualifiedName(nodeName); | 81 | var qualifiedName = qualifiedNameConverter.toQualifiedName(nodeName); |
diff --git a/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java b/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java index 94dbdfee..80bbdb0f 100644 --- a/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java +++ b/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java | |||
@@ -20,7 +20,7 @@ public class ProblemLocationInFileProvider extends DefaultLocationInFileProvider | |||
20 | } | 20 | } |
21 | 21 | ||
22 | protected ITextRegion getNodeTextRegion(Node node, RegionDescription query) { | 22 | protected ITextRegion getNodeTextRegion(Node node, RegionDescription query) { |
23 | if (ProblemUtil.isEnumLiteral(node)) { | 23 | if (ProblemUtil.isUniqueNode(node)) { |
24 | return super.doGetTextRegion(node, query); | 24 | return super.doGetTextRegion(node, query); |
25 | } | 25 | } |
26 | if (ProblemUtil.isNewNode(node)) { | 26 | if (ProblemUtil.isNewNode(node)) { |
diff --git a/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java b/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java index da737e3d..012606d6 100644 --- a/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java +++ b/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemResourceDescriptionStrategy.java | |||
@@ -45,6 +45,7 @@ public class ProblemResourceDescriptionStrategy extends DefaultResourceDescripti | |||
45 | while (parent != null && parent != problem) { | 45 | while (parent != null && parent != problem) { |
46 | var parentQualifiedName = getNameAsQualifiedName(parent); | 46 | var parentQualifiedName = getNameAsQualifiedName(parent); |
47 | if (parentQualifiedName == null) { | 47 | if (parentQualifiedName == null) { |
48 | parent = parent.eContainer(); | ||
48 | continue; | 49 | continue; |
49 | } | 50 | } |
50 | qualifiedName = parentQualifiedName.append(qualifiedName); | 51 | qualifiedName = parentQualifiedName.append(qualifiedName); |
@@ -82,7 +83,7 @@ public class ProblemResourceDescriptionStrategy extends DefaultResourceDescripti | |||
82 | if (eObject instanceof Node) { | 83 | if (eObject instanceof Node) { |
83 | var node = (Node) eObject; | 84 | var node = (Node) eObject; |
84 | // Only enum literals and new nodes are visible across problem files. | 85 | // Only enum literals and new nodes are visible across problem files. |
85 | return ProblemUtil.isEnumLiteral(node) || ProblemUtil.isNewNode(node); | 86 | return ProblemUtil.isUniqueNode(node) || ProblemUtil.isNewNode(node); |
86 | } | 87 | } |
87 | return true; | 88 | return true; |
88 | } | 89 | } |
diff --git a/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemTestUtil.xtend b/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemTestUtil.xtend index f2aedfd5..b3175659 100644 --- a/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemTestUtil.xtend +++ b/language/src/test/java/org/eclipse/viatra/solver/language/tests/ProblemTestUtil.xtend | |||
@@ -17,6 +17,7 @@ import org.eclipse.viatra.solver.language.model.problem.PredicateDefinition | |||
17 | import org.eclipse.viatra.solver.language.model.problem.Problem | 17 | import org.eclipse.viatra.solver.language.model.problem.Problem |
18 | import org.eclipse.viatra.solver.language.model.problem.Variable | 18 | import org.eclipse.viatra.solver.language.model.problem.Variable |
19 | import org.eclipse.viatra.solver.language.model.problem.VariableOrNodeArgument | 19 | import org.eclipse.viatra.solver.language.model.problem.VariableOrNodeArgument |
20 | import org.eclipse.viatra.solver.language.model.problem.UniqueDeclaration | ||
20 | 21 | ||
21 | class ProblemTestUtil { | 22 | class ProblemTestUtil { |
22 | def builtin(Problem it) { | 23 | def builtin(Problem it) { |
@@ -91,6 +92,10 @@ class ProblemTestUtil { | |||
91 | nodes.findFirst[it.name == name] | 92 | nodes.findFirst[it.name == name] |
92 | } | 93 | } |
93 | 94 | ||
95 | def uniqueNode(Problem it, String name) { | ||
96 | statements.filter(UniqueDeclaration).flatMap[nodes].findFirst[it.name == name] | ||
97 | } | ||
98 | |||
94 | def findClass(Problem it, String name) { | 99 | def findClass(Problem it, String name) { |
95 | statements.filter(ClassDeclaration).findFirst[it.name == name] | 100 | statements.filter(ClassDeclaration).findFirst[it.name == name] |
96 | } | 101 | } |
diff --git a/language/src/test/java/org/eclipse/viatra/solver/language/tests/scoping/NodeScopingTest.xtend b/language/src/test/java/org/eclipse/viatra/solver/language/tests/scoping/NodeScopingTest.xtend index 5c34083c..db588e5d 100644 --- a/language/src/test/java/org/eclipse/viatra/solver/language/tests/scoping/NodeScopingTest.xtend +++ b/language/src/test/java/org/eclipse/viatra/solver/language/tests/scoping/NodeScopingTest.xtend | |||
@@ -42,7 +42,7 @@ class NodeScopingTest { | |||
42 | @Test | 42 | @Test |
43 | def void implicitNodeInAssertionTest() { | 43 | def void implicitNodeInAssertionTest() { |
44 | val it = parseHelper.parse(''' | 44 | val it = parseHelper.parse(''' |
45 | pred predicate(node x, node y) <=> node(x). | 45 | pred predicate(node x, node y) <-> node(x). |
46 | predicate(a, a). | 46 | predicate(a, a). |
47 | ?predicate(a, b). | 47 | ?predicate(a, b). |
48 | ''') | 48 | ''') |
@@ -64,9 +64,10 @@ class NodeScopingTest { | |||
64 | assertThat(nodeValueAssertion(0).node, equalTo(node('a'))) | 64 | assertThat(nodeValueAssertion(0).node, equalTo(node('a'))) |
65 | } | 65 | } |
66 | 66 | ||
67 | @Test | ||
67 | def void implicitNodeInPredicateTest() { | 68 | def void implicitNodeInPredicateTest() { |
68 | val it = parseHelper.parse(''' | 69 | val it = parseHelper.parse(''' |
69 | pred predicate(node a) <=> node(b). | 70 | pred predicate(node a) <-> node(b). |
70 | predicate(b). | 71 | predicate(b). |
71 | ''') | 72 | ''') |
72 | assertThat(errors, empty) | 73 | assertThat(errors, empty) |
@@ -75,46 +76,63 @@ class NodeScopingTest { | |||
75 | assertThat(assertion(0).arg(0).node, equalTo(node("b"))) | 76 | assertThat(assertion(0).arg(0).node, equalTo(node("b"))) |
76 | } | 77 | } |
77 | 78 | ||
78 | @Test | 79 | @ParameterizedTest |
79 | def void quotedNodeInAssertionTest() { | 80 | @MethodSource("uniqueNodeReferenceSource") |
81 | def void uniqueNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { | ||
80 | val it = parseHelper.parse(''' | 82 | val it = parseHelper.parse(''' |
81 | pred predicate(node x, node y) <=> node(x). | 83 | «IF namedProblem»problem test.«ENDIF» |
82 | predicate('a', 'a'). | 84 | unique a, b. |
83 | ?predicate('a', 'b'). | 85 | pred predicate(node x, node y) <-> node(x). |
86 | predicate(«qualifiedNamePrefix»a, «qualifiedNamePrefix»a). | ||
87 | ?predicate(«qualifiedNamePrefix»a, «qualifiedNamePrefix»b). | ||
84 | ''') | 88 | ''') |
85 | assertThat(errors, empty) | 89 | assertThat(errors, empty) |
86 | assertThat(nodeNames, hasItems("'a'", "'b'")) | 90 | assertThat(nodeNames, empty) |
87 | assertThat(assertion(0).arg(0).node, equalTo(node("'a'"))) | 91 | assertThat(assertion(0).arg(0).node, equalTo(uniqueNode('a'))) |
88 | assertThat(assertion(0).arg(1).node, equalTo(node("'a'"))) | 92 | assertThat(assertion(0).arg(1).node, equalTo(uniqueNode('a'))) |
89 | assertThat(assertion(1).arg(0).node, equalTo(node("'a'"))) | 93 | assertThat(assertion(1).arg(0).node, equalTo(uniqueNode('a'))) |
90 | assertThat(assertion(1).arg(1).node, equalTo(node("'b'"))) | 94 | assertThat(assertion(1).arg(1).node, equalTo(uniqueNode('b'))) |
91 | } | 95 | } |
92 | 96 | ||
93 | @Test | 97 | @ParameterizedTest |
94 | def void quotedNodeInNodeValueAssertionTest() { | 98 | @MethodSource("uniqueNodeReferenceSource") |
99 | def void uniqueNodeInNodeValueAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { | ||
95 | val it = parseHelper.parse(''' | 100 | val it = parseHelper.parse(''' |
96 | 'a': 16. | 101 | «IF namedProblem»problem test.«ENDIF» |
102 | unique a. | ||
103 | «qualifiedNamePrefix»a: 16. | ||
97 | ''') | 104 | ''') |
98 | assertThat(errors, empty) | 105 | assertThat(errors, empty) |
99 | assertThat(nodeNames, hasItems("'a'")) | 106 | assertThat(nodeNames, empty) |
100 | assertThat(nodeValueAssertion(0).node, equalTo(node("'a'"))) | 107 | assertThat(nodeValueAssertion(0).node, equalTo(uniqueNode('a'))) |
101 | } | 108 | } |
102 | 109 | ||
103 | @Test | 110 | @ParameterizedTest |
104 | def void quotedNodeInPredicateTest() { | 111 | @MethodSource("uniqueNodeReferenceSource") |
112 | def void uniqueNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { | ||
105 | val it = parseHelper.parse(''' | 113 | val it = parseHelper.parse(''' |
106 | pred predicate(node a) <=> node('b'). | 114 | «IF namedProblem»problem test.«ENDIF» |
115 | unique b. | ||
116 | pred predicate(node a) <-> node(«qualifiedNamePrefix»b). | ||
107 | ''') | 117 | ''') |
108 | assertThat(errors, empty) | 118 | assertThat(errors, empty) |
109 | assertThat(nodeNames, hasItem("'b'")) | 119 | assertThat(nodeNames, empty) |
110 | assertThat(pred("predicate").conj(0).lit(0).arg(0).node, equalTo(node("'b'"))) | 120 | assertThat(pred("predicate").conj(0).lit(0).arg(0).node, equalTo(uniqueNode("b"))) |
121 | } | ||
122 | |||
123 | static def uniqueNodeReferenceSource() { | ||
124 | Stream.of( | ||
125 | Arguments.of("", false), | ||
126 | Arguments.of("", true), | ||
127 | Arguments.of("test::", true) | ||
128 | ) | ||
111 | } | 129 | } |
112 | 130 | ||
113 | @ParameterizedTest | 131 | @ParameterizedTest |
114 | @MethodSource("builtInNodeReferencesSource") | 132 | @MethodSource("builtInNodeReferencesSource") |
115 | def void builtInNodeTest(String qualifiedName) { | 133 | def void builtInNodeTest(String qualifiedName) { |
116 | val it = parseHelper.parse(''' | 134 | val it = parseHelper.parse(''' |
117 | pred predicate(node x) <=> node(x). | 135 | pred predicate(node x) <-> node(x). |
118 | predicate(«qualifiedName»). | 136 | predicate(«qualifiedName»). |
119 | ''') | 137 | ''') |
120 | assertThat(errors, empty) | 138 | assertThat(errors, empty) |
@@ -137,7 +155,7 @@ class NodeScopingTest { | |||
137 | @MethodSource("builtInNodeReferencesSource") | 155 | @MethodSource("builtInNodeReferencesSource") |
138 | def void builtInNodeInPredicateTest(String qualifiedName) { | 156 | def void builtInNodeInPredicateTest(String qualifiedName) { |
139 | val it = parseHelper.parse(''' | 157 | val it = parseHelper.parse(''' |
140 | pred predicate(node x) <=> node(«qualifiedName»). | 158 | pred predicate(node x) <-> node(«qualifiedName»). |
141 | ''') | 159 | ''') |
142 | assertThat(errors, empty) | 160 | assertThat(errors, empty) |
143 | assertThat(pred("predicate").conj(0).lit(0).arg(0).node, equalTo(builtin.findClass('int').newNode)) | 161 | assertThat(pred("predicate").conj(0).lit(0).arg(0).node, equalTo(builtin.findClass('int').newNode)) |
@@ -156,7 +174,7 @@ class NodeScopingTest { | |||
156 | val it = parseHelper.parse(''' | 174 | val it = parseHelper.parse(''' |
157 | «IF namedProblem»problem test.«ENDIF» | 175 | «IF namedProblem»problem test.«ENDIF» |
158 | class Foo. | 176 | class Foo. |
159 | pred predicate(node x) <=> node(x). | 177 | pred predicate(node x) <-> node(x). |
160 | predicate(«qualifiedName»). | 178 | predicate(«qualifiedName»). |
161 | ''') | 179 | ''') |
162 | assertThat(errors, empty) | 180 | assertThat(errors, empty) |
@@ -183,7 +201,7 @@ class NodeScopingTest { | |||
183 | val it = parseHelper.parse(''' | 201 | val it = parseHelper.parse(''' |
184 | «IF namedProblem»problem test.«ENDIF» | 202 | «IF namedProblem»problem test.«ENDIF» |
185 | class Foo. | 203 | class Foo. |
186 | pred predicate(node x) <=> node(«qualifiedName»). | 204 | pred predicate(node x) <-> node(«qualifiedName»). |
187 | ''') | 205 | ''') |
188 | assertThat(errors, empty) | 206 | assertThat(errors, empty) |
189 | assertThat(pred("predicate").conj(0).lit(0).arg(0).node, equalTo(findClass('Foo').newNode)) | 207 | assertThat(pred("predicate").conj(0).lit(0).arg(0).node, equalTo(findClass('Foo').newNode)) |
@@ -201,7 +219,7 @@ class NodeScopingTest { | |||
201 | def void newNodeIsNotSpecial() { | 219 | def void newNodeIsNotSpecial() { |
202 | val it = parseHelper.parse(''' | 220 | val it = parseHelper.parse(''' |
203 | class Foo. | 221 | class Foo. |
204 | pred predicate(node x) <=> node(x). | 222 | pred predicate(node x) <-> node(x). |
205 | predicate(new). | 223 | predicate(new). |
206 | ''') | 224 | ''') |
207 | assertThat(errors, empty) | 225 | assertThat(errors, empty) |
@@ -215,7 +233,7 @@ class NodeScopingTest { | |||
215 | val it = parseHelper.parse(''' | 233 | val it = parseHelper.parse(''' |
216 | «IF namedProblem»problem test.«ENDIF» | 234 | «IF namedProblem»problem test.«ENDIF» |
217 | enum Foo { alpha, beta } | 235 | enum Foo { alpha, beta } |
218 | pred predicate(Foo a) <=> node(a). | 236 | pred predicate(Foo a) <-> node(a). |
219 | predicate(«qualifiedName»). | 237 | predicate(«qualifiedName»). |
220 | ''') | 238 | ''') |
221 | assertThat(errors, empty) | 239 | assertThat(errors, empty) |
@@ -242,7 +260,7 @@ class NodeScopingTest { | |||
242 | val it = parseHelper.parse(''' | 260 | val it = parseHelper.parse(''' |
243 | «IF namedProblem»problem test.«ENDIF» | 261 | «IF namedProblem»problem test.«ENDIF» |
244 | enum Foo { alpha, beta } | 262 | enum Foo { alpha, beta } |
245 | pred predicate(Foo a) <=> node(«qualifiedName»). | 263 | pred predicate(Foo a) <-> node(«qualifiedName»). |
246 | ''') | 264 | ''') |
247 | assertThat(errors, empty) | 265 | assertThat(errors, empty) |
248 | assertThat(nodes, empty) | 266 | assertThat(nodes, empty) |
@@ -264,7 +282,7 @@ class NodeScopingTest { | |||
264 | @MethodSource("builtInEnumLiteralReferencesSource") | 282 | @MethodSource("builtInEnumLiteralReferencesSource") |
265 | def void builtInEnumLiteralTest(String qualifiedName) { | 283 | def void builtInEnumLiteralTest(String qualifiedName) { |
266 | val it = parseHelper.parse(''' | 284 | val it = parseHelper.parse(''' |
267 | pred predicate(node a) <=> node(a). | 285 | pred predicate(node a) <-> node(a). |
268 | predicate(«qualifiedName»). | 286 | predicate(«qualifiedName»). |
269 | ''') | 287 | ''') |
270 | assertThat(errors, empty) | 288 | assertThat(errors, empty) |
@@ -287,7 +305,7 @@ class NodeScopingTest { | |||
287 | @MethodSource("builtInEnumLiteralReferencesSource") | 305 | @MethodSource("builtInEnumLiteralReferencesSource") |
288 | def void bultInEnumLiteralInPredicateTest(String qualifiedName) { | 306 | def void bultInEnumLiteralInPredicateTest(String qualifiedName) { |
289 | val it = parseHelper.parse(''' | 307 | val it = parseHelper.parse(''' |
290 | pred predicate() <=> node(«qualifiedName»). | 308 | pred predicate() <-> node(«qualifiedName»). |
291 | ''') | 309 | ''') |
292 | assertThat(errors, empty) | 310 | assertThat(errors, empty) |
293 | assertThat(pred("predicate").conj(0).lit(0).arg(0).node, equalTo(builtin.findEnum("bool").literal("true"))) | 311 | assertThat(pred("predicate").conj(0).lit(0).arg(0).node, equalTo(builtin.findEnum("bool").literal("true"))) |