From ef78f0174bffb10981c89300bec24be30e511779 Mon Sep 17 00:00:00 2001
From: dgelessus <dgelessus@users.noreply.github.com>
Date: Thu, 27 Apr 2023 22:53:55 +0200
Subject: [PATCH] Update parsers to version 2.12.3 (current release)

---
 build.gradle                                    |  2 +-
 .../java/de/tlc4b/analysis/MachineContext.java  | 17 +++++++++--------
 .../analysis/transformation/SeesEliminator.java | 10 +++++-----
 3 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/build.gradle b/build.gradle
index 3b15122..8324e65 100644
--- a/build.gradle
+++ b/build.gradle
@@ -26,7 +26,7 @@ configurations.all {
 	resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
 }
 
-def parser_version = '2.9.25'
+def parser_version = '2.12.3'
 
 dependencies {
 	//implementation(group: 'com.microsoft', name: 'tla2tools', version: '1.4.6')
diff --git a/src/main/java/de/tlc4b/analysis/MachineContext.java b/src/main/java/de/tlc4b/analysis/MachineContext.java
index 184f6bd..3bcadcd 100644
--- a/src/main/java/de/tlc4b/analysis/MachineContext.java
+++ b/src/main/java/de/tlc4b/analysis/MachineContext.java
@@ -38,6 +38,7 @@ import de.be4.classicalb.core.parser.node.AInvariantMachineClause;
 import de.be4.classicalb.core.parser.node.ALambdaExpression;
 import de.be4.classicalb.core.parser.node.ALetSubstitution;
 import de.be4.classicalb.core.parser.node.AMachineHeader;
+import de.be4.classicalb.core.parser.node.AMachineReferenceNoParams;
 import de.be4.classicalb.core.parser.node.AOpSubstitution;
 import de.be4.classicalb.core.parser.node.AOperation;
 import de.be4.classicalb.core.parser.node.AOperationsMachineClause;
@@ -58,6 +59,7 @@ import de.be4.classicalb.core.parser.node.PDefinition;
 import de.be4.classicalb.core.parser.node.PExpression;
 import de.be4.classicalb.core.parser.node.PMachineClause;
 import de.be4.classicalb.core.parser.node.PMachineHeader;
+import de.be4.classicalb.core.parser.node.PMachineReferenceNoParams;
 import de.be4.classicalb.core.parser.node.POperation;
 import de.be4.classicalb.core.parser.node.PPredicate;
 import de.be4.classicalb.core.parser.node.PSet;
@@ -90,7 +92,7 @@ public class MachineContext extends DepthFirstAdapter {
 	private final LinkedHashMap<String, Node> constants;
 	private final LinkedHashMap<String, Node> definitions;
 	private final LinkedHashMap<String, Node> operations;
-	private final LinkedHashMap<String, AIdentifierExpression> seenMachines;
+	private final LinkedHashMap<String, AMachineReferenceNoParams> seenMachines;
 
 	private PMachineHeader header;
 	private AAbstractMachineParseUnit abstractMachineParseUnit;
@@ -124,7 +126,7 @@ public class MachineContext extends DepthFirstAdapter {
 		this.variables = new LinkedHashMap<String, Node>();
 		this.definitions = new LinkedHashMap<String, Node>();
 		this.operations = new LinkedHashMap<String, Node>();
-		this.seenMachines = new LinkedHashMap<String, AIdentifierExpression>();
+		this.seenMachines = new LinkedHashMap<>();
 	}
 
 	public void analyseMachine() {
@@ -383,13 +385,12 @@ public class MachineContext extends DepthFirstAdapter {
 	@Override
 	public void caseASeesMachineClause(ASeesMachineClause node) {
 		this.seesMachineClause = node;
-		List<PExpression> copy = new ArrayList<PExpression>(node.getMachineNames());
-		for (PExpression e : copy) {
-			AIdentifierExpression p = (AIdentifierExpression) e;
-			String name = Utils.getTIdentifierListAsString(p.getIdentifier());
+		for (PMachineReferenceNoParams e : new ArrayList<>(node.getMachineNames())) {
+			AMachineReferenceNoParams p = (AMachineReferenceNoParams) e;
+			String name = Utils.getTIdentifierListAsString(p.getMachineName());
 
 			try {
-				exist(p.getIdentifier());
+				identifierAlreadyExists(name);
 			} catch (ScopeException e2) {
 				throw new ScopeException("Machine '" + name + "' is seen twice.");
 			}
@@ -966,7 +967,7 @@ public class MachineContext extends DepthFirstAdapter {
 		return new LinkedHashMap<>(enumValues);
 	}
 
-	public LinkedHashMap<String, AIdentifierExpression> getSeenMachines() {
+	public LinkedHashMap<String, AMachineReferenceNoParams> getSeenMachines() {
 		return new LinkedHashMap<>(seenMachines);
 	}
 
diff --git a/src/main/java/de/tlc4b/analysis/transformation/SeesEliminator.java b/src/main/java/de/tlc4b/analysis/transformation/SeesEliminator.java
index fb46a53..aa51bfa 100644
--- a/src/main/java/de/tlc4b/analysis/transformation/SeesEliminator.java
+++ b/src/main/java/de/tlc4b/analysis/transformation/SeesEliminator.java
@@ -13,12 +13,13 @@ import de.be4.classicalb.core.parser.node.AAssertionsMachineClause;
 import de.be4.classicalb.core.parser.node.AConjunctPredicate;
 import de.be4.classicalb.core.parser.node.AConstantsMachineClause;
 import de.be4.classicalb.core.parser.node.ADefinitionsMachineClause;
-import de.be4.classicalb.core.parser.node.AIdentifierExpression;
+import de.be4.classicalb.core.parser.node.AMachineReferenceNoParams;
 import de.be4.classicalb.core.parser.node.APropertiesMachineClause;
 import de.be4.classicalb.core.parser.node.ASeesMachineClause;
 import de.be4.classicalb.core.parser.node.PDefinition;
 import de.be4.classicalb.core.parser.node.PExpression;
 import de.be4.classicalb.core.parser.node.PMachineClause;
+import de.be4.classicalb.core.parser.node.PMachineReferenceNoParams;
 import de.be4.classicalb.core.parser.node.PParseUnit;
 import de.be4.classicalb.core.parser.node.PPredicate;
 import de.be4.classicalb.core.parser.node.Start;
@@ -52,11 +53,10 @@ public class SeesEliminator extends DepthFirstAdapter {
 	}
 
 	public void inASeesMachineClause(ASeesMachineClause node) {
-		LinkedList<PExpression> machineNames = node.getMachineNames();
-		for (PExpression pExpression : machineNames) {
-			AIdentifierExpression id = (AIdentifierExpression) pExpression;
+		for (PMachineReferenceNoParams pExpression : node.getMachineNames()) {
+			AMachineReferenceNoParams id = (AMachineReferenceNoParams) pExpression;
 			String machineName = Utils
-					.getTIdentifierListAsString(id.getIdentifier());
+					.getTIdentifierListAsString(id.getMachineName());
 			if (!resolvedMachines.contains(machineName)) {
 				resolvedMachines.add(machineName);
 				Start start = parsedMachines.get(machineName);
-- 
GitLab