Browse Source
Refactoring wrt the way that relational operators are stored for P/R/S operators (String -> RelOp).
Refactoring wrt the way that relational operators are stored for P/R/S operators (String -> RelOp).
git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@7766 bbc10eb1-c90d-0410-af57-cb519fbb1720master
21 changed files with 336 additions and 205 deletions
-
30prism/src/dv/DoubleVector.java
-
2prism/src/explicit/DTMCModelChecker.java
-
2prism/src/explicit/MDPModelChecker.java
-
35prism/src/explicit/ProbModelChecker.java
-
40prism/src/explicit/StateValues.java
-
86prism/src/param/ParamModelChecker.java
-
21prism/src/parser/ast/ExpressionProb.java
-
17prism/src/parser/ast/ExpressionReward.java
-
13prism/src/parser/ast/ExpressionSS.java
-
93prism/src/parser/ast/RelOp.java
-
15prism/src/parser/visitor/CheckValid.java
-
71prism/src/prism/NondetModelChecker.java
-
45prism/src/prism/ProbModelChecker.java
-
4prism/src/prism/StateValues.java
-
12prism/src/prism/StateValuesDV.java
-
29prism/src/prism/StateValuesMTBDD.java
-
9prism/src/prism/StateValuesVoid.java
-
2prism/src/pta/PTAModelChecker.java
-
5prism/src/simulator/method/APMCMethod.java
-
5prism/src/simulator/method/CIMethod.java
-
5prism/src/simulator/method/SPRTMethod.java
@ -0,0 +1,93 @@ |
|||
package parser.ast; |
|||
|
|||
import java.util.HashMap; |
|||
import java.util.Iterator; |
|||
import java.util.Map; |
|||
import java.util.Map.Entry; |
|||
|
|||
/** |
|||
* Class to represent a relational operator (or similar) found in a P/R/S operator. |
|||
*/ |
|||
public enum RelOp { |
|||
|
|||
GT, GEQ, MIN, LEQ, LT, MAX, EQ; |
|||
|
|||
protected static Map<RelOp, String> symbols; |
|||
static { |
|||
symbols = new HashMap<RelOp, String>(); |
|||
symbols.put(RelOp.GT, ">"); |
|||
symbols.put(RelOp.GEQ, ">="); |
|||
symbols.put(RelOp.MIN, "min="); |
|||
symbols.put(RelOp.LT, "<"); |
|||
symbols.put(RelOp.LEQ, "<="); |
|||
symbols.put(RelOp.MAX, "max="); |
|||
symbols.put(RelOp.EQ, "="); |
|||
} |
|||
|
|||
@Override |
|||
public String toString() |
|||
{ |
|||
return symbols.get(this); |
|||
} |
|||
|
|||
/** |
|||
* Returns true if this corresponds to a lower bound (e.g. >, >=, min=). |
|||
*/ |
|||
public boolean isLowerBound() |
|||
{ |
|||
switch (this) { |
|||
case GT: |
|||
case GEQ: |
|||
case MIN: |
|||
return true; |
|||
default: |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* Returns true if this is a strict bound (i.e. < or >). |
|||
*/ |
|||
public boolean isStrict() |
|||
{ |
|||
switch (this) { |
|||
case GT: |
|||
case LT: |
|||
return true; |
|||
default: |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* Returns true if this corresponds to an upper bound (e.g. <, <=, max=). |
|||
*/ |
|||
public boolean isUpperBound() |
|||
{ |
|||
switch (this) { |
|||
case LT: |
|||
case LEQ: |
|||
case MAX: |
|||
return true; |
|||
default: |
|||
return false; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* Returns the RelOp object corresponding to a (string) symbol, |
|||
* e.g. parseSymbol("<=") returns RelOp.LEQ. Returns null if invalid. |
|||
* @param symbol The symbol to look up |
|||
* @return |
|||
*/ |
|||
public static RelOp parseSymbol(String symbol) |
|||
{ |
|||
Iterator<Entry<RelOp, String>> it = symbols.entrySet().iterator(); |
|||
while (it.hasNext()) { |
|||
Map.Entry<RelOp, String> e = it.next(); |
|||
if (e.getValue().equals(symbol)) |
|||
return e.getKey(); |
|||
} |
|||
return null; |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue