diff --git a/src/feel.grammar b/src/feel.grammar index 0883744..1988131 100644 --- a/src/feel.grammar +++ b/src/feel.grammar @@ -96,7 +96,7 @@ QuantifiedInExpressions[@name=InExpressions] { } QuantifiedInExpression[@name=InExpression] { - inExpression + inExpression } QuantifiedExpression { diff --git a/test/expressions.txt b/test/expressions.txt index 11124eb..f850605 100644 --- a/test/expressions.txt +++ b/test/expressions.txt @@ -1154,7 +1154,7 @@ satisfies Expression( QuantifiedExpression( every,InExpressions( - InExpression(Name(...),in,List("[","]")) + InExpression(Name(...),in,IterationContext(List("[","]"))) ), satisfies, PathExpression( VariableName(...), VariableName(...) @@ -1175,9 +1175,9 @@ satisfies Expression( QuantifiedExpression( every,InExpressions( - InExpression(Name(...),in,List("[", + InExpression(Name(...),in,IterationContext(List("[", Context("{",ContextEntry(Key(Name(...)),NumericLiteral),"}"), - "]")) + "]"))) ),satisfies, PathExpression( VariableName(...), @@ -1198,6 +1198,25 @@ Expression( ) +# QuantifiedExpression (iteration context) + +some i in 1..10 satisfies i > 5 + +==> + +Expression( + QuantifiedExpression( + some,InExpressions( + InExpression(Name(Identifier),in,IterationContext( + NumericLiteral, + NumericLiteral + )) + ),satisfies, + Comparison(...) + ) +) + + # FilterExpression { "top": "Expressions" } a[c]; @@ -2290,8 +2309,8 @@ every a a in b, dd in [] satisfies a a < dd - c Expression( QuantifiedExpression( every,InExpressions( - InExpression(Name(...),in,VariableName(...)), - InExpression(Name(...),in,List("[","]")) + InExpression(Name(...),in,IterationContext(VariableName(...))), + InExpression(Name(...),in,IterationContext(List("[","]"))) ),satisfies,Comparison( VariableName(...),CompareOp,ArithmeticExpression( VariableName(...),ArithOp,VariableName(...)