From dbe1a4e14fb690a6ee74881122757b0235b87610 Mon Sep 17 00:00:00 2001 From: tempiaa <tempiaa@eurecom.fr> Date: Fri, 24 Jul 2020 15:56:43 +0200 Subject: [PATCH] Fix in syntax checker errors display, fix in true false pragma expected value --- .../modelchecker/SafetyProperty.java | 8 +++--- .../ModelCheckerValidator.java | 4 +-- .../java/ui/AvatarDesignPanelTranslator.java | 26 ++++++++++++------- .../ui/window/JDialogUPPAALValidation.java | 8 +++--- 4 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/main/java/avatartranslator/modelchecker/SafetyProperty.java b/src/main/java/avatartranslator/modelchecker/SafetyProperty.java index 7085d1bda9..967836ba91 100644 --- a/src/main/java/avatartranslator/modelchecker/SafetyProperty.java +++ b/src/main/java/avatartranslator/modelchecker/SafetyProperty.java @@ -269,12 +269,12 @@ public class SafetyProperty { } private String checkExpectedResult(String tmpP) { - if (tmpP.startsWith("T") || tmpP.startsWith("t")) { + if (tmpP.startsWith("T ") || tmpP.startsWith("t ")) { expectedResult = true; - return tmpP.substring(1).trim(); - } else if (tmpP.startsWith("F") || tmpP.startsWith("f")) { + return tmpP.substring(2).trim(); + } else if (tmpP.startsWith("F ") || tmpP.startsWith("f ")) { expectedResult = false; - return tmpP.substring(1).trim(); + return tmpP.substring(2).trim(); } return tmpP; diff --git a/src/main/java/avatartranslator/modelcheckervalidator/ModelCheckerValidator.java b/src/main/java/avatartranslator/modelcheckervalidator/ModelCheckerValidator.java index 23618c6f40..af80169f45 100644 --- a/src/main/java/avatartranslator/modelcheckervalidator/ModelCheckerValidator.java +++ b/src/main/java/avatartranslator/modelcheckervalidator/ModelCheckerValidator.java @@ -286,8 +286,8 @@ public class ModelCheckerValidator { private static String removeExpectedResult(String query) { - if (query.matches("^[TtFf].*")) { - return query.substring(1).trim(); + if (query.matches("^[TtFf]\\s.*")) { + return query.substring(2).trim(); } else { return query; } diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java index 47567278d2..a873c0f27d 100644 --- a/src/main/java/ui/AvatarDesignPanelTranslator.java +++ b/src/main/java/ui/AvatarDesignPanelTranslator.java @@ -425,8 +425,8 @@ public class AvatarDesignPanelTranslator { _pragma = _pragma.trim(); //remove expected result letter from the start if present - if (_pragma.matches("^[TtFf].*")) { - _pragma = _pragma.substring(1).trim(); + if (_pragma.matches("^[TtFf]\\s.*")) { + _pragma = _pragma.substring(2).trim(); } if (_pragma.contains("=") && !(_pragma.contains("==") || _pragma.contains("<=") || _pragma.contains(">=") || _pragma.contains("!="))) { @@ -460,10 +460,10 @@ public class AvatarDesignPanelTranslator { String state1 = _pragma.split("-->")[0]; String state2 = _pragma.split("-->")[1]; // System.out.println("checking... " + state1 + " " + state2); - if (!state1.contains(".") || !state2.contains(".")) { - TraceManager.addDev("Safety Pragma " + _pragma + " cannot be parsed: missing '.'"); - return false; - } +// if (!state1.contains(".") || !state2.contains(".")) { +// TraceManager.addDev("Safety Pragma " + _pragma + " cannot be parsed: missing '.'"); +// return false; +// } if (!statementParser(state1, as, _pragma, tgc)) { return false; } @@ -482,6 +482,10 @@ public class AvatarDesignPanelTranslator { } else { + UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "Pragma " + _pragma + " cannot be parsed: wrong or missing CTL header"); + ce.setTDiagramPanel(adp.getAvatarBDPanel()); + ce.setTGComponent(tgc); + addWarning(ce); TraceManager.addDev("Safety Pragma " + _pragma + " cannot be parsed"); return false; } @@ -501,16 +505,19 @@ public class AvatarDesignPanelTranslator { } state = replaceOperators(state); - if (statementParserRec(state, as, _pragma, tgc) == 1) { + int returnVal = statementParserRec(state, as, _pragma, tgc); + if (returnVal == 1) { UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "Safety Pragma " + _pragma + " has invalid return type"); ce.setTDiagramPanel(adp.getAvatarBDPanel()); ce.setTGComponent(tgc); addWarning(ce); TraceManager.addDev("UPPAAL Pragma " + _pragma + " improperly formatted"); return false; + } else if (returnVal == -1) { + return false; + } else { + return true; } - - return true; //Divide into simple statements @@ -698,6 +705,7 @@ public class AvatarDesignPanelTranslator { } private int statementParserRec(String state, AvatarSpecification as, String _pragma, TGComponent tgc) { + //returns -1 for errors, 0 for boolean result type, and 1 for int result type boolean isNot = false; boolean isNegated = false; diff --git a/src/main/java/ui/window/JDialogUPPAALValidation.java b/src/main/java/ui/window/JDialogUPPAALValidation.java index baa855e6e5..ff6a351031 100644 --- a/src/main/java/ui/window/JDialogUPPAALValidation.java +++ b/src/main/java/ui/window/JDialogUPPAALValidation.java @@ -869,11 +869,11 @@ public class JDialogUPPAALValidation extends javax.swing.JDialog implements Acti query = query.trim(); expectedResult = true; - if (query.startsWith("T") || query.startsWith("t")) { - return query.substring(1).trim(); - } else if (query.startsWith("F") || query.startsWith("f")) { + if (query.startsWith("T ") || query.startsWith("t ")) { + return query.substring(2).trim(); + } else if (query.startsWith("F ") || query.startsWith("f ")) { expectedResult = false; - return query.substring(1).trim(); + return query.substring(2).trim(); } return query; -- GitLab