From 01ced8c9d9be6a333911a508cfbe278f5ef17700 Mon Sep 17 00:00:00 2001
From: Jan Gruteser <jan.gruteser@hhu.de>
Date: Thu, 23 Jan 2025 20:26:52 +0100
Subject: [PATCH] delete duplicate DefinitionCollector

---
 .../transformation/DefinitionCollector.java   | 96 -------------------
 .../transformation/DefinitionsEliminator.java | 14 +--
 2 files changed, 8 insertions(+), 102 deletions(-)
 delete mode 100644 src/main/java/de/tlc4b/analysis/transformation/DefinitionCollector.java

diff --git a/src/main/java/de/tlc4b/analysis/transformation/DefinitionCollector.java b/src/main/java/de/tlc4b/analysis/transformation/DefinitionCollector.java
deleted file mode 100644
index ee05bf4..0000000
--- a/src/main/java/de/tlc4b/analysis/transformation/DefinitionCollector.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package de.tlc4b.analysis.transformation;
-
-import java.util.Hashtable;
-
-import de.be4.classicalb.core.parser.analysis.DepthFirstAdapter;
-import de.be4.classicalb.core.parser.node.AConstraintsMachineClause;
-import de.be4.classicalb.core.parser.node.ADefinitionsMachineClause;
-import de.be4.classicalb.core.parser.node.AExpressionDefinitionDefinition;
-import de.be4.classicalb.core.parser.node.AInitialisationMachineClause;
-import de.be4.classicalb.core.parser.node.AInvariantMachineClause;
-import de.be4.classicalb.core.parser.node.ALocalOperationsMachineClause;
-import de.be4.classicalb.core.parser.node.AOperationsMachineClause;
-import de.be4.classicalb.core.parser.node.APredicateDefinitionDefinition;
-import de.be4.classicalb.core.parser.node.APropertiesMachineClause;
-import de.be4.classicalb.core.parser.node.ASubstitutionDefinitionDefinition;
-import de.be4.classicalb.core.parser.node.PDefinition;
-import de.be4.classicalb.core.parser.node.Start;
-
-/**
- * This class only collects all Definitions of a Machine. Definitions of other
- * files which are included are not contained.
- */
-
-public class DefinitionCollector extends DepthFirstAdapter {
-
-	private final Hashtable<String, PDefinition> definitionsTable;
-	private ADefinitionsMachineClause definitionsMachineClause;
-
-	public Hashtable<String, PDefinition> getDefinitions() {
-		return new Hashtable<>(definitionsTable);
-	}
-
-	public ADefinitionsMachineClause getDefinitionsMachineClause() {
-		return this.definitionsMachineClause;
-	}
-
-	public DefinitionCollector(Start tree) {
-		definitionsTable = new Hashtable<>();
-		tree.apply(this);
-	}
-
-	@Override
-	public void inADefinitionsMachineClause(ADefinitionsMachineClause node) {
-		this.definitionsMachineClause = node;
-	}
-
-	@Override
-	public void caseAPredicateDefinitionDefinition(
-			APredicateDefinitionDefinition node) {
-		definitionsTable.put(node.getName().getText(), node);
-	}
-
-	@Override
-	public void caseASubstitutionDefinitionDefinition(
-			ASubstitutionDefinitionDefinition node) {
-		definitionsTable.put(node.getName().getText(), node);
-	}
-
-	@Override
-	public void caseAExpressionDefinitionDefinition(
-			AExpressionDefinitionDefinition node) {
-		definitionsTable.put(node.getName().getText(), node);
-	}
-
-	/***************************************************************************
-	 * exclude large sections of a machine without machine references by doing
-	 * nothing
-	 */
-
-	@Override
-	public void caseAConstraintsMachineClause(AConstraintsMachineClause node) {
-	}
-
-	@Override
-	public void caseAInvariantMachineClause(AInvariantMachineClause node) {
-	}
-
-	@Override
-	public void caseAOperationsMachineClause(AOperationsMachineClause node) {
-	}
-
-	@Override
-	public void caseAPropertiesMachineClause(APropertiesMachineClause node) {
-	}
-
-	@Override
-	public void caseAInitialisationMachineClause(
-			AInitialisationMachineClause node) {
-	}
-
-	@Override
-	public void caseALocalOperationsMachineClause(
-			ALocalOperationsMachineClause node) {
-	}
-
-}
diff --git a/src/main/java/de/tlc4b/analysis/transformation/DefinitionsEliminator.java b/src/main/java/de/tlc4b/analysis/transformation/DefinitionsEliminator.java
index 4837b2b..0c6cc93 100644
--- a/src/main/java/de/tlc4b/analysis/transformation/DefinitionsEliminator.java
+++ b/src/main/java/de/tlc4b/analysis/transformation/DefinitionsEliminator.java
@@ -4,7 +4,10 @@ import java.util.ArrayList;
 import java.util.Hashtable;
 import java.util.List;
 
