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);