|
|
@ -1176,6 +1176,7 @@ Expression ExpressionTemporalBinary(boolean prop, boolean pathprop) : |
|
|
expr = ExpressionTemporalUnary(prop, pathprop) |
|
|
expr = ExpressionTemporalUnary(prop, pathprop) |
|
|
{ exprTemp.setOperand2(expr); exprTemp.setPosition(begin, getToken(0)); ret = exprTemp; } |
|
|
{ exprTemp.setOperand2(expr); exprTemp.setPosition(begin, getToken(0)); ret = exprTemp; } |
|
|
| |
|
|
| |
|
|
|
|
|
// START ACCUMULATION |
|
|
// Accumulation symbol |
|
|
// Accumulation symbol |
|
|
<ACCUNTIL> { accexp = new ExpressionAccumulation(AccumulationSymbol.ACCUNTIL); accexp.setOperand1(ret); } |
|
|
<ACCUNTIL> { accexp = new ExpressionAccumulation(AccumulationSymbol.ACCUNTIL); accexp.setOperand1(ret); } |
|
|
// Regular expression, should be star-free |
|
|
// Regular expression, should be star-free |
|
|
@ -1201,6 +1202,7 @@ Expression ExpressionTemporalBinary(boolean prop, boolean pathprop) : |
|
|
<RPARENTH>)? |
|
|
<RPARENTH>)? |
|
|
ret = ExpressionTemporalUnary(prop, pathprop) |
|
|
ret = ExpressionTemporalUnary(prop, pathprop) |
|
|
{ accexp.setOperand2(ret); ret = accexp; } |
|
|
{ accexp.setOperand2(ret); ret = accexp; } |
|
|
|
|
|
// END ACCUMULATION |
|
|
)? |
|
|
)? |
|
|
{ return ret; } |
|
|
{ return ret; } |
|
|
} |
|
|
} |
|
|
@ -1276,53 +1278,6 @@ ExpressionAccumulation ExpressionAccumulationNullary(boolean prop, boolean pathp |
|
|
{ return ret; } |
|
|
{ return ret; } |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
ExpressionAccumulation ExpressionAccumulationBinary(boolean prop, boolean pathprop) : |
|
|
|
|
|
{ |
|
|
|
|
|
ExpressionAccumulation ret = new ExpressionAccumulation(AccumulationSymbol.ACCUNTIL); |
|
|
|
|
|
|
|
|
|
|
|
AccumulationConstraint constr; |
|
|
|
|
|
TemporalOperatorBound bound; |
|
|
|
|
|
Expression reg; |
|
|
|
|
|
ArrayList<Expression> fireOn; |
|
|
|
|
|
|
|
|
|
|
|
Expression op1; |
|
|
|
|
|
Expression op2; |
|
|
|
|
|
} |
|
|
|
|
|
{ |
|
|
|
|
|
<LPARENTH> |
|
|
|
|
|
( op1 = Expression(prop, pathprop) { ret.setOperand1(op1); } ) |
|
|
|
|
|
<RPARENTH> |
|
|
|
|
|
|
|
|
|
|
|
// Accumulation symbol |
|
|
|
|
|
<ACCUNTIL> |
|
|
|
|
|
// Regular expression, should be star-free |
|
|
|
|
|
<LPARENTH> |
|
|
|
|
|
( |
|
|
|
|
|
( <REGEXP_MARKER> reg = ExpressionRegularUnary(prop, false) { ret.setRegularExpression((ExpressionRegular)reg); } ) |
|
|
|
|
|
| ( bound = BoundExpression() { ret.setBoundExpression(bound); } ) |
|
|
|
|
|
) |
|
|
|
|
|
<RPARENTH> |
|
|
|
|
|
// Weight constraint |
|
|
|
|
|
<LPARENTH> |
|
|
|
|
|
( |
|
|
|
|
|
constr = ExpressionAccumulationConstraint() |
|
|
|
|
|
{ ret.setConstraint(constr); } |
|
|
|
|
|
) |
|
|
|
|
|
<RPARENTH> |
|
|
|
|
|
// Fire set (= !StutterSet) |
|
|
|
|
|
(<LPARENTH> |
|
|
|
|
|
( |
|
|
|
|
|
fireOn = ExpressionAccumulationFire() |
|
|
|
|
|
{ ret.setFireOn(fireOn); } |
|
|
|
|
|
) |
|
|
|
|
|
<RPARENTH>)? |
|
|
|
|
|
|
|
|
|
|
|
<LPARENTH> |
|
|
|
|
|
( op2 = Expression(prop, pathprop) { ret.setOperand2(op2); } ) |
|
|
|
|
|
<RPARENTH> |
|
|
|
|
|
{ return ret; } |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ArrayList<Expression> ExpressionAccumulationFire() : |
|
|
ArrayList<Expression> ExpressionAccumulationFire() : |
|
|
{ |
|
|
{ |
|
|
ArrayList<Expression> ret = new ArrayList<Expression>(); |
|
|
ArrayList<Expression> ret = new ArrayList<Expression>(); |
|
|
|