From 01960723de5ca42e28dc8f162d4fe9e24c23c0b8 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Tue, 20 Feb 2024 01:27:51 +0100 Subject: feat(language): datatype declarations Also changes ReferenceDeclaration to declare attributes, since reference and attributes can only be distinguished at linking time. --- .../language/semantics/ModelInitializer.java | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'subprojects/language-semantics/src/main') 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; import tools.refinery.store.reasoning.seed.Seed; import tools.refinery.store.reasoning.translator.TranslationException; import tools.refinery.store.reasoning.translator.containment.ContainmentHierarchyTranslator; -import tools.refinery.store.reasoning.translator.metamodel.*; +import tools.refinery.store.reasoning.translator.metamodel.Metamodel; +import tools.refinery.store.reasoning.translator.metamodel.MetamodelBuilder; +import tools.refinery.store.reasoning.translator.metamodel.MetamodelTranslator; +import tools.refinery.store.reasoning.translator.metamodel.ReferenceInfo; import tools.refinery.store.reasoning.translator.multiobject.MultiObjectTranslator; import tools.refinery.store.reasoning.translator.multiplicity.ConstrainedMultiplicity; import tools.refinery.store.reasoning.translator.multiplicity.Multiplicity; @@ -243,15 +246,14 @@ public class ModelInitializer { private void collectClassDeclarationSymbols(ClassDeclaration classDeclaration) { collectPartialRelation(classDeclaration, 1, null, TruthValue.UNKNOWN); - for (var featureDeclaration : classDeclaration.getFeatureDeclarations()) { - if (featureDeclaration instanceof ReferenceDeclaration referenceDeclaration) { - collectPartialRelation(referenceDeclaration, 2, null, TruthValue.UNKNOWN); - var invalidMultiplicityConstraint = referenceDeclaration.getInvalidMultiplicity(); - if (invalidMultiplicityConstraint != null) { - collectPartialRelation(invalidMultiplicityConstraint, 1, TruthValue.FALSE, TruthValue.FALSE); - } - } else { - throw new TracedException(featureDeclaration, "Unknown feature declaration"); + for (var referenceDeclaration : classDeclaration.getFeatureDeclarations()) { + if (referenceDeclaration.getReferenceType() instanceof DatatypeDeclaration) { + throw new TracedException(referenceDeclaration, "Attributes are not yet supported"); + } + collectPartialRelation(referenceDeclaration, 2, null, TruthValue.UNKNOWN); + var invalidMultiplicityConstraint = referenceDeclaration.getInvalidMultiplicity(); + if (invalidMultiplicityConstraint != null) { + collectPartialRelation(invalidMultiplicityConstraint, 1, TruthValue.FALSE, TruthValue.FALSE); } } } @@ -319,10 +321,8 @@ public class ModelInitializer { } catch (RuntimeException e) { throw TracedException.addTrace(classDeclaration, e); } - for (var featureDeclaration : classDeclaration.getFeatureDeclarations()) { - if (featureDeclaration instanceof ReferenceDeclaration referenceDeclaration) { - collectReferenceDeclarationMetamodel(classDeclaration, referenceDeclaration); - } + for (var referenceDeclaration : classDeclaration.getFeatureDeclarations()) { + collectReferenceDeclarationMetamodel(classDeclaration, referenceDeclaration); } } -- cgit v1.2.3-70-g09d2