minor change to grammar for readability

This commit is contained in:
Gavin King 2023-06-25 19:56:07 +02:00
parent f77067b1b3
commit b7120a60a3
2 changed files with 22 additions and 10 deletions

View File

@ -624,13 +624,14 @@ predicate
| expression IS NOT? EMPTY # IsEmptyPredicate
| expression IS NOT? TRUE # IsTruePredicate
| expression IS NOT? FALSE # IsFalsePredicate
| expression IS NOT? DISTINCT FROM expression # IsDistinctFromPredicate
| expression NOT? MEMBER OF? path # MemberOfPredicate
| expression NOT? IN inList # InPredicate
| expression NOT? BETWEEN expression AND expression # BetweenPredicate
| expression NOT? (LIKE | ILIKE) expression likeEscape? # LikePredicate
| expression comparisonOperator expression # ComparisonPredicate
| EXISTS collectionQuantifier LEFT_PAREN simplePath RIGHT_PAREN # ExistsCollectionPartPredicate
| EXISTS expression # ExistsPredicate
| expression NOT? MEMBER OF? path # MemberOfPredicate
| NOT predicate # NegatedPredicate
| predicate AND predicate # AndPredicate
| predicate OR predicate # OrPredicate
@ -647,8 +648,6 @@ comparisonOperator
| GREATER_EQUAL
| LESS
| LESS_EQUAL
| IS DISTINCT FROM
| IS NOT DISTINCT FROM
;
/**

View File

@ -2443,10 +2443,6 @@ public Object visitComparisonOperator(HqlParser.ComparisonOperatorContext ctx) {
return ComparisonOperator.GREATER_THAN;
case HqlLexer.GREATER_EQUAL:
return ComparisonOperator.GREATER_THAN_OR_EQUAL;
case HqlLexer.IS:
return ctx.NOT() == null
? ComparisonOperator.DISTINCT_FROM
: ComparisonOperator.NOT_DISTINCT_FROM;
default:
throw new ParsingException("Unrecognized comparison operator");
}
@ -2455,11 +2451,28 @@ public Object visitComparisonOperator(HqlParser.ComparisonOperatorContext ctx) {
@Override
public SqmPredicate visitComparisonPredicate(HqlParser.ComparisonPredicateContext ctx) {
final ComparisonOperator comparisonOperator = (ComparisonOperator) ctx.comparisonOperator().accept( this );
final SqmExpression<?> left;
final SqmExpression<?> right;
final HqlParser.ExpressionContext leftExpressionContext = ctx.expression( 0 );
final HqlParser.ExpressionContext rightExpressionContext = ctx.expression( 1 );
switch (comparisonOperator) {
return createComparisonPredicate( comparisonOperator, leftExpressionContext, rightExpressionContext );
}
@Override
public SqmPredicate visitIsDistinctFromPredicate(HqlParser.IsDistinctFromPredicateContext ctx) {
final HqlParser.ExpressionContext leftExpressionContext = ctx.expression( 0 );
final HqlParser.ExpressionContext rightExpressionContext = ctx.expression( 1 );
final ComparisonOperator comparisonOperator = ctx.NOT() == null
? ComparisonOperator.DISTINCT_FROM
: ComparisonOperator.NOT_DISTINCT_FROM;
return createComparisonPredicate( comparisonOperator, leftExpressionContext, rightExpressionContext );
}
private SqmComparisonPredicate createComparisonPredicate(
ComparisonOperator comparisonOperator,
HqlParser.ExpressionContext leftExpressionContext,
HqlParser.ExpressionContext rightExpressionContext) {
final SqmExpression<?> right;
final SqmExpression<?> left;
switch ( comparisonOperator ) {
case EQUAL:
case NOT_EQUAL:
case DISTINCT_FROM: