You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ge...@apache.org on 2003/06/25 13:17:01 UTC
cvs commit: jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser ASTUnaryMinusNode.java ASTMethod.java Parser.java Parser.jj ParserTreeConstants.java ParserVisitor.java
geirm 2003/06/25 04:17:01
Modified: jexl/src/java/org/apache/commons/jexl/parser ASTMethod.java
Parser.java Parser.jj ParserTreeConstants.java
ParserVisitor.java
Added: jexl/src/java/org/apache/commons/jexl/parser
ASTUnaryMinusNode.java
Log:
Adding ASTUnaryMinus from mark to solve the - problem, fix to ASTMethod
to allow the real exception to be thrown, and the rest are autogen goo
Revision Changes Path
1.4 +32 -9 jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/ASTMethod.java
Index: ASTMethod.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/ASTMethod.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ASTMethod.java 22 Jun 2003 19:40:40 -0000 1.3
+++ ASTMethod.java 25 Jun 2003 11:17:00 -0000 1.4
@@ -1,5 +1,7 @@
package org.apache.commons.jexl.parser;
+import java.lang.reflect.InvocationTargetException;
+
import org.apache.commons.jexl.JexlContext;
import org.apache.commons.jexl.util.Introspector;
import org.apache.commons.jexl.util.introspection.VelMethod;
@@ -28,7 +30,8 @@
* returns the value of itself applied to the object.
* We assume that an identifier can be gotten via a get(String)
*/
- public Object execute(Object obj, JexlContext jc) throws Exception
+ public Object execute(Object obj, JexlContext jc)
+ throws Exception
{
String methodName = ((ASTIdentifier)jjtGetChild(0)).val;
@@ -40,17 +43,37 @@
Object params[] = new Object[paramCount];
- for (int i=0; i<paramCount; i++)
+ try
{
- params[i] = ( (SimpleNode) jjtGetChild(i+1)).value(jc);
+ for (int i=0; i<paramCount; i++)
+ {
+ params[i] = ( (SimpleNode) jjtGetChild(i+1)).value(jc);
+ }
+
+ VelMethod vm = Introspector.getUberspect().getMethod(obj, methodName,
+ params, new Info("",1,1));
+
+ if (vm == null)
+ return null;
+
+ return vm.invoke(obj, params);
}
+ catch(InvocationTargetException e)
+ {
+ Throwable t = e.getTargetException();
- VelMethod vm = Introspector.getUberspect().getMethod(obj, methodName,
- params, new Info("",1,1));
-
- if (vm == null)
- return null;
+ if (t instanceof Exception)
+ {
+ throw (Exception) t;
+ }
- return vm.invoke(obj, params);
+ throw e;
+ }
+ catch(Exception e)
+ {
+ System.out.println("ASTMethod : "+ e);
+ e.printStackTrace();;
+ throw e;
+ }
}
}
1.5 +175 -132 jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/Parser.java
Index: Parser.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/Parser.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Parser.java 25 Jun 2003 10:52:02 -0000 1.4
+++ Parser.java 25 Jun 2003 11:17:00 -0000 1.5
@@ -37,6 +37,7 @@
case 11:
case 12:
case 14:
+ case 36:
case 42:
case 43:
case 44:
@@ -99,6 +100,7 @@
case 11:
case 12:
case 14:
+ case 36:
case 42:
case 43:
case 44:
@@ -249,6 +251,7 @@
case 11:
case 12:
case 14:
+ case 36:
case 42:
case 43:
case 44:
@@ -1202,9 +1205,9 @@
final public void UnaryExpression() throws ParseException {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case 42:
- jj_consume_token(42);
- ASTBitwiseComplNode jjtn001 = new ASTBitwiseComplNode(this, JJTBITWISECOMPLNODE);
+ case 36:
+ jj_consume_token(36);
+ ASTUnaryMinusNode jjtn001 = new ASTUnaryMinusNode(this, JJTUNARYMINUSNODE);
boolean jjtc001 = true;
jjtree.openNodeScope(jjtn001);
try {
@@ -1229,9 +1232,9 @@
}
}
break;
- case 43:
- jj_consume_token(43);
- ASTNotNode jjtn002 = new ASTNotNode(this, JJTNOTNODE);
+ case 42:
+ jj_consume_token(42);
+ ASTBitwiseComplNode jjtn002 = new ASTBitwiseComplNode(this, JJTBITWISECOMPLNODE);
boolean jjtc002 = true;
jjtree.openNodeScope(jjtn002);
try {
@@ -1256,30 +1259,57 @@
}
}
break;
+ case 43:
+ jj_consume_token(43);
+ ASTNotNode jjtn003 = new ASTNotNode(this, JJTNOTNODE);
+ boolean jjtc003 = true;
+ jjtree.openNodeScope(jjtn003);
+ try {
+ UnaryExpression();
+ } catch (Throwable jjte003) {
+ if (jjtc003) {
+ jjtree.clearNodeScope(jjtn003);
+ jjtc003 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte003 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte003;}
+ }
+ if (jjte003 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte003;}
+ }
+ {if (true) throw (Error)jjte003;}
+ } finally {
+ if (jjtc003) {
+ jjtree.closeNodeScope(jjtn003, 1);
+ }
+ }
+ break;
case 44:
jj_consume_token(44);
- ASTNotNode jjtn003 = new ASTNotNode(this, JJTNOTNODE);
- boolean jjtc003 = true;
- jjtree.openNodeScope(jjtn003);
+ ASTNotNode jjtn004 = new ASTNotNode(this, JJTNOTNODE);
+ boolean jjtc004 = true;
+ jjtree.openNodeScope(jjtn004);
try {
UnaryExpression();
- } catch (Throwable jjte003) {
- if (jjtc003) {
- jjtree.clearNodeScope(jjtn003);
- jjtc003 = false;
+ } catch (Throwable jjte004) {
+ if (jjtc004) {
+ jjtree.clearNodeScope(jjtn004);
+ jjtc004 = false;
} else {
jjtree.popNode();
}
- if (jjte003 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte003;}
+ if (jjte004 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte004;}
}
- if (jjte003 instanceof ParseException) {
- {if (true) throw (ParseException)jjte003;}
+ if (jjte004 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte004;}
}
- {if (true) throw (Error)jjte003;}
+ {if (true) throw (Error)jjte004;}
} finally {
- if (jjtc003) {
- jjtree.closeNodeScope(jjtn003, 1);
+ if (jjtc004) {
+ jjtree.closeNodeScope(jjtn004, 1);
}
}
break;
@@ -1481,6 +1511,7 @@
case 11:
case 12:
case 14:
+ case 36:
case 42:
case 43:
case 44:
@@ -1717,6 +1748,7 @@
case 11:
case 12:
case 14:
+ case 36:
case 42:
case 43:
case 44:
@@ -2077,14 +2109,14 @@
return false;
}
- final private boolean jj_3R_36() {
- if (jj_3R_47()) return true;
+ final private boolean jj_3R_62() {
+ if (jj_scan_token(FLOAT_LITERAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_62() {
- if (jj_scan_token(FLOAT_LITERAL)) return true;
+ final private boolean jj_3R_36() {
+ if (jj_3R_47()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
@@ -2134,18 +2166,6 @@
return false;
}
- final private boolean jj_3R_45() {
- if (jj_scan_token(14)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(12)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_16()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(13)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
final private boolean jj_3R_63() {
Token xsp;
xsp = jj_scanpos;
@@ -2163,13 +2183,19 @@
return false;
}
- final private boolean jj_3R_27() {
+ final private boolean jj_3R_45() {
+ if (jj_scan_token(14)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(12)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_16()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(13)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_55() {
+ final private boolean jj_3R_27() {
if (jj_3R_16()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
@@ -2181,6 +2207,18 @@
return false;
}
+ final private boolean jj_3R_55() {
+ if (jj_3R_16()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_41() {
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
final private boolean jj_3R_44() {
if (jj_scan_token(11)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2194,12 +2232,6 @@
return false;
}
- final private boolean jj_3R_41() {
- if (jj_3R_37()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
final private boolean jj_3R_21() {
if (jj_3R_16()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2364,7 +2396,7 @@
return false;
}
- final private boolean jj_3R_108() {
+ final private boolean jj_3R_109() {
if (jj_3R_15()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
@@ -2376,7 +2408,7 @@
return false;
}
- final private boolean jj_3R_107() {
+ final private boolean jj_3R_108() {
if (jj_scan_token(44)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
@@ -2384,7 +2416,7 @@
return false;
}
- final private boolean jj_3R_106() {
+ final private boolean jj_3R_107() {
if (jj_scan_token(43)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
@@ -2392,7 +2424,7 @@
return false;
}
- final private boolean jj_3R_105() {
+ final private boolean jj_3R_106() {
if (jj_scan_token(42)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
@@ -2400,6 +2432,14 @@
return false;
}
+ final private boolean jj_3R_105() {
+ if (jj_scan_token(36)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_101()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
final private boolean jj_3R_101() {
Token xsp;
xsp = jj_scanpos;
@@ -2409,19 +2449,14 @@
jj_scanpos = xsp;
if (jj_3R_107()) {
jj_scanpos = xsp;
- if (jj_3R_108()) return true;
+ if (jj_3R_108()) {
+ jj_scanpos = xsp;
+ if (jj_3R_109()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_113() {
- if (jj_scan_token(41)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_101()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
@@ -2433,8 +2468,8 @@
return false;
}
- final private boolean jj_3R_112() {
- if (jj_scan_token(40)) return true;
+ final private boolean jj_3R_114() {
+ if (jj_scan_token(41)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2461,8 +2496,8 @@
return false;
}
- final private boolean jj_3R_111() {
- if (jj_scan_token(39)) return true;
+ final private boolean jj_3R_113() {
+ if (jj_scan_token(40)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2489,8 +2524,8 @@
return false;
}
- final private boolean jj_3R_110() {
- if (jj_scan_token(38)) return true;
+ final private boolean jj_3R_112() {
+ if (jj_scan_token(39)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2503,34 +2538,14 @@
return false;
}
- final private boolean jj_3R_109() {
- if (jj_scan_token(37)) return true;
+ final private boolean jj_3R_111() {
+ if (jj_scan_token(38)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_102() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_109()) {
- jj_scanpos = xsp;
- if (jj_3R_110()) {
- jj_scanpos = xsp;
- if (jj_3R_111()) {
- jj_scanpos = xsp;
- if (jj_3R_112()) {
- jj_scanpos = xsp;
- if (jj_3R_113()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
final private boolean jj_3_5() {
if (jj_3R_18()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2557,6 +2572,34 @@
return false;
}
+ final private boolean jj_3R_110() {
+ if (jj_scan_token(37)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_101()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_102() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_110()) {
+ jj_scanpos = xsp;
+ if (jj_3R_111()) {
+ jj_scanpos = xsp;
+ if (jj_3R_112()) {
+ jj_scanpos = xsp;
+ if (jj_3R_113()) {
+ jj_scanpos = xsp;
+ if (jj_3R_114()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
final private boolean jj_3R_23() {
Token xsp;
xsp = jj_scanpos;
@@ -2574,18 +2617,6 @@
return false;
}
- final private boolean jj_3R_91() {
- if (jj_3R_101()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_102()) { jj_scanpos = xsp; break; }
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- }
- return false;
- }
-
final private boolean jj_3R_22() {
if (jj_3R_38()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2610,23 +2641,27 @@
return false;
}
- final private boolean jj_3R_42() {
- if (jj_3R_49()) return true;
+ final private boolean jj_3R_91() {
+ if (jj_3R_101()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_78()) { jj_scanpos = xsp; break; }
+ if (jj_3R_102()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
- final private boolean jj_3R_104() {
- if (jj_scan_token(36)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_91()) return true;
+ final private boolean jj_3R_42() {
+ if (jj_3R_49()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_78()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
return false;
}
@@ -2659,25 +2694,14 @@
return false;
}
- final private boolean jj_3R_103() {
- if (jj_scan_token(35)) return true;
+ final private boolean jj_3R_104() {
+ if (jj_scan_token(36)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
if (jj_3R_91()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_92() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_103()) {
- jj_scanpos = xsp;
- if (jj_3R_104()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
final private boolean jj_3R_16() {
Token xsp;
xsp = jj_scanpos;
@@ -2694,6 +2718,25 @@
return false;
}
+ final private boolean jj_3R_103() {
+ if (jj_scan_token(35)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_91()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_92() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_103()) {
+ jj_scanpos = xsp;
+ if (jj_3R_104()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
final private boolean jj_3R_85() {
if (jj_3R_91()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2736,14 +2779,6 @@
return false;
}
- final private boolean jj_3R_98() {
- if (jj_scan_token(32)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_85()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
final private boolean jj_3R_24() {
if (jj_3R_18()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2758,6 +2793,14 @@
return false;
}
+ final private boolean jj_3R_98() {
+ if (jj_scan_token(32)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_85()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
final private boolean jj_3R_97() {
if (jj_scan_token(31)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
@@ -2928,18 +2971,18 @@
return false;
}
- final private boolean jj_3R_80() {
- if (jj_scan_token(21)) return true;
+ final private boolean jj_3_2() {
+ if (jj_3R_16()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_79()) return true;
+ if (jj_scan_token(48)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3_2() {
- if (jj_3R_16()) return true;
+ final private boolean jj_3R_80() {
+ if (jj_scan_token(21)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(48)) return true;
+ if (jj_3R_79()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
@@ -3026,7 +3069,7 @@
private int jj_gen;
final private int[] jj_la1 = new int[34];
final private int[] jj_la1_0 = {0x5b80,0x5b80,0x1000,0x5980,0x30000,0x30000,0xc0000,0xc0000,0x100000,0x200000,0x400000,0x7800000,0x7800000,0xf8000000,0xf8000000,0x0,0x0,0x0,0x0,0x5980,0x5980,0x180,0x0,0x200,0x5980,0x0,0x0,0x5980,0x80,0x0,0x0,0x4080,0x4080,0x180,};
- final private int[] jj_la1_1 = {0x241bfc00,0x241bfc00,0x4000000,0x2400fc00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x7,0x18,0x18,0x3e0,0x3e0,0x2400fc00,0x2400e000,0x2000e000,0xc000,0x10000,0x241afc00,0x40000,0x400000,0x2400fc00,0x4000000,0x800000,0x4000000,0x4000000,0x4000000,0x2400e000,};
+ final private int[] jj_la1_1 = {0x241bfc10,0x241bfc10,0x4000000,0x2400fc10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x7,0x18,0x18,0x3e0,0x3e0,0x2400fc10,0x2400e000,0x2000e000,0xc000,0x10000,0x241afc10,0x40000,0x400000,0x2400fc10,0x4000000,0x800000,0x4000000,0x4000000,0x4000000,0x2400e000,};
final private JJCalls[] jj_2_rtns = new JJCalls[9];
private boolean jj_rescan = false;
private int jj_gc = 0;
1.7 +48 -19 jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/Parser.jj
Index: Parser.jj
===================================================================
RCS file: /home/cvs/jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/Parser.jj,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Parser.jj 25 Jun 2003 10:52:02 -0000 1.6
+++ Parser.jj 25 Jun 2003 11:17:01 -0000 1.7
@@ -1171,9 +1171,9 @@
void UnaryExpression() :
{}
{
- "~"/*@bgen(jjtree) #BitwiseComplNode( 1) */
+ "-"/*@bgen(jjtree) #UnaryMinusNode( 1) */
{
- ASTBitwiseComplNode jjtn001 = new ASTBitwiseComplNode(this, JJTBITWISECOMPLNODE);
+ ASTUnaryMinusNode jjtn001 = new ASTUnaryMinusNode(this, JJTUNARYMINUSNODE);
boolean jjtc001 = true;
jjtree.openNodeScope(jjtn001);
}
@@ -1200,9 +1200,9 @@
}
/*@egen*/
|
- "!"/*@bgen(jjtree) #NotNode( 1) */
+ "~"/*@bgen(jjtree) #BitwiseComplNode( 1) */
{
- ASTNotNode jjtn002 = new ASTNotNode(this, JJTNOTNODE);
+ ASTBitwiseComplNode jjtn002 = new ASTBitwiseComplNode(this, JJTBITWISECOMPLNODE);
boolean jjtc002 = true;
jjtree.openNodeScope(jjtn002);
}
@@ -1229,31 +1229,60 @@
}
/*@egen*/
|
+ "!"/*@bgen(jjtree) #NotNode( 1) */
+ {
+ ASTNotNode jjtn003 = new ASTNotNode(this, JJTNOTNODE);
+ boolean jjtc003 = true;
+ jjtree.openNodeScope(jjtn003);
+ }
+ try {
+/*@egen*/ UnaryExpression()/*@bgen(jjtree)*/
+ } catch (Throwable jjte003) {
+ if (jjtc003) {
+ jjtree.clearNodeScope(jjtn003);
+ jjtc003 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte003 instanceof RuntimeException) {
+ throw (RuntimeException)jjte003;
+ }
+ if (jjte003 instanceof ParseException) {
+ throw (ParseException)jjte003;
+ }
+ throw (Error)jjte003;
+ } finally {
+ if (jjtc003) {
+ jjtree.closeNodeScope(jjtn003, 1);
+ }
+ }
+/*@egen*/
+|
"not"/*@bgen(jjtree) #NotNode( 1) */
{
- ASTNotNode jjtn003 = new ASTNotNode(this, JJTNOTNODE);
- boolean jjtc003 = true;
- jjtree.openNodeScope(jjtn003);
+ ASTNotNode jjtn004 = new ASTNotNode(this, JJTNOTNODE);
+ boolean jjtc004 = true;
+ jjtree.openNodeScope(jjtn004);
}
try {
/*@egen*/ UnaryExpression()/*@bgen(jjtree)*/
- } catch (Throwable jjte003) {
- if (jjtc003) {
- jjtree.clearNodeScope(jjtn003);
- jjtc003 = false;
+ } catch (Throwable jjte004) {
+ if (jjtc004) {
+ jjtree.clearNodeScope(jjtn004);
+ jjtc004 = false;
} else {
jjtree.popNode();
}
- if (jjte003 instanceof RuntimeException) {
- throw (RuntimeException)jjte003;
+ if (jjte004 instanceof RuntimeException) {
+ throw (RuntimeException)jjte004;
}
- if (jjte003 instanceof ParseException) {
- throw (ParseException)jjte003;
+ if (jjte004 instanceof ParseException) {
+ throw (ParseException)jjte004;
}
- throw (Error)jjte003;
+ throw (Error)jjte004;
} finally {
- if (jjtc003) {
- jjtree.closeNodeScope(jjtn003, 1);
+ if (jjtc004) {
+ jjtree.closeNodeScope(jjtn004, 1);
}
}
/*@egen*/
1.3 +20 -18 jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/ParserTreeConstants.java
Index: ParserTreeConstants.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/ParserTreeConstants.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ParserTreeConstants.java 25 Jun 2003 10:52:02 -0000 1.2
+++ ParserTreeConstants.java 25 Jun 2003 11:17:01 -0000 1.3
@@ -28,24 +28,25 @@
public int JJTMULNODE = 21;
public int JJTDIVNODE = 22;
public int JJTMODNODE = 23;
- public int JJTBITWISECOMPLNODE = 24;
- public int JJTNOTNODE = 25;
- public int JJTNULLLITERAL = 26;
- public int JJTTRUENODE = 27;
- public int JJTFALSENODE = 28;
- public int JJTINTEGERLITERAL = 29;
- public int JJTFLOATLITERAL = 30;
- public int JJTSTRINGLITERAL = 31;
- public int JJTEXPRESSIONEXPRESSION = 32;
- public int JJTSTATEMENTEXPRESSION = 33;
- public int JJTREFERENCEEXPRESSION = 34;
- public int JJTIFSTATEMENT = 35;
- public int JJTWHILESTATEMENT = 36;
- public int JJTFOREACHSTATEMENT = 37;
- public int JJTMETHOD = 38;
- public int JJTARRAYACCESS = 39;
- public int JJTSIZEMETHOD = 40;
- public int JJTREFERENCE = 41;
+ public int JJTUNARYMINUSNODE = 24;
+ public int JJTBITWISECOMPLNODE = 25;
+ public int JJTNOTNODE = 26;
+ public int JJTNULLLITERAL = 27;
+ public int JJTTRUENODE = 28;
+ public int JJTFALSENODE = 29;
+ public int JJTINTEGERLITERAL = 30;
+ public int JJTFLOATLITERAL = 31;
+ public int JJTSTRINGLITERAL = 32;
+ public int JJTEXPRESSIONEXPRESSION = 33;
+ public int JJTSTATEMENTEXPRESSION = 34;
+ public int JJTREFERENCEEXPRESSION = 35;
+ public int JJTIFSTATEMENT = 36;
+ public int JJTWHILESTATEMENT = 37;
+ public int JJTFOREACHSTATEMENT = 38;
+ public int JJTMETHOD = 39;
+ public int JJTARRAYACCESS = 40;
+ public int JJTSIZEMETHOD = 41;
+ public int JJTREFERENCE = 42;
public String[] jjtNodeName = {
@@ -73,6 +74,7 @@
"MulNode",
"DivNode",
"ModNode",
+ "UnaryMinusNode",
"BitwiseComplNode",
"NotNode",
"NullLiteral",
1.3 +1 -0 jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/ParserVisitor.java
Index: ParserVisitor.java
===================================================================
RCS file: /home/cvs/jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/ParserVisitor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ParserVisitor.java 25 Jun 2003 10:52:02 -0000 1.2
+++ ParserVisitor.java 25 Jun 2003 11:17:01 -0000 1.3
@@ -28,6 +28,7 @@
public Object visit(ASTMulNode node, Object data);
public Object visit(ASTDivNode node, Object data);
public Object visit(ASTModNode node, Object data);
+ public Object visit(ASTUnaryMinusNode node, Object data);
public Object visit(ASTBitwiseComplNode node, Object data);
public Object visit(ASTNotNode node, Object data);
public Object visit(ASTNullLiteral node, Object data);
1.1 jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser/ASTUnaryMinusNode.java
Index: ASTUnaryMinusNode.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", "Jexl" and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.commons.jexl.parser;
import org.apache.commons.jexl.JexlContext;
/**
* -
*
* @author <a href="mailto:mhw@kremvax.net">Mark H. Wilkinson</a>
* @version $Id: ASTUnaryMinusNode.java,v 1.1 2003/06/25 11:17:00 geirm Exp $
*/
public class ASTUnaryMinusNode extends SimpleNode
{
public ASTUnaryMinusNode(int id)
{
super(id);
}
public ASTUnaryMinusNode(Parser p, int id)
{
super(p, id);
}
/** Accept the visitor. **/
public Object jjtAccept(ParserVisitor visitor, Object data)
{
return visitor.visit(this, data);
}
public Object value(JexlContext jc)
throws Exception
{
Object val = ((SimpleNode) jjtGetChild(0)).value(jc);
if (val instanceof Integer)
{
return new Integer(- ( ((Integer) val).intValue() ) );
}
else
{
throw new Exception("expression not integer valued");
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-commons/jexl/src/java/org/apache/commons/jexl/parser ASTUnaryMinusNode.java ASTMethod.java Parser.java Parser.jj ParserTreeConstants.java ParserVisitor.java
Posted by Peter Royal <pr...@apache.org>.
On Wednesday, June 25, 2003, at 07:17 AM, geirm@apache.org wrote:
> +++ ASTMethod.java 25 Jun 2003 11:17:00 -0000 1.4
> @@ -1,5 +1,7 @@
> package org.apache.commons.jexl.parser;
>
> + {
> + System.out.println("ASTMethod : "+ e);
> + e.printStackTrace();;
Why not just throw the exception and let the application display it as
appropriate?
-pete
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org