diff --git a/src/main/java/avatartranslator/AvatarSpecification.java b/src/main/java/avatartranslator/AvatarSpecification.java index d073de496afdcd592d7b3a1207ccd688801b8149..693705474956f49aac2cdd52660511d3bdc4328c 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 0026b42853df9be0ab3689c9aa6331285f3f5dc7..19181dee2e1f79fdb14c1412e1e7476436a9791b 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 e3e5c9fcecfcb8d5ebfaddba743dfdc6568f709e..f4ac47674e2d6b37b971da119a158bf6769d93ad 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 09f76a6c19a3fa99ad5d44eec3034c95f39754c5..8d5cfda62f457946eba4f2ac338d80f0ef934f99 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 21066b07e2b70e7adba143bdb0a27e6396d8fbf1..cb28b4ec71c658cfe898ffc70d92d239933f2885 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 3ede8b7940b771a554c059df6534fee24d0422c7..ce6fe5304bd176fbda04701b8cd48d9003307127 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); }