From 18ef7df68cce42766b9cc2b2b99d532b1e17e127 Mon Sep 17 00:00:00 2001 From: homedirectory Date: Mon, 26 Feb 2024 16:23:43 +0200 Subject: [PATCH] #2178 Add negated compound conditions to the grammar --- .../main/antlr4/fielden/platform/eql/antlr/EQL.g4 | 12 +++++++----- .../fielden/platform/eql/CanonicalEqlGrammar.java | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/platform-eql-grammar/src/main/antlr4/fielden/platform/eql/antlr/EQL.g4 b/platform-eql-grammar/src/main/antlr4/fielden/platform/eql/antlr/EQL.g4 index fd369753a9..ef817b8c24 100644 --- a/platform-eql-grammar/src/main/antlr4/fielden/platform/eql/antlr/EQL.g4 +++ b/platform-eql-grammar/src/main/antlr4/fielden/platform/eql/antlr/EQL.g4 @@ -1,4 +1,4 @@ -// This grammar was generated. Timestamp: 2024-02-26T13:31:52.325163479+02:00[Europe/Kyiv] +// This grammar was generated. Timestamp: 2024-02-26T15:43:48.195266260+02:00[Europe/Kyiv] grammar EQL; @@ -38,10 +38,11 @@ where : ; condition : - predicate - | left=condition AND right=condition - | left=condition OR right=condition - | BEGIN condition END + predicate # PredicateCondition + | left=condition AND right=condition # AndCondition + | left=condition OR right=condition # OrCondition + | BEGIN condition END # CompoundCondition + | NOTBEGIN condition END # NegatedCompoundCondition ; predicate : @@ -435,6 +436,7 @@ AND : 'and' ; EXISTSALLOF : 'existsAllOf' ; ANYOFPROPS : 'anyOfProps' ; SECONDS : 'seconds' ; +NOTBEGIN : 'notBegin' ; NOTEXISTSALLOF : 'notExistsAllOf' ; IVAL : 'iVal' ; ON : 'on' ; diff --git a/platform-eql-grammar/src/main/java/fielden/platform/eql/CanonicalEqlGrammar.java b/platform-eql-grammar/src/main/java/fielden/platform/eql/CanonicalEqlGrammar.java index 2d97e6dc1d..e418138cb5 100644 --- a/platform-eql-grammar/src/main/java/fielden/platform/eql/CanonicalEqlGrammar.java +++ b/platform-eql-grammar/src/main/java/fielden/platform/eql/CanonicalEqlGrammar.java @@ -77,6 +77,7 @@ public final class CanonicalEqlGrammar { or(label("left", Condition), and, label("right", Condition)). or(label("left", Condition), or, label("right", Condition)). or(begin, Condition, end). + or(notBegin, Condition, end). specialize(Predicate). into(UnaryPredicate, ComparisonPredicate, QuantifiedComparisonPredicate, LikePredicate, MembershipPredicate, SingleConditionPredicate).