From d56eec4d15dae71787f8ba73ad44419a18477dbf Mon Sep 17 00:00:00 2001 From: Sophie Coudert <sophie.coudert@telecom-paris.fr> Date: Wed, 29 Mar 2023 16:57:10 +0200 Subject: [PATCH] integrating IBS in AvatarSyntaxChecker --- .../avatartranslator/AvatarSyntaxChecker.java | 44 +++++-------------- .../avatartranslator/AvatarIBSParserTest.java | 21 ++++----- .../java/cli/CLIAvatarModelCheckerTest.java | 4 +- 3 files changed, 24 insertions(+), 45 deletions(-) diff --git a/src/main/java/avatartranslator/AvatarSyntaxChecker.java b/src/main/java/avatartranslator/AvatarSyntaxChecker.java index 46219fb6bd..ed5800c4fb 100644 --- a/src/main/java/avatartranslator/AvatarSyntaxChecker.java +++ b/src/main/java/avatartranslator/AvatarSyntaxChecker.java @@ -38,6 +38,8 @@ package avatartranslator; +import avatartranslator.intboolsolver.AvatarIBSExpressionClass; +import avatartranslator.intboolsolver.AvatarIBSolver; import compiler.tmlparser.ParseException; import compiler.tmlparser.SimpleNode; import compiler.tmlparser.TMLExprParser; @@ -45,6 +47,7 @@ import compiler.tmlparser.TokenMgrError; import myutil.Conversion; import myutil.NameChecker; import myutil.TraceManager; +import avatartranslator.intboolsolver.AvatarIBSParser; import java.io.StringReader; import java.util.ArrayList; @@ -376,21 +379,8 @@ public class AvatarSyntaxChecker { //TraceManager.addDev("Testing guard expr=" + act); - AvatarExpressionSolver e1 = new AvatarExpressionSolver(act); - - if (e1.buildExpression()) { - //TraceManager.addDev("Build ok. guard expr=" + act); - - //TraceManager.addDev("Testing evaluation. guard expr=" + act); - - if (e1.getReturnType() != AvatarExpressionSolver.IMMEDIATE_BOOL) { - return -1; - } - - return 0; - } - - return -1; + AvatarIBSExpressionClass.BExpr e1 = (AvatarIBSExpressionClass.BExpr) AvatarIBSolver.parser.parseBool(act); + return (e1!=null?0:-1); /*BoolExpressionEvaluator bee = new BoolExpressionEvaluator(); @@ -428,17 +418,8 @@ public class AvatarSyntaxChecker { act = Conversion.putVariableValueInString(AvatarSpecification.ops, act, aa.getName(), aa.getDefaultInitialValue()); } - AvatarExpressionSolver e1 = new AvatarExpressionSolver(act); - boolean ret = e1.buildExpression(); - if (!ret) { - return -1; - } - - if (e1.getReturnType() == AvatarExpressionSolver.IMMEDIATE_INT) { - return 0; - } - - return -1; + AvatarIBSExpressionClass.IExpr e1 = (AvatarIBSExpressionClass.IExpr) AvatarIBSolver.parser.parseInt(act); + return (e1!=null?0:-1); /*IntExpressionEvaluator iee = new IntExpressionEvaluator(); @@ -488,12 +469,9 @@ public class AvatarSyntaxChecker { act = Conversion.putVariableValueInString(AvatarSpecification.ops, act, aa.getName(), aa.getDefaultInitialValueTF()); } - AvatarExpressionSolver e1 = new AvatarExpressionSolver(act); + AvatarIBSExpressionClass.BExpr e1 = (AvatarIBSExpressionClass.BExpr) AvatarIBSolver.parser.parseBool(act); - if (e1.buildExpression()) { - return 1; - } - return 0; + return (e1==null?0:1); } @@ -530,8 +508,8 @@ public class AvatarSyntaxChecker { //TraceManager.addDev("3. Now with avatar expression solver:" + _expr); - AvatarExpressionSolver aee = new AvatarExpressionSolver(act); - if (!(aee.buildExpression())) { + AvatarIBSExpressionClass.BExpr aee = (AvatarIBSExpressionClass.BExpr) AvatarIBSolver.parser.parseBool(act); + if (aee==null) { TraceManager.addDev("4. Error with avatar expression solver:" + act); return -1; } diff --git a/ttool/src/test/java/avatartranslator/AvatarIBSParserTest.java b/ttool/src/test/java/avatartranslator/AvatarIBSParserTest.java index 96e2dda32c..98f149e71f 100644 --- a/ttool/src/test/java/avatartranslator/AvatarIBSParserTest.java +++ b/ttool/src/test/java/avatartranslator/AvatarIBSParserTest.java @@ -277,7 +277,6 @@ public class AvatarIBSParserTest { attC.clearAttributes(); AvatarIBSExpressionClass.IExpr e1 = (AvatarIBSExpressionClass.IExpr) parser.parseInt(as, "block1.x + block2.y"); - System.out.println(e1); assertTrue(e1 != null); assertTrue(attC.containsElementAttribute(block1.getAttribute(0))); assertTrue(attC.containsElementAttribute(block2.getAttribute(1))); @@ -296,23 +295,25 @@ public class AvatarIBSParserTest { assertTrue(e2.eval(ss) == true); assertTrue(e4.eval(ss) == -2); + // visual test (among others, test toString) int i; String[] str = { "block1.x", "block2.y", - "block1.x + block2.y", - "block1.x - block2.y", - "block1.x * block2.y", - "block1.x / block2.y", - "block1.x / (block2.y * 3)" + "block1.x + block2.y > 3", + "block1.x - block2.y < 5 ", + "not(block1.x + block2.y<=3)", + "not(block1.x - block2.y>=5)", + "block1.x == true", + "(2 && block2.y) == 4" }; for (i = 0; i < str.length; i++) { - e1 = (AvatarIBSExpressionClass.IExpr) parser.parseInt(as, str[i]); - assertTrue(e1 != null); - System.out.println(str[i] + " ==> " + e1 + " $$ " + e1.eval(ss)); + e2 = (AvatarIBSExpressionClass.BExpr) parser.parseBool(as, str[i]); + assertTrue(e2 != null); + System.out.println(str[i] + " ==> " + e2 + " $$ " + e2.eval(ss)); } - + // end of visual test as.removeConstants(); as.sortAttributes(); diff --git a/ttool/src/test/java/cli/CLIAvatarModelCheckerTest.java b/ttool/src/test/java/cli/CLIAvatarModelCheckerTest.java index 8acd5787a6..a228c365f5 100644 --- a/ttool/src/test/java/cli/CLIAvatarModelCheckerTest.java +++ b/ttool/src/test/java/cli/CLIAvatarModelCheckerTest.java @@ -483,8 +483,8 @@ public class CLIAvatarModelCheckerTest extends AbstractTest implements Interpret graph.computeStates(); System.out.println("random Cstates=" + graph.getNbOfStates() + " transitions=" + graph.getNbOfTransitions()); - assertTrue(graph.getNbOfStates() == 6); - assertTrue(graph.getNbOfTransitions() == 5); + assertTrue(graph.getNbOfStates() == 49); + assertTrue(graph.getNbOfTransitions() == 48); } -- GitLab