From e9babb1ab491b16210c242b48a0ea82d12be4d76 Mon Sep 17 00:00:00 2001
From: Vincent Pelletier <vincent@nexedi.com>
Date: Tue, 5 May 2009 12:03:59 +0000
Subject: [PATCH] Fix imleicit 'and' operator precedence: make it behave just
 like an explicit 'and' operator.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@26799 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../ZSQLCatalog/SearchText/AdvancedSearchTextParser.py    | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/product/ZSQLCatalog/SearchText/AdvancedSearchTextParser.py b/product/ZSQLCatalog/SearchText/AdvancedSearchTextParser.py
index 762dfedc37..94e0cc727b 100644
--- a/product/ZSQLCatalog/SearchText/AdvancedSearchTextParser.py
+++ b/product/ZSQLCatalog/SearchText/AdvancedSearchTextParser.py
@@ -150,20 +150,20 @@ class AdvancedSearchTextParser(lexer):
 
   def p_seach_text(self, p):
     '''search_text : and_expression
-                   | and_expression OR search_text
-                   | and_expression search_text'''
+                   | and_expression OR search_text'''
     if len(p) == 2:
       p[0] = p[1]
-    elif len(p) == 3:
-      p[0] = p[1].push('and', p[2])
     else:
       p[0] = p[1].push('or', p[3])
 
   def p_and_expression(self, p):
     '''and_expression : boolean_expression
+                      | boolean_expression and_expression
                       | boolean_expression AND and_expression'''
     if len(p) == 2:
       p[0] = p[1]
+    elif len(p) == 3:
+      p[0] = p[1].push('and', p[2])
     else:
       p[0] = p[1].push('and', p[3])
 
-- 
2.30.9