*** gram.y	Wed Jan 10 20:45:40 2001
--- gram.y.modi	Wed Jan 10 20:44:38 2001
***************
*** 321,332 ****
  		WHEN, WHERE, WITH, WORK, YEAR_P, ZONE
  
  /* Keywords (in SQL3 reserved words) */
! %token	CHAIN, CHARACTERISTICS,
  		DEFERRABLE, DEFERRED,
  		IMMEDIATE, INITIALLY, INOUT,
  		OFF, OUT,
  		PATH_P, PENDANT,
  		RESTRICT,
          TRIGGER,
  		WITHOUT
  
--- 321,334 ----
  		WHEN, WHERE, WITH, WORK, YEAR_P, ZONE
  
  /* Keywords (in SQL3 reserved words) */
! %token	ASYMMETRIC,
! 		CHAIN, CHARACTERISTICS,
  		DEFERRABLE, DEFERRED,
  		IMMEDIATE, INITIALLY, INOUT,
  		OFF, OUT,
  		PATH_P, PENDANT,
  		RESTRICT,
+ 		SYMMETRIC,
          TRIGGER,
  		WITHOUT
  
***************
*** 4452,4462 ****
--- 4454,4496 ----
  						makeA_Expr(OP, ">=", $1, $3),
  						makeA_Expr(OP, "<=", $1, $5));
  				}
+ 		| a_expr BETWEEN ASYMMETRIC b_expr AND b_expr
+ 				{
+ 					$$ = makeA_Expr(AND, NULL,
+ 						makeA_Expr(OP, ">=", $1, $4),
+ 						makeA_Expr(OP, "<=", $1, $6));
+ 				}
+ 		| a_expr BETWEEN SYMMETRIC b_expr AND b_expr
+ 				{
+ 					$$ = makeA_Expr(OR, NULL,
+ 							makeA_Expr(AND, NULL,
+ 								makeA_Expr(OP, ">=", $1, $4),
+ 								makeA_Expr(OP, "<=", $1, $6)),
+ 							makeA_Expr(AND, NULL,
+ 								makeA_Expr(OP, ">=", $1, $6),
+ 								makeA_Expr(OP, "<=", $1, $4)) );
+ 				}
  		| a_expr NOT BETWEEN b_expr AND b_expr
  				{
  					$$ = makeA_Expr(OR, NULL,
  						makeA_Expr(OP, "<", $1, $4),
  						makeA_Expr(OP, ">", $1, $6));
+ 				}
+ 		| a_expr NOT BETWEEN ASYMMETRIC b_expr AND b_expr
+ 				{
+ 					$$ = makeA_Expr(OR, NULL,
+ 						makeA_Expr(OP, "<", $1, $5),
+ 						makeA_Expr(OP, ">", $1, $7));
+ 				}
+ 		| a_expr NOT BETWEEN SYMMETRIC b_expr AND b_expr
+ 				{
+ 					$$ = makeA_Expr(AND, NULL,
+ 							makeA_Expr(OR, NULL,
+ 								makeA_Expr(OP, "<", $1, $5),
+ 								makeA_Expr(OP, ">", $1, $7)),
+ 							makeA_Expr(OR, NULL,
+ 								makeA_Expr(OP, "<", $1, $7),
+ 								makeA_Expr(OP, ">", $1, $5)) );
  				}
  		| a_expr IN '(' in_expr ')'
  				{
