From 68ef3e40bc3f00fcaea3ff9bef4a9bdbe68bfb5d Mon Sep 17 00:00:00 2001 From: hansen <dominik_hansen@web.de> Date: Fri, 17 Apr 2015 15:29:35 +0200 Subject: [PATCH] code refactoring --- .../java/de/tla2b/analysis/BOperation.java | 12 ++- .../analysis/InstanceTransformation.java | 1 - .../java/de/tla2b/analysis/SpecAnalyser.java | 76 +++++++++---------- .../java/de/tla2b/analysis/TypeChecker.java | 11 +-- .../de/tla2b/output/ASTPrettyPrinter.java | 2 - .../tla2b/translation/BDefinitionsFinder.java | 1 - src/main/java/de/tla2b/types/TLAType.java | 2 - .../java/de/tla2b/types/TupleOrFunction.java | 12 +-- src/main/java/de/tla2bAst/BAstCreator.java | 12 +-- .../de/tla2bAst/ExpressionTranslator.java | 1 - .../expression/ModuleAndExpressionTest.java | 3 +- .../java/de/tla2b/util/TestTypeChecker.java | 1 - src/test/java/de/tla2b/util/TestUtil.java | 13 +++- 13 files changed, 59 insertions(+), 88 deletions(-) diff --git a/src/main/java/de/tla2b/analysis/BOperation.java b/src/main/java/de/tla2b/analysis/BOperation.java index fec96cc..f27b3a2 100644 --- a/src/main/java/de/tla2b/analysis/BOperation.java +++ b/src/main/java/de/tla2b/analysis/BOperation.java @@ -185,8 +185,9 @@ public class BOperation extends BuiltInOPs implements ASTConstants, if (node instanceof OpApplNode) { OpApplNode opApplNode = (OpApplNode) node; if (opApplNode.getOperator().getKind() == BuiltInKind) { - switch (getOpCode(opApplNode.getOperator().getName())) { - case OPCODE_eq: { + + if (OPCODE_eq == getOpCode(opApplNode.getOperator() + .getName())) { ExprOrOpArgNode arg1 = opApplNode.getArgs()[0]; try { OpApplNode arg11 = (OpApplNode) arg1; @@ -204,12 +205,9 @@ public class BOperation extends BuiltInOPs implements ASTConstants, } } catch (ClassCastException e) { - } - - } - default: } + } } } @@ -263,7 +261,7 @@ public class BOperation extends BuiltInOPs implements ASTConstants, beforeAfterPredicates.add(node); return; } - //beforeAfterPredicates.add(node); + // beforeAfterPredicates.add(node); } private void evalParams() { diff --git a/src/main/java/de/tla2b/analysis/InstanceTransformation.java b/src/main/java/de/tla2b/analysis/InstanceTransformation.java index 3e578c4..c8987c0 100644 --- a/src/main/java/de/tla2b/analysis/InstanceTransformation.java +++ b/src/main/java/de/tla2b/analysis/InstanceTransformation.java @@ -14,7 +14,6 @@ import tla2sany.semantic.Context; import tla2sany.semantic.ExprNode; import tla2sany.semantic.ExprOrOpArgNode; import tla2sany.semantic.FormalParamNode; -import tla2sany.semantic.InstanceNode; import tla2sany.semantic.LetInNode; import tla2sany.semantic.ModuleNode; import tla2sany.semantic.NumeralNode; diff --git a/src/main/java/de/tla2b/analysis/SpecAnalyser.java b/src/main/java/de/tla2b/analysis/SpecAnalyser.java index eebb4d1..7e1a3ab 100644 --- a/src/main/java/de/tla2b/analysis/SpecAnalyser.java +++ b/src/main/java/de/tla2b/analysis/SpecAnalyser.java @@ -20,7 +20,6 @@ import de.tla2b.global.TranslationGlobals; import de.tla2b.translation.BDefinitionsFinder; import de.tla2b.translation.OperationsFinder; import de.tla2b.translation.UsedDefinitionsFinder; -import de.tla2b.types.IType; import tla2sany.semantic.ASTConstants; import tla2sany.semantic.ExprNode; import tla2sany.semantic.ExprOrOpArgNode; @@ -43,8 +42,7 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, private OpDefNode expressionOpdefNode; private Hashtable<String, SymbolNode> namingHashTable = new Hashtable<String, SymbolNode>(); - - + private final ModuleNode moduleNode; private ExprNode nextExpr; @@ -87,18 +85,16 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, return specAnalyser; } - - - - public static SpecAnalyser createSpecAnalyserForTlaExpression(ModuleNode m){ + + public static SpecAnalyser createSpecAnalyserForTlaExpression(ModuleNode m) { SpecAnalyser specAnalyser = new SpecAnalyser(m); - - specAnalyser.expressionOpdefNode = m.getOpDefs()[m.getOpDefs().length-1]; + + specAnalyser.expressionOpdefNode = m.getOpDefs()[m.getOpDefs().length - 1]; specAnalyser.usedDefinitions.add(specAnalyser.expressionOpdefNode); specAnalyser.bDefinitionsSet.add(specAnalyser.expressionOpdefNode); return specAnalyser; } - + public static SpecAnalyser createSpecAnalyser(ModuleNode m) { SpecAnalyser specAnalyser = new SpecAnalyser(m); Hashtable<String, OpDefNode> definitions = new Hashtable<String, OpDefNode>(); @@ -109,7 +105,7 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, specAnalyser.spec = definitions.get("Spec"); specAnalyser.init = definitions.get("Init"); specAnalyser.next = definitions.get("Next"); - if(definitions.containsKey("Inv")){ + if (definitions.containsKey("Inv")) { specAnalyser.invariants.add(definitions.get("Inv")); } // TODO are constant in the right order @@ -132,27 +128,27 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, for (OpDefNode inv : new ArrayList<OpDefNode>(invariants)) { try { OpApplNode opApplNode = (OpApplNode) inv.getBody(); - + OpDefNode opDefNode = (OpDefNode) opApplNode.getOperator(); - - if (opDefNode.getKind() == UserDefinedOpKind && !BBuiltInOPs.contains(opDefNode.getName())){ + + if (opDefNode.getKind() == UserDefinedOpKind + && !BBuiltInOPs.contains(opDefNode.getName())) { int i = invariants.indexOf(inv); invariants.set(i, opDefNode); - } + } } catch (ClassCastException e) { } } - - + OperationsFinder operationsFinder = new OperationsFinder(this); bOperations = operationsFinder.getBOperations(); - + UsedDefinitionsFinder definitionFinder = new UsedDefinitionsFinder(this); this.usedDefinitions = definitionFinder.getUsedDefinitions(); - + BDefinitionsFinder bDefinitionFinder = new BDefinitionsFinder(this); this.bDefinitionsSet = bDefinitionFinder.getBDefinitionsSet(); - //usedDefinitions.addAll(bDefinitionsSet); + // usedDefinitions.addAll(bDefinitionsSet); // test whether there is a init predicate if there is a variable if (moduleNode.getVariableDecls().length > 0 && inits == null) { @@ -170,9 +166,7 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, } } findRecursiveConstructs(); - - - + for (OpDeclNode var : moduleNode.getVariableDecls()) { namingHashTable.put(var.getName().toString(), var); } @@ -182,7 +176,7 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, for (OpDefNode def : usedDefinitions) { namingHashTable.put(def.getName().toString(), def); } - + } private void evalInit() { @@ -263,12 +257,12 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, Set<OpDefNode> set = new HashSet<OpDefNode>(usedDefinitions); for (OpDefNode def : set) { if (def.getInRecursive()) { - throw new NotImplementedException("Recursive definitions are currently not supported."); -// bDefinitionsSet.remove(def); -// RecursiveDefinition rd = new RecursiveDefinition(def); -// recursiveDefinitions.add(rd); - } else - if (def.getBody() instanceof OpApplNode) { + throw new NotImplementedException( + "Recursive definitions are currently not supported."); + // bDefinitionsSet.remove(def); + // RecursiveDefinition rd = new RecursiveDefinition(def); + // recursiveDefinitions.add(rd); + } else if (def.getBody() instanceof OpApplNode) { OpApplNode o = (OpApplNode) def.getBody(); switch (getOpCode(o.getOperator().getName())) { case OPCODE_rfs: { // recursive Function @@ -297,7 +291,7 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, } public Hashtable<OpDefNode, FormalParamNode[]> getLetParams() { - return letParams; + return new Hashtable<OpDefNode, FormalParamNode[]>(letParams); } public ArrayList<String> getDefinitionMacros() { @@ -320,24 +314,24 @@ public class SpecAnalyser extends BuiltInOPs implements ASTConstants, return this.moduleNode; } - public ConfigfileEvaluator getConfigFileEvaluator(){ + public ConfigfileEvaluator getConfigFileEvaluator() { return configFileEvaluator; } - - public ArrayList<OpDefNode> getInvariants(){ + + public ArrayList<OpDefNode> getInvariants() { return invariants; } - - public OpDefNode getInitDef(){ + + public OpDefNode getInitDef() { return init; } - - public OpDefNode getExpressionOpdefNode(){ + + public OpDefNode getExpressionOpdefNode() { return expressionOpdefNode; } - - public SymbolNode getSymbolNodeByName(String name){ + + public SymbolNode getSymbolNodeByName(String name) { return namingHashTable.get(name); } - + } diff --git a/src/main/java/de/tla2b/analysis/TypeChecker.java b/src/main/java/de/tla2b/analysis/TypeChecker.java index 48653e2..0132e66 100644 --- a/src/main/java/de/tla2b/analysis/TypeChecker.java +++ b/src/main/java/de/tla2b/analysis/TypeChecker.java @@ -45,7 +45,7 @@ import tlc2.tool.BuiltInOPs; public class TypeChecker extends BuiltInOPs implements ASTConstants, BBuildIns, TranslationGlobals { - private final int TEMP_TYPE_ID = 6; + private static final int TEMP_TYPE_ID = 6; private int paramId; private ArrayList<ExprNode> inits; @@ -461,14 +461,15 @@ public class TypeChecker extends BuiltInOPs implements ASTConstants, BBuildIns, } TLAType found = ((TLAType) def.getToolObject(TYPE_ID)); - if (found == null){ + if (found == null) { found = new UntypedType(); - // throw new RuntimeException(def.getName() + " has no type yet!"); + // throw new RuntimeException(def.getName() + + // " has no type yet!"); } - if(n.getArgs().length != 0){ + if (n.getArgs().length != 0) { found = found.cloneTLAType(); } - + try { found = found.unify(expected); } catch (UnificationException e) { diff --git a/src/main/java/de/tla2b/output/ASTPrettyPrinter.java b/src/main/java/de/tla2b/output/ASTPrettyPrinter.java index 1f89973..829da96 100644 --- a/src/main/java/de/tla2b/output/ASTPrettyPrinter.java +++ b/src/main/java/de/tla2b/output/ASTPrettyPrinter.java @@ -13,14 +13,12 @@ import de.be4.classicalb.core.parser.node.AConjunctPredicate; import de.be4.classicalb.core.parser.node.ADefinitionExpression; import de.be4.classicalb.core.parser.node.ADefinitionPredicate; import de.be4.classicalb.core.parser.node.AExpressionDefinitionDefinition; -import de.be4.classicalb.core.parser.node.AFirstProjectionExpression; import de.be4.classicalb.core.parser.node.AGeneralSumExpression; import de.be4.classicalb.core.parser.node.AIdentifierExpression; import de.be4.classicalb.core.parser.node.ALambdaExpression; import de.be4.classicalb.core.parser.node.AOperation; import de.be4.classicalb.core.parser.node.AOperationsMachineClause; import de.be4.classicalb.core.parser.node.APredicateDefinitionDefinition; -import de.be4.classicalb.core.parser.node.ASecondProjectionExpression; import de.be4.classicalb.core.parser.node.ASelectSubstitution; import de.be4.classicalb.core.parser.node.Node; import de.be4.classicalb.core.parser.node.PExpression; diff --git a/src/main/java/de/tla2b/translation/BDefinitionsFinder.java b/src/main/java/de/tla2b/translation/BDefinitionsFinder.java index 4ffc606..93351e8 100644 --- a/src/main/java/de/tla2b/translation/BDefinitionsFinder.java +++ b/src/main/java/de/tla2b/translation/BDefinitionsFinder.java @@ -12,7 +12,6 @@ import de.tla2b.analysis.AbstractASTVisitor; import de.tla2b.analysis.BOperation; import de.tla2b.analysis.SpecAnalyser; import de.tla2b.global.TranslationGlobals; -import de.tla2b.types.IType; public class BDefinitionsFinder extends AbstractASTVisitor implements ASTConstants, ToolGlobals, TranslationGlobals { diff --git a/src/main/java/de/tla2b/types/TLAType.java b/src/main/java/de/tla2b/types/TLAType.java index 6ea3bde..e403352 100644 --- a/src/main/java/de/tla2b/types/TLAType.java +++ b/src/main/java/de/tla2b/types/TLAType.java @@ -2,8 +2,6 @@ package de.tla2b.types; import de.be4.classicalb.core.parser.node.PExpression; import de.tla2b.exceptions.UnificationException; -import de.tla2b.output.TypeVisitorInterface; - public abstract class TLAType implements IType { private int kind; diff --git a/src/main/java/de/tla2b/types/TupleOrFunction.java b/src/main/java/de/tla2b/types/TupleOrFunction.java index 07be646..f120eb7 100644 --- a/src/main/java/de/tla2b/types/TupleOrFunction.java +++ b/src/main/java/de/tla2b/types/TupleOrFunction.java @@ -204,7 +204,7 @@ public class TupleOrFunction extends AbstractHasFollowers { public TLAType cloneTLAType() { TupleOrFunction res = new TupleOrFunction(); for (Entry<Integer, TLAType> entry : this.types.entrySet()) { - res.types.put(new Integer(entry.getKey().intValue()), entry + res.types.put(Integer.valueOf(entry.getKey().intValue()), entry .getValue().cloneTLAType()); } return res; @@ -390,14 +390,4 @@ public class TupleOrFunction extends AbstractHasFollowers { } return true; } - - private static boolean allTyped(List<TLAType> typeList) { - for (int i = 0; i < typeList.size(); i++) { - if (typeList.get(i).isUntyped()) { - return false; - } - } - return true; - } - } diff --git a/src/main/java/de/tla2bAst/BAstCreator.java b/src/main/java/de/tla2bAst/BAstCreator.java index f906e99..969fa29 100644 --- a/src/main/java/de/tla2bAst/BAstCreator.java +++ b/src/main/java/de/tla2bAst/BAstCreator.java @@ -94,7 +94,6 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, ExprNode expr = moduleNode.getOpDefs()[moduleNode.getOpDefs().length - 1] .getBody(); - System.out.println(expressionIsAPredicate(expr)); if (expressionIsAPredicate(expr)) { APredicateParseUnit predicateParseUnit = new APredicateParseUnit(); predicateParseUnit.setPredicate(visitExprNodePredicate(expr)); @@ -832,7 +831,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, switch (n.getOperator().getKind()) { case VariableDeclKind: case ConstantDeclKind: - case FormalParamKind: { // TODO + case FormalParamKind: { return new AEqualPredicate(createIdentifierNode(n.getOperator()), new ABooleanTrueExpression()); } @@ -1503,7 +1502,6 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, case OPCODE_fc: // Represents [x \in S |-> e]. case OPCODE_rfs: { FormalParamNode[][] params = n.getBdedQuantSymbolLists(); - // ExprNode[] bounds = n.getBdedQuantBounds(); TODO List<PExpression> idList = new ArrayList<PExpression>(); for (int i = 0; i < params.length; i++) { for (int j = 0; j < params[i].length; j++) { @@ -1511,9 +1509,7 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, idList.add(createIdentifierNode(p)); } } - boolean[] isTuple = n.isBdedQuantATuple(); - ALambdaExpression lambda = new ALambdaExpression(); List<PExpression> idList2 = new ArrayList<PExpression>(); for (int i = 0; i < params.length; i++) { @@ -2137,12 +2133,6 @@ public class BAstCreator extends BuiltInOPs implements TranslationGlobals, return list; } - private List<PExpression> createIdentifierList(SymbolNode symbolNode) { - ArrayList<PExpression> list = new ArrayList<PExpression>(); - list.add(createIdentifierNode(getName(symbolNode))); - return list; - } - private PPredicate visitBuiltInKindPredicate(OpApplNode n) { switch (getOpCode(n.getOperator().getName())) { case OPCODE_land: // \land diff --git a/src/main/java/de/tla2bAst/ExpressionTranslator.java b/src/main/java/de/tla2bAst/ExpressionTranslator.java index c4da22f..ea33cfb 100644 --- a/src/main/java/de/tla2bAst/ExpressionTranslator.java +++ b/src/main/java/de/tla2bAst/ExpressionTranslator.java @@ -137,7 +137,6 @@ public class ExpressionTranslator implements SyntaxTreeConstants { + "\n" + expr + "\n"; throw new ExpressionTranslationException(message); } - SymbolRenamer symRenamer = new SymbolRenamer(moduleNode, specAnalyser); symRenamer.start(); BAstCreator bASTCreator = new BAstCreator(moduleNode, specAnalyser); diff --git a/src/test/java/de/tla2b/expression/ModuleAndExpressionTest.java b/src/test/java/de/tla2b/expression/ModuleAndExpressionTest.java index 449e378..69e312a 100644 --- a/src/test/java/de/tla2b/expression/ModuleAndExpressionTest.java +++ b/src/test/java/de/tla2b/expression/ModuleAndExpressionTest.java @@ -7,11 +7,12 @@ import org.junit.Test; import de.tla2b.exceptions.TypeErrorException; public class ModuleAndExpressionTest { + @Test public void testCon() throws Exception { String module = "---- MODULE Testing ----\n" + "CONSTANTS k \n" + "ASSUME k = 4" + "==============="; - compareExprIncludingModel("bool(k = 1)", "k = 1", module); + compareExprIncludingModel("k = 1", "k = 1", module); } @Test(expected = TypeErrorException.class) diff --git a/src/test/java/de/tla2b/util/TestTypeChecker.java b/src/test/java/de/tla2b/util/TestTypeChecker.java index 7ecc05c..2dd2c11 100644 --- a/src/test/java/de/tla2b/util/TestTypeChecker.java +++ b/src/test/java/de/tla2b/util/TestTypeChecker.java @@ -10,7 +10,6 @@ import de.tla2b.exceptions.FrontEndException; import de.tla2b.exceptions.TLA2BException; import de.tla2b.global.TranslationGlobals; import de.tla2b.types.TLAType; -import de.tla2b.types.TupleOrFunction; import de.tla2bAst.Translator; import tla2sany.semantic.FormalParamNode; import tla2sany.semantic.ModuleNode; diff --git a/src/test/java/de/tla2b/util/TestUtil.java b/src/test/java/de/tla2b/util/TestUtil.java index 4850e78..a11a4dd 100644 --- a/src/test/java/de/tla2b/util/TestUtil.java +++ b/src/test/java/de/tla2b/util/TestUtil.java @@ -64,7 +64,7 @@ public class TestUtil { Renamer renamer = new Renamer(resultNode); ASTPrettyPrinter aP = new ASTPrettyPrinter(resultNode, renamer); resultNode.apply(aP); - System.out.println(aP.getResultString()); + //System.out.println(aP.getResultString()); String bAstString = getAstStringofBExpressionString(bExpr); String result = getAstStringofBExpressionString(aP.getResultString()); // String tlaAstString = getTreeAsString(resultNode); @@ -72,11 +72,16 @@ public class TestUtil { } public static void compareExprIncludingModel(String bExpr, String tlaExpr, - String moduleString) throws TLA2BException { + String moduleString) throws TLA2BException, BException { Translator trans = new Translator(moduleString, null); trans.translate(); - Start result = trans.translateExpression(tlaExpr); - // TODO + Start resultNode = trans.translateExpression(tlaExpr); + Renamer renamer = new Renamer(resultNode); + ASTPrettyPrinter aP = new ASTPrettyPrinter(resultNode, renamer); + resultNode.apply(aP); + String bAstString = getAstStringofBExpressionString(bExpr); + String result = getAstStringofBExpressionString(aP.getResultString()); + assertEquals(bAstString, result); } public static void compare(String bMachine, String tlaModule) -- GitLab