diff options
Diffstat (limited to 'Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_ConstantMapper.xtend')
-rw-r--r-- | Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_ConstantMapper.xtend | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_ConstantMapper.xtend b/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_ConstantMapper.xtend new file mode 100644 index 00000000..401c2ec2 --- /dev/null +++ b/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/src/hu/bme/mit/inf/dlsreasoner/alloy/reasoner/builder/Logic2AlloyLanguageMapper_ConstantMapper.xtend | |||
@@ -0,0 +1,43 @@ | |||
1 | package hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder | ||
2 | |||
3 | import hu.bme.mit.inf.dslreasoner.alloyLanguage.AlloyLanguageFactory | ||
4 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDeclaration | ||
5 | import hu.bme.mit.inf.dslreasoner.alloyLanguage.ALSMultiplicity | ||
6 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.ConstantDefinition | ||
7 | import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.* | ||
8 | |||
9 | class Logic2AlloyLanguageMapper_ConstantMapper { | ||
10 | private val extension AlloyLanguageFactory factory = AlloyLanguageFactory.eINSTANCE | ||
11 | private val Logic2AlloyLanguageMapper_Support support = new Logic2AlloyLanguageMapper_Support; | ||
12 | val Logic2AlloyLanguageMapper base; | ||
13 | public new(Logic2AlloyLanguageMapper base) { | ||
14 | this.base = base | ||
15 | } | ||
16 | |||
17 | def protected dispatch transformConstant(ConstantDeclaration constant, Logic2AlloyLanguageMapperTrace trace) { | ||
18 | if(!trace.constantDefinitions.containsKey(constant)) { | ||
19 | val c = createALSFieldDeclaration=> [ | ||
20 | name = support.toID(constant.name) | ||
21 | it.type = base.transformTypeReference(constant.type,trace) | ||
22 | it.multiplicity = ALSMultiplicity.ONE | ||
23 | ] | ||
24 | trace.logicLanguageBody.fields+= c | ||
25 | trace.constantDeclaration2LanguageField.put(constant,c) | ||
26 | } | ||
27 | } | ||
28 | |||
29 | def protected dispatch transformConstant(ConstantDefinition constant, Logic2AlloyLanguageMapperTrace trace) { | ||
30 | val c = createALSFunctionDefinition=> [ | ||
31 | name = support.toID(constant.name) | ||
32 | it.type = base.transformTypeReference(constant.type,trace) | ||
33 | // the value is set later | ||
34 | ] | ||
35 | trace.specification.functionDefinitions += c | ||
36 | trace.constantDefinition2Function.put(constant,c) | ||
37 | } | ||
38 | |||
39 | def protected transformConstantDefinitionSpecification(ConstantDefinition constant, Logic2AlloyLanguageMapperTrace trace) { | ||
40 | val definition = constant.lookup(trace.constantDefinition2Function) | ||
41 | definition.value = base.transformTerm(constant.value, trace,emptyMap) | ||
42 | } | ||
43 | } \ No newline at end of file | ||