Author: ehatcher
Date: Mon Mar  7 10:21:16 2005
New Revision: 156435

URL: http://svn.apache.org/viewcvs?view=rev&rev=156435
Log:
Update generated files.  Maybe <javacc> is more of a pain than its worth!

Added more tests.


Modified:
    
lucene/java/trunk/src/java/org/apache/lucene/queryParser/precedence/PrecedenceQueryParser.java
    
lucene/java/trunk/src/test/org/apache/lucene/queryParser/precedence/TestPrecedenceQueryParser.java

Modified: 
lucene/java/trunk/src/java/org/apache/lucene/queryParser/precedence/PrecedenceQueryParser.java
URL: 
http://svn.apache.org/viewcvs/lucene/java/trunk/src/java/org/apache/lucene/queryParser/precedence/PrecedenceQueryParser.java?view=diff&r1=156434&r2=156435
==============================================================================
--- 
lucene/java/trunk/src/java/org/apache/lucene/queryParser/precedence/PrecedenceQueryParser.java
 (original)
+++ 
lucene/java/trunk/src/java/org/apache/lucene/queryParser/precedence/PrecedenceQueryParser.java
 Mon Mar  7 10:21:16 2005
@@ -639,13 +639,15 @@
   Vector clauses = new Vector();
   int modifier;
   Query q, firstQuery=null;
+  boolean orPresent = false;
     modifier = Modifier();
-    q = orExpression(field);
+    q = andExpression(field);
     addClause(clauses, CONJ_NONE, modifier, q);
     firstQuery=q;
     label_1:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case OR:
       case NOT:
       case PLUS:
       case MINUS:
@@ -663,9 +665,18 @@
         jj_la1[4] = jj_gen;
         break label_1;
       }
+      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+      case OR:
+        jj_consume_token(OR);
+            orPresent=true;
+        break;
+      default:
+        jj_la1[5] = jj_gen;
+        ;
+      }
       modifier = Modifier();
-      q = orExpression(field);
-      addClause(clauses, CONJ_NONE, modifier, q);
+      q = andExpression(field);
+      addClause(clauses, orPresent ? CONJ_OR : CONJ_NONE, modifier, q);
     }
       if (clauses.size() == 1 && firstQuery != null)
         {if (true) return firstQuery;}
@@ -675,36 +686,32 @@
     throw new Error("Missing return statement in function");
   }
 
-  final public Query orExpression(String field) throws ParseException {
+/*
+Query orExpression(String field) :
+{
   Vector clauses = new Vector();
   Query q, firstQuery=null;
   int modifier;
-    q = andExpression(field);
+}
+{
+  q=andExpression(field)
+  {
     addClause(clauses, CONJ_NONE, MOD_NONE, q);
     firstQuery=q;
-    label_2:
-    while (true) {
-      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
-      case OR:
-        ;
-        break;
-      default:
-        jj_la1[5] = jj_gen;
-        break label_2;
-      }
-      jj_consume_token(OR);
-      modifier = Modifier();
-      q = andExpression(field);
-      addClause(clauses, CONJ_OR, modifier, q);
-    }
+  }
+  (
+    <OR> modifier=Modifier() q=andExpression(field)
+    { addClause(clauses, CONJ_OR, modifier, q); }
+  )*
+    {
       if (clauses.size() == 1 && firstQuery != null)
-        {if (true) return firstQuery;}
+        return firstQuery;
       else {
-        {if (true) return getBooleanQuery(clauses);}
+        return getBooleanQuery(clauses);
       }
-    throw new Error("Missing return statement in function");
-  }
-
+    }
+}
+*/
   final public Query andExpression(String field) throws ParseException {
   Vector clauses = new Vector();
   Query q, firstQuery=null;
@@ -712,7 +719,7 @@
     q = Clause(field);
     addClause(clauses, CONJ_NONE, MOD_NONE, q);
     firstQuery=q;
-    label_3:
+    label_2:
     while (true) {
       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
       case AND:
@@ -720,7 +727,7 @@
         break;
       default:
         jj_la1[6] = jj_gen;
-        break label_3;
+        break label_2;
       }
       jj_consume_token(AND);
       modifier = Modifier();
@@ -1058,7 +1065,7 @@
       jj_la1_0();
    }
    private static void jj_la1_0() {
-      jj_la1_0 = new int[] 
{0x180,0x180,0xe00,0xe00,0xfb1e00,0x100,0x80,0x8000,0xfb1000,0x9a0000,0x40000,0x40000,0x8000,0xc000000,0x1000000,0xc000000,0x8000,0xc0000000,0x10000000,0xc0000000,0x8000,0x40000,0x8000,0xfb0000,};
+      jj_la1_0 = new int[] 
{0x180,0x180,0xe00,0xe00,0xfb1f00,0x100,0x80,0x8000,0xfb1000,0x9a0000,0x40000,0x40000,0x8000,0xc000000,0x1000000,0xc000000,0x8000,0xc0000000,0x10000000,0xc0000000,0x8000,0x40000,0x8000,0xfb0000,};
    }
   final private JJCalls[] jj_2_rtns = new JJCalls[1];
   private boolean jj_rescan = false;

Modified: 
lucene/java/trunk/src/test/org/apache/lucene/queryParser/precedence/TestPrecedenceQueryParser.java
URL: 
http://svn.apache.org/viewcvs/lucene/java/trunk/src/test/org/apache/lucene/queryParser/precedence/TestPrecedenceQueryParser.java?view=diff&r1=156434&r2=156435
==============================================================================
--- 
lucene/java/trunk/src/test/org/apache/lucene/queryParser/precedence/TestPrecedenceQueryParser.java
 (original)
+++ 
lucene/java/trunk/src/test/org/apache/lucene/queryParser/precedence/TestPrecedenceQueryParser.java
 Mon Mar  7 10:21:16 2005
@@ -532,6 +532,25 @@
     assertEquals(query1, query2);
   }
 
+  public void testPrecedenceWithNot() throws Exception {
+    Query query1 = PrecedenceQueryParser.parse("A OR B C", "field", new 
WhitespaceAnalyzer());
+    Query query2 = PrecedenceQueryParser.parse("A B C", "field", new 
WhitespaceAnalyzer());
+    assertEquals(query1, query2);
+
+    query1 = PrecedenceQueryParser.parse("A AND B C", "field", new 
WhitespaceAnalyzer());
+    query2 = PrecedenceQueryParser.parse("(+A +B) C", "field", new 
WhitespaceAnalyzer());
+    assertEquals(query1, query2);
+
+    query1 = PrecedenceQueryParser.parse("A AND NOT B", "field", new 
WhitespaceAnalyzer());
+    query2 = PrecedenceQueryParser.parse("+A -B", "field", new 
WhitespaceAnalyzer());
+    assertEquals(query1, query2);
+
+    query1 = PrecedenceQueryParser.parse("A OR NOT B", "field", new 
WhitespaceAnalyzer());
+    query2 = PrecedenceQueryParser.parse("A -B", "field", new 
WhitespaceAnalyzer());
+    assertEquals(query1, query2);
+  }
+
+
 
   public void tearDown() {
     BooleanQuery.setMaxClauseCount(originalMaxClauses);


Reply via email to