mirror of https://github.com/apache/lucene.git
LUCENE-1189: Fixed the QueryParser to handle escaped characters within quoted terms correctly.
git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@660674 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f32b5a5698
commit
df7fb0f45c
|
@ -109,6 +109,9 @@ Bug fixes
|
|||
10. LUCENE-1046: Removed dead code in SpellChecker
|
||||
(Daniel Naber via Otis Gospodnetic)
|
||||
|
||||
11. LUCENE-1189: Fixed the QueryParser to handle escaped characters within
|
||||
quoted terms correctly. (Tomer Gabel via Michael Busch)
|
||||
|
||||
New features
|
||||
|
||||
1. LUCENE-1137: Added Token.set/getFlags() accessors for passing more information about a Token through the analysis
|
||||
|
|
|
@ -1337,10 +1337,10 @@ public class QueryParser implements QueryParserConstants {
|
|||
jj_la1_1();
|
||||
}
|
||||
private static void jj_la1_0() {
|
||||
jj_la1_0 = new int[] {0x180,0x180,0xe00,0xe00,0x1f69f80,0x48000,0x10000,0x1f69000,0x1348000,0x80000,0x80000,0x10000,0x18000000,0x2000000,0x18000000,0x10000,0x80000000,0x20000000,0x80000000,0x10000,0x80000,0x10000,0x1f68000,};
|
||||
jj_la1_0 = new int[] {0x300,0x300,0x1c00,0x1c00,0x3ed3f00,0x90000,0x20000,0x3ed2000,0x2690000,0x100000,0x100000,0x20000,0x30000000,0x4000000,0x30000000,0x20000,0x0,0x40000000,0x0,0x20000,0x100000,0x20000,0x3ed0000,};
|
||||
}
|
||||
private static void jj_la1_1() {
|
||||
jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x0,};
|
||||
jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x0,};
|
||||
}
|
||||
final private JJCalls[] jj_2_rtns = new JJCalls[1];
|
||||
private boolean jj_rescan = false;
|
||||
|
@ -1489,10 +1489,7 @@ public class QueryParser implements QueryParserConstants {
|
|||
|
||||
public ParseException generateParseException() {
|
||||
jj_expentries.removeAllElements();
|
||||
boolean[] la1tokens = new boolean[33];
|
||||
for (int i = 0; i < 33; i++) {
|
||||
la1tokens[i] = false;
|
||||
}
|
||||
boolean[] la1tokens = new boolean[34];
|
||||
if (jj_kind >= 0) {
|
||||
la1tokens[jj_kind] = true;
|
||||
jj_kind = -1;
|
||||
|
@ -1509,7 +1506,7 @@ public class QueryParser implements QueryParserConstants {
|
|||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 33; i++) {
|
||||
for (int i = 0; i < 34; i++) {
|
||||
if (la1tokens[i]) {
|
||||
jj_expentry = new int[1];
|
||||
jj_expentry[0] = i;
|
||||
|
@ -1535,6 +1532,7 @@ public class QueryParser implements QueryParserConstants {
|
|||
final private void jj_rescan_token() {
|
||||
jj_rescan = true;
|
||||
for (int i = 0; i < 1; i++) {
|
||||
try {
|
||||
JJCalls p = jj_2_rtns[i];
|
||||
do {
|
||||
if (p.gen > jj_gen) {
|
||||
|
@ -1545,6 +1543,7 @@ public class QueryParser implements QueryParserConstants {
|
|||
}
|
||||
p = p.next;
|
||||
} while (p != null);
|
||||
} catch(LookaheadSuccess ls) { }
|
||||
}
|
||||
jj_rescan = false;
|
||||
}
|
||||
|
|
|
@ -908,6 +908,7 @@ PARSER_END(QueryParser)
|
|||
| <_ESCAPED_CHAR> ) >
|
||||
| <#_TERM_CHAR: ( <_TERM_START_CHAR> | <_ESCAPED_CHAR> | "-" | "+" ) >
|
||||
| <#_WHITESPACE: ( " " | "\t" | "\n" | "\r") >
|
||||
| <#_QUOTED_CHAR: ( ~[ "\"", "\\" ] | <_ESCAPED_CHAR> ) >
|
||||
}
|
||||
|
||||
<DEFAULT, RangeIn, RangeEx> SKIP : {
|
||||
|
@ -925,7 +926,7 @@ PARSER_END(QueryParser)
|
|||
| <COLON: ":" >
|
||||
| <STAR: "*" >
|
||||
| <CARAT: "^" > : Boost
|
||||
| <QUOTED: "\"" (~["\""] | "\\\"")* "\"">
|
||||
| <QUOTED: "\"" (<_QUOTED_CHAR>)* "\"">
|
||||
| <TERM: <_TERM_START_CHAR> (<_TERM_CHAR>)* >
|
||||
| <FUZZY_SLOP: "~" ( (<_NUM_CHAR>)+ ( "." (<_NUM_CHAR>)+ )? )? >
|
||||
| <PREFIXTERM: ("*") | ( <_TERM_START_CHAR> (<_TERM_CHAR>)* "*" ) >
|
||||
|
|
|
@ -9,32 +9,33 @@ public interface QueryParserConstants {
|
|||
int _TERM_START_CHAR = 3;
|
||||
int _TERM_CHAR = 4;
|
||||
int _WHITESPACE = 5;
|
||||
int AND = 7;
|
||||
int OR = 8;
|
||||
int NOT = 9;
|
||||
int PLUS = 10;
|
||||
int MINUS = 11;
|
||||
int LPAREN = 12;
|
||||
int RPAREN = 13;
|
||||
int COLON = 14;
|
||||
int STAR = 15;
|
||||
int CARAT = 16;
|
||||
int QUOTED = 17;
|
||||
int TERM = 18;
|
||||
int FUZZY_SLOP = 19;
|
||||
int PREFIXTERM = 20;
|
||||
int WILDTERM = 21;
|
||||
int RANGEIN_START = 22;
|
||||
int RANGEEX_START = 23;
|
||||
int NUMBER = 24;
|
||||
int RANGEIN_TO = 25;
|
||||
int RANGEIN_END = 26;
|
||||
int RANGEIN_QUOTED = 27;
|
||||
int RANGEIN_GOOP = 28;
|
||||
int RANGEEX_TO = 29;
|
||||
int RANGEEX_END = 30;
|
||||
int RANGEEX_QUOTED = 31;
|
||||
int RANGEEX_GOOP = 32;
|
||||
int _QUOTED_CHAR = 6;
|
||||
int AND = 8;
|
||||
int OR = 9;
|
||||
int NOT = 10;
|
||||
int PLUS = 11;
|
||||
int MINUS = 12;
|
||||
int LPAREN = 13;
|
||||
int RPAREN = 14;
|
||||
int COLON = 15;
|
||||
int STAR = 16;
|
||||
int CARAT = 17;
|
||||
int QUOTED = 18;
|
||||
int TERM = 19;
|
||||
int FUZZY_SLOP = 20;
|
||||
int PREFIXTERM = 21;
|
||||
int WILDTERM = 22;
|
||||
int RANGEIN_START = 23;
|
||||
int RANGEEX_START = 24;
|
||||
int NUMBER = 25;
|
||||
int RANGEIN_TO = 26;
|
||||
int RANGEIN_END = 27;
|
||||
int RANGEIN_QUOTED = 28;
|
||||
int RANGEIN_GOOP = 29;
|
||||
int RANGEEX_TO = 30;
|
||||
int RANGEEX_END = 31;
|
||||
int RANGEEX_QUOTED = 32;
|
||||
int RANGEEX_GOOP = 33;
|
||||
|
||||
int Boost = 0;
|
||||
int RangeEx = 1;
|
||||
|
@ -48,7 +49,8 @@ public interface QueryParserConstants {
|
|||
"<_TERM_START_CHAR>",
|
||||
"<_TERM_CHAR>",
|
||||
"<_WHITESPACE>",
|
||||
"<token of kind 6>",
|
||||
"<_QUOTED_CHAR>",
|
||||
"<token of kind 7>",
|
||||
"<AND>",
|
||||
"<OR>",
|
||||
"<NOT>",
|
||||
|
|
|
@ -45,23 +45,23 @@ private final int jjMoveStringLiteralDfa0_3()
|
|||
switch(curChar)
|
||||
{
|
||||
case 40:
|
||||
return jjStopAtPos(0, 12);
|
||||
case 41:
|
||||
return jjStopAtPos(0, 13);
|
||||
case 42:
|
||||
return jjStartNfaWithStates_3(0, 15, 36);
|
||||
case 43:
|
||||
return jjStopAtPos(0, 10);
|
||||
case 45:
|
||||
return jjStopAtPos(0, 11);
|
||||
case 58:
|
||||
case 41:
|
||||
return jjStopAtPos(0, 14);
|
||||
case 42:
|
||||
return jjStartNfaWithStates_3(0, 16, 36);
|
||||
case 43:
|
||||
return jjStopAtPos(0, 11);
|
||||
case 45:
|
||||
return jjStopAtPos(0, 12);
|
||||
case 58:
|
||||
return jjStopAtPos(0, 15);
|
||||
case 91:
|
||||
return jjStopAtPos(0, 22);
|
||||
case 94:
|
||||
return jjStopAtPos(0, 16);
|
||||
case 123:
|
||||
return jjStopAtPos(0, 23);
|
||||
case 94:
|
||||
return jjStopAtPos(0, 17);
|
||||
case 123:
|
||||
return jjStopAtPos(0, 24);
|
||||
default :
|
||||
return jjMoveNfa_3(0, 0);
|
||||
}
|
||||
|
@ -125,57 +125,56 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
case 25:
|
||||
if ((0xfbfffcf8ffffd9ffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
break;
|
||||
case 0:
|
||||
if ((0xfbffd4f8ffffd9ffL & l) != 0L)
|
||||
{
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
}
|
||||
else if ((0x100002600L & l) != 0L)
|
||||
{
|
||||
if (kind > 6)
|
||||
kind = 6;
|
||||
if (kind > 7)
|
||||
kind = 7;
|
||||
}
|
||||
else if (curChar == 34)
|
||||
jjCheckNAddStates(0, 2);
|
||||
else if (curChar == 33)
|
||||
{
|
||||
if (kind > 9)
|
||||
kind = 9;
|
||||
if (kind > 10)
|
||||
kind = 10;
|
||||
}
|
||||
if ((0x7bffd0f8ffffd9ffL & l) != 0L)
|
||||
{
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddStates(3, 7);
|
||||
}
|
||||
else if (curChar == 42)
|
||||
{
|
||||
if (kind > 20)
|
||||
kind = 20;
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
}
|
||||
if (curChar == 38)
|
||||
jjstateSet[jjnewStateCnt++] = 4;
|
||||
break;
|
||||
case 4:
|
||||
if (curChar == 38 && kind > 7)
|
||||
kind = 7;
|
||||
if (curChar == 38 && kind > 8)
|
||||
kind = 8;
|
||||
break;
|
||||
case 5:
|
||||
if (curChar == 38)
|
||||
jjstateSet[jjnewStateCnt++] = 4;
|
||||
break;
|
||||
case 13:
|
||||
if (curChar == 33 && kind > 9)
|
||||
kind = 9;
|
||||
if (curChar == 33 && kind > 10)
|
||||
kind = 10;
|
||||
break;
|
||||
case 14:
|
||||
case 16:
|
||||
if (curChar == 34)
|
||||
jjCheckNAddStates(0, 2);
|
||||
break;
|
||||
|
@ -183,15 +182,18 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
if ((0xfffffffbffffffffL & l) != 0L)
|
||||
jjCheckNAddStates(0, 2);
|
||||
break;
|
||||
case 17:
|
||||
jjCheckNAddStates(0, 2);
|
||||
break;
|
||||
case 18:
|
||||
if (curChar == 34 && kind > 17)
|
||||
kind = 17;
|
||||
if (curChar == 34 && kind > 18)
|
||||
kind = 18;
|
||||
break;
|
||||
case 20:
|
||||
if ((0x3ff000000000000L & l) == 0L)
|
||||
break;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
if (kind > 20)
|
||||
kind = 20;
|
||||
jjAddStates(8, 9);
|
||||
break;
|
||||
case 21:
|
||||
|
@ -201,43 +203,43 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
case 22:
|
||||
if ((0x3ff000000000000L & l) == 0L)
|
||||
break;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
if (kind > 20)
|
||||
kind = 20;
|
||||
jjCheckNAdd(22);
|
||||
break;
|
||||
case 23:
|
||||
if (curChar == 42 && kind > 20)
|
||||
kind = 20;
|
||||
if (curChar == 42 && kind > 21)
|
||||
kind = 21;
|
||||
break;
|
||||
case 24:
|
||||
if ((0xfbffd4f8ffffd9ffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
break;
|
||||
case 27:
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
break;
|
||||
case 28:
|
||||
if ((0x7bffd0f8ffffd9ffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddStates(3, 7);
|
||||
break;
|
||||
case 29:
|
||||
if ((0x7bfff8f8ffffd9ffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddTwoStates(29, 30);
|
||||
break;
|
||||
case 31:
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddTwoStates(29, 30);
|
||||
break;
|
||||
case 32:
|
||||
|
@ -261,8 +263,8 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
case 36:
|
||||
if ((0x97ffffff87ffffffL & l) != 0L)
|
||||
{
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
}
|
||||
else if (curChar == 92)
|
||||
|
@ -271,22 +273,22 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
case 0:
|
||||
if ((0x97ffffff87ffffffL & l) != 0L)
|
||||
{
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddStates(3, 7);
|
||||
}
|
||||
else if (curChar == 92)
|
||||
jjCheckNAddStates(13, 15);
|
||||
else if (curChar == 126)
|
||||
{
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
if (kind > 20)
|
||||
kind = 20;
|
||||
jjstateSet[jjnewStateCnt++] = 20;
|
||||
}
|
||||
if ((0x97ffffff87ffffffL & l) != 0L)
|
||||
{
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
}
|
||||
if (curChar == 78)
|
||||
|
@ -299,8 +301,8 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
jjstateSet[jjnewStateCnt++] = 2;
|
||||
break;
|
||||
case 1:
|
||||
if (curChar == 68 && kind > 7)
|
||||
kind = 7;
|
||||
if (curChar == 68 && kind > 8)
|
||||
kind = 8;
|
||||
break;
|
||||
case 2:
|
||||
if (curChar == 78)
|
||||
|
@ -311,24 +313,24 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
jjstateSet[jjnewStateCnt++] = 2;
|
||||
break;
|
||||
case 6:
|
||||
if (curChar == 82 && kind > 8)
|
||||
kind = 8;
|
||||
if (curChar == 82 && kind > 9)
|
||||
kind = 9;
|
||||
break;
|
||||
case 7:
|
||||
if (curChar == 79)
|
||||
jjstateSet[jjnewStateCnt++] = 6;
|
||||
break;
|
||||
case 8:
|
||||
if (curChar == 124 && kind > 8)
|
||||
kind = 8;
|
||||
if (curChar == 124 && kind > 9)
|
||||
kind = 9;
|
||||
break;
|
||||
case 9:
|
||||
if (curChar == 124)
|
||||
jjstateSet[jjnewStateCnt++] = 8;
|
||||
break;
|
||||
case 10:
|
||||
if (curChar == 84 && kind > 9)
|
||||
kind = 9;
|
||||
if (curChar == 84 && kind > 10)
|
||||
kind = 10;
|
||||
break;
|
||||
case 11:
|
||||
if (curChar == 79)
|
||||
|
@ -339,31 +341,35 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
jjstateSet[jjnewStateCnt++] = 11;
|
||||
break;
|
||||
case 15:
|
||||
jjAddStates(0, 2);
|
||||
if ((0xffffffffefffffffL & l) != 0L)
|
||||
jjCheckNAddStates(0, 2);
|
||||
break;
|
||||
case 16:
|
||||
if (curChar == 92)
|
||||
jjstateSet[jjnewStateCnt++] = 17;
|
||||
break;
|
||||
case 17:
|
||||
if (curChar == 92)
|
||||
jjstateSet[jjnewStateCnt++] = 16;
|
||||
jjCheckNAddStates(0, 2);
|
||||
break;
|
||||
case 19:
|
||||
if (curChar != 126)
|
||||
break;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
if (kind > 20)
|
||||
kind = 20;
|
||||
jjstateSet[jjnewStateCnt++] = 20;
|
||||
break;
|
||||
case 24:
|
||||
if ((0x97ffffff87ffffffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
break;
|
||||
case 25:
|
||||
if ((0x97ffffff87ffffffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
break;
|
||||
case 26:
|
||||
|
@ -371,22 +377,22 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
jjCheckNAddTwoStates(27, 27);
|
||||
break;
|
||||
case 27:
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
break;
|
||||
case 28:
|
||||
if ((0x97ffffff87ffffffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddStates(3, 7);
|
||||
break;
|
||||
case 29:
|
||||
if ((0x97ffffff87ffffffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddTwoStates(29, 30);
|
||||
break;
|
||||
case 30:
|
||||
|
@ -394,8 +400,8 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
jjCheckNAddTwoStates(31, 31);
|
||||
break;
|
||||
case 31:
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddTwoStates(29, 30);
|
||||
break;
|
||||
case 32:
|
||||
|
@ -433,48 +439,49 @@ private final int jjMoveNfa_3(int startState, int curPos)
|
|||
case 27:
|
||||
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
break;
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
break;
|
||||
case 0:
|
||||
if (jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
{
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
}
|
||||
if (jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
{
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddStates(3, 7);
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
case 17:
|
||||
if (jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
jjAddStates(0, 2);
|
||||
jjCheckNAddStates(0, 2);
|
||||
break;
|
||||
case 24:
|
||||
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
break;
|
||||
if (kind > 21)
|
||||
kind = 21;
|
||||
if (kind > 22)
|
||||
kind = 22;
|
||||
jjCheckNAddTwoStates(25, 26);
|
||||
break;
|
||||
case 28:
|
||||
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
break;
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddStates(3, 7);
|
||||
break;
|
||||
case 29:
|
||||
case 31:
|
||||
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
break;
|
||||
if (kind > 18)
|
||||
kind = 18;
|
||||
if (kind > 19)
|
||||
kind = 19;
|
||||
jjCheckNAddTwoStates(29, 30);
|
||||
break;
|
||||
case 32:
|
||||
|
@ -504,9 +511,9 @@ private final int jjStopStringLiteralDfa_1(int pos, long active0)
|
|||
switch (pos)
|
||||
{
|
||||
case 0:
|
||||
if ((active0 & 0x20000000L) != 0L)
|
||||
if ((active0 & 0x40000000L) != 0L)
|
||||
{
|
||||
jjmatchedKind = 32;
|
||||
jjmatchedKind = 33;
|
||||
return 6;
|
||||
}
|
||||
return -1;
|
||||
|
@ -531,9 +538,9 @@ private final int jjMoveStringLiteralDfa0_1()
|
|||
switch(curChar)
|
||||
{
|
||||
case 84:
|
||||
return jjMoveStringLiteralDfa1_1(0x20000000L);
|
||||
return jjMoveStringLiteralDfa1_1(0x40000000L);
|
||||
case 125:
|
||||
return jjStopAtPos(0, 30);
|
||||
return jjStopAtPos(0, 31);
|
||||
default :
|
||||
return jjMoveNfa_1(0, 0);
|
||||
}
|
||||
|
@ -548,8 +555,8 @@ private final int jjMoveStringLiteralDfa1_1(long active0)
|
|||
switch(curChar)
|
||||
{
|
||||
case 79:
|
||||
if ((active0 & 0x20000000L) != 0L)
|
||||
return jjStartNfaWithStates_1(1, 29, 6);
|
||||
if ((active0 & 0x40000000L) != 0L)
|
||||
return jjStartNfaWithStates_1(1, 30, 6);
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
|
@ -578,14 +585,14 @@ private final int jjMoveNfa_1(int startState, int curPos)
|
|||
case 0:
|
||||
if ((0xfffffffeffffffffL & l) != 0L)
|
||||
{
|
||||
if (kind > 32)
|
||||
kind = 32;
|
||||
if (kind > 33)
|
||||
kind = 33;
|
||||
jjCheckNAdd(6);
|
||||
}
|
||||
if ((0x100002600L & l) != 0L)
|
||||
{
|
||||
if (kind > 6)
|
||||
kind = 6;
|
||||
if (kind > 7)
|
||||
kind = 7;
|
||||
}
|
||||
else if (curChar == 34)
|
||||
jjCheckNAddTwoStates(2, 4);
|
||||
|
@ -603,14 +610,14 @@ private final int jjMoveNfa_1(int startState, int curPos)
|
|||
jjCheckNAddStates(16, 18);
|
||||
break;
|
||||
case 5:
|
||||
if (curChar == 34 && kind > 31)
|
||||
kind = 31;
|
||||
if (curChar == 34 && kind > 32)
|
||||
kind = 32;
|
||||
break;
|
||||
case 6:
|
||||
if ((0xfffffffeffffffffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 32)
|
||||
kind = 32;
|
||||
if (kind > 33)
|
||||
kind = 33;
|
||||
jjCheckNAdd(6);
|
||||
break;
|
||||
default : break;
|
||||
|
@ -628,8 +635,8 @@ private final int jjMoveNfa_1(int startState, int curPos)
|
|||
case 6:
|
||||
if ((0xdfffffffffffffffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 32)
|
||||
kind = 32;
|
||||
if (kind > 33)
|
||||
kind = 33;
|
||||
jjCheckNAdd(6);
|
||||
break;
|
||||
case 2:
|
||||
|
@ -658,8 +665,8 @@ private final int jjMoveNfa_1(int startState, int curPos)
|
|||
case 6:
|
||||
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
break;
|
||||
if (kind > 32)
|
||||
kind = 32;
|
||||
if (kind > 33)
|
||||
kind = 33;
|
||||
jjCheckNAdd(6);
|
||||
break;
|
||||
case 2:
|
||||
|
@ -709,8 +716,8 @@ private final int jjMoveNfa_0(int startState, int curPos)
|
|||
case 0:
|
||||
if ((0x3ff000000000000L & l) == 0L)
|
||||
break;
|
||||
if (kind > 24)
|
||||
kind = 24;
|
||||
if (kind > 25)
|
||||
kind = 25;
|
||||
jjAddStates(19, 20);
|
||||
break;
|
||||
case 1:
|
||||
|
@ -720,8 +727,8 @@ private final int jjMoveNfa_0(int startState, int curPos)
|
|||
case 2:
|
||||
if ((0x3ff000000000000L & l) == 0L)
|
||||
break;
|
||||
if (kind > 24)
|
||||
kind = 24;
|
||||
if (kind > 25)
|
||||
kind = 25;
|
||||
jjCheckNAdd(2);
|
||||
break;
|
||||
default : break;
|
||||
|
@ -772,9 +779,9 @@ private final int jjStopStringLiteralDfa_2(int pos, long active0)
|
|||
switch (pos)
|
||||
{
|
||||
case 0:
|
||||
if ((active0 & 0x2000000L) != 0L)
|
||||
if ((active0 & 0x4000000L) != 0L)
|
||||
{
|
||||
jjmatchedKind = 28;
|
||||
jjmatchedKind = 29;
|
||||
return 6;
|
||||
}
|
||||
return -1;
|
||||
|
@ -799,9 +806,9 @@ private final int jjMoveStringLiteralDfa0_2()
|
|||
switch(curChar)
|
||||
{
|
||||
case 84:
|
||||
return jjMoveStringLiteralDfa1_2(0x2000000L);
|
||||
return jjMoveStringLiteralDfa1_2(0x4000000L);
|
||||
case 93:
|
||||
return jjStopAtPos(0, 26);
|
||||
return jjStopAtPos(0, 27);
|
||||
default :
|
||||
return jjMoveNfa_2(0, 0);
|
||||
}
|
||||
|
@ -816,8 +823,8 @@ private final int jjMoveStringLiteralDfa1_2(long active0)
|
|||
switch(curChar)
|
||||
{
|
||||
case 79:
|
||||
if ((active0 & 0x2000000L) != 0L)
|
||||
return jjStartNfaWithStates_2(1, 25, 6);
|
||||
if ((active0 & 0x4000000L) != 0L)
|
||||
return jjStartNfaWithStates_2(1, 26, 6);
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
|
@ -846,14 +853,14 @@ private final int jjMoveNfa_2(int startState, int curPos)
|
|||
case 0:
|
||||
if ((0xfffffffeffffffffL & l) != 0L)
|
||||
{
|
||||
if (kind > 28)
|
||||
kind = 28;
|
||||
if (kind > 29)
|
||||
kind = 29;
|
||||
jjCheckNAdd(6);
|
||||
}
|
||||
if ((0x100002600L & l) != 0L)
|
||||
{
|
||||
if (kind > 6)
|
||||
kind = 6;
|
||||
if (kind > 7)
|
||||
kind = 7;
|
||||
}
|
||||
else if (curChar == 34)
|
||||
jjCheckNAddTwoStates(2, 4);
|
||||
|
@ -871,14 +878,14 @@ private final int jjMoveNfa_2(int startState, int curPos)
|
|||
jjCheckNAddStates(16, 18);
|
||||
break;
|
||||
case 5:
|
||||
if (curChar == 34 && kind > 27)
|
||||
kind = 27;
|
||||
if (curChar == 34 && kind > 28)
|
||||
kind = 28;
|
||||
break;
|
||||
case 6:
|
||||
if ((0xfffffffeffffffffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 28)
|
||||
kind = 28;
|
||||
if (kind > 29)
|
||||
kind = 29;
|
||||
jjCheckNAdd(6);
|
||||
break;
|
||||
default : break;
|
||||
|
@ -896,8 +903,8 @@ private final int jjMoveNfa_2(int startState, int curPos)
|
|||
case 6:
|
||||
if ((0xffffffffdfffffffL & l) == 0L)
|
||||
break;
|
||||
if (kind > 28)
|
||||
kind = 28;
|
||||
if (kind > 29)
|
||||
kind = 29;
|
||||
jjCheckNAdd(6);
|
||||
break;
|
||||
case 2:
|
||||
|
@ -926,8 +933,8 @@ private final int jjMoveNfa_2(int startState, int curPos)
|
|||
case 6:
|
||||
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
|
||||
break;
|
||||
if (kind > 28)
|
||||
kind = 28;
|
||||
if (kind > 29)
|
||||
kind = 29;
|
||||
jjCheckNAdd(6);
|
||||
break;
|
||||
case 2:
|
||||
|
@ -952,7 +959,7 @@ private final int jjMoveNfa_2(int startState, int curPos)
|
|||
}
|
||||
}
|
||||
static final int[] jjnextStates = {
|
||||
15, 17, 18, 29, 32, 23, 33, 30, 20, 21, 32, 23, 33, 31, 34, 27,
|
||||
15, 16, 18, 29, 32, 23, 33, 30, 20, 21, 32, 23, 33, 31, 34, 27,
|
||||
2, 4, 5, 0, 1,
|
||||
};
|
||||
private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, long l2)
|
||||
|
@ -968,9 +975,9 @@ private static final boolean jjCanMove_0(int hiByte, int i1, int i2, long l1, lo
|
|||
}
|
||||
}
|
||||
public static final String[] jjstrLiteralImages = {
|
||||
"", null, null, null, null, null, null, null, null, null, "\53", "\55", "\50",
|
||||
"\51", "\72", "\52", "\136", null, null, null, null, null, "\133", "\173", null,
|
||||
"\124\117", "\135", null, null, "\124\117", "\175", null, null, };
|
||||
"", null, null, null, null, null, null, null, null, null, null, "\53", "\55",
|
||||
"\50", "\51", "\72", "\52", "\136", null, null, null, null, null, "\133", "\173",
|
||||
null, "\124\117", "\135", null, null, "\124\117", "\175", null, null, };
|
||||
public static final String[] lexStateNames = {
|
||||
"Boost",
|
||||
"RangeEx",
|
||||
|
@ -978,25 +985,23 @@ public static final String[] lexStateNames = {
|
|||
"DEFAULT",
|
||||
};
|
||||
public static final int[] jjnewLexState = {
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 2, 1, 3,
|
||||
-1, 3, -1, -1, -1, 3, -1, -1,
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, 2, 1,
|
||||
3, -1, 3, -1, -1, -1, 3, -1, -1,
|
||||
};
|
||||
static final long[] jjtoToken = {
|
||||
0x1ffffff81L,
|
||||
0x3ffffff01L,
|
||||
};
|
||||
static final long[] jjtoSkip = {
|
||||
0x40L,
|
||||
0x80L,
|
||||
};
|
||||
protected CharStream input_stream;
|
||||
private final int[] jjrounds = new int[36];
|
||||
private final int[] jjstateSet = new int[72];
|
||||
protected char curChar;
|
||||
public QueryParserTokenManager(CharStream stream)
|
||||
{
|
||||
public QueryParserTokenManager(CharStream stream){
|
||||
input_stream = stream;
|
||||
}
|
||||
public QueryParserTokenManager(CharStream stream, int lexState)
|
||||
{
|
||||
public QueryParserTokenManager(CharStream stream, int lexState){
|
||||
this(stream);
|
||||
SwitchTo(lexState);
|
||||
}
|
||||
|
|
|
@ -614,6 +614,9 @@ public class TestQueryParser extends LuceneTestCase {
|
|||
assertQueryEquals("\\\\", a, "\\"); // escaped backslash
|
||||
|
||||
assertParseException("\\"); // a backslash must always be escaped
|
||||
|
||||
// LUCENE-1189
|
||||
assertQueryEquals("(\"a\\\\\") or (\"b\")", a ,"a\\ or b");
|
||||
}
|
||||
|
||||
public void testQueryStringEscaping() throws Exception {
|
||||
|
|
Loading…
Reference in New Issue