diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 6643b8579e0bba5c3e795f0b2635b0146728df8c..90d4563293de80449e2515add482f8ed12485f0a 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1043,5 +1043,9 @@ Mon Jan 22 17:56:02 CET 2001
 Tue Jan 23 08:54:14 CET 2001
 
 	- Moved database name handling to libecpg.
+
+Thu Jan 25 21:14:38 CET 2001
+
+	- Synced gram.y and preproc.y.     
 	- Set ecpg version to 2.8.0. 
 	- Set library version to 3.2.0.
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index a888f93392586736bc00b6a07b9429c102b7d7ce..4d27ba34db6d472dc7923241f2aaaca9e1d3e361 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -263,16 +263,16 @@ make_name(void)
 %nonassoc	OVERLAPS
 %nonassoc	BETWEEN
 %nonassoc	IN
+%left           POSTFIXOP              		/* dummy for postfix Op rules */    
 %left		Op				/* multi-character ops and user-defined operators */
 %nonassoc	NOTNULL
 %nonassoc	ISNULL
-%nonassoc	NULL_P
-%nonassoc	IS
+%nonassoc	IS NULL_P TRUE_P FALSE_P 
 %left		'+' '-'
 %left		'*' '/' '%'
 %left		'^'
 /* Unary Operators */
-%left           AT
+%left           AT ZONE
 %right		UMINUS
 %left		'.'
 %left		'[' ']'
@@ -3300,7 +3300,7 @@ a_expr:  c_expr
 				{	$$ = cat_str(3, $1, $2, $3); }
 		| Op a_expr
 				{	$$ = cat2_str($1, $2); }
-		| a_expr Op
+		| a_expr Op		%prec POSTFIXOP
 				{	$$ = cat2_str($1, $2); }
 		| a_expr AND a_expr
 				{	$$ = cat_str(3, $1, make_str("and"), $3); }
@@ -3345,11 +3345,11 @@ a_expr:  c_expr
 				{	$$ = cat2_str($1, make_str("is false")); }
 		| a_expr IS NOT TRUE_P
 				{	$$ = cat2_str($1, make_str("is not true")); }
-		| a_expr BETWEEN b_expr AND b_expr
+		| a_expr BETWEEN b_expr AND b_expr	%prec BETWEEN
 				{
 					$$ = cat_str(5, $1, make_str("between"), $3, make_str("and"), $5); 
 				}
-		| a_expr NOT BETWEEN b_expr AND b_expr
+		| a_expr NOT BETWEEN b_expr AND b_expr	%prec BETWEEN
 				{
 					$$ = cat_str(5, $1, make_str("not between"), $4, make_str("and"), $6); 
 				}
@@ -3361,7 +3361,7 @@ a_expr:  c_expr
 				{
 					$$ = cat_str(3, $1, make_str(" not in "), $4); 
 				}
-		| a_expr all_Op sub_type select_with_parens
+		| a_expr all_Op sub_type select_with_parens	%prec Op
 				{
 					$$ = cat_str(4, $1, $2, $3, $4); 
 				}
@@ -3417,7 +3417,7 @@ b_expr:  c_expr
 				{	$$ = cat_str(3, $1, $2, $3); }
 		| Op b_expr
 				{	$$ = cat2_str($1, $2); }
-		| b_expr Op
+		| b_expr Op		%prec POSTFIXOP
 				{	$$ = cat2_str($1, $2); }
 		;