@@ -263,16 +263,16 @@ make_name(void)
263
263
%nonassoc OVERLAPS
264
264
%nonassoc BETWEEN
265
265
%nonassoc IN
266
+ %left POSTFIXOP /* dummy for postfix Op rules */
266
267
%left Op /* multi-character ops and user-defined operators */
267
268
%nonassoc NOTNULL
268
269
%nonassoc ISNULL
269
- %nonassoc NULL_P
270
- %nonassoc IS
270
+ %nonassoc IS NULL_P TRUE_P FALSE_P
271
271
%left ' +' ' -'
272
272
%left ' *' ' /' ' %'
273
273
%left ' ^'
274
274
/* Unary Operators */
275
- %left AT
275
+ %left AT ZONE
276
276
%right UMINUS
277
277
%left ' .'
278
278
%left ' [' ' ]'
@@ -3300,7 +3300,7 @@ a_expr: c_expr
3300
3300
{ $$ = cat_str(3 , $1 , $2 , $3 ); }
3301
3301
| Op a_expr
3302
3302
{ $$ = cat2_str($1 , $2 ); }
3303
- | a_expr Op
3303
+ | a_expr Op % prec POSTFIXOP
3304
3304
{ $$ = cat2_str($1 , $2 ); }
3305
3305
| a_expr AND a_expr
3306
3306
{ $$ = cat_str(3 , $1 , make_str(" and" ), $3 ); }
@@ -3345,11 +3345,11 @@ a_expr: c_expr
3345
3345
{ $$ = cat2_str($1 , make_str(" is false" )); }
3346
3346
| a_expr IS NOT TRUE_P
3347
3347
{ $$ = cat2_str($1 , make_str(" is not true" )); }
3348
- | a_expr BETWEEN b_expr AND b_expr
3348
+ | a_expr BETWEEN b_expr AND b_expr % prec BETWEEN
3349
3349
{
3350
3350
$$ = cat_str(5 , $1 , make_str(" between" ), $3 , make_str(" and" ), $5 );
3351
3351
}
3352
- | a_expr NOT BETWEEN b_expr AND b_expr
3352
+ | a_expr NOT BETWEEN b_expr AND b_expr % prec BETWEEN
3353
3353
{
3354
3354
$$ = cat_str(5 , $1 , make_str(" not between" ), $4 , make_str(" and" ), $6 );
3355
3355
}
@@ -3361,7 +3361,7 @@ a_expr: c_expr
3361
3361
{
3362
3362
$$ = cat_str(3 , $1 , make_str(" not in " ), $4 );
3363
3363
}
3364
- | a_expr all_Op sub_type select_with_parens
3364
+ | a_expr all_Op sub_type select_with_parens % prec Op
3365
3365
{
3366
3366
$$ = cat_str(4 , $1 , $2 , $3 , $4 );
3367
3367
}
@@ -3417,7 +3417,7 @@ b_expr: c_expr
3417
3417
{ $$ = cat_str(3 , $1 , $2 , $3 ); }
3418
3418
| Op b_expr
3419
3419
{ $$ = cat2_str($1 , $2 ); }
3420
- | b_expr Op
3420
+ | b_expr Op % prec POSTFIXOP
3421
3421
{ $$ = cat2_str($1 , $2 ); }
3422
3422
;
3423
3423
0 commit comments