diff --git a/src/main/java/avatartranslator/AvatarTuple.java b/src/main/java/avatartranslator/AvatarTuple.java index dd5e4cad31b907858dcf575631b8bf5a02e150ce..cf4605a1602d227b9dc0afc8c9f97c668c3a07cf 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 a417e569a004b928f722046a87cfc099b5116163..044d3360f5d1780cc1c7a036f8386f6bf034b3b1 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);*/ }