+import de.be4.classicalb.core.parser.Definitions;
+import de.be4.classicalb.core.parser.IDefinitions;
 import de.be4.classicalb.core.parser.analysis.DepthFirstAdapter;
+import de.be4.classicalb.core.parser.analysis.checking.DefinitionCollector;
 import de.be4.classicalb.core.parser.node.AAbstractMachineParseUnit;
 import de.be4.classicalb.core.parser.node.ADefinitionExpression;
 import de.be4.classicalb.core.parser.node.ADefinitionPredicate;
@@ -34,7 +37,7 @@ import de.tlc4b.analysis.StandardModules;
  */
 public class DefinitionsEliminator extends DepthFirstAdapter {
 
-	private final Hashtable<String, PDefinition> definitionsTable;
+	private final IDefinitions definitions = new Definitions();
 	private final ArrayList<Hashtable<String, PExpression>> contextStack;
 
 	public static void eliminateDefinitions(Start start){
@@ -42,8 +45,7 @@ public class DefinitionsEliminator extends DepthFirstAdapter {
 	}
 	
 	private DefinitionsEliminator(Start node) {
-		DefinitionCollector collector = new DefinitionCollector(node);
-		definitionsTable = collector.getDefinitions();
+		new DefinitionCollector(definitions).collectDefinitions(node);
 		contextStack = new ArrayList<>();
 		node.apply(this);
 	}
@@ -113,7 +115,7 @@ public class DefinitionsEliminator extends DepthFirstAdapter {
 	@Override
 	public void caseADefinitionSubstitution(ADefinitionSubstitution node) {
 		String name = node.getDefLiteral().getText();
-		PDefinition def = definitionsTable.get(name);
+		PDefinition def = definitions.getDefinition(name);
 
 		ASubstitutionDefinitionDefinition clone = (ASubstitutionDefinitionDefinition) def.clone();
 		Hashtable<String, PExpression> context = new Hashtable<>();
@@ -144,7 +146,7 @@ public class DefinitionsEliminator extends DepthFirstAdapter {
 			return;
 		}
 
-		PDefinition def = definitionsTable.get(name);
+		PDefinition def = definitions.getDefinition(name);
 		AExpressionDefinitionDefinition clone = (AExpressionDefinitionDefinition) def.clone();
 		Hashtable<String, PExpression> context = new Hashtable<>();
 
@@ -164,7 +166,7 @@ public class DefinitionsEliminator extends DepthFirstAdapter {
 	@Override
 	public void caseADefinitionPredicate(ADefinitionPredicate node) {
 		String name = node.getDefLiteral().getText();
-		PDefinition def = definitionsTable.get(name);
+		PDefinition def = definitions.getDefinition(name);
 
 		ArrayList<PExpression> arguments = new ArrayList<>(node.getParameters());
 		if (StandardModules.isKeywordInModuleExternalFunctions(name)) {
-- 
GitLab