From bd7a4a6cf3dad35c1bbcca128cc4119ebe1d0d3f Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr> Date: Wed, 17 May 2017 18:30:15 +0200 Subject: [PATCH] Resolving bug on no next operator --- executablecode/Makefile.src | 2 +- src/tmltranslator/TMLSyntaxChecking.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/executablecode/Makefile.src b/executablecode/Makefile.src index cdf12b5430..9c894c91e5 100755 --- a/executablecode/Makefile.src +++ b/executablecode/Makefile.src @@ -1 +1 @@ -SRCS = generated_src/main.c generated_src/TestBench.c generated_src/EmergencySimulator.c generated_src/CarPositionSimulator.c generated_src/GPSSensor.c generated_src/RadarSensor.c generated_src/SpeedSensor.c generated_src/Communication.c generated_src/CorrectnessChecking.c generated_src/NeighbourhoodTableManagement.c generated_src/DSRSC_Management.c generated_src/PTC.c generated_src/DrivingPowerReductionStrategy.c generated_src/BCU.c generated_src/BrakeManagement.c generated_src/DangerAvoidanceStrategy.c generated_src/CSCU.c generated_src/VehiculeDynamicsManagement.c generated_src/PlausibilityCheck.c generated_src/ObjectListManagement.c \ No newline at end of file +SRCS = generated_src/main.c generated_src/ObserverProp1.c generated_src/RemotelyControlledMicrowave.c generated_src/MicroWaveOven.c generated_src/Bell.c generated_src/ControlPanel.c generated_src/Controller.c generated_src/Magnetron.c generated_src/Door.c \ No newline at end of file diff --git a/src/tmltranslator/TMLSyntaxChecking.java b/src/tmltranslator/TMLSyntaxChecking.java index 8c984c437c..6a77696baa 100755 --- a/src/tmltranslator/TMLSyntaxChecking.java +++ b/src/tmltranslator/TMLSyntaxChecking.java @@ -66,6 +66,7 @@ public class TMLSyntaxChecking { private final String UNDECLARED_VARIABLE = "unknown variable"; private final String SYNTAX_ERROR_VARIABLE_EXPECTED = "syntax error (variable expected)"; private final String TIME_UNIT_ERROR = "unknown time unit"; + private final String NO_NEXT_OPERATOR_ERROR = "No next operator"; private ArrayList<TMLError> errors; @@ -93,6 +94,8 @@ public class TMLSyntaxChecking { checkReadAndWriteInChannelsEventsAndRequests(); checkActionSyntax(); + + checkNextActions(); } public int hasErrors() { @@ -125,6 +128,22 @@ public class TMLSyntaxChecking { errors.add(error); } + + public void checkNextActions() { + for(TMLTask t: tmlm.getTasks()) { + TMLActivity tactivity = t.getActivityDiagram(); + int n = tactivity.nElements(); + for(int i=0; i<n; i++) { + TMLActivityElement elt = tactivity.get(i); + if (!(elt instanceof TMLStopState)) { + if(elt.getNbNext() == 0) { + addError(t, elt, elt.getName() + ": " + NO_NEXT_OPERATOR_ERROR, TMLError.ERROR_BEHAVIOR); + } + } + } + } + } + public void checkReadAndWriteInChannelsEventsAndRequests() { TMLChannel ch; TMLEvent evt; -- GitLab