aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-08-02 01:24:28 +0200
committerLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-08-02 01:24:28 +0200
commit8d5377ccb1c89668d1c95314910455c12c9c4554 (patch)
treeeb81bf87bdde429257d71443648c2ee2dbbceb12
parentTrying to run generator in measurement environment (diff)
downloadVIATRA-Generator-8d5377ccb1c89668d1c95314910455c12c9c4554.tar.gz
VIATRA-Generator-8d5377ccb1c89668d1c95314910455c12c9c4554.tar.zst
VIATRA-Generator-8d5377ccb1c89668d1c95314910455c12c9c4554.zip
Fix enum literal support for FAM
-rw-r--r--Domains/Examples/ModelGenExampleFAM_plugin/.project6
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend9
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend9
3 files changed, 12 insertions, 12 deletions
diff --git a/Domains/Examples/ModelGenExampleFAM_plugin/.project b/Domains/Examples/ModelGenExampleFAM_plugin/.project
index 70920828..6e1b3a06 100644
--- a/Domains/Examples/ModelGenExampleFAM_plugin/.project
+++ b/Domains/Examples/ModelGenExampleFAM_plugin/.project
@@ -11,11 +11,6 @@
11 </arguments> 11 </arguments>
12 </buildCommand> 12 </buildCommand>
13 <buildCommand> 13 <buildCommand>
14 <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
15 <arguments>
16 </arguments>
17 </buildCommand>
18 <buildCommand>
19 <name>org.eclipse.jdt.core.javabuilder</name> 14 <name>org.eclipse.jdt.core.javabuilder</name>
20 <arguments> 15 <arguments>
21 </arguments> 16 </arguments>
@@ -33,7 +28,6 @@
33 </buildSpec> 28 </buildSpec>
34 <natures> 29 <natures>
35 <nature>org.eclipse.jdt.core.javanature</nature> 30 <nature>org.eclipse.jdt.core.javanature</nature>
36 <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
37 <nature>org.eclipse.viatra.query.projectnature</nature> 31 <nature>org.eclipse.viatra.query.projectnature</nature>
38 <nature>org.eclipse.pde.PluginNature</nature> 32 <nature>org.eclipse.pde.PluginNature</nature>
39 </natures> 33 </natures>
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend
index 9845560c..0ae28b66 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/patterns/RelationDefinitionIndexer.xtend
@@ -34,7 +34,7 @@ class RelationDefinitionIndexer {
34 this.base = base 34 this.base = base
35 } 35 }
36 36
37 public def generateRelationDefinitions( 37 def generateRelationDefinitions(
38 LogicProblem problem, 38 LogicProblem problem,
39 Iterable<RelationDefinition> relations, 39 Iterable<RelationDefinition> relations,
40 Map<String,PQuery> fqn2PQuery) { 40 Map<String,PQuery> fqn2PQuery) {
@@ -110,7 +110,7 @@ class RelationDefinitionIndexer {
110 else return Modality::MUST 110 else return Modality::MUST
111 } 111 }
112 112
113 def public referPattern(PQuery p, String[] variables, Modality modality, boolean positive, boolean transitive) ''' 113 def referPattern(PQuery p, String[] variables, Modality modality, boolean positive, boolean transitive) '''
114 «IF !positive»neg «ENDIF»find «IF transitive»twoParam_«ENDIF»«modality.name.toLowerCase»InRelation_pattern_«p.fullyQualifiedName.replace('.','_')»«IF transitive»+«ENDIF»(«IF !transitive»problem,interpretation,«ENDIF»«variables.join(',')»); 114 «IF !positive»neg «ENDIF»find «IF transitive»twoParam_«ENDIF»«modality.name.toLowerCase»InRelation_pattern_«p.fullyQualifiedName.replace('.','_')»«IF transitive»+«ENDIF»(«IF !transitive»problem,interpretation,«ENDIF»«variables.join(',')»);
115 ''' 115 '''
116 116
@@ -228,10 +228,11 @@ class RelationDefinitionIndexer {
228 var String additionalDefinition; 228 var String additionalDefinition;
229 if(target instanceof EEnumLiteral) { 229 if(target instanceof EEnumLiteral) {
230 targetString = '''const_«target.name»_«target.EEnum.name»''' 230 targetString = '''const_«target.name»_«target.EEnum.name»'''
231 additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» «target.EEnum.name»"); //LogicProblem.elements(problem,«targetString»);''' 231 additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» literal «target.EEnum.name»"); //LogicProblem.elements(problem,«targetString»);'''
232 } else if(target instanceof Enumerator) { 232 } else if(target instanceof Enumerator) {
233 // XXX We should get the corresponding EEnum name instead of the java class name.
233 targetString = '''const_«target.name»_«target.class.simpleName»''' 234 targetString = '''const_«target.name»_«target.class.simpleName»'''
234 additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» «target.class.simpleName»"); //LogicProblem.elements(problem,«targetString»);''' 235 additionalDefinition = '''DefinedElement.name(«targetString»,"«target.name» literal «target.class.simpleName»"); //LogicProblem.elements(problem,«targetString»);'''
235 } else if(target instanceof Integer) { 236 } else if(target instanceof Integer) {
236 targetString = '''const_«target»_Integer''' 237 targetString = '''const_«target»_Integer'''
237 additionalDefinition = '''IntegerElement.value(«targetString»,«target»);''' 238 additionalDefinition = '''IntegerElement.value(«targetString»,«target»);'''
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend
index fe4dcadd..b65826ad 100644
--- a/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend
+++ b/Tests/hu.bme.mit.inf.dslreasoner.run/src/hu/bme/mit/inf/dslreasoner/run/SimpleRun.xtend
@@ -15,6 +15,7 @@ import hu.bme.mit.inf.dslreasoner.logic2ecore.Logic2Ecore
15import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic 15import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2Logic
16import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration 16import hu.bme.mit.inf.dslreasoner.viatra2logic.Viatra2LogicConfiguration
17import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor 17import hu.bme.mit.inf.dslreasoner.viatra2logic.ViatraQuerySetDescriptor
18import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.ScopePropagatorStrategy
18import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic 19import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.InstanceModel2Logic
19import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation 20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
20import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml 21import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml
@@ -60,6 +61,7 @@ class SimpleRun {
60 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration()) 61 val modelGenerationProblem = ecore2Logic.transformMetamodel(metamodel,new Ecore2LogicConfiguration())
61 val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel) 62 val modelExtensionProblem = instanceModel2Logic.transform(modelGenerationProblem,partialModel)
62 val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelExtensionProblem,new Viatra2LogicConfiguration) 63 val validModelExtensionProblem = viatra2Logic.transformQueries(queries,modelExtensionProblem,new Viatra2LogicConfiguration)
64// workspace.writeModel(validModelExtensionProblem.output, "generation.logicproblem")
63 65
64 val logicProblem = validModelExtensionProblem.output 66 val logicProblem = validModelExtensionProblem.output
65 67
@@ -72,6 +74,7 @@ class SimpleRun {
72 it.typeScopes.maxNewElements = 40 74 it.typeScopes.maxNewElements = 40
73 it.typeScopes.minNewElements = 40 75 it.typeScopes.minNewElements = 40
74 it.solutionScope.numberOfRequiredSolutions = 1 76 it.solutionScope.numberOfRequiredSolutions = 1
77// it.scopePropagatorStrategy = ScopePropagatorStrategy.BasicTypeHierarchy
75 it.documentationLevel = DocumentationLevel.NONE 78 it.documentationLevel = DocumentationLevel.NONE
76 it.debugConfiguration.partalInterpretationVisualisationFrequency = 1 79 it.debugConfiguration.partalInterpretationVisualisationFrequency = 1
77 it.debugConfiguration.partialInterpretatioVisualiser = new GraphvizVisualiser 80 it.debugConfiguration.partialInterpretatioVisualiser = new GraphvizVisualiser
@@ -91,12 +94,14 @@ class SimpleRun {
91 94
92 println("Problem solved") 95 println("Problem solved")
93 96
94 val interpretations = reasoner.getInterpretations(solution as ModelResult) 97 val result = solution as ModelResult
98 val interpretations = reasoner.getInterpretations(result)
95 val models = new LinkedList 99 val models = new LinkedList
96 for(interpretation : interpretations) { 100 for(interpretation : interpretations) {
97 val instanceModel = logic2Ecore.transformInterpretation(interpretation,modelGenerationProblem.trace) 101 val instanceModel = logic2Ecore.transformInterpretation(interpretation,modelGenerationProblem.trace)
98 models+=instanceModel 102 models+=instanceModel
99 } 103 }
104 println(result.statistics.solverTime)
100 105
101 solution.writeSolution(workspace, #[]) 106 solution.writeSolution(workspace, #[])
102 } 107 }
@@ -129,7 +134,7 @@ class SimpleRun {
129 def static loadPartialModel(ReasonerWorkspace inputs) { 134 def static loadPartialModel(ReasonerWorkspace inputs) {
130 EMFPatternLanguageStandaloneSetup.doSetup 135 EMFPatternLanguageStandaloneSetup.doSetup
131 ReteEngine.getClass 136 ReteEngine.getClass
132 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl()); 137 Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl());
133 inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList 138 inputs.readModel(EObject,"FAM.xmi").eResource.allContents.toList
134 } 139 }
135 140