geirm 2002/06/06 20:35:30 Modified: jexl/src/java/org/apache/commons/jexl/parser ASTArrayAccess.java Parser.java Parser.jj Log: update : support for [][] Revision Changes Path 1.3 +31 -1 jakarta-commons-sandbox/jexl/src/java/org/apache/commons/jexl/parser/ASTArrayAccess.java Index: ASTArrayAccess.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jexl/src/java/org/apache/commons/jexl/parser/ASTArrayAccess.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ASTArrayAccess.java 25 May 2002 18:39:02 -0000 1.2 +++ ASTArrayAccess.java 7 Jun 2002 03:35:30 -0000 1.3 @@ -71,7 +71,7 @@ * $foo[2] * * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a> - * @version $Id: ASTArrayAccess.java,v 1.2 2002/05/25 18:39:02 geirm Exp $ + * @version $Id: ASTArrayAccess.java,v 1.3 2002/06/07 03:35:30 geirm Exp $ */ public class ASTArrayAccess extends SimpleNode { @@ -91,6 +91,36 @@ { return visitor.visit(this, data); } + + /* + * evaluate array access upon a base object + * + * foo.bar[2] + * + * makes me rethink the array operator :) + */ + public Object execute(Object obj, JexlContext jc) + throws Exception + { + ASTIdentifier base = (ASTIdentifier) jjtGetChild(0); + + obj = base.execute(obj,jc); + + /* + * ignore the first child - it's our identifier + */ + for(int i=1; i<jjtGetNumChildren(); i++) + { + Object loc = ((SimpleNode) jjtGetChild(i)).value(jc); + + if(loc==null) + return null; + + obj = evaluateExpr(obj, loc); + } + + return obj; + } /** * return the value of this node 1.3 +315 -239 jakarta-commons-sandbox/jexl/src/java/org/apache/commons/jexl/parser/Parser.java Index: Parser.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jexl/src/java/org/apache/commons/jexl/parser/Parser.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Parser.java 25 May 2002 18:40:11 -0000 1.2 +++ Parser.java 7 Jun 2002 03:35:30 -0000 1.3 @@ -1850,18 +1850,31 @@ break label_14; } jj_consume_token(57); - if (jj_2_7(3)) { - Method(); + if (jj_2_8(2147483647)) { + ArrayAccess(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - Identifier(); - break; case INTEGER_LITERAL: - IntegerLiteral(); + case IDENTIFIER: + if (jj_2_7(3)) { + Method(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENTIFIER: + Identifier(); + break; + case INTEGER_LITERAL: + IntegerLiteral(); + break; + default: + jj_la1[31] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } break; default: - jj_la1[31] = jj_gen; + jj_la1[32] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1889,7 +1902,7 @@ } final public void Parameter() throws ParseException { - if (jj_2_8(3)) { + if (jj_2_9(3)) { Expression(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1905,7 +1918,7 @@ Reference(); break; default: - jj_la1[32] = jj_gen; + jj_la1[33] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1968,46 +1981,53 @@ return retval; } - final private boolean jj_3R_64() { + final private boolean jj_2_9(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + boolean retval = !jj_3_9(); + jj_save(8, xla); + return retval; + } + + final private boolean jj_3R_69() { if (jj_scan_token(17)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_51()) return true; + if (jj_3R_56()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_52() { + final private boolean jj_3R_57() { Token xsp; xsp = jj_scanpos; - if (jj_3R_63()) { + if (jj_3R_68()) { jj_scanpos = xsp; - if (jj_3R_64()) return true; + if (jj_3R_69()) 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_63() { + final private boolean jj_3R_68() { if (jj_scan_token(16)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_51()) return true; + if (jj_3R_56()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_57() { + final private boolean jj_3R_62() { if (jj_scan_token(STRING_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_41() { - if (jj_3R_51()) return true; + final private boolean jj_3R_46() { + if (jj_3R_56()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_52()) { jj_scanpos = xsp; break; } + if (jj_3R_57()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; @@ -2021,7 +2041,7 @@ return false; } - final private boolean jj_3R_40() { + final private boolean jj_3R_45() { if (jj_3R_15()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(15)) return true; @@ -2031,26 +2051,26 @@ return false; } - final private boolean jj_3R_33() { - if (jj_3R_41()) return true; + final private boolean jj_3R_36() { + if (jj_3R_46()) 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_60() { 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_31() { + final private boolean jj_3R_34() { if (jj_3R_18()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_32() { - if (jj_3R_40()) return true; + final private boolean jj_3R_35() { + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } @@ -2058,15 +2078,15 @@ final private boolean jj_3R_17() { Token xsp; xsp = jj_scanpos; - if (jj_3R_32()) { + if (jj_3R_35()) { jj_scanpos = xsp; - if (jj_3R_33()) return true; + if (jj_3R_36()) 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_49() { + final private boolean jj_3R_54() { if (jj_scan_token(12)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_16()) return true; @@ -2076,7 +2096,7 @@ return false; } - final private boolean jj_3R_34() { + final private boolean jj_3R_37() { if (jj_scan_token(INTEGER_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; @@ -2088,13 +2108,13 @@ return false; } - final private boolean jj_3R_66() { + final private boolean jj_3R_71() { if (jj_scan_token(47)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_38() { + final private boolean jj_3R_44() { if (jj_scan_token(14)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_scan_token(12)) return true; @@ -2106,102 +2126,102 @@ return false; } - final private boolean jj_3R_56() { + final private boolean jj_3R_61() { Token xsp; xsp = jj_scanpos; - if (jj_3R_65()) { + if (jj_3R_70()) { jj_scanpos = xsp; - if (jj_3R_66()) return true; + if (jj_3R_71()) 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_65() { + final private boolean jj_3R_70() { if (jj_scan_token(46)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_48() { + final private boolean jj_3R_53() { if (jj_3R_16()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_58() { + final private boolean jj_3R_63() { if (jj_scan_token(45)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_37() { + final private boolean jj_3R_43() { if (jj_scan_token(11)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; - if (jj_3R_48()) { + if (jj_3R_53()) { jj_scanpos = xsp; - if (jj_3R_49()) return true; + if (jj_3R_54()) 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_47() { - if (jj_3R_58()) return true; + final private boolean jj_3R_27() { + if (jj_3R_16()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_46() { - if (jj_3R_57()) return true; + final private boolean jj_3R_52() { + if (jj_3R_63()) 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; + final private boolean jj_3R_51() { + if (jj_3R_62()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_60() { + final private boolean jj_3R_21() { if (jj_3R_16()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_45() { - if (jj_3R_56()) return true; + final private boolean jj_3R_65() { + if (jj_3R_16()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_44() { - if (jj_3R_55()) return true; + final private boolean jj_3R_50() { + if (jj_3R_61()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_23() { - if (jj_3R_34()) return true; + final private boolean jj_3R_49() { + if (jj_3R_60()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_36() { + final private boolean jj_3R_42() { Token xsp; xsp = jj_scanpos; - if (jj_3R_43()) { + if (jj_3R_48()) { jj_scanpos = xsp; - if (jj_3R_44()) { + if (jj_3R_49()) { jj_scanpos = xsp; - if (jj_3R_45()) { + if (jj_3R_50()) { jj_scanpos = xsp; - if (jj_3R_46()) { + if (jj_3R_51()) { jj_scanpos = xsp; - if (jj_3R_47()) return true; + if (jj_3R_52()) 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; @@ -2210,31 +2230,43 @@ return false; } - final private boolean jj_3R_43() { - if (jj_3R_34()) return true; + final private boolean jj_3R_48() { + if (jj_3R_37()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_29() { - if (jj_3R_38()) return true; + final private boolean jj_3R_59() { + if (jj_3R_16()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_54() { - if (jj_3R_16()) return true; + final private boolean jj_3R_26() { + if (jj_3R_37()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_28() { + final private boolean jj_3R_32() { + if (jj_3R_44()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_40() { if (jj_3R_37()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_27() { + final private boolean jj_3R_31() { + if (jj_3R_43()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_30() { if (jj_scan_token(12)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; if (jj_3R_17()) return true; @@ -2245,31 +2277,31 @@ } final private boolean jj_3R_20() { - if (jj_3R_34()) return true; + if (jj_3R_37()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_59() { - if (jj_3R_34()) return true; + final private boolean jj_3R_64() { + if (jj_3R_37()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_22() { - if (jj_3R_18()) return true; + final private boolean jj_3R_29() { + if (jj_3R_16()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_26() { - if (jj_3R_16()) return true; + final private boolean jj_3R_58() { + if (jj_3R_42()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_25() { - if (jj_3R_36()) return true; + final private boolean jj_3R_28() { + if (jj_3R_42()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } @@ -2277,15 +2309,15 @@ final private boolean jj_3R_15() { Token xsp; xsp = jj_scanpos; - if (jj_3R_25()) { + if (jj_3R_28()) { jj_scanpos = xsp; - if (jj_3R_26()) { + if (jj_3R_29()) { jj_scanpos = xsp; - if (jj_3R_27()) { + if (jj_3R_30()) { jj_scanpos = xsp; - if (jj_3R_28()) { + if (jj_3R_31()) { jj_scanpos = xsp; - if (jj_3R_29()) return true; + if (jj_3R_32()) 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; @@ -2294,30 +2326,36 @@ return false; } - final private boolean jj_3R_53() { - if (jj_3R_36()) return true; + final private boolean jj_3R_25() { + if (jj_3R_17()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_101() { + final private boolean jj_3R_106() { if (jj_3R_15()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_100() { + final private boolean jj_3R_105() { if (jj_scan_token(44)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_94()) return true; + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_99() { + final private boolean jj_3R_39() { + if (jj_3R_18()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_104() { if (jj_scan_token(43)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_94()) return true; + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } @@ -2328,24 +2366,24 @@ return false; } - final private boolean jj_3R_98() { + final private boolean jj_3R_103() { if (jj_scan_token(42)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_94()) return true; + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_94() { + final private boolean jj_3R_99() { Token xsp; xsp = jj_scanpos; - if (jj_3R_98()) { + if (jj_3R_103()) { jj_scanpos = xsp; - if (jj_3R_99()) { + if (jj_3R_104()) { jj_scanpos = xsp; - if (jj_3R_100()) { + if (jj_3R_105()) { jj_scanpos = xsp; - if (jj_3R_101()) return true; + if (jj_3R_106()) 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; @@ -2353,48 +2391,62 @@ return false; } - final private boolean jj_3R_106() { + final private boolean jj_3R_111() { if (jj_scan_token(41)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_94()) return true; + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_67() { + final private boolean jj_3R_76() { if (jj_scan_token(54)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_42()) return true; + if (jj_3R_47()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_105() { + final private boolean jj_3R_110() { if (jj_scan_token(40)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_94()) return true; + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_104() { + final private boolean jj_3R_109() { if (jj_scan_token(39)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_94()) return true; + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3_7() { - if (jj_3R_24()) return true; + final private boolean jj_3R_108() { + if (jj_scan_token(38)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_103() { - if (jj_scan_token(38)) return true; + final private boolean jj_3_8() { + if (jj_3R_18()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(55)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_94()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_25()) { + jj_scanpos = xsp; + if (jj_3R_26()) { + jj_scanpos = xsp; + if (jj_3R_27()) 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; + if (jj_scan_token(56)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } @@ -2405,26 +2457,26 @@ return false; } - final private boolean jj_3R_102() { + final private boolean jj_3R_107() { if (jj_scan_token(37)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_94()) return true; + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_95() { + final private boolean jj_3R_100() { Token xsp; xsp = jj_scanpos; - if (jj_3R_102()) { + if (jj_3R_107()) { jj_scanpos = xsp; - if (jj_3R_103()) { + if (jj_3R_108()) { jj_scanpos = xsp; - if (jj_3R_104()) { + if (jj_3R_109()) { jj_scanpos = xsp; - if (jj_3R_105()) { + if (jj_3R_110()) { jj_scanpos = xsp; - if (jj_3R_106()) return true; + if (jj_3R_111()) 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; @@ -2433,13 +2485,33 @@ return false; } - final private boolean jj_3R_84() { - if (jj_3R_94()) return true; + final private boolean jj_3_9() { + if (jj_3R_17()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_47() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_9()) { + jj_scanpos = xsp; + if (jj_3R_58()) { + jj_scanpos = xsp; + if (jj_3R_59()) 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; + return false; + } + + final private boolean jj_3R_89() { + if (jj_3R_99()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_95()) { jj_scanpos = xsp; break; } + if (jj_3R_100()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; @@ -2465,16 +2537,16 @@ return false; } - final private boolean jj_3R_50() { + final private boolean jj_3R_55() { if (jj_scan_token(55)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; if (jj_3_4()) { jj_scanpos = xsp; - if (jj_3R_59()) { + if (jj_3R_64()) { jj_scanpos = xsp; - if (jj_3R_60()) return true; + if (jj_3R_65()) 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; @@ -2483,60 +2555,66 @@ return false; } - final private boolean jj_3R_35() { - if (jj_3R_42()) return true; + final private boolean jj_3_7() { + if (jj_3R_24()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_41() { + if (jj_3R_47()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_67()) { jj_scanpos = xsp; break; } + if (jj_3R_76()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - final private boolean jj_3_8() { - if (jj_3R_17()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - final private boolean jj_3R_42() { + final private boolean jj_3R_23() { Token xsp; xsp = jj_scanpos; - if (jj_3_8()) { + if (jj_3_7()) { jj_scanpos = xsp; - if (jj_3R_53()) { + if (jj_3R_39()) { jj_scanpos = xsp; - if (jj_3R_54()) return true; + if (jj_3R_40()) 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; return false; } - final private boolean jj_3R_97() { + final private boolean jj_3R_102() { if (jj_scan_token(36)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_84()) return true; + if (jj_3R_89()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_96() { + final private boolean jj_3R_22() { + if (jj_3R_38()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + final private boolean jj_3R_101() { if (jj_scan_token(35)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_84()) return true; + if (jj_3R_89()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_85() { + final private boolean jj_3R_90() { Token xsp; xsp = jj_scanpos; - if (jj_3R_96()) { + if (jj_3R_101()) { jj_scanpos = xsp; - if (jj_3R_97()) return true; + if (jj_3R_102()) 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; @@ -2547,31 +2625,28 @@ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; - if (jj_3_7()) { - jj_scanpos = xsp; if (jj_3R_22()) { jj_scanpos = xsp; if (jj_3R_23()) 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; return false; } - final private boolean jj_3R_78() { - if (jj_3R_84()) return true; + final private boolean jj_3R_83() { + if (jj_3R_89()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_85()) { jj_scanpos = xsp; break; } + if (jj_3R_90()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - final private boolean jj_3R_30() { - if (jj_3R_39()) return true; + final private boolean jj_3R_33() { + if (jj_3R_38()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } @@ -2579,9 +2654,9 @@ final private boolean jj_3R_16() { Token xsp; xsp = jj_scanpos; - if (jj_3R_30()) { + if (jj_3R_33()) { jj_scanpos = xsp; - if (jj_3R_31()) return true; + if (jj_3R_34()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; while (true) { @@ -2592,40 +2667,40 @@ return false; } - final private boolean jj_3R_39() { + final private boolean jj_3R_38() { if (jj_3R_18()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; - if (jj_3R_50()) return true; + if (jj_3R_55()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; while (true) { xsp = jj_scanpos; - if (jj_3R_50()) { jj_scanpos = xsp; break; } + if (jj_3R_55()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - final private boolean jj_3R_93() { + final private boolean jj_3R_98() { if (jj_scan_token(34)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_78()) return true; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_92() { + final private boolean jj_3R_97() { if (jj_scan_token(33)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_78()) return true; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_91() { + final private boolean jj_3R_96() { if (jj_scan_token(32)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_78()) return true; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } @@ -2637,71 +2712,71 @@ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; - if (jj_3R_35()) jj_scanpos = xsp; + if (jj_3R_41()) jj_scanpos = xsp; else 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_90() { + final private boolean jj_3R_95() { if (jj_scan_token(31)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_78()) return true; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_89() { + final private boolean jj_3R_94() { if (jj_scan_token(30)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_78()) return true; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_88() { + final private boolean jj_3R_93() { if (jj_scan_token(29)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_78()) return true; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_87() { + final private boolean jj_3R_92() { if (jj_scan_token(28)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_78()) return true; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_86() { + final private boolean jj_3R_91() { if (jj_scan_token(27)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_78()) return true; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_79() { + final private boolean jj_3R_84() { Token xsp; xsp = jj_scanpos; - if (jj_3R_86()) { + if (jj_3R_91()) { jj_scanpos = xsp; - if (jj_3R_87()) { + if (jj_3R_92()) { jj_scanpos = xsp; - if (jj_3R_88()) { + if (jj_3R_93()) { jj_scanpos = xsp; - if (jj_3R_89()) { + if (jj_3R_94()) { jj_scanpos = xsp; - if (jj_3R_90()) { + if (jj_3R_95()) { jj_scanpos = xsp; - if (jj_3R_91()) { + if (jj_3R_96()) { jj_scanpos = xsp; - if (jj_3R_92()) { + if (jj_3R_97()) { jj_scanpos = xsp; - if (jj_3R_93()) return true; + if (jj_3R_98()) 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; @@ -2713,60 +2788,60 @@ return false; } - final private boolean jj_3R_76() { - if (jj_3R_78()) return true; + final private boolean jj_3R_81() { + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_79()) { jj_scanpos = xsp; break; } + if (jj_3R_84()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - final private boolean jj_3R_83() { + final private boolean jj_3R_88() { if (jj_scan_token(26)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_76()) return true; + if (jj_3R_81()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_82() { + final private boolean jj_3R_87() { if (jj_scan_token(25)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_76()) return true; + if (jj_3R_81()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_81() { + final private boolean jj_3R_86() { if (jj_scan_token(24)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_76()) return true; + if (jj_3R_81()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_80() { + final private boolean jj_3R_85() { if (jj_scan_token(23)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_76()) return true; + if (jj_3R_81()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_77() { + final private boolean jj_3R_82() { Token xsp; xsp = jj_scanpos; - if (jj_3R_80()) { + if (jj_3R_85()) { jj_scanpos = xsp; - if (jj_3R_81()) { + if (jj_3R_86()) { jj_scanpos = xsp; - if (jj_3R_82()) { + if (jj_3R_87()) { jj_scanpos = xsp; - if (jj_3R_83()) return true; + if (jj_3R_88()) 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; @@ -2774,33 +2849,33 @@ return false; } - final private boolean jj_3R_74() { - if (jj_3R_76()) return true; + final private boolean jj_3R_79() { + if (jj_3R_81()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_77()) { jj_scanpos = xsp; break; } + if (jj_3R_82()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - final private boolean jj_3R_75() { + final private boolean jj_3R_80() { if (jj_scan_token(22)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_74()) return true; + if (jj_3R_79()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_72() { - if (jj_3R_74()) return true; + final private boolean jj_3R_77() { + if (jj_3R_79()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_75()) { jj_scanpos = xsp; break; } + if (jj_3R_80()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; @@ -2814,10 +2889,10 @@ return false; } - final private boolean jj_3R_73() { + final private boolean jj_3R_78() { if (jj_scan_token(21)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_72()) return true; + if (jj_3R_77()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } @@ -2830,72 +2905,72 @@ return false; } - final private boolean jj_3R_68() { - if (jj_3R_72()) return true; + final private boolean jj_3R_72() { + if (jj_3R_77()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_73()) { jj_scanpos = xsp; break; } + if (jj_3R_78()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - final private boolean jj_3R_69() { + final private boolean jj_3R_73() { if (jj_scan_token(20)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_68()) return true; + if (jj_3R_72()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_61() { - if (jj_3R_68()) return true; + final private boolean jj_3R_66() { + if (jj_3R_72()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_69()) { jj_scanpos = xsp; break; } + if (jj_3R_73()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - final private boolean jj_3R_71() { + final private boolean jj_3R_75() { if (jj_scan_token(19)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_61()) return true; + if (jj_3R_66()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_62() { + final private boolean jj_3R_67() { Token xsp; xsp = jj_scanpos; - if (jj_3R_70()) { + if (jj_3R_74()) { jj_scanpos = xsp; - if (jj_3R_71()) return true; + if (jj_3R_75()) 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_70() { + final private boolean jj_3R_74() { if (jj_scan_token(18)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_61()) return true; + if (jj_3R_66()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - final private boolean jj_3R_51() { - if (jj_3R_61()) return true; + final private boolean jj_3R_56() { + if (jj_3R_66()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_62()) { jj_scanpos = xsp; break; } + if (jj_3R_67()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; @@ -2910,10 +2985,10 @@ public boolean lookingAhead = false; private boolean jj_semLA; private int jj_gen; - final private int[] jj_la1 = new int[33]; - 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,0x80,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,0x2400e000,}; - final private JJCalls[] jj_2_rtns = new JJCalls[8]; + 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,0x80,0x80,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 JJCalls[] jj_2_rtns = new JJCalls[9]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -2923,7 +2998,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 33; i++) jj_la1[i] = -1; + for (int i = 0; i < 34; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2934,7 +3009,7 @@ jj_ntk = -1; jjtree.reset(); jj_gen = 0; - for (int i = 0; i < 33; i++) jj_la1[i] = -1; + for (int i = 0; i < 34; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2944,7 +3019,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 33; i++) jj_la1[i] = -1; + for (int i = 0; i < 34; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2955,7 +3030,7 @@ jj_ntk = -1; jjtree.reset(); jj_gen = 0; - for (int i = 0; i < 33; i++) jj_la1[i] = -1; + for (int i = 0; i < 34; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2964,7 +3039,7 @@ token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 33; i++) jj_la1[i] = -1; + for (int i = 0; i < 34; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2974,7 +3049,7 @@ jj_ntk = -1; jjtree.reset(); jj_gen = 0; - for (int i = 0; i < 33; i++) jj_la1[i] = -1; + for (int i = 0; i < 34; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -3089,7 +3164,7 @@ la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 33; i++) { + for (int i = 0; i < 34; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<<j)) != 0) { @@ -3126,7 +3201,7 @@ final private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 8; i++) { + for (int i = 0; i < 9; i++) { JJCalls p = jj_2_rtns[i]; do { if (p.gen > jj_gen) { @@ -3140,6 +3215,7 @@ case 5: jj_3_6(); break; case 6: jj_3_7(); break; case 7: jj_3_8(); break; + case 8: jj_3_9(); break; } } p = p.next; 1.5 +8 -2 jakarta-commons-sandbox/jexl/src/java/org/apache/commons/jexl/parser/Parser.jj Index: Parser.jj =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/jexl/src/java/org/apache/commons/jexl/parser/Parser.jj,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- Parser.jj 7 Jun 2002 03:03:51 -0000 1.4 +++ Parser.jj 7 Jun 2002 03:35:30 -0000 1.5 @@ -57,7 +57,7 @@ * Jexl : Java Expression Language * * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a> - * @version $Id: Parser.jj,v 1.4 2002/06/07 03:03:51 geirm Exp $ + * @version $Id: Parser.jj,v 1.5 2002/06/07 03:35:30 geirm Exp $ */ options @@ -1716,7 +1716,13 @@ try { /*@egen*/ (LOOKAHEAD(Identifier() "[" ( Expression() | IntegerLiteral() | Reference()) "]") ArrayAccess() | Identifier()) - (LOOKAHEAD(2) "." (LOOKAHEAD(3) Method() | Identifier() | IntegerLiteral() ))*/*@bgen(jjtree)*/ + (LOOKAHEAD(2) "." + ( + LOOKAHEAD(Identifier() "[" ( Expression() | IntegerLiteral() | Reference()) "]") ArrayAccess() | + (LOOKAHEAD(3) Method() | Identifier() | IntegerLiteral() ) + + ) + )*/*@bgen(jjtree)*/ } catch (Throwable jjte000) { if (jjtc000) { jjtree.clearNodeScope(jjtn000);
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>