Browse Source

Bugfix in parser (can cause LTL model checking to hang).

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@1112 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 17 years ago
parent
commit
6d8a658cce
  1. 23
      prism/src/parser/ast/ExpressionProb.java
  2. 4
      prism/src/parser/ast/ExpressionReward.java
  3. 4
      prism/src/parser/ast/ExpressionSS.java

23
prism/src/parser/ast/ExpressionProb.java

@ -54,7 +54,7 @@ public class ExpressionProb extends Expression
public void setRelOp(String r) public void setRelOp(String r)
{ {
relOp =r;
relOp = r;
} }
public void setProb(Expression p) public void setProb(Expression p)
@ -138,10 +138,14 @@ public class ExpressionProb extends Expression
*/ */
public String getResultName() public String getResultName()
{ {
if (prob != null) return "Result";
else if (relOp.equals("min=")) return "Minimum probability";
else if (relOp.equals("max=")) return "Maximum probability";
else return "Probability";
if (prob != null)
return "Result";
else if (relOp.equals("min="))
return "Minimum probability";
else if (relOp.equals("max="))
return "Maximum probability";
else
return "Probability";
} }
// Methods required for ASTElement: // Methods required for ASTElement:
@ -162,9 +166,10 @@ public class ExpressionProb extends Expression
String s = ""; String s = "";
s += "P" + relOp; s += "P" + relOp;
s += (prob==null) ? "?" : prob.toString();
s += (prob == null) ? "?" : prob.toString();
s += " [ " + expression; s += " [ " + expression;
if (filter != null) s += " "+filter;
if (filter != null)
s += " " + filter;
s += " ]"; s += " ]";
return s; return s;
@ -175,8 +180,8 @@ public class ExpressionProb extends Expression
*/ */
public Expression deepCopy() public Expression deepCopy()
{ {
ExpressionProb expr = new ExpressionProb(expression.deepCopy(), relOp, prob.deepCopy());
expr.setFilter((Filter)filter.deepCopy());
ExpressionProb expr = new ExpressionProb(expression.deepCopy(), relOp, prob == null ? null : prob.deepCopy());
if (filter != null) expr.setFilter((Filter) filter.deepCopy());
expr.setType(type); expr.setType(type);
expr.setPosition(this); expr.setPosition(this);
return expr; return expr;

4
prism/src/parser/ast/ExpressionReward.java

@ -202,10 +202,10 @@ public class ExpressionReward extends Expression
*/ */
public Expression deepCopy() public Expression deepCopy()
{ {
ExpressionReward expr = new ExpressionReward(expression.deepCopy(), relOp, reward.deepCopy());
ExpressionReward expr = new ExpressionReward(expression.deepCopy(), relOp, reward == null ? null : reward.deepCopy());
if (rewardStructIndex != null && rewardStructIndex instanceof Expression) expr.setRewardStructIndex(((Expression)rewardStructIndex).deepCopy()); if (rewardStructIndex != null && rewardStructIndex instanceof Expression) expr.setRewardStructIndex(((Expression)rewardStructIndex).deepCopy());
else expr.setRewardStructIndex(rewardStructIndex); else expr.setRewardStructIndex(rewardStructIndex);
expr.setFilter((Filter)filter.deepCopy());
if (filter != null) expr.setFilter((Filter) filter.deepCopy());
expr.setType(type); expr.setType(type);
expr.setPosition(this); expr.setPosition(this);
return expr; return expr;

4
prism/src/parser/ast/ExpressionSS.java

@ -172,8 +172,8 @@ public class ExpressionSS extends Expression
*/ */
public Expression deepCopy() public Expression deepCopy()
{ {
ExpressionSS expr = new ExpressionSS(expression.deepCopy(), relOp, prob.deepCopy());
expr.setFilter((Filter)filter.deepCopy());
ExpressionSS expr = new ExpressionSS(expression.deepCopy(), relOp, prob == null ? null : prob.deepCopy());
if (filter != null) expr.setFilter((Filter) filter.deepCopy());
expr.setType(type); expr.setType(type);
expr.setPosition(this); expr.setPosition(this);
return expr; return expr;

Loading…
Cancel
Save