From f84cfd80de865f62fbdf47e6b719bddd32455b1c Mon Sep 17 00:00:00 2001 From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr> Date: Mon, 25 Mar 2019 14:54:52 +0100 Subject: [PATCH] Update on intexpr parsing after Florian patch --- src/main/java/avatartranslator/AvatarTuple.java | 5 +++-- .../AvatarIntegerExprParsingAndEvaluationTests.java | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/avatartranslator/AvatarTuple.java b/src/main/java/avatartranslator/AvatarTuple.java index dd5e4cad31..cf4605a160 100644 --- a/src/main/java/avatartranslator/AvatarTuple.java +++ b/src/main/java/avatartranslator/AvatarTuple.java @@ -60,11 +60,12 @@ public class AvatarTuple extends AvatarLeftHand { public static AvatarTuple createFromString (AvatarStateMachineOwner block, String toParse) { AvatarTuple result = null; + toParse = toParse.trim(); - if (toParse.trim().startsWith("(")) { + if (toParse.startsWith("(")) { int indexLParen = toParse.indexOf ("("); int indexRParen = AvatarGuard.getMatchingRParen (toParse, indexLParen); - if (indexRParen < 0) + if (indexRParen != toParse.length () - 1) return null; String[] components = toParse.substring (indexLParen+1, indexRParen).trim().split (","); boolean illFormed = false; diff --git a/ttool/src/test/java/avatartranslator/AvatarIntegerExprParsingAndEvaluationTests.java b/ttool/src/test/java/avatartranslator/AvatarIntegerExprParsingAndEvaluationTests.java index a417e569a0..044d3360f5 100644 --- a/ttool/src/test/java/avatartranslator/AvatarIntegerExprParsingAndEvaluationTests.java +++ b/ttool/src/test/java/avatartranslator/AvatarIntegerExprParsingAndEvaluationTests.java @@ -129,13 +129,15 @@ public class AvatarIntegerExprParsingAndEvaluationTests { testExpr("x = x + x*(y+z)*(x - z)", 570, true); - //testExpr("x = (x + y)*z", 30, true); + testExpr("x = (x + y)*z", 30, true); - //testExpr("x = (x + y)*z + (x+z)/z", 36, true); + testExpr("x = (x + y)*z + (x+z)/z", 36, true); + + testExpr("x = x*((x + y)*z + (x+z)/z)", 360, true); + + testExpr("x = x*((x + y)*z + (x+z)/z)/x", 36, true); - /*res= AvatarGuard.createFromString(A, "else"); - assertTrue(res instanceof AvatarGuardElse);*/ } -- GitLab