From 160aa42b133c412e8201aedabfa5d417301c4128 Mon Sep 17 00:00:00 2001
From: Sophie Coudert <sophie.coudert@telecom-paris.fr>
Date: Wed, 12 Jun 2024 17:28:31 +0200
Subject: [PATCH] save

---
 .../java/avatartranslator/AvatarSpecification.java   |  6 +++---
 .../avatartranslator/tosysmlv2/AvatarFromSysML.java  |  2 ++
 .../tosysmlv2/AvatarFromSysMLLexer.java              |  4 ++--
 .../tosysmlv2/AvatarFromSysMLParser.java             | 12 ++++++++++++
 .../tosysmlv2/javacup/AvatarFromSysML.jcup           | 10 ++++++++--
 src/main/java/cli/Action.java                        |  1 -
 6 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/src/main/java/avatartranslator/AvatarSpecification.java b/src/main/java/avatartranslator/AvatarSpecification.java
index d073de496a..6937054749 100644
--- a/src/main/java/avatartranslator/AvatarSpecification.java
+++ b/src/main/java/avatartranslator/AvatarSpecification.java
@@ -37,7 +37,7 @@
  */
 
 package avatartranslator;
-
+import avatartranslator.tosysmlv2.*;
 import avatartranslator.intboolsolver.AvatarIBSolver;
 import myutil.Conversion;
 import myutil.NameChecker;
@@ -1746,8 +1746,8 @@ public class AvatarSpecification extends AvatarElement implements IBSParamSpec {
 
     // SysML V2
     public static AvatarSpecification makeFromSysMLV2(String pathToFile) {
-        AvatarSpecification as = new AvatarSpecification(pathToFile, null);
-        return as;
+        AvatarFromSysML builder = new AvatarFromSysML();
+        return builder.sysMLtoSpec(pathToFile);
     }
 
     public List<String> getExtraTypes() {
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
index 0026b42853..19181dee2e 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysML.java
@@ -71,6 +71,7 @@ public class AvatarFromSysML {
         out.println(_err.toString());
     }
     public AvatarSpecification sysMLtoSpec(String _fileName) {
+        System.out.println("$$$$$$$$$$ BEGINNING $$$$$$$$$$$$");
         AvatarFromSysMLParser parser;
         try { parser =
                 new AvatarFromSysMLParser(new AvatarFromSysMLLexer(new FileReader(_fileName)),
@@ -93,6 +94,7 @@ public class AvatarFromSysML {
         buildDataTypes();
         buildBlocks();
         buildRelations();
+        System.out.println("$$$$$$$$$$ DONE $$$$$$$$$$$$");
         return avSpec;
     }
 
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
index e3e5c9fcec..f4ac47674e 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 12/06/2024 15:10 */
+/* The following code was generated by JFlex 1.4.3 on 12/06/2024 17:20 */
 
 package avatartranslator.tosysmlv2;
 import java_cup.runtime.*;
@@ -9,7 +9,7 @@ import avatartranslator.tosysmlv2.AvatarFromSysMLSyntax.*;
 /**
  * This class is a scanner generated by 
  * <a href="http://www.jflex.de/">JFlex</a> 1.4.3
- * on 12/06/2024 15:10 from the specification file
+ * on 12/06/2024 17:20 from the specification file
  * <tt>__AvatarFromSysMLLexer__.jflex</tt>
  */
 public class AvatarFromSysMLLexer implements java_cup.runtime.Scanner {
diff --git a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
index 09f76a6c19..8d5cfda62f 100644
--- a/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
+++ b/src/main/java/avatartranslator/tosysmlv2/AvatarFromSysMLParser.java
@@ -5069,12 +5069,18 @@ class CUP$AvatarFromSysMLParser$actions {
           case 244: // transitionBegin ::= TRANSITION COLON AVTRANSITION_T FIRST IDENT 
             {
               Object RESULT =null;
+		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
+		Location txright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xright;
+		Object t = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4).<Object>value();
 		Location stxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xleft;
 		Location stxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.peek()).xright;
 		Ident st = CUP$AvatarFromSysMLParser$stack.peek().<Ident>value();
 		
         getState(st.getAvatarName());
         getTransition(0);
+        if (!theTransition.declare())
+            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
+                "transition with same index has already been declared", null));
         clearTransitionLbls();
       
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transitionBegin",129, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
@@ -5085,6 +5091,9 @@ class CUP$AvatarFromSysMLParser$actions {
           case 245: // transitionBegin ::= TRANSITION COLON AVTRANSITION_T FIRST IDENT IF INDEX_F EQ INT 
             {
               Object RESULT =null;
+		Location txleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8)).xleft;
+		Location txright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8)).xright;
+		Object t = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8).<Object>value();
 		Location stxleft = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xleft;
 		Location stxright = ((java_cup.runtime.ComplexSymbolFactory.ComplexSymbol)CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4)).xright;
 		Ident st = CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-4).<Ident>value();
@@ -5094,6 +5103,9 @@ class CUP$AvatarFromSysMLParser$actions {
 		
        getState(st.getAvatarName());
        getTransition(i-1);
+        if (!theTransition.declare())
+            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
+                "transition with same index has already been declared", null));
        clearTransitionLbls();
      
               CUP$AvatarFromSysMLParser$result = parser.getSymbolFactory().newSymbol("transitionBegin",129, CUP$AvatarFromSysMLParser$stack.elementAt(CUP$AvatarFromSysMLParser$top-8), CUP$AvatarFromSysMLParser$stack.peek(), RESULT);
diff --git a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
index 21066b07e2..cb28b4ec71 100644
--- a/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
+++ b/src/main/java/avatartranslator/tosysmlv2/javacup/AvatarFromSysML.jcup
@@ -1533,14 +1533,20 @@ transition ::=
       :}
 ;
 transitionBegin ::=
-      TRANSITION COLON AVTRANSITION_T FIRST IDENT:st {:
+      TRANSITION:t COLON AVTRANSITION_T FIRST IDENT:st {:
         getState(st.getAvatarName());
         getTransition(0);
+        if (!theTransition.declare())
+            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
+                "transition with same index has already been declared", null));
         clearTransitionLbls();
       :}
-    | TRANSITION COLON AVTRANSITION_T FIRST IDENT:st IF INDEX_F EQ INT:i {:
+    | TRANSITION:t COLON AVTRANSITION_T FIRST IDENT:st IF INDEX_F EQ INT:i {:
        getState(st.getAvatarName());
        getTransition(i-1);
+        if (!theTransition.declare())
+            addError(new AvatarFromSysMLError(AvatarFromSysMLError.LOWERROR, txleft,
+                "transition with same index has already been declared", null));
        clearTransitionLbls();
      :}
 ;
diff --git a/src/main/java/cli/Action.java b/src/main/java/cli/Action.java
index 3ede8b7940..ce6fe5304b 100644
--- a/src/main/java/cli/Action.java
+++ b/src/main/java/cli/Action.java
@@ -2358,7 +2358,6 @@ public class Action extends Command implements ProVerifOutputListener {
                 }
 
                 as = AvatarSpecification.makeFromSysMLV2(commands[0]);
-
                 if (interpreter.mgui != null) {
                     interpreter.mgui.gtm.setAvatarSpecification(as);
                 }
-- 
GitLab