diff --git a/src/main/java/de/tlc4b/analysis/PrecedenceCollector.java b/src/main/java/de/tlc4b/analysis/PrecedenceCollector.java index 559140c2640cba38d9675d0cf725207d4953d06a..b64dc5eae64d9cd9722ae58322fe2cc371b42f33 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 0000000000000000000000000000000000000000..9bd3f8eeeec383b931647878dc1d8aa7701b7e6a --- /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); + } +}