From f464fa63b21884a0732d181ac1246b41b41b3063 Mon Sep 17 00:00:00 2001 From: Jan Gruteser <jan.gruteser@hhu.de> Date: Fri, 27 Sep 2024 18:39:16 +0200 Subject: [PATCH] cleanup InstanceTransformation, SymbolSorter and SymbolRenamer --- .../analysis/InstanceTransformation.java | 101 +++++++---------- .../java/de/tla2b/analysis/SymbolRenamer.java | 102 ++++++++---------- .../java/de/tla2b/analysis/SymbolSorter.java | 14 +-- .../de/tla2bAst/ExpressionTranslator.java | 19 ++-- src/main/java/de/tla2bAst/Translator.java | 22 ++-- 5 files changed, 99 insertions(+), 159 deletions(-) diff --git a/src/main/java/de/tla2b/analysis/InstanceTransformation.java b/src/main/java/de/tla2b/analysis/InstanceTransformation.java index a11ae97..b5dccfa 100644 --- a/src/main/java/de/tla2b/analysis/InstanceTransformation.java +++ b/src/main/java/de/tla2b/analysis/InstanceTransformation.java @@ -9,29 +9,27 @@ import java.util.Hashtable; public class InstanceTransformation extends BuiltInOPs implements ASTConstants { - final OpDefNode[] defs; - final Hashtable<String, OpDefNode> defsHash; + private final OpDefNode[] defs; + private final Hashtable<String, OpDefNode> defsHash; private final int substitutionId = 11; + private InstanceTransformation(ModuleNode moduleNode) { + this.defs = moduleNode.getOpDefs(); + this.defsHash = SymbolSorter.getDefsHashTable(defs); + } - public InstanceTransformation(ModuleNode moduleNode) { - defs = moduleNode.getOpDefs(); - defsHash = new Hashtable<>(); - for (OpDefNode def : defs) { - defsHash.put(def.getName().toString(), def); - } + public static void run(ModuleNode moduleNode) { + new InstanceTransformation(moduleNode).start(); } - public void start() { + private void start() { for (OpDefNode def : defs) { - if (def.getSource() != def - && !BBuiltInOPs.contains(def.getSource().getName())) { + if (def.getSource() != def && !BBuiltInOPs.contains(def.getSource().getName())) { // instance String defName = def.getName().toString(); if (def.getBody() instanceof SubstInNode) { - String prefix = defName.substring(0, - defName.lastIndexOf('!') + 1); + String prefix = defName.substring(0, defName.lastIndexOf('!') + 1); def.setParams(generateNewParams(def.getParams())); ExprNode body; try { @@ -45,17 +43,15 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { } } - private ExprOrOpArgNode generateNewExprOrOpArgNode(ExprOrOpArgNode n, - String prefix) throws AbortException { + private ExprOrOpArgNode generateNewExprOrOpArgNode(ExprOrOpArgNode n, String prefix) throws AbortException { if (n instanceof ExprNode) { return generateNewExprNode((ExprNode) n, prefix); } else { - throw new RuntimeException("OpArgNode not implemented jet"); + throw new RuntimeException("OpArgNode not implemented yet"); } } - private ExprNode generateNewExprNode(ExprNode n, String prefix) - throws AbortException { + private ExprNode generateNewExprNode(ExprNode n, String prefix) throws AbortException { switch (n.getKind()) { case OpApplKind: { return generateNewOpApplNode((OpApplNode) n, prefix); @@ -93,11 +89,9 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { case AtNodeKind: { // @ AtNode old = (AtNode) n; OpApplNode oldExcept = old.getExceptRef(); - OpApplNode newExcept = (OpApplNode) oldExcept - .getToolObject(substitutionId); + OpApplNode newExcept = (OpApplNode) oldExcept.getToolObject(substitutionId); OpApplNode oldComponent = old.getExceptComponentRef(); - OpApplNode newComponent = (OpApplNode) oldComponent - .getToolObject(substitutionId); + OpApplNode newComponent = (OpApplNode) oldComponent.getToolObject(substitutionId); return new AtNode(newExcept, newComponent); } @@ -107,8 +101,7 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { Context cc = oldLetNode.context; for (int i = 0; i < oldLetNode.getLets().length; i++) { OpDefNode let = oldLetNode.getLets()[i]; - UniqueString newName = UniqueString.uniqueStringOf(prefix - + let.getName().toString()); + UniqueString newName = UniqueString.uniqueStringOf(prefix + let.getName().toString()); OpDefNode newLet = new OpDefNode(newName, let.getKind(), generateNewParams(let.getParams()), let.isLocal(), generateNewExprNode(let.getBody(), prefix), @@ -119,23 +112,19 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { cc.addSymbolToContext(newName, newLet); } - LetInNode newLetNode = new LetInNode(oldLetNode.getTreeNode(), + return new LetInNode(oldLetNode.getTreeNode(), newLets, null, generateNewExprNode(oldLetNode.getBody(), prefix), cc); - return newLetNode; } - } throw new RuntimeException(); } - private ExprNode generateNewOpApplNode(OpApplNode n, String prefix) - throws AbortException { + private ExprNode generateNewOpApplNode(OpApplNode n, String prefix) throws AbortException { switch (n.getOperator().getKind()) { case VariableDeclKind: case ConstantDeclKind: { - ExprOrOpArgNode e = (ExprOrOpArgNode) n.getOperator() - .getToolObject(substitutionId); + ExprOrOpArgNode e = (ExprOrOpArgNode) n.getOperator().getToolObject(substitutionId); if (e != null) { if (e instanceof ExprNode) { // TODO newprefix, witout last prefix @@ -143,8 +132,7 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { } else { OpArgNode opArg = (OpArgNode) e; while (opArg.getOp().getToolObject(substitutionId) != null) { - opArg = (OpArgNode) opArg.getOp().getToolObject( - substitutionId); + opArg = (OpArgNode) opArg.getOp().getToolObject(substitutionId); } return new OpApplNode(opArg.getOp(), generateNewArgs( n.getArgs(), prefix), n.getTreeNode(), null); @@ -161,8 +149,7 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { if (f == null) { throw new RuntimeException(); } - return new OpApplNode(f, generateNewArgs(n.getArgs(), prefix), - n.getTreeNode(), null); + return new OpApplNode(f, generateNewArgs(n.getArgs(), prefix), n.getTreeNode(), null); } case BuiltInKind: { @@ -171,17 +158,14 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { case UserDefinedOpKind: { // in case of a call of a LetInNode - OpDefNode letOp = (OpDefNode) n.getOperator().getToolObject( - substitutionId); + OpDefNode letOp = (OpDefNode) n.getOperator().getToolObject(substitutionId); if (letOp != null) { - return new OpApplNode(letOp, generateNewArgs(n.getArgs(), - prefix), n.getTreeNode(), null); + return new OpApplNode(letOp, generateNewArgs(n.getArgs(), prefix), n.getTreeNode(), null); } // in case of a call of BBuiltInOp e.g. +, - if (BBuiltInOPs.contains(n.getOperator().getName())) { - return new OpApplNode(n.getOperator(), generateNewArgs( - n.getArgs(), prefix), n.stn, null); + return new OpApplNode(n.getOperator(), generateNewArgs(n.getArgs(), prefix), n.stn, null); } // normal userdefined Operator @@ -190,28 +174,23 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { if (op == null) { throw new RuntimeException(); } - return new OpApplNode(op, generateNewArgs(n.getArgs(), - prefix), n.getTreeNode(), null); + return new OpApplNode(op, generateNewArgs(n.getArgs(), prefix), n.getTreeNode(), null); } } - throw new RuntimeException("OpApplkind not implemented jet"); + throw new RuntimeException("OpApplkind not implemented yet"); } - private ExprNode generateNewBuiltInNode(OpApplNode n, String prefix) - throws AbortException { + private ExprNode generateNewBuiltInNode(OpApplNode n, String prefix) throws AbortException { switch (getOpCode(n.getOperator().getName())) { - case OPCODE_exc: { // Except - OpApplNode newNode = new OpApplNode(n.getOperator().getName(), - null, n.getTreeNode(), null); + OpApplNode newNode = new OpApplNode(n.getOperator().getName(), null, n.getTreeNode(), null); n.setToolObject(substitutionId, newNode); // needed for @ node ExprOrOpArgNode[] newArgs = new ExprOrOpArgNode[n.getArgs().length]; newArgs[0] = generateNewExprOrOpArgNode(n.getArgs()[0], prefix); for (int i = 1; i < n.getArgs().length; i++) { OpApplNode pair = (OpApplNode) n.getArgs()[i]; - OpApplNode newPair = new OpApplNode(pair.getOperator() - .getName(), null, pair.getTreeNode(), null); + OpApplNode newPair = new OpApplNode(pair.getOperator().getName(), null, pair.getTreeNode(), null); // needed for @ node: we have to set a reference from the old // pair to the new pair // before evaluation the arguments which may be contains a @ @@ -233,10 +212,9 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { f.getTreeNode(), null, null); f.setToolObject(substitutionId, newSymbols[i]); } - OpApplNode newNode = new OpApplNode(n.getOperator().getName(), + return new OpApplNode(n.getOperator().getName(), newSymbols, generateNewArgs(n.getArgs(), prefix), null, null, null, n.getTreeNode(), null); - return newNode; } case OPCODE_rfs: @@ -255,8 +233,7 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { FormalParamNode[] temp = new FormalParamNode[oldParams[i].length]; for (int j = 0; j < oldParams[i].length; j++) { FormalParamNode f = oldParams[i][j]; - temp[j] = new FormalParamNode(f.getName(), f.getArity(), - f.getTreeNode(), null, null); + temp[j] = new FormalParamNode(f.getName(), f.getArity(), f.getTreeNode(), null, null); // set reference the old param to the new f.setToolObject(substitutionId, temp[j]); } @@ -266,25 +243,20 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { // new ranges ExprNode[] ranges = new ExprNode[n.getBdedQuantBounds().length]; for (int i = 0; i < n.getBdedQuantBounds().length; i++) { - ranges[i] = generateNewExprNode(n.getBdedQuantBounds()[i], - prefix); + ranges[i] = generateNewExprNode(n.getBdedQuantBounds()[i], prefix); } - OpApplNode newNode = new OpApplNode(n.getOperator().getName(), + return new OpApplNode(n.getOperator().getName(), null, generateNewArgs(n.getArgs(), prefix), newParams, n.isBdedQuantATuple(), ranges, n.getTreeNode(), null); - return newNode; } default: { // = - OpApplNode newNode = new OpApplNode(n.getOperator(), - generateNewArgs(n.getArgs(), prefix), n.getTreeNode(), null); - return newNode; + return new OpApplNode(n.getOperator(), generateNewArgs(n.getArgs(), prefix), n.getTreeNode(), null); } } } - private ExprOrOpArgNode[] generateNewArgs(ExprOrOpArgNode[] args, - String prefix) throws AbortException { + private ExprOrOpArgNode[] generateNewArgs(ExprOrOpArgNode[] args, String prefix) throws AbortException { ExprOrOpArgNode[] res = new ExprOrOpArgNode[args.length]; for (int i = 0; i < args.length; i++) { res[i] = generateNewExprOrOpArgNode(args[i], prefix); @@ -304,5 +276,4 @@ public class InstanceTransformation extends BuiltInOPs implements ASTConstants { } return newParams; } - } diff --git a/src/main/java/de/tla2b/analysis/SymbolRenamer.java b/src/main/java/de/tla2b/analysis/SymbolRenamer.java index 22c13bc..8d1c8e8 100644 --- a/src/main/java/de/tla2b/analysis/SymbolRenamer.java +++ b/src/main/java/de/tla2b/analysis/SymbolRenamer.java @@ -1,6 +1,5 @@ package de.tla2b.analysis; - import de.tla2b.global.BBuiltInOPs; import de.tla2b.global.TranslationGlobals; import tla2sany.semantic.*; @@ -10,8 +9,7 @@ import java.util.HashSet; import java.util.Hashtable; import java.util.Set; -public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, - ASTConstants { +public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, ASTConstants { private final static Set<String> KEYWORDS = new HashSet<>(); @@ -114,56 +112,57 @@ public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, private final Set<String> globalNames = new HashSet<>(); private final Hashtable<OpDefNode, Set<String>> usedNamesTable = new Hashtable<>(); - public SymbolRenamer(ModuleNode moduleNode, SpecAnalyser specAnalyser) { + private SymbolRenamer(ModuleNode moduleNode, SpecAnalyser specAnalyser) { this.moduleNode = moduleNode; this.usedDefinitions = specAnalyser.getUsedDefinitions(); } - public SymbolRenamer(ModuleNode moduleNode) { + private SymbolRenamer(ModuleNode moduleNode) { this.moduleNode = moduleNode; - usedDefinitions = new HashSet<>(); + this.usedDefinitions = new HashSet<>(); OpDefNode[] defs = moduleNode.getOpDefs(); - usedDefinitions.add(defs[defs.length - 1]); + this.usedDefinitions.add(defs[defs.length - 1]); + } + + public static void run(ModuleNode moduleNode, SpecAnalyser specAnalyser) { + new SymbolRenamer(moduleNode, specAnalyser).start(); } - public void start() { + public static void run(ModuleNode moduleNode) { + new SymbolRenamer(moduleNode).start(); + } + + private void start() { // Variables - for (int i = 0; i < moduleNode.getVariableDecls().length; i++) { - OpDeclNode v = moduleNode.getVariableDecls()[i]; - String newName = incName(v.getName().toString()); + for (OpDeclNode node : moduleNode.getVariableDecls()) { + String newName = incName(node.getName().toString()); globalNames.add(newName); - v.setToolObject(NEW_NAME, newName); + node.setToolObject(NEW_NAME, newName); } // constants - for (int i = 0; i < moduleNode.getConstantDecls().length; i++) { - OpDeclNode c = moduleNode.getConstantDecls()[i]; - String newName = incName(c.getName().toString()); + for(OpDeclNode node : moduleNode.getConstantDecls()) { + String newName = incName(node.getName().toString()); globalNames.add(newName); - c.setToolObject(NEW_NAME, newName); + node.setToolObject(NEW_NAME, newName); } - for (int i = 0; i < moduleNode.getOpDefs().length; i++) { - OpDefNode def = moduleNode.getOpDefs()[i]; - String newName = getOperatorName(def); + for(OpDefNode node : moduleNode.getOpDefs()) { + String newName = getOperatorName(node); globalNames.add(newName); - def.setToolObject(NEW_NAME, newName); - usedNamesTable.put(def, new HashSet<>()); + node.setToolObject(NEW_NAME, newName); + usedNamesTable.put(node, new HashSet<>()); } - for (int i = 0; i < moduleNode.getAssumptions().length; i++) { - AssumeNode assumeNode = moduleNode.getAssumptions()[i]; - visitNode(assumeNode.getAssume(), new HashSet<>()); + for(AssumeNode node : moduleNode.getAssumptions()) { + visitNode(node.getAssume(), new HashSet<>()); } for (int i = moduleNode.getOpDefs().length - 1; i >= 0; i--) { OpDefNode def = moduleNode.getOpDefs()[i]; Set<String> usedNames = usedNamesTable.get(def); - for (int j = 0; j < def.getParams().length; j++) { - FormalParamNode p = def.getParams()[j]; - String paramName = p.getName().toString(); - String newParamName = incName(paramName); - p.setToolObject(NEW_NAME, newParamName); + for (FormalParamNode node : def.getParams()) { + node.setToolObject(NEW_NAME, incName(node.getName().toString())); //Parameter of different definitions calling each other can have the same name //usedNames.add(newParamName); } @@ -176,13 +175,11 @@ public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, // System.out.println(n.toString(1)+ " "+ n.getKind()); switch (n.getKind()) { - case LetInKind: { LetInNode letInNode = (LetInNode) n; OpDefNode[] defs = letInNode.getLets(); - // Initialize all local definitions (get a new name, get an empty - // list) + // Initialize all local definitions (get a new name, get an empty list) for (OpDefNode def : defs) { String newName = getOperatorName(def); globalNames.add(newName); @@ -197,11 +194,8 @@ public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, for (int i = defs.length - 1; i >= 0; i--) { OpDefNode def = defs[i]; Set<String> usedNamesOfDef = usedNamesTable.get(def); - for (int j = 0; j < def.getParams().length; j++) { - FormalParamNode p = def.getParams()[j]; - String paramName = p.getName().toString(); - String newParamName = incName(paramName); - p.setToolObject(NEW_NAME, newParamName); + for (FormalParamNode node : def.getParams()) { + node.setToolObject(NEW_NAME, incName(node.getName().toString())); //usedNamesOfDef.add(newParamName); } visitNode(def.getBody(), usedNamesOfDef); @@ -212,7 +206,6 @@ public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, case OpApplKind: { OpApplNode opApplNode = (OpApplNode) n; switch (opApplNode.getOperator().getKind()) { - case BuiltInKind: { visitBuiltinNode(opApplNode, usedNames); return; @@ -228,24 +221,23 @@ public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, usedNamesTable.get(def).addAll(usedNames); } - - for (int i = 0; i < n.getChildren().length; i++) { - visitNode(opApplNode.getArgs()[i], usedNames); + for (SemanticNode node : n.getChildren()) { + visitNode(node, usedNames); } return; } } - for (int i = 0; i < opApplNode.getArgs().length; i++) { - visitNode(opApplNode.getArgs()[i], usedNames); + for (ExprOrOpArgNode node : opApplNode.getArgs()) { + visitNode(node, usedNames); } return; } } if (n.getChildren() != null) { - for (int i = 0; i < n.getChildren().length; i++) { - visitNode(n.getChildren()[i], usedNames); + for (SemanticNode node : n.getChildren()) { + visitNode(node, usedNames); } } } @@ -266,28 +258,25 @@ public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, Set<String> newUsedNames = new HashSet<>(usedNames); for (FormalParamNode[] formalParamNodes : params) { for (FormalParamNode param : formalParamNodes) { - String paramName = param.getName().toString(); - String newName = incName(paramName, usedNames); + String newName = incName(param.getName().toString(), usedNames); param.setToolObject(NEW_NAME, newName); newUsedNames.add(newName); } } - for (int i = 0; i < opApplNode.getBdedQuantBounds().length; i++) { - visitNode(opApplNode.getBdedQuantBounds()[i], usedNames); + for (ExprNode node : opApplNode.getBdedQuantBounds()) { + visitNode(node, usedNames); } visitNode(opApplNode.getArgs()[0], newUsedNames); - return; } default: - for (int i = 0; i < opApplNode.getArgs().length; i++) { - if (opApplNode.getArgs()[i] != null) { - visitNode(opApplNode.getArgs()[i], usedNames); + for (ExprOrOpArgNode node : opApplNode.getArgs()) { + if (node != null) { + visitNode(node, usedNames); } } - } } @@ -295,9 +284,8 @@ public class SymbolRenamer extends BuiltInOPs implements TranslationGlobals, String newName = def.getName().toString(); if (BBUILTIN_OPERATOR.containsKey(newName)) { - // a B built-in operator is defined outside of a standard module - if (!STANDARD_MODULES.contains(def.getSource() - .getOriginallyDefinedInModuleNode().getName().toString())) { + // a B built-in operator is defined outside a standard module + if (!STANDARD_MODULES.contains(def.getSource().getOriginallyDefinedInModuleNode().getName().toString())) { return incName(BBUILTIN_OPERATOR.get(newName)); } } diff --git a/src/main/java/de/tla2b/analysis/SymbolSorter.java b/src/main/java/de/tla2b/analysis/SymbolSorter.java index 34b4616..b457ac9 100644 --- a/src/main/java/de/tla2b/analysis/SymbolSorter.java +++ b/src/main/java/de/tla2b/analysis/SymbolSorter.java @@ -9,19 +9,14 @@ import java.util.Comparator; import java.util.Hashtable; public class SymbolSorter { - private final ModuleNode moduleNode; - public SymbolSorter(ModuleNode moduleNode) { - this.moduleNode = moduleNode; - } - - public void sort() { + public static void sort(ModuleNode moduleNode) { // sort constants - Arrays.sort(moduleNode.getConstantDecls(), new OpDeclNodeComparator()); + sortDeclNodes(moduleNode.getConstantDecls()); // sort variables - Arrays.sort(moduleNode.getVariableDecls(), new OpDeclNodeComparator()); + sortDeclNodes(moduleNode.getVariableDecls()); // sort definitions - Arrays.sort(moduleNode.getOpDefs(), new OpDefNodeComparator()); + sortOpDefNodes(moduleNode.getOpDefs()); } public static void sortDeclNodes(OpDeclNode[] opDeclNodes) { @@ -47,7 +42,6 @@ public class SymbolSorter { } return definitions; } - } class OpDeclNodeComparator implements Comparator<OpDeclNode> { diff --git a/src/main/java/de/tla2bAst/ExpressionTranslator.java b/src/main/java/de/tla2bAst/ExpressionTranslator.java index 64233b1..35f6460 100644 --- a/src/main/java/de/tla2bAst/ExpressionTranslator.java +++ b/src/main/java/de/tla2bAst/ExpressionTranslator.java @@ -132,8 +132,7 @@ public class ExpressionTranslator implements SyntaxTreeConstants { String message = "****TypeError****\n" + e.getLocalizedMessage() + "\n" + expr + "\n"; throw new ExpressionTranslationException(message); } - SymbolRenamer symRenamer = new SymbolRenamer(moduleNode, specAnalyser); - symRenamer.start(); + SymbolRenamer.run(moduleNode, specAnalyser); BAstCreator bASTCreator = new BAstCreator(moduleNode, specAnalyser); this.expressionStart = bASTCreator.expressionStart; @@ -150,8 +149,7 @@ public class ExpressionTranslator implements SyntaxTreeConstants { + "\n" + expr + "\n"; throw new ExpressionTranslationException(message); } - SymbolRenamer symRenamer = new SymbolRenamer(moduleNode, specAnalyser); - symRenamer.start(); + SymbolRenamer.run(moduleNode, specAnalyser); BAstCreator bASTCreator = new BAstCreator(moduleNode, specAnalyser); this.expressionStart = bASTCreator.expressionStart; @@ -165,19 +163,16 @@ public class ExpressionTranslator implements SyntaxTreeConstants { SANY.frontEndMain(spec, moduleName, ToolIO.out); } catch (FrontEndException e) { // Error in Frontend, should never happen - throw new de.tla2b.exceptions.FrontEndException( - "Frontend error! This should never happen.", spec); + throw new de.tla2b.exceptions.FrontEndException("Frontend error! This should never happen.", spec); } if (spec.parseErrors.isFailure()) { - String message = module + "\n\n" + spec.parseErrors; - message += allMessagesToString(ToolIO.getAllMessages()); + String message = module + "\n\n" + spec.parseErrors + allMessagesToString(ToolIO.getAllMessages()); throw new de.tla2b.exceptions.FrontEndException(message, spec); } if (spec.semanticErrors.isFailure()) { - String message = module + "\n\n" + spec.semanticErrors; - message += allMessagesToString(ToolIO.getAllMessages()); + String message = module + "\n\n" + spec.semanticErrors + allMessagesToString(ToolIO.getAllMessages()); throw new de.tla2b.exceptions.FrontEndException(message, spec); } @@ -185,9 +180,7 @@ public class ExpressionTranslator implements SyntaxTreeConstants { ModuleNode n = spec.getExternalModuleTable().rootModule; if (spec.getInitErrors().isFailure()) { System.err.println(spec.getInitErrors()); - throw new de.tla2b.exceptions.FrontEndException( - - allMessagesToString(ToolIO.getAllMessages()), spec); + throw new de.tla2b.exceptions.FrontEndException(allMessagesToString(ToolIO.getAllMessages()), spec); } if (n == null) { // Parse Error diff --git a/src/main/java/de/tla2bAst/Translator.java b/src/main/java/de/tla2bAst/Translator.java index 09032dd..187cfc6 100644 --- a/src/main/java/de/tla2bAst/Translator.java +++ b/src/main/java/de/tla2bAst/Translator.java @@ -198,16 +198,11 @@ public class Translator implements TranslationGlobals { } public Start translate() throws TLA2BException { - InstanceTransformation trans = new InstanceTransformation(moduleNode); - trans.start(); - - SymbolSorter symbolSorter = new SymbolSorter(moduleNode); - symbolSorter.sort(); - PredicateVsExpression predicateVsExpression = new PredicateVsExpression(moduleNode); + InstanceTransformation.run(moduleNode); + SymbolSorter.sort(moduleNode); ConfigfileEvaluator conEval = null; if (modelConfig != null) { - conEval = new ConfigfileEvaluator(modelConfig, moduleNode); conEval.start(); @@ -220,13 +215,12 @@ public class Translator implements TranslationGlobals { specAnalyser.start(); typechecker = new TypeChecker(moduleNode, conEval, specAnalyser); typechecker.start(); - SymbolRenamer symRenamer = new SymbolRenamer(moduleNode, specAnalyser); - symRenamer.start(); - UsedExternalFunctions usedExternalFunctions = new UsedExternalFunctions(moduleNode, specAnalyser); - RecursiveFunctionHandler recursiveFunctionHandler = new RecursiveFunctionHandler(specAnalyser); - BMacroHandler bMacroHandler = new BMacroHandler(specAnalyser, conEval); - bAstCreator = new BAstCreator(moduleNode, conEval, specAnalyser, usedExternalFunctions, predicateVsExpression, - bMacroHandler, recursiveFunctionHandler); + SymbolRenamer.run(moduleNode, specAnalyser); + bAstCreator = new BAstCreator(moduleNode, conEval, specAnalyser, + new UsedExternalFunctions(moduleNode, specAnalyser), + new PredicateVsExpression(moduleNode), + new BMacroHandler(specAnalyser, conEval), + new RecursiveFunctionHandler(specAnalyser)); this.BAst = bAstCreator.getStartNode(); this.typeTable = bAstCreator.getTypeTable(); -- GitLab