Skip to content
Snippets Groups Projects
Commit 100b216c authored by hansen's avatar hansen
Browse files

Changed precedence of the cartesian product operator.

parent c81fa748
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ import de.be4.classicalb.core.parser.node.AConvertBoolExpression; ...@@ -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.ADomainExpression;
import de.be4.classicalb.core.parser.node.AMinusOrSetSubtractExpression; import de.be4.classicalb.core.parser.node.AMinusOrSetSubtractExpression;
import de.be4.classicalb.core.parser.node.AMultOrCartExpression; 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.Node;
import de.be4.classicalb.core.parser.node.Start; import de.be4.classicalb.core.parser.node.Start;
import de.tlc4b.analysis.typerestriction.TypeRestrictor; import de.tlc4b.analysis.typerestriction.TypeRestrictor;
...@@ -50,14 +51,17 @@ public class PrecedenceCollector extends DepthFirstAdapter { ...@@ -50,14 +51,17 @@ public class PrecedenceCollector extends DepthFirstAdapter {
put("ASubsetPredicate", 5, 5, false); put("ASubsetPredicate", 5, 5, false);
// put("ANatural1SetExpression", 8, 8, false); // NAT \ {0} // put("ANatural1SetExpression", 8, 8, false); // NAT \ {0}
put("APowSubsetExpression", 8, 8, false);
put("AUnionExpression", 8, 8, true); put("AUnionExpression", 8, 8, true);
put("AIntersectionExpression", 8, 8, true); put("AIntersectionExpression", 8, 8, true);
put("AUnionExpression", 8, 8, true); put("AUnionExpression", 8, 8, true);
put("ASetSubtractionExpression", 8, 8, false); put("ASetSubtractionExpression", 8, 8, false);
put("AIntervalExpression", 9, 9, true); put("AIntervalExpression", 9, 9, true);
put("AAddExpression", 10, 10, true); put("AAddExpression", 10, 10, true);
put("AModuloExpression", 10, 11, true); put("AModuloExpression", 10, 11, true);
put("AUnaryMinusExpression", 12, 12, false); put("AUnaryMinusExpression", 12, 12, false);
put("AConcatExpression", 13, 13, true); put("AConcatExpression", 13, 13, true);
...@@ -137,7 +141,7 @@ public class PrecedenceCollector extends DepthFirstAdapter { ...@@ -137,7 +141,7 @@ public class PrecedenceCollector extends DepthFirstAdapter {
p = new Precedence("AMultOrCartExpression", 13, 13, true); p = new Precedence("AMultOrCartExpression", 13, 13, true);
} else { } else {
// \times // \times
p = new Precedence("AMultOrCartExpression", 10, 13, false); p = new Precedence("AMultOrCartExpression", 8, 13, false);
} }
precedenceTable.put(node, p); precedenceTable.put(node, p);
......
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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment