|
|
|
@ -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); |
|
|
|
|