User: norbert
Date: 00/05/19 19:12:18
Modified: src/java/org/spyderMQ/selectors Operator.java parser.java
parserval.java
Log:
Finished with the parser / lexer.
Work still remains for Operator class
Revision Changes Path
1.3 +51 -5 spyderMQ/src/java/org/spyderMQ/selectors/Operator.java
Index: Operator.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spyderMQ/selectors/Operator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- Operator.java 2000/05/19 19:28:25 1.2
+++ Operator.java 2000/05/20 02:12:18 1.3
@@ -11,23 +11,62 @@
*
* @author Norbert Lataille ([EMAIL PROTECTED])
*
- * @version $Revision: 1.2 $
+ * @version $Revision: 1.3 $
*/
public class Operator
{
int operation;
Object oper1;
Object oper2;
+ Object oper3;
public final static int EQUAL = 0;
+ public final static int NOT = 1;
public final static int AND = 2;
public final static int OR = 3;
+ public final static int GT = 4;
+ public final static int GE = 5;
+ public final static int LT = 6;
+ public final static int LE = 7;
+ public final static int DIFFERENT = 8;
+ public final static int ADD = 9;
+ public final static int SUB = 10;
+ public final static int NEG = 11;
+ public final static int MUL = 12;
+ public final static int DIV = 13;
+ public final static int BETWEEN = 14;
+ public final static int NOT_BETWEEN = 15;
+ public final static int LIKE = 16;
+ public final static int NOT_LIKE = 17;
+ public final static int LIKE_ESCAPE = 18;
+ public final static int NOT_LIKE_ESCAPE = 19;
+ public final static int IS_NULL = 20;
+ public final static int IS_NOT_NULL = 21;
+ public final static int IN = 22;
+ public final static int NOT_IN = 23;
+ public Operator(int operation, Object oper1, Object oper2, Object oper3)
+ {
+ this.operation=operation;
+ this.oper1=oper1;
+ this.oper2=oper2;
+ this.oper3=oper3;
+ }
+
public Operator(int operation, Object oper1, Object oper2)
{
this.operation=operation;
this.oper1=oper1;
this.oper2=oper2;
+ this.oper3=null;
+ }
+
+ public Operator(int operation, Object oper1)
+ {
+ this.operation=operation;
+ this.oper1=oper1;
+ this.oper2=null;
+ this.oper3=null;
}
Object and() throws Exception
@@ -131,10 +170,17 @@
st += ((Operator)oper1).print(nextLevel);
} else st+=nextLevel+oper1.toString()+"\n";
- if (oper2==null) st+=nextLevel+"null\n";
- else if (oper2 instanceof Operator) {
- st += ((Operator)oper2).print(nextLevel);
- } else st+=nextLevel+oper2.toString()+"\n";
+ if (oper2!=null) {
+ if (oper2 instanceof Operator) {
+ st += ((Operator)oper2).print(nextLevel);
+ } else st+=nextLevel+oper2.toString()+"\n";
+ }
+
+ if (oper3!=null) {
+ if (oper3 instanceof Operator) {
+ st += ((Operator)oper3).print(nextLevel);
+ } else st+=nextLevel+oper3.toString()+"\n";
+ }
st+=level+")\n";
1.3 +379 -118 spyderMQ/src/java/org/spyderMQ/selectors/parser.java
Index: parser.java
===================================================================
RCS file: /products/cvs/ejboss/spyderMQ/src/java/org/spyderMQ/selectors/parser.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- parser.java 2000/05/19 19:38:36 1.2
+++ parser.java 2000/05/20 02:12:18 1.3
@@ -6,14 +6,17 @@
//### Please send bug reports to [EMAIL PROTECTED]
//### static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/90";
+
+
//#line 2 "jms.y"
package org.spydermq.selectors;
import java.util.StringTokenizer;
import java.util.HashMap;
+import java.util.HashSet;
-//#line 17 "parser.java"
+//#line 18 "parser.java"
@@ -147,96 +150,241 @@
}
//#### end semantic value section ####
public final static short IDENTIFIER=257;
-public final static short OR=258;
-public final static short AND=259;
-public final static short EQUAL=260;
+public final static short STRING=258;
+public final static short DOUBLE=259;
+public final static short LONG=260;
+public final static short CST=261;
+public final static short NOT=262;
+public final static short EQUAL=263;
+public final static short GT=264;
+public final static short GE=265;
+public final static short LT=266;
+public final static short LE=267;
+public final static short DIFFERENT=268;
+public final static short NEG=269;
+public final static short BETWEEN=270;
+public final static short AND2=271;
+public final static short ESCAPE=272;
+public final static short LIKE=273;
+public final static short NULL=274;
+public final static short IN=275;
+public final static short IS=276;
+public final static short OR=277;
+public final static short AND=278;
public final static short YYERRCODE=256;
final static short yylhs[] = { -1,
- 0, 2, 2, 1, 1, 1, 1,
+ 0, 2, 2, 2, 2, 2, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 3, 3,
};
final static short yylen[] = { 2,
- 2, 1, 3, 1, 3, 3, 3,
+ 2, 1, 1, 1, 1, 1, 3, 1, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 4, 2, 2, 2, 5, 6, 3, 4, 5,
+ 6, 5, 6, 1, 3,
};
final static short yydefred[] = { 0,
- 2, 0, 0, 0, 4, 0, 0, 0, 0, 1,
- 3, 0, 0, 7,
-};
-final static short yydgoto[] = { 3,
- 4, 5,
+ 2, 3, 4, 5, 6, 0, 0, 0, 0, 0,
+ 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 34, 0, 22, 0, 0, 0, 0, 0, 32, 0,
+ 0, 0, 33, 35,
};
-final static short yysindex[] = { -33,
- 0, -33, 0, -32, 0, -41, -33, -33, -33, 0,
- 0, -258, -247, 0,
+final static short yydgoto[] = { 10,
+ 11, 12, 62,
+};
+final static short yysindex[] = { 345,
+ 0, 0, 0, 0, 0, 345, 345, 345, 345, 0,
+ 160, 0, -254, -271, -271, 43, -263, 345, 345, 345,
+ 345, 345, 345, 345, 345, -31, -259, 345, 345, 345,
+ 345, 345, 345, 0, 0, 345, 345, -20, 144, 144,
+ 144, 144, 144, 144, 374, 129, -234, -249, 0, 431,
+ 448, 107, 107, -254, -254, 397, 455, -234, 345, 345,
+ 0, -30, 0, 345, 345, -28, 414, 414, 0, -232,
+ 414, 414, 0, 0,
};
final static short yyrindex[] = { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -8, -41, -24, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -36, -38, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 84, 86,
+ 88, 96, 104, 121, 0, 109, 0, 0, 0, 174,
+ 137, 60, 76, 8, 24, 0, 126, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 32, 176, 0, 0,
+ 271, 276, 0, 0,
};
final static short yygindex[] = { 0,
- 2, 0,
+ 497, 0, -29,
};
-final static int YYTABLESIZE=228;
-final static short yytable[] = { 11,
- 8, 9, 5, 6, 6, 5, 2, 6, 12, 13,
- 14, 10, 9, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 7, 8, 9, 5,
- 5, 6, 0, 1, 0, 7, 8, 9,
+final static int YYTABLESIZE=731;
+final static short yytable[] = { 25,
+ 25, 25, 48, 25, 27, 25, 36, 17, 47, 37,
+ 69, 38, 73, 70, 49, 70, 24, 24, 24, 58,
+ 24, 27, 24, 61, 63, 74, 0, 0, 66, 0,
+ 0, 0, 23, 23, 23, 0, 23, 0, 23, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 11, 11,
+ 11, 0, 11, 0, 11, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 12, 12, 12, 0, 12, 0,
+ 12, 0, 26, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 25, 35, 32, 30, 0, 31, 0, 33,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,
+ 9, 0, 9, 0, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 23, 10, 0, 10, 0,
+ 10, 0, 0, 0, 15, 0, 16, 0, 17, 0,
+ 0, 11, 0, 0, 0, 0, 18, 0, 0, 0,
+ 0, 0, 0, 0, 19, 0, 0, 12, 32, 28,
+ 0, 0, 0, 33, 0, 26, 0, 0, 0, 0,
+ 0, 20, 0, 0, 0, 0, 29, 0, 0, 0,
+ 32, 30, 0, 31, 0, 33, 0, 13, 0, 0,
+ 0, 0, 0, 9, 0, 32, 30, 0, 31, 0,
+ 33, 0, 0, 0, 0, 0, 0, 0, 0, 10,
+ 0, 32, 30, 0, 31, 0, 33, 15, 0, 16,
+ 0, 17, 0, 0, 14, 0, 30, 0, 0, 18,
+ 25, 25, 25, 25, 25, 25, 25, 19, 25, 25,
+ 25, 25, 28, 25, 0, 25, 25, 24, 24, 24,
+ 24, 24, 24, 24, 20, 24, 24, 24, 24, 29,
+ 24, 0, 24, 24, 23, 23, 23, 23, 23, 23,
+ 13, 23, 23, 23, 23, 0, 23, 0, 23, 23,
+ 11, 11, 11, 11, 11, 11, 0, 11, 11, 11,
+ 11, 0, 11, 34, 11, 11, 12, 12, 12, 12,
+ 12, 12, 0, 12, 12, 12, 12, 14, 12, 30,
+ 12, 12, 26, 26, 17, 18, 19, 20, 21, 22,
+ 23, 27, 24, 0, 0, 25, 31, 26, 27, 28,
+ 29, 0, 9, 9, 9, 9, 9, 9, 0, 9,
+ 9, 9, 9, 0, 9, 0, 9, 9, 10, 10,
+ 10, 10, 10, 10, 0, 10, 10, 10, 10, 0,
+ 10, 0, 10, 10, 15, 15, 16, 16, 17, 17,
+ 15, 15, 16, 16, 17, 17, 18, 18, 17, 0,
+ 0, 0, 18, 18, 19, 19, 0, 0, 0, 28,
+ 19, 19, 27, 0, 9, 28, 28, 7, 0, 8,
+ 17, 20, 20, 0, 27, 0, 29, 20, 20, 31,
+ 60, 0, 29, 29, 27, 17, 0, 13, 13, 0,
+ 0, 0, 0, 13, 13, 32, 30, 0, 31, 27,
+ 33, 17, 18, 19, 20, 21, 22, 23, 0, 24,
+ 0, 0, 25, 0, 26, 27, 28, 29, 32, 30,
+ 0, 31, 0, 33, 14, 14, 30, 30, 0, 0,
+ 14, 0, 0, 0, 0, 32, 30, 0, 31, 0,
+ 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 32, 30, 0, 31, 0, 33, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
+ 30, 0, 31, 0, 33, 0, 32, 30, 0, 31,
+ 0, 33, 13, 14, 15, 16, 0, 0, 0, 0,
+ 0, 0, 0, 0, 39, 40, 41, 42, 43, 44,
+ 45, 46, 0, 0, 50, 51, 52, 53, 54, 55,
+ 0, 0, 56, 57, 0, 0, 0, 0, 0, 0,
+ 0, 27, 27, 0, 0, 0, 31, 31, 0, 0,
+ 0, 0, 0, 0, 0, 67, 68, 0, 0, 0,
+ 71, 72, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 2, 3, 4, 5, 6, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 17, 18, 19, 20, 21,
+ 22, 23, 0, 24, 59, 0, 25, 0, 26, 27,
+ 28, 29, 0, 0, 0, 0, 0, 0, 17, 18,
+ 19, 20, 21, 22, 23, 0, 24, 64, 0, 25,
+ 0, 26, 27, 28, 29, 17, 18, 19, 20, 21,
+ 22, 23, 0, 24, 0, 0, 25, 0, 26, 27,
+ 28, 29, 17, 18, 19, 20, 21, 22, 23, 0,
+ 24, 0, 0, 25, 0, 26, 27, 0, 29, 17,
+ 18, 19, 20, 21, 22, 23, 17, 24, 0, 0,
+ 25, 0, 26, 27, 0, 0, 65, 0, 0, 0,
+ 27,
};
final static short yycheck[] = { 41,
- 259, 260, 41, 2, 41, 44, 40, 44, 7, 8,
- 9, 44, 260, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 258, 259, 260, 258,
- 259, 258, -1, 257, -1, 258, 259, 260,
+ 42, 43, 262, 45, 276, 47, 270, 262, 40, 273,
+ 41, 275, 41, 44, 274, 44, 41, 42, 43, 40,
+ 45, 276, 47, 258, 274, 258, -1, -1, 58, -1,
+ -1, -1, 41, 42, 43, -1, 45, -1, 47, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 41, 42,
+ 43, -1, 45, -1, 47, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 41, 42, 43, -1, 45, -1,
+ 47, -1, 41, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 124, 41, 42, 43, -1, 45, -1, 47,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 124,
+ 41, -1, 43, -1, 45, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 124, 41, -1, 43, -1,
+ 45, -1, -1, -1, 41, -1, 41, -1, 41, -1,
+ -1, 124, -1, -1, -1, -1, 41, -1, -1, -1,
+ -1, -1, -1, -1, 41, -1, -1, 124, 42, 41,
+ -1, -1, -1, 47, -1, 124, -1, -1, -1, -1,
+ -1, 41, -1, -1, -1, -1, 41, -1, -1, -1,
+ 42, 43, -1, 45, -1, 47, -1, 41, -1, -1,
+ -1, -1, -1, 124, -1, 42, 43, -1, 45, -1,
+ 47, -1, -1, -1, -1, -1, -1, -1, -1, 124,
+ -1, 42, 43, -1, 45, -1, 47, 124, -1, 124,
+ -1, 124, -1, -1, 41, -1, 41, -1, -1, 124,
+ 262, 263, 264, 265, 266, 267, 268, 124, 270, 271,
+ 272, 273, 124, 275, -1, 277, 278, 262, 263, 264,
+ 265, 266, 267, 268, 124, 270, 271, 272, 273, 124,
+ 275, -1, 277, 278, 263, 264, 265, 266, 267, 268,
+ 124, 270, 271, 272, 273, -1, 275, -1, 277, 278,
+ 263, 264, 265, 266, 267, 268, -1, 270, 271, 272,
+ 273, -1, 275, 124, 277, 278, 263, 264, 265, 266,
+ 267, 268, -1, 270, 271, 272, 273, 124, 275, 124,
+ 277, 278, 271, 272, 262, 263, 264, 265, 266, 267,
+ 268, 41, 270, -1, -1, 273, 41, 275, 276, 277,
+ 278, -1, 263, 264, 265, 266, 267, 268, -1, 270,
+ 271, 272, 273, -1, 275, -1, 277, 278, 263, 264,
+ 265, 266, 267, 268, -1, 270, 271, 272, 273, -1,
+ 275, -1, 277, 278, 271, 272, 271, 272, 271, 272,
+ 277, 278, 277, 278, 277, 278, 271, 272, 262, -1,
+ -1, -1, 277, 278, 271, 272, -1, -1, -1, 271,
+ 277, 278, 276, -1, 40, 277, 278, 43, -1, 45,
+ 262, 271, 272, -1, 124, -1, 271, 277, 278, 124,
+ 272, -1, 277, 278, 276, 262, -1, 271, 272, -1,
+ -1, -1, -1, 277, 278, 42, 43, -1, 45, 276,
+ 47, 262, 263, 264, 265, 266, 267, 268, -1, 270,
+ -1, -1, 273, -1, 275, 276, 277, 278, 42, 43,
+ -1, 45, -1, 47, 271, 272, 271, 272, -1, -1,
+ 277, -1, -1, -1, -1, 42, 43, -1, 45, -1,
+ 47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 42, 43, -1, 45, -1, 47, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 42,
+ 43, -1, 45, -1, 47, -1, 42, 43, -1, 45,
+ -1, 47, 6, 7, 8, 9, -1, -1, -1, -1,
+ -1, -1, -1, -1, 18, 19, 20, 21, 22, 23,
+ 24, 25, -1, -1, 28, 29, 30, 31, 32, 33,
+ -1, -1, 36, 37, -1, -1, -1, -1, -1, -1,
+ -1, 271, 272, -1, -1, -1, 271, 272, -1, -1,
+ -1, -1, -1, -1, -1, 59, 60, -1, -1, -1,
+ 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 257, 258, 259, 260, 261, 262, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 262, 263, 264, 265, 266,
+ 267, 268, -1, 270, 271, -1, 273, -1, 275, 276,
+ 277, 278, -1, -1, -1, -1, -1, -1, 262, 263,
+ 264, 265, 266, 267, 268, -1, 270, 271, -1, 273,
+ -1, 275, 276, 277, 278, 262, 263, 264, 265, 266,
+ 267, 268, -1, 270, -1, -1, 273, -1, 275, 276,
+ 277, 278, 262, 263, 264, 265, 266, 267, 268, -1,
+ 270, -1, -1, 273, -1, 275, 276, -1, 278, 262,
+ 263, 264, 265, 266, 267, 268, 262, 270, -1, -1,
+ 273, -1, 275, 276, -1, -1, 272, -1, -1, -1,
+ 276,
};
-final static short YYFINAL=3;
-final static short YYMAXTOKEN=260;
+final static short YYFINAL=10;
+final static short YYMAXTOKEN=278;
final static String yyname[] = {
"end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null,
-null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
-null,null,null,null,null,null,null,null,null,null,"'('","')'",null,null,"','",
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
+null,null,null,null,null,null,null,null,null,null,"'('","')'","'*'","'+'","','",
+"'-'",null,"'/'",null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
+"'|'",null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
@@ -244,47 +392,50 @@
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
-null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
-null,null,null,null,"IDENTIFIER","OR","AND","EQUAL",
+null,null,null,null,null,null,"IDENTIFIER","STRING","DOUBLE","LONG","CST","NOT",
+"EQUAL","GT","GE","LT","LE","DIFFERENT","NEG","BETWEEN","AND2","ESCAPE","LIKE",
+"NULL","IN","IS","OR","AND",
};
final static String yyrule[] = {
"$accept : total",
-"total : comp ','",
+"total : comp '|'",
"unary : IDENTIFIER",
+"unary : STRING",
+"unary : DOUBLE",
+"unary : LONG",
+"unary : CST",
"unary : '(' comp ')'",
"comp : unary",
+"comp : comp '+' comp",
+"comp : comp '-' comp",
+"comp : comp '*' comp",
+"comp : comp '/' comp",
"comp : comp AND comp",
"comp : comp OR comp",
"comp : comp EQUAL comp",
+"comp : comp GT comp",
+"comp : comp GE comp",
+"comp : comp LT comp",
+"comp : comp LE comp",
+"comp : comp DIFFERENT comp",
+"comp : comp IS NULL",
+"comp : comp IS NOT NULL",
+"comp : NOT comp",
+"comp : '-' comp",
+"comp : '+' comp",
+"comp : comp BETWEEN comp AND2 comp",
+"comp : comp NOT BETWEEN comp AND2 comp",
+"comp : comp LIKE comp",
+"comp : comp NOT LIKE comp",
+"comp : comp LIKE comp ESCAPE comp",
+"comp : comp NOT LIKE comp ESCAPE comp",
+"comp : comp IN '(' strings ')'",
+"comp : comp NOT IN '(' strings ')'",
+"strings : STRING",
+"strings : strings ',' STRING",
};
-
-//#line 30 "jms.y"
- public final static short STRING=257;//
- public final static short DOUBLE=258;//
- public final static short LONG=259;//
-
- //public final static short IDENTIFIER=261;//
-
- public final static short NULL=262; //
- public final static short TRUE=263; //
- public final static short FALSE=264; //
-
- public final static short NOT=265; //
- //public final static short AND=266; //
- //public final static short OR=267; //
- public final static short BETWEEN=268; //
- public final static short LIKE=269; //
- public final static short IN=270; //
- public final static short IS=271; //
- public final static short ESCAPE=272; //
-
- //public final static short EQUAL=273;//
- public final static short GT=274;//
- public final static short GE=275;//
- public final static short LT=276;//
- public final static short LE=277;//
- public final static short DIFFERENT=278;//
+//#line 74 "jms.y"
StringTokenizer st;
String nextToken=null;
@@ -296,6 +447,16 @@
throw new RuntimeException("PARSER ERROR: "+s);
}
+ void aff(parserval val,String st)
+ {
+ System.out.print("["+st+"] ");
+ if (val==null) System.out.println("null");
+ else {
+ if (val.obj==null) System.out.println(".obj=null");
+ else System.out.println(".obj="+val.obj.toString());
+ }
+ }
+
void next()
{
if (st.hasMoreTokens()) nextToken=st.nextToken();
@@ -350,17 +511,24 @@
}
//CST group
- if (s.equals("NULL")) return NULL;
- if (s.equals("TRUE")) return TRUE;
- if (s.equals("FALSE")) return FALSE;
+ if (s.equals("TRUE")) {
+ yylval = new parserval((Object)Boolean.TRUE);
+ return CST;
+ }
+ if (s.equals("FALSE")) {
+ yylval = new parserval((Object)Boolean.FALSE);
+ return CST;
+ }
//OPERATOR group
if (s.equals("NOT")) return NOT;
if (s.equals("AND")) return AND;
if (s.equals("OR")) return OR;
if (s.equals("BETWEEN")) return BETWEEN;
+ if (s.equals("and")) return AND2;
if (s.equals("LIKE")) return LIKE;
if (s.equals("IN")) return IN;
+ if (s.equals("NULL")) return NULL;
if (s.equals("IS")) return IS;
if (s.equals("ESCAPE")) return ESCAPE;
@@ -368,6 +536,7 @@
if (s.equals("(")) return '(';
if (s.equals(")")) return ')';
if (s.equals(",")) return ',';
+ if (s.equals("|")) return '|';
//COMP group
if (s.equals("=")) return EQUAL;
@@ -403,13 +572,13 @@
nextToken=null;
this.map=map;
- sel+=",";
- st = new StringTokenizer(sel," '(),=><+-*/",true);
+ sel+="|";
+ st = new StringTokenizer(sel," '(),=><+-*/|",true);
next();
yyparse();
return selector;
}
-//#line 361 "parser.java"
+//#line 528 "parser.java"
//###############################################################
// method: yylexdebug : check lexer state
//###############################################################
@@ -556,30 +725,122 @@
{
//########## USER-SUPPLIED ACTIONS ##########
case 1:
-//#line 18 "jms.y"
+//#line 29 "jms.y"
{ selector = val_peek(1).obj; }
break;
-case 2:
-//#line 20 "jms.y"
-{ yyval = val_peek(0); }
-break;
-case 3:
-//#line 21 "jms.y"
+case 7:
+//#line 37 "jms.y"
{ yyval = val_peek(1); }
break;
-case 5:
-//#line 25 "jms.y"
+case 9:
+//#line 41 "jms.y"
+{ yyval.obj = new Operator(Operator.ADD,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 10:
+//#line 42 "jms.y"
+{ yyval.obj = new Operator(Operator.SUB,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 11:
+//#line 43 "jms.y"
+{ yyval.obj = new Operator(Operator.MUL,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 12:
+//#line 44 "jms.y"
+{ yyval.obj = new Operator(Operator.DIV,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 13:
+//#line 45 "jms.y"
{ yyval.obj = new Operator(Operator.AND,val_peek(2).obj,val_peek(0).obj); }
break;
-case 6:
-//#line 26 "jms.y"
+case 14:
+//#line 46 "jms.y"
{ yyval.obj = new Operator(Operator.OR,val_peek(2).obj,val_peek(0).obj); }
break;
-case 7:
-//#line 27 "jms.y"
+case 15:
+//#line 47 "jms.y"
{ yyval.obj = new Operator(Operator.EQUAL,val_peek(2).obj,val_peek(0).obj); }
break;
-//#line 528 "parser.java"
+case 16:
+//#line 48 "jms.y"
+{ yyval.obj = new Operator(Operator.GT,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 17:
+//#line 49 "jms.y"
+{ yyval.obj = new Operator(Operator.GE,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 18:
+//#line 50 "jms.y"
+{ yyval.obj = new Operator(Operator.LT,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 19:
+//#line 51 "jms.y"
+{ yyval.obj = new Operator(Operator.LE,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 20:
+//#line 52 "jms.y"
+{ yyval.obj = new Operator(Operator.DIFFERENT,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 21:
+//#line 53 "jms.y"
+{ yyval.obj = new Operator(Operator.IS_NULL,val_peek(2).obj); }
+break;
+case 22:
+//#line 54 "jms.y"
+{ yyval.obj = new Operator(Operator.IS_NOT_NULL,val_peek(3).obj); }
+break;
+case 23:
+//#line 55 "jms.y"
+{ yyval = new parserval(new Operator(Operator.NOT,val_peek(0).obj)); }
+break;
+case 24:
+//#line 56 "jms.y"
+{ yyval = new parserval(new Operator(Operator.NEG,val_peek(0).obj)); }
+break;
+case 25:
+//#line 57 "jms.y"
+{ yyval = val_peek(0); }
+break;
+case 26:
+//#line 58 "jms.y"
+{ yyval.obj = new
Operator(Operator.BETWEEN,val_peek(4).obj,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 27:
+//#line 59 "jms.y"
+{ yyval.obj = new
Operator(Operator.NOT_BETWEEN,val_peek(5).obj,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 28:
+//#line 60 "jms.y"
+{ yyval.obj = new Operator(Operator.LIKE,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 29:
+//#line 61 "jms.y"
+{ yyval.obj = new Operator(Operator.NOT_LIKE,val_peek(3).obj,val_peek(0).obj); }
+break;
+case 30:
+//#line 62 "jms.y"
+{ yyval.obj = new
Operator(Operator.LIKE_ESCAPE,val_peek(4).obj,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 31:
+//#line 63 "jms.y"
+{ yyval.obj = new
Operator(Operator.NOT_LIKE_ESCAPE,val_peek(5).obj,val_peek(2).obj,val_peek(0).obj); }
+break;
+case 32:
+//#line 64 "jms.y"
+{ yyval.obj = new Operator(Operator.IN,val_peek(4).obj,val_peek(1).obj); }
+break;
+case 33:
+//#line 65 "jms.y"
+{ yyval.obj = new Operator(Operator.NOT_IN,val_peek(5).obj,val_peek(1).obj); }
+break;
+case 34:
+//#line 68 "jms.y"
+{ HashSet tmp=new HashSet(); tmp.add(val_peek(0).obj); yyval.obj=tmp; }
+break;
+case 35:
+//#line 69 "jms.y"
+{ ((HashSet)val_peek(2).obj).add(val_peek(0).obj); yyval = val_peek(2); }
+break;
+//#line 787 "parser.java"
//########## END OF USER-SUPPLIED ACTIONS ##########
}//switch
//#### Now let's reduce... ####
1.3 +23 -32 spyderMQ/src/java/org/spyderMQ/selectors/parserval.java
Index: parserval.java
===================================================================
RCS file:
/products/cvs/ejboss/spyderMQ/src/java/org/spyderMQ/selectors/parserval.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- parserval.java 2000/05/19 19:38:37 1.2
+++ parserval.java 2000/05/20 02:12:18 1.3
@@ -1,35 +1,26 @@
-/*
- * spyderMQ, the OpenSource JMS implementation
- *
- * Distributable under GPL license.
- * See terms of license at gnu.org.
- */
-package org.spydermq.selectors;
+
+//########## SEMANTIC VALUES ##########
public class parserval
{
- public int ival;
- public double dval;
- public String sval;
- public Object obj;
-
- public parserval(int val)
- {
- ival=val;
- }
-
- public parserval(double val)
- {
- dval=val;
- }
-
- public parserval(String val)
- {
- sval=val;
- }
-
- public parserval(Object val)
- {
- obj=val;
- }
-}
\ No newline at end of file
+public int ival;
+public double dval;
+public String sval;
+public Object obj;
+public parserval(int val)
+{
+ ival=val;
+}
+public parserval(double val)
+{
+ dval=val;
+}
+public parserval(String val)
+{
+ sval=val;
+}
+public parserval(Object val)
+{
+ obj=val;
+}
+}//end class