aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language-semantics
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2024-02-20 01:27:51 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-04-07 14:55:46 +0200
commit01960723de5ca42e28dc8f162d4fe9e24c23c0b8 (patch)
treec391738a378d079d4c3b1aa8966c6b66d60ee4c9 /subprojects/language-semantics
parentfeat: subproject for z3 integration (diff)
downloadrefinery-01960723de5ca42e28dc8f162d4fe9e24c23c0b8.tar.gz
refinery-01960723de5ca42e28dc8f162d4fe9e24c23c0b8.tar.zst
refinery-01960723de5ca42e28dc8f162d4fe9e24c23c0b8.zip
feat(language): datatype declarations
Also changes ReferenceDeclaration to declare attributes, since reference and attributes can only be distinguished at linking time.
Diffstat (limited to 'subprojects/language-semantics')
-rw-r--r--subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/ModelInitializer.java28
1 files changed, 14 insertions, 14 deletions
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/ModelInitializer.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/ModelInitializer.java
index c2bca2a5..203baad6 100644
--- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/ModelInitializer.java
+++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/ModelInitializer.java
@@ -29,7 +29,10 @@ import tools.refinery.store.reasoning.seed.ModelSeed;
29import tools.refinery.store.reasoning.seed.Seed; 29import tools.refinery.store.reasoning.seed.Seed;
30import tools.refinery.store.reasoning.translator.TranslationException; 30import tools.refinery.store.reasoning.translator.TranslationException;
31import tools.refinery.store.reasoning.translator.containment.ContainmentHierarchyTranslator; 31import tools.refinery.store.reasoning.translator.containment.ContainmentHierarchyTranslator;
32import tools.refinery.store.reasoning.translator.metamodel.*; 32import tools.refinery.store.reasoning.translator.metamodel.Metamodel;
33import tools.refinery.store.reasoning.translator.metamodel.MetamodelBuilder;
34import tools.refinery.store.reasoning.translator.metamodel.MetamodelTranslator;
35import tools.refinery.store.reasoning.translator.metamodel.ReferenceInfo;
33import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; 36import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator;
34import tools.refinery.store.reasoning.translator.multiplicity.ConstrainedMultiplicity; 37import tools.refinery.store.reasoning.translator.multiplicity.ConstrainedMultiplicity;
35import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity; 38import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity;
@@ -243,15 +246,14 @@ public class ModelInitializer {
243 246
244 private void collectClassDeclarationSymbols(ClassDeclaration classDeclaration) { 247 private void collectClassDeclarationSymbols(ClassDeclaration classDeclaration) {
245 collectPartialRelation(classDeclaration, 1, null, TruthValue.UNKNOWN); 248 collectPartialRelation(classDeclaration, 1, null, TruthValue.UNKNOWN);
246 for (var featureDeclaration : classDeclaration.getFeatureDeclarations()) { 249 for (var referenceDeclaration : classDeclaration.getFeatureDeclarations()) {
247 if (featureDeclaration instanceof ReferenceDeclaration referenceDeclaration) { 250 if (referenceDeclaration.getReferenceType() instanceof DatatypeDeclaration) {
248 collectPartialRelation(referenceDeclaration, 2, null, TruthValue.UNKNOWN); 251 throw new TracedException(referenceDeclaration, "Attributes are not yet supported");
249 var invalidMultiplicityConstraint = referenceDeclaration.getInvalidMultiplicity(); 252 }
250 if (invalidMultiplicityConstraint != null) { 253 collectPartialRelation(referenceDeclaration, 2, null, TruthValue.UNKNOWN);
251 collectPartialRelation(invalidMultiplicityConstraint, 1, TruthValue.FALSE, TruthValue.FALSE); 254 var invalidMultiplicityConstraint = referenceDeclaration.getInvalidMultiplicity();
252 } 255 if (invalidMultiplicityConstraint != null) {
253 } else { 256 collectPartialRelation(invalidMultiplicityConstraint, 1, TruthValue.FALSE, TruthValue.FALSE);
254 throw new TracedException(featureDeclaration, "Unknown feature declaration");
255 } 257 }
256 } 258 }
257 } 259 }
@@ -319,10 +321,8 @@ public class ModelInitializer {
319 } catch (RuntimeException e) { 321 } catch (RuntimeException e) {
320 throw TracedException.addTrace(classDeclaration, e); 322 throw TracedException.addTrace(classDeclaration, e);
321 } 323 }
322 for (var featureDeclaration : classDeclaration.getFeatureDeclarations()) { 324 for (var referenceDeclaration : classDeclaration.getFeatureDeclarations()) {
323 if (featureDeclaration instanceof ReferenceDeclaration referenceDeclaration) { 325 collectReferenceDeclarationMetamodel(classDeclaration, referenceDeclaration);
324 collectReferenceDeclarationMetamodel(classDeclaration, referenceDeclaration);
325 }
326 } 326 }
327 } 327 }
328 328