Browse Source

Parse modifiers on R and S operators as well as P.

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@10037 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Dave Parker 11 years ago
parent
commit
f19cb029d7
  1. 618
      prism/src/parser/PrismParser.java
  2. 11
      prism/src/parser/PrismParser.jj

618
prism/src/parser/PrismParser.java
File diff suppressed because it is too large
View File

11
prism/src/parser/PrismParser.jj

@ -1518,6 +1518,7 @@ Filter Filter() :
Expression ExpressionSS(boolean prop, boolean pathprop) :
{
ExpressionIdent modifier = null;
int r;
String relOp = null;
Expression prob = null;
@ -1532,12 +1533,14 @@ Expression ExpressionSS(boolean prop, boolean pathprop) :
{ if (!prop) throw generateParseException(); }
// Various options for "S" keyword and attached symbols
begin = <S> (
( <LPARENTH> modifier = IdentifierExpression() <RPARENTH> )?
( r = LtGt() prob = Expression(false, false) { relOp = ExpressionBinaryOp.opSymbols[r]; isBool = true; } ) |
( <EQ> <QMARK> { relOp = "="; isBool = false; } )
)
// Expression, optional filter
<LBRACKET> expr = Expression(prop, pathprop) (filter = Filter())? <RBRACKET>
{
ret.setModifier(modifier == null ? null : modifier.getName());
ret.setRelOp(relOp);
ret.setProb(prob);
ret.setExpression(expr);
@ -1559,6 +1562,7 @@ Expression ExpressionSS(boolean prop, boolean pathprop) :
Expression ExpressionReward(boolean prop, boolean pathprop) :
{
ExpressionIdent modifier = null;
int r;
String relOp = null;
Expression rew = null;
@ -1572,8 +1576,10 @@ Expression ExpressionReward(boolean prop, boolean pathprop) :
// This production is only allowed in expressions if the "prop" parameter is true
{ if (!prop) throw generateParseException(); }
// Various options for "R" keyword and attached symbols
(( begin = <R> (RewardIndex(ret))?
(( r = LtGt() rew = Expression(false, false) { relOp = ExpressionBinaryOp.opSymbols[r]; isBool = true; } )
(( begin = <R>
( <LPARENTH> modifier = IdentifierExpression() <RPARENTH> )?
(RewardIndex(ret))?
(( r = LtGt() rew = Expression(false, false) { relOp = ExpressionBinaryOp.opSymbols[r]; isBool = true; } )
|( <EQ> <QMARK> { relOp = "="; isBool = false; } )
|( <MIN> <EQ> <QMARK> { relOp = "min="; isBool = false; } )
|( <MAX> <EQ> <QMARK> { relOp = "max="; isBool = false; } )))
@ -1583,6 +1589,7 @@ Expression ExpressionReward(boolean prop, boolean pathprop) :
// Path formula, optional filter
<LBRACKET> expr = ExpressionRewardContents(prop, pathprop) (filter = Filter())? <RBRACKET>
{
ret.setModifier(modifier == null ? null : modifier.getName());
ret.setRelOp(relOp);
ret.setReward(rew);
ret.setExpression(expr);

Loading…
Cancel
Save