Skip to content

Commit

Permalink
#2178 Rules for single-condition, subchaining predicates
Browse files Browse the repository at this point in the history
  • Loading branch information
homedirectory committed Feb 15, 2024
1 parent c19b4ba commit f9b6f47
Showing 1 changed file with 18 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
import il.ac.technion.cs.fling.EBNF;
import il.ac.technion.cs.fling.internal.grammar.rules.Terminal;
import il.ac.technion.cs.fling.internal.grammar.rules.Variable;
import ua.com.fielden.platform.entity.query.model.ExpressionModel;
import ua.com.fielden.platform.entity.query.model.PrimitiveResultQueryModel;
import ua.com.fielden.platform.entity.query.model.SingleResultQueryModel;
import ua.com.fielden.platform.entity.query.fluent.EntityQueryProgressiveInterfaces.ICompoundCondition0;
import ua.com.fielden.platform.entity.query.model.*;
import ua.com.fielden.platform.processors.metamodel.IConvertableToPath;

import static fielden.platform.eql.CanonicalEqlGrammar.EqlTerminal.values;
Expand Down Expand Up @@ -54,6 +53,7 @@ public final class CanonicalEqlGrammar {
or(Operand, ComparisonOperator, ComparisonOperand).
or(Operand, QuantifiedComparisonOperator, QuantifiedOperand).
or(Operand, MembershipOperator, MembershipOperand).
or(SingleConditionPredicate).

derive(UnaryComparisonOperator).
to(isNull).or(isNotNull).
Expand Down Expand Up @@ -171,6 +171,20 @@ public final class CanonicalEqlGrammar {
or(params.many(STR)).or(iParams.many(STR)).
or(model.with(SingleResultQueryModel.class)).

derive(SingleConditionPredicate).
to(exists.with(QueryModel.class)).
or(notExists.with(QueryModel.class)).
or(existsAnyOf.many(QueryModel.class)).
or(notExistsAnyOf.many(QueryModel.class)).
or(existsAllOf.many(QueryModel.class)).
or(notExistsAllOf.many(QueryModel.class)).
or(critCondition.with(STR/*, STR*/)).
or(critCondition.with(PROP_PATH/*, PROP_PATH*/)).
or(critCondition.with(ICompoundCondition0.class/*, STR, STR*/)).
or(critCondition.with(ICompoundCondition0.class/*, STR, STR, OBJ*/)).
or(condition.with(ConditionModel.class)).
or(negatedCondition.with(ConditionModel.class)).

derive(Model).
to(model.with(STR)).

Expand All @@ -192,7 +206,7 @@ public enum EqlVariable implements Variable {
ArithmeticalOperator, SingleOperandOrExpr, ExprBody, Expr,
UnaryFunction, UnaryFunctionName, IfNull, DateDiffInterval, DateDiffIntervalUnit, DateAddInterval, DateAddIntervalUnit, Round, Concat, CaseWhen, CaseWhenEnd,
MembershipOperator,
MembershipOperand, ComparisonOperator, ComparisonOperand, QuantifiedComparisonOperator, QuantifiedOperand, Model
MembershipOperand, ComparisonOperator, ComparisonOperand, QuantifiedComparisonOperator, QuantifiedOperand, SingleConditionPredicate, Model
}

public enum EqlTerminal implements Terminal {
Expand Down

0 comments on commit f9b6f47

Please sign in to comment.