From 100b216c9637e2c8386e84107cd19501de78c671 Mon Sep 17 00:00:00 2001 From: hansen <dominik_hansen@web.de> Date: Fri, 2 May 2014 11:33:23 +0200 Subject: [PATCH] Changed precedence of the cartesian product operator. --- .../de/tlc4b/analysis/PrecedenceCollector.java | 8 ++++++-- .../de/tlc4b/prettyprint/PrecedenceTest.java | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/test/java/de/tlc4b/prettyprint/PrecedenceTest.java diff --git a/src/main/java/de/tlc4b/analysis/PrecedenceCollector.java b/src/main/java/de/tlc4b/analysis/PrecedenceCollector.java index 559140c..b64dc5e 100644 --- a/src/main/java/de/tlc4b/analysis/PrecedenceCollector.java +++ b/src/main/java/de/tlc4b/analysis/PrecedenceCollector.java @@ -8,6 +8,7 @@ import de.be4.classicalb.core.parser.node.AConvertBoolExpression; import de.be4.classicalb.core.parser.node.ADomainExpression; import de.be4.classicalb.core.parser.node.AMinusOrSetSubtractExpression; import de.be4.classicalb.core.parser.node.AMultOrCartExpression; +import de.be4.classicalb.core.parser.node.APowSubsetExpression; import de.be4.classicalb.core.parser.node.Node; import de.be4.classicalb.core.parser.node.Start; import de.tlc4b.analysis.typerestriction.TypeRestrictor; @@ -50,14 +51,17 @@ public class PrecedenceCollector extends DepthFirstAdapter { put("ASubsetPredicate", 5, 5, false); // put("ANatural1SetExpression", 8, 8, false); // NAT \ {0} + put("APowSubsetExpression", 8, 8, false); put("AUnionExpression", 8, 8, true); put("AIntersectionExpression", 8, 8, true); put("AUnionExpression", 8, 8, true); put("ASetSubtractionExpression", 8, 8, false); put("AIntervalExpression", 9, 9, true); + put("AAddExpression", 10, 10, true); - + + put("AModuloExpression", 10, 11, true); put("AUnaryMinusExpression", 12, 12, false); put("AConcatExpression", 13, 13, true); @@ -137,7 +141,7 @@ public class PrecedenceCollector extends DepthFirstAdapter { p = new Precedence("AMultOrCartExpression", 13, 13, true); } else { // \times - p = new Precedence("AMultOrCartExpression", 10, 13, false); + p = new Precedence("AMultOrCartExpression", 8, 13, false); } precedenceTable.put(node, p); diff --git a/src/test/java/de/tlc4b/prettyprint/PrecedenceTest.java b/src/test/java/de/tlc4b/prettyprint/PrecedenceTest.java new file mode 100644 index 0000000..9bd3f8e --- /dev/null +++ b/src/test/java/de/tlc4b/prettyprint/PrecedenceTest.java @@ -0,0 +1,18 @@ +package de.tlc4b.prettyprint; + +import static de.tlc4b.util.TestUtil.compare; + +import org.junit.Test; + +public class PrecedenceTest { + + @Test + public void testSubsetVsTimes() throws Exception { + String machine = "MACHINE test\n" + + "PROPERTIES POW({1}) * {1} = POW({1}) * {1} \n" + "END"; + String expected = "---- MODULE test----\n" + "EXTENDS Integers\n" + + "ASSUME (SUBSET{1}) \\times {1} = (SUBSET{1}) \\times {1}\n" + + "======"; + compare(expected, machine); + } +} -- GitLab