Skip to content

Commit

Permalink
#2178 Enhance the grammar with rules for standalone conditions
Browse files Browse the repository at this point in the history
  • Loading branch information
homedirectory committed Feb 23, 2024
1 parent ab231ce commit 84bc47d
Showing 1 changed file with 13 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public final class CanonicalEqlGrammar {
start(Query).

specialize(Query).
into(Select, StandaloneExpression).
into(Select, StandaloneExpression, StandaloneCondExpr).

derive(Select).
to(select.with(Class.class),
Expand Down Expand Up @@ -276,6 +276,14 @@ public final class CanonicalEqlGrammar {
derive(StandaloneExpression).
to(expr, label("operand", YieldOperand), repeat(ArithmeticalOperator, YieldOperand), model).

derive(StandaloneCondExpr).
to(cond, label("condition", StandaloneCondition), model).

derive(StandaloneCondition).
to(Predicate).
or(label("left", StandaloneCondition), and, label("right", StandaloneCondition)).
or(label("left", StandaloneCondition), or, label("right", StandaloneCondition)).

build();
// @formatter:on

Expand All @@ -296,7 +304,9 @@ public enum EqlVariable implements Variable {
Model, GroupBy,
AnyYield, YieldOperand, YieldOperandFunction, YieldOperandFunctionName, YieldAlias, LikeOperator, SubsequentYield,
UnaryPredicate,
ComparisonPredicate, QuantifiedComparisonPredicate, LikePredicate, AliasedYield, YieldManyModel, Yield1Model, Yield1, YieldMany, MembershipPredicate
ComparisonPredicate, QuantifiedComparisonPredicate, LikePredicate, AliasedYield, YieldManyModel, Yield1Model, Yield1, YieldMany, StandaloneCondExpr,
StandaloneCondition,
MembershipPredicate
}

public enum EqlTerminal implements Terminal {
Expand Down Expand Up @@ -346,7 +356,7 @@ public enum EqlTerminal implements Terminal {
beginExpr, endExpr,
join, leftJoin, on,
yield, yieldAll,
groupBy, asc, desc, order,
groupBy, asc, desc, order, cond,
}

private CanonicalEqlGrammar() {}
Expand Down

0 comments on commit 84bc47d

Please sign in to comment.