Skip to content
Snippets Groups Projects
Commit a3dd3335 authored by Jan Gruteser's avatar Jan Gruteser
Browse files

minor layouting

parent c1e63cd5
No related branches found
No related tags found
No related merge requests found
...@@ -35,6 +35,7 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { ...@@ -35,6 +35,7 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants {
/** /**
* replace all definitions M1!Op1 by the real Op1 and add included definitions from instances * replace all definitions M1!Op1 by the real Op1 and add included definitions from instances
* -> SubstInNode should never occur after InstanceTransformation
*/ */
private void start() { private void start() {
for (OpDefNode def : defs.values()) { for (OpDefNode def : defs.values()) {
......
...@@ -22,7 +22,7 @@ public class UsedDefinitionsFinder extends AbstractASTVisitor { ...@@ -22,7 +22,7 @@ public class UsedDefinitionsFinder extends AbstractASTVisitor {
public UsedDefinitionsFinder(SpecAnalyser specAnalyser) { public UsedDefinitionsFinder(SpecAnalyser specAnalyser) {
DebugUtils.printMsg("Finding used definitions"); DebugUtils.printMsg("Finding used definitions");
// some definition are not yet supported, like recursive definitions // some definitions are not yet supported, like recursive definitions
// hence it is important not to try and translate all of them and only the used ones // hence it is important not to try and translate all of them and only the used ones
if (specAnalyser.getConfigFileEvaluator() != null) { if (specAnalyser.getConfigFileEvaluator() != null) {
...@@ -82,13 +82,11 @@ public class UsedDefinitionsFinder extends AbstractASTVisitor { ...@@ -82,13 +82,11 @@ public class UsedDefinitionsFinder extends AbstractASTVisitor {
OpDefNode def = (OpDefNode) n.getOperator(); OpDefNode def = (OpDefNode) n.getOperator();
ModuleNode moduleNode = def.getSource().getOriginallyDefinedInModuleNode(); ModuleNode moduleNode = def.getSource().getOriginallyDefinedInModuleNode();
if (moduleNode.getName().toString().equals("TLA2B")) { if (moduleNode.getName().toString().equals("TLA2B"))
return; return;
} if (BBuiltInOPs.contains(def.getName()) && STANDARD_MODULES.contains(moduleNode.getName().toString()))
if (BBuiltInOPs.contains(def.getName())
&& STANDARD_MODULES.contains(def.getSource().getOriginallyDefinedInModuleNode().getName().toString())) {
return; return;
}
if (usedDefinitions.add(def)) { if (usedDefinitions.add(def)) {
visitExprNode(def.getBody()); visitExprNode(def.getBody());
} }
......
...@@ -121,8 +121,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil ...@@ -121,8 +121,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
return; return;
List<EnumType> printed = new ArrayList<>(); List<EnumType> printed = new ArrayList<>();
OpDeclNode[] cons = moduleNode.getConstantDecls(); for (OpDeclNode con : moduleNode.getConstantDecls()) {
for (OpDeclNode con : cons) {
TLAType type = (TLAType) con.getToolObject(TYPE_ID); TLAType type = (TLAType) con.getToolObject(TYPE_ID);
EnumType e = null; EnumType e = null;
...@@ -1306,14 +1305,17 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil ...@@ -1306,14 +1305,17 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
return new ADomainExpression(visitExprOrOpArgNodeExpression(n.getArgs()[0])); return new ADomainExpression(visitExprOrOpArgNodeExpression(n.getArgs()[0]));
case OPCODE_sof: // [ A -> B] case OPCODE_sof: // [ A -> B]
return new ATotalFunctionExpression(visitExprOrOpArgNodeExpression(n.getArgs()[0]), return new ATotalFunctionExpression(
visitExprOrOpArgNodeExpression(n.getArgs()[1])); visitExprOrOpArgNodeExpression(n.getArgs()[0]),
visitExprOrOpArgNodeExpression(n.getArgs()[1])
);
case OPCODE_tup: { // $Tuple case OPCODE_tup: { // $Tuple
List<PExpression> list = new ArrayList<>(); List<PExpression> list = new ArrayList<>();
for (int i = 0; i < n.getArgs().length; i++) { for (int i = 0; i < n.getArgs().length; i++) {
list.add(visitExprOrOpArgNodeExpression(n.getArgs()[i])); list.add(visitExprOrOpArgNodeExpression(n.getArgs()[i]));
} }
TLAType t = (TLAType) n.getToolObject(TYPE_ID); TLAType t = (TLAType) n.getToolObject(TYPE_ID);
if (t instanceof TupleType) { if (t instanceof TupleType) {
return new ACoupleExpression(list); return new ACoupleExpression(list);
...@@ -1748,34 +1750,28 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil ...@@ -1748,34 +1750,28 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
AConjunctPredicate conj = new AConjunctPredicate(); AConjunctPredicate conj = new AConjunctPredicate();
if (pair.getArgs()[0] == null) { if (pair.getArgs()[0] == null) {
ANegationPredicate neg = new ANegationPredicate(); conj.setLeft(new ANegationPredicate(createDisjunction(conditions)));
neg.setPredicate(createDisjunction(conditions));
conj.setLeft(neg);
} else { } else {
conditions.add(visitExprOrOpArgNodePredicate(pair.getArgs()[0])); conditions.add(visitExprOrOpArgNodePredicate(pair.getArgs()[0]));
conj.setLeft(visitExprOrOpArgNodePredicate(pair.getArgs()[0])); conj.setLeft(visitExprOrOpArgNodePredicate(pair.getArgs()[0]));
} }
AEqualPredicate equals = new AEqualPredicate(); conj.setRight(new AEqualPredicate(
equals.setLeft(createIdentifierNode("t_")); createIdentifierNode("t_"),
equals.setRight(visitExprOrOpArgNodeExpression(pair.getArgs()[1])); visitExprOrOpArgNodeExpression(pair.getArgs()[1])
conj.setRight(equals); ));
disjunctionList.add(conj); disjunctionList.add(conj);
} }
AComprehensionSetExpression comprehension = new AComprehensionSetExpression(); return new ADefinitionExpression(
comprehension.setIdentifiers(createIdentifierList("t_")); new TIdentifierLiteral("CHOOSE"),
comprehension.setPredicates(createDisjunction(disjunctionList)); Collections.singletonList(new AComprehensionSetExpression(
ADefinitionExpression defCall = new ADefinitionExpression(); createIdentifierList("t_"),
defCall.setDefLiteral(new TIdentifierLiteral("CHOOSE")); createDisjunction(disjunctionList)
List<PExpression> params = new ArrayList<>(); ))
params.add(comprehension); );
defCall.setParameters(params);
return defCall;
} }
private List<PExpression> createIdentifierList(String name) { private List<PExpression> createIdentifierList(String name) {
ArrayList<PExpression> list = new ArrayList<>(); return Collections.singletonList(createIdentifierNode(name));
list.add(createIdentifierNode(name));
return list;
} }
private PPredicate visitBuiltInKindPredicate(OpApplNode n) { private PPredicate visitBuiltInKindPredicate(OpApplNode n) {
...@@ -1783,10 +1779,10 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil ...@@ -1783,10 +1779,10 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
switch (getOpCode(n.getOperator().getName())) { switch (getOpCode(n.getOperator().getName())) {
case OPCODE_land: // \land case OPCODE_land: // \land
{ {
AConjunctPredicate conjunction = new AConjunctPredicate(); returnNode = new AConjunctPredicate(
conjunction.setLeft(visitExprOrOpArgNodePredicate(n.getArgs()[0])); visitExprOrOpArgNodePredicate(n.getArgs()[0]),
conjunction.setRight(visitExprOrOpArgNodePredicate(n.getArgs()[1])); visitExprOrOpArgNodePredicate(n.getArgs()[1])
returnNode = conjunction; );
break; break;
} }
case OPCODE_cl: // $ConjList case OPCODE_cl: // $ConjList
...@@ -1800,10 +1796,10 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil ...@@ -1800,10 +1796,10 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
} }
case OPCODE_lor: // \/ case OPCODE_lor: // \/
{ {
ADisjunctPredicate disjunction = new ADisjunctPredicate(); returnNode = new ADisjunctPredicate(
disjunction.setLeft(visitExprOrOpArgNodePredicate(n.getArgs()[0])); visitExprOrOpArgNodePredicate(n.getArgs()[0]),
disjunction.setRight(visitExprOrOpArgNodePredicate(n.getArgs()[1])); visitExprOrOpArgNodePredicate(n.getArgs()[1])
returnNode = disjunction; );
break; break;
} }
case OPCODE_dl: // $DisjList case OPCODE_dl: // $DisjList
...@@ -1819,13 +1815,17 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil ...@@ -1819,13 +1815,17 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
returnNode = new ANegationPredicate(visitExprOrOpArgNodePredicate(n.getArgs()[0])); returnNode = new ANegationPredicate(visitExprOrOpArgNodePredicate(n.getArgs()[0]));
break; break;
case OPCODE_equiv: // \equiv case OPCODE_equiv: // \equiv
returnNode = new AEquivalencePredicate(visitExprOrOpArgNodePredicate(n.getArgs()[0]), returnNode = new AEquivalencePredicate(
visitExprOrOpArgNodePredicate(n.getArgs()[1])); visitExprOrOpArgNodePredicate(n.getArgs()[0]),
visitExprOrOpArgNodePredicate(n.getArgs()[1])
);
break; break;
case OPCODE_implies: // => case OPCODE_implies: // =>
returnNode = new AImplicationPredicate(visitExprOrOpArgNodePredicate(n.getArgs()[0]), returnNode = new AImplicationPredicate(
visitExprOrOpArgNodePredicate(n.getArgs()[1])); visitExprOrOpArgNodePredicate(n.getArgs()[0]),
visitExprOrOpArgNodePredicate(n.getArgs()[1])
);
break; break;
case OPCODE_be: { // \E x \in S : P case OPCODE_be: { // \E x \in S : P
...@@ -2090,7 +2090,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil ...@@ -2090,7 +2090,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
if (n instanceof ExprNode) { if (n instanceof ExprNode) {
return visitExprNodePredicate((ExprNode) n); return visitExprNodePredicate((ExprNode) n);
} else { } else {
throw new RuntimeException("OpArgNode not implemented jet"); throw new RuntimeException("OpArgNode not implemented yet");
} }
} }
...@@ -2098,7 +2098,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil ...@@ -2098,7 +2098,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, BBuil
if (n instanceof ExprNode) { if (n instanceof ExprNode) {
return visitExprNodeExpression((ExprNode) n); return visitExprNodeExpression((ExprNode) n);
} else { } else {
throw new RuntimeException("OpArgNode not implemented jet"); throw new RuntimeException("OpArgNode not implemented yet");
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment