From e636417433f4c4406e5d15cd667e97d48f15c539 Mon Sep 17 00:00:00 2001 From: homedirectory Date: Mon, 12 Feb 2024 12:41:16 +0200 Subject: [PATCH] #2178 Rewrite rules for logical conditions to support begin/end grouping --- .../java/fielden/platform/eql/fling/EqlGrammar.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/platform-eql-grammar/src/main/java/fielden/platform/eql/fling/EqlGrammar.java b/platform-eql-grammar/src/main/java/fielden/platform/eql/fling/EqlGrammar.java index e5e4a10078..6d9da2fba7 100644 --- a/platform-eql-grammar/src/main/java/fielden/platform/eql/fling/EqlGrammar.java +++ b/platform-eql-grammar/src/main/java/fielden/platform/eql/fling/EqlGrammar.java @@ -88,7 +88,7 @@ public enum V implements Variable { Prop, And, Or, Eq, Gt, Lt, UnaryComparisonOperator, BinaryComparisonOperator, Val, AnyProp, ExtProp, Param, - ArithmeticalOperator, SingleOperandOrExpr, ExprBody, ArithmeticalExpr, Model + ArithmeticalOperator, SingleOperandOrExpr, ExprBody, ArithmeticalExpr, Condition__, Condition_, Model } // Short names @@ -113,11 +113,11 @@ public enum V implements Variable { // Where = where Condition; derive(Where).to(where, Condition). - // Condition = Predicate | Condition AND Condition | Condition OR Condition; + // Condition = Predicate | Condition AND Condition | Condition OR Condition | begin Condition end; // AND takes precedence over OR - derive(Condition).to(OrCondition). - derive(OrCondition).to(AndCondition, noneOrMore(or, AndCondition)). - derive(AndCondition).to(Predicate, noneOrMore(and, AndCondition)). + derive(Condition).to(Predicate, Condition__).or(begin, Condition, end, Condition__). + derive(Condition_).to(or, Condition).or(and, Condition). + derive(Condition__).to(Condition_, Condition__).orNone(). derive(Predicate).to(Operand, PredicateTail). derive(PredicateTail).to(UnaryComparisonOperator).or(BinaryComparisonOperator, Operand).