From 8873509b8f800e4c75f3c5cd2ec67fe7ae30e98f Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr> Date: Tue, 13 Jan 2009 08:56:09 +0000 Subject: [PATCH] update of the UPPAAL code generator --- src/translator/ADParallel.java | 3 +++ src/translator/TURTLEModelChecker.java | 4 +++- src/translator/TURTLEModeling.java | 18 ++++++++++++------ src/translator/touppaal/TURTLE2UPPAAL.java | 6 +++++- src/ui/DesignPanelTranslator.java | 6 +++--- src/uppaaldesc/UPPAALTemplate.java | 6 ++++++ 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/translator/ADParallel.java b/src/translator/ADParallel.java index 10a562343c..f7a9706a9d 100755 --- a/src/translator/ADParallel.java +++ b/src/translator/ADParallel.java @@ -143,6 +143,9 @@ public class ADParallel extends ADComponent implements NonBlockingADComponent, M } public int nbGate() { + if (synchroGate == null) { + return 0; + } return synchroGate.size(); } diff --git a/src/translator/TURTLEModelChecker.java b/src/translator/TURTLEModelChecker.java index 7638106773..fc2b5826a5 100755 --- a/src/translator/TURTLEModelChecker.java +++ b/src/translator/TURTLEModelChecker.java @@ -397,8 +397,10 @@ public class TURTLEModelChecker { } action = ((ADActionStateWithGate)ad1).getActionValue(); - if (action.length() > 0) { + if ((action!= null) && (action.length() > 0)) { parsing(t, ad1, "actiongate", action, errors); + } else { + System.out.println("null action on gate=" + ((ADActionStateWithGate)ad1).getGate().getName() + action); } } else if (ad1 instanceof ADActionStateWithParam) { diff --git a/src/translator/TURTLEModeling.java b/src/translator/TURTLEModeling.java index 87e5e3f6c3..5d4c40d8b1 100755 --- a/src/translator/TURTLEModeling.java +++ b/src/translator/TURTLEModeling.java @@ -797,19 +797,25 @@ public class TURTLEModeling { } if (index2 == -1) { index2 = index3; + } + index4 = Math.min(index1, index2); index4 = Math.min(index4, index3); if (index4 > 0) { paramName = s.substring(index+1, index4+index+1); paramName = paramName.trim(); - if (paramName.indexOf(':') == -1) { - p = t.getParamByName(paramName); - if (p != null) { - paramName = paramName + ":" + p.getType(); - } else { - return null; + try { + int x = Integer.decode(paramName).intValue(); + } catch (Exception e) { + if (paramName.indexOf(':') == -1) { + p = t.getParamByName(paramName); + if (p != null) { + paramName = paramName + ":" + p.getType(); + } else { + return null; + } } } ret = ret + c + paramName; diff --git a/src/translator/touppaal/TURTLE2UPPAAL.java b/src/translator/touppaal/TURTLE2UPPAAL.java index 4387468a7b..b3c259043e 100755 --- a/src/translator/touppaal/TURTLE2UPPAAL.java +++ b/src/translator/touppaal/TURTLE2UPPAAL.java @@ -530,7 +530,7 @@ public class TURTLE2UPPAAL { template.addDeclaration(p.getName() + " = " + p.getValue() + ";\n"); } - //template.addDeclaration("int waitgroupid__;\n"); + template.addDeclaration("int waitgroupid__;\n"); template.addDeclaration("clock h__;\n"); for(Gate g:gatesWithInternalSynchro) { @@ -2252,6 +2252,7 @@ public class TURTLE2UPPAAL { while(iterator.hasNext()) { template = (UPPAALTemplate)(iterator.next()); t = tm.getTClassWithName(template.getName()); + System.out.println("temp=" + template.getName()); if (t != null) { if (templatesWithMultipleProcesses.contains(template)) { table.setIds(template, id, id+nb-1); @@ -2270,6 +2271,7 @@ public class TURTLE2UPPAAL { table.setIds(template, id, id); id += nb; } else { + //System.out.println("temp=" + template.getName()); dec += template.getName() + "__" + id + " = " + template.getName() + "();\n"; system += template.getName() + "__" + id; table.setIds(template, id, id); @@ -2277,6 +2279,8 @@ public class TURTLE2UPPAAL { } } } else { + System.out.println("temp=" + template.getName()); + template.removeParameter(); dec += template.getName() + "__" + id + " = " + template.getName() + "();\n"; system += template.getName() + "__" + id; } diff --git a/src/ui/DesignPanelTranslator.java b/src/ui/DesignPanelTranslator.java index 00e17cafb1..166817e863 100755 --- a/src/ui/DesignPanelTranslator.java +++ b/src/ui/DesignPanelTranslator.java @@ -359,11 +359,11 @@ public class DesignPanelTranslator { g = t.getGateFromActionState(s); p = t.getParamFromActionState(s); if ((g != null) && (nbActions == 1)){ - //System.out.println("Action state with gate found " + g.getName() + " value:" + t.getActionValueFromActionState(s)); + System.out.println("Action state with gate found " + g.getName() + " value:" + t.getActionValueFromActionState(s)); adag = new ADActionStateWithGate(g); ad.addElement(adag); s1 = t.getActionValueFromActionState(s); - //System.out.println("s1=" + s1); + System.out.println("s1=" + s1); /*if (s1 == null) { System.out.println("oh ho !"); }*/ @@ -380,7 +380,7 @@ public class DesignPanelTranslator { return; } s1 = TURTLEModeling.addTypeToDataReceiving(t, s1); - //System.out.println("Adding type done s1=" + s1); + System.out.println("Adding type done s1=" + s1); adag.setActionValue(s1); listE.addCor(adag, tgc); } else if ((p != null) && (nbActions == 1)){ diff --git a/src/uppaaldesc/UPPAALTemplate.java b/src/uppaaldesc/UPPAALTemplate.java index 6b38b5f93e..a7bef78701 100755 --- a/src/uppaaldesc/UPPAALTemplate.java +++ b/src/uppaaldesc/UPPAALTemplate.java @@ -96,6 +96,12 @@ public class UPPAALTemplate { parameter += _dec; } + public void removeParameter() { + parameter = ""; + } + + + public void setInitLocation(UPPAALLocation _loc) { initLocation = _loc; } -- GitLab