Author: markt Date: Sat Jul 13 19:28:02 2013 New Revision: 1502847 URL: http://svn.apache.org/r1502847 Log: Add support for defining Sets, Lists and Maps to the parser. The new nodes (the Ast*.java files) are just the auto-generated skeletons and some - if not all - will need some work before these new expression elements are fully implemented.
Added: tomcat/trunk/java/org/apache/el/parser/AstListData.java tomcat/trunk/java/org/apache/el/parser/AstMapData.java tomcat/trunk/java/org/apache/el/parser/AstMapEntry.java tomcat/trunk/java/org/apache/el/parser/AstSetData.java Modified: tomcat/trunk/java/org/apache/el/parser/ELParser.java tomcat/trunk/java/org/apache/el/parser/ELParser.jjt tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java tomcat/trunk/java/org/apache/el/parser/ELParserTokenManager.java tomcat/trunk/java/org/apache/el/parser/ELParserTreeConstants.java tomcat/trunk/java/org/apache/el/parser/SimpleCharStream.java tomcat/trunk/java/org/apache/el/parser/Token.java Added: tomcat/trunk/java/org/apache/el/parser/AstListData.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstListData.java?rev=1502847&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/AstListData.java (added) +++ tomcat/trunk/java/org/apache/el/parser/AstListData.java Sat Jul 13 19:28:02 2013 @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* Generated By:JJTree: Do not edit this line. AstListData.java Version 4.3 */ +package org.apache.el.parser; + +public +class AstListData extends SimpleNode { + public AstListData(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=7f2694086a9ba64558ee39d1cd719db1 (do not edit this line) */ Added: tomcat/trunk/java/org/apache/el/parser/AstMapData.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstMapData.java?rev=1502847&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/AstMapData.java (added) +++ tomcat/trunk/java/org/apache/el/parser/AstMapData.java Sat Jul 13 19:28:02 2013 @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* Generated By:JJTree: Do not edit this line. AstMapData.java Version 4.3 */ +package org.apache.el.parser; + +public +class AstMapData extends SimpleNode { + public AstMapData(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=a68b5c6f0a0708f478fdf8c0e6e1263e (do not edit this line) */ Added: tomcat/trunk/java/org/apache/el/parser/AstMapEntry.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstMapEntry.java?rev=1502847&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/AstMapEntry.java (added) +++ tomcat/trunk/java/org/apache/el/parser/AstMapEntry.java Sat Jul 13 19:28:02 2013 @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* Generated By:JJTree: Do not edit this line. AstMapEntry.java Version 4.3 */ +package org.apache.el.parser; + +public +class AstMapEntry extends SimpleNode { + public AstMapEntry(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=6a7910e58a583371769800554113a8d3 (do not edit this line) */ Added: tomcat/trunk/java/org/apache/el/parser/AstSetData.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstSetData.java?rev=1502847&view=auto ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/AstSetData.java (added) +++ tomcat/trunk/java/org/apache/el/parser/AstSetData.java Sat Jul 13 19:28:02 2013 @@ -0,0 +1,26 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* Generated By:JJTree: Do not edit this line. AstSetData.java Version 4.3 */ +package org.apache.el.parser; + +public +class AstSetData extends SimpleNode { + public AstSetData(int id) { + super(id); + } +} +/* JavaCC - OriginalChecksum=e1dc4e2011eee313491decfa9e0152fe (do not edit this line) */ Modified: tomcat/trunk/java/org/apache/el/parser/ELParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParser.java?rev=1502847&r1=1502846&r2=1502847&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/ELParser.java (original) +++ tomcat/trunk/java/org/apache/el/parser/ELParser.java Sat Jul 13 19:28:02 2013 @@ -1,13 +1,11 @@ /* Generated By:JJTree&JavaCC: Do not edit this line. ELParser.java */ package org.apache.el.parser; import java.io.StringReader; - import javax.el.ELException; - @SuppressWarnings("all") // Ignore warnings in generated code public class ELParser/*@bgen(jjtree)*/implements ELParserTreeConstants, ELParserConstants {/*@bgen(jjtree)*/ - protected JJTELParserState jjtree = new JJTELParserState();public static Node parse(String ref) throws ELException - { + protected JJTELParserState jjtree = new JJTELParserState(); + public static Node parse(String ref) throws ELException { try { return (new ELParser(new StringReader(ref))).CompositeExpression(); } catch (ParseException pe) { @@ -55,9 +53,9 @@ public class ELParser/*@bgen(jjtree)*/im } } jj_consume_token(0); - jjtree.closeNodeScope(jjtn000, true); - jjtc000 = false; - {if (true) return jjtn000;} + jjtree.closeNodeScope(jjtn000, true); + jjtc000 = false; + {if (true) return jjtn000;} } catch (Throwable jjte000) { if (jjtc000) { jjtree.clearNodeScope(jjtn000); @@ -103,7 +101,7 @@ public class ELParser/*@bgen(jjtree)*/im /* * DeferredExpression - * #{..} Expressions + * #{...} Expressions */ final public void DeferredExpression() throws ParseException { /*@bgen(jjtree) DeferredExpression */ @@ -113,7 +111,7 @@ public class ELParser/*@bgen(jjtree)*/im try { jj_consume_token(START_DEFERRED_EXPRESSION); Expression(); - jj_consume_token(END_EXPRESSION); + jj_consume_token(RCURL); } catch (Throwable jjte000) { if (jjtc000) { jjtree.clearNodeScope(jjtn000); @@ -147,7 +145,7 @@ public class ELParser/*@bgen(jjtree)*/im try { jj_consume_token(START_DYNAMIC_EXPRESSION); Expression(); - jj_consume_token(END_EXPRESSION); + jj_consume_token(RCURL); } catch (Throwable jjte000) { if (jjtc000) { jjtree.clearNodeScope(jjtn000); @@ -939,6 +937,7 @@ public class ELParser/*@bgen(jjtree)*/im } } break; + case START_SET_OR_MAP: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case STRING_LITERAL: @@ -946,6 +945,7 @@ public class ELParser/*@bgen(jjtree)*/im case FALSE: case NULL: case LPAREN: + case LBRACK: case IDENTIFIER: Value(); break; @@ -1014,7 +1014,9 @@ public class ELParser/*@bgen(jjtree)*/im case NULL: Literal(); break; + case START_SET_OR_MAP: case LPAREN: + case LBRACK: case IDENTIFIER: NonLiteral(); break; @@ -1119,6 +1121,7 @@ public class ELParser/*@bgen(jjtree)*/im try { jj_consume_token(LPAREN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case START_SET_OR_MAP: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case STRING_LITERAL: @@ -1126,6 +1129,7 @@ public class ELParser/*@bgen(jjtree)*/im case FALSE: case NULL: case LPAREN: + case LBRACK: case NOT0: case NOT1: case EMPTY: @@ -1194,9 +1198,242 @@ public class ELParser/*@bgen(jjtree)*/im break; default: jj_la1[31] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); + if (jj_2_3(3)) { + SetData(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACK: + ListData(); + break; + case START_SET_OR_MAP: + MapData(); + break; + default: + jj_la1[32] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } + } + } + } + + final public void SetData() throws ParseException { + /*@bgen(jjtree) SetData */ + AstSetData jjtn000 = new AstSetData(JJTSETDATA); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(START_SET_OR_MAP); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case START_SET_OR_MAP: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case TRUE: + case FALSE: + case NULL: + case LPAREN: + case LBRACK: + case NOT0: + case NOT1: + case EMPTY: + case MINUS: + case IDENTIFIER: + Expression(); + label_11: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[33] = jj_gen; + break label_11; + } + jj_consume_token(COMMA); + Expression(); + } + break; + default: + jj_la1[34] = jj_gen; + ; + } + jj_consume_token(RCURL); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void ListData() throws ParseException { + /*@bgen(jjtree) ListData */ + AstListData jjtn000 = new AstListData(JJTLISTDATA); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(LBRACK); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case START_SET_OR_MAP: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case TRUE: + case FALSE: + case NULL: + case LPAREN: + case LBRACK: + case NOT0: + case NOT1: + case EMPTY: + case MINUS: + case IDENTIFIER: + Expression(); + label_12: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[35] = jj_gen; + break label_12; + } + jj_consume_token(COMMA); + Expression(); + } + break; + default: + jj_la1[36] = jj_gen; + ; + } + jj_consume_token(RBRACK); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void MapData() throws ParseException { + /*@bgen(jjtree) MapData */ + AstMapData jjtn000 = new AstMapData(JJTMAPDATA); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + jj_consume_token(START_SET_OR_MAP); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case START_SET_OR_MAP: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case TRUE: + case FALSE: + case NULL: + case LPAREN: + case LBRACK: + case NOT0: + case NOT1: + case EMPTY: + case MINUS: + case IDENTIFIER: + MapEntry(); + label_13: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[37] = jj_gen; + break label_13; + } + jj_consume_token(COMMA); + MapEntry(); } + break; + default: + jj_la1[38] = jj_gen; + ; + } + jj_consume_token(RCURL); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); + } + } + } + + final public void MapEntry() throws ParseException { + /*@bgen(jjtree) MapEntry */ + AstMapEntry jjtn000 = new AstMapEntry(JJTMAPENTRY); + boolean jjtc000 = true; + jjtree.openNodeScope(jjtn000); + try { + Expression(); + jj_consume_token(COLON); + Expression(); + } catch (Throwable jjte000) { + if (jjtc000) { + jjtree.clearNodeScope(jjtn000); + jjtc000 = false; + } else { + jjtree.popNode(); + } + if (jjte000 instanceof RuntimeException) { + {if (true) throw (RuntimeException)jjte000;} + } + if (jjte000 instanceof ParseException) { + {if (true) throw (ParseException)jjte000;} + } + {if (true) throw (Error)jjte000;} + } finally { + if (jjtc000) { + jjtree.closeNodeScope(jjtn000, true); } } } @@ -1233,7 +1470,7 @@ public class ELParser/*@bgen(jjtree)*/im jjtree.openNodeScope(jjtn000);Token t0 = null; Token t1 = null; try { - if (jj_2_3(2)) { + if (jj_2_4(2)) { t0 = jj_consume_token(IDENTIFIER); jj_consume_token(COLON); } else { @@ -1248,6 +1485,7 @@ public class ELParser/*@bgen(jjtree)*/im } jj_consume_token(LPAREN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case START_SET_OR_MAP: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case STRING_LITERAL: @@ -1255,28 +1493,29 @@ public class ELParser/*@bgen(jjtree)*/im case FALSE: case NULL: case LPAREN: + case LBRACK: case NOT0: case NOT1: case EMPTY: case MINUS: case IDENTIFIER: Expression(); - label_11: + label_14: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[32] = jj_gen; - break label_11; + jj_la1[39] = jj_gen; + break label_14; } jj_consume_token(COMMA); Expression(); } break; default: - jj_la1[33] = jj_gen; + jj_la1[40] = jj_gen; ; } jj_consume_token(RPAREN); @@ -1324,7 +1563,7 @@ public class ELParser/*@bgen(jjtree)*/im Null(); break; default: - jj_la1[34] = jj_gen; + jj_la1[41] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1361,7 +1600,7 @@ public class ELParser/*@bgen(jjtree)*/im } break; default: - jj_la1[35] = jj_gen; + jj_la1[42] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1469,363 +1708,427 @@ public class ELParser/*@bgen(jjtree)*/im finally { jj_save(2, xla); } } - private boolean jj_3R_13() { - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(COLON)) return true; - return false; - } - - private boolean jj_3_2() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_13()) jj_scanpos = xsp; - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - - private boolean jj_3R_69() { - if (jj_scan_token(IDENTIFIER)) return true; - return false; + private boolean jj_2_4(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_4(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(3, xla); } } - private boolean jj_3R_25() { - if (jj_3R_31()) return true; + private boolean jj_3R_32() { + if (jj_3R_38()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_32()) { jj_scanpos = xsp; break; } + if (jj_3R_39()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_59() { - if (jj_3R_69()) return true; + private boolean jj_3R_73() { + if (jj_scan_token(INTEGER_LITERAL)) return true; return false; } - private boolean jj_3R_34() { + private boolean jj_3R_41() { if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3R_58() { - if (jj_3R_68()) return true; + private boolean jj_3R_40() { + if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_26() { + private boolean jj_3R_33() { Token xsp; xsp = jj_scanpos; - if (jj_3R_33()) { + if (jj_3R_40()) { jj_scanpos = xsp; - if (jj_3R_34()) return true; + if (jj_3R_41()) return true; } return false; } - private boolean jj_3R_33() { - if (jj_scan_token(PLUS)) return true; - return false; - } - - private boolean jj_3R_57() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_67()) return true; + private boolean jj_3R_72() { + if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; return false; } - private boolean jj_3R_49() { + private boolean jj_3R_28() { + if (jj_3R_32()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_57()) { - jj_scanpos = xsp; - if (jj_3R_58()) { - jj_scanpos = xsp; - if (jj_3R_59()) return true; - } + while (true) { + xsp = jj_scanpos; + if (jj_3R_33()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_66() { - if (jj_scan_token(NULL)) return true; + private boolean jj_3R_81() { + if (jj_scan_token(FALSE)) return true; return false; } - private boolean jj_3R_21() { - if (jj_3R_25()) return true; + private boolean jj_3R_37() { Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_26()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_scan_token(28)) { + jj_scanpos = xsp; + if (jj_scan_token(29)) return true; } return false; } - private boolean jj_3R_30() { + private boolean jj_3R_36() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(27)) { + if (jj_scan_token(30)) { jj_scanpos = xsp; - if (jj_scan_token(28)) return true; + if (jj_scan_token(31)) return true; } return false; } - private boolean jj_3R_65() { - if (jj_scan_token(STRING_LITERAL)) return true; - return false; - } - - private boolean jj_3R_29() { + private boolean jj_3R_71() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(29)) { + if (jj_3R_80()) { jj_scanpos = xsp; - if (jj_scan_token(30)) return true; + if (jj_3R_81()) return true; } return false; } - private boolean jj_3R_28() { + private boolean jj_3R_80() { + if (jj_scan_token(TRUE)) return true; + return false; + } + + private boolean jj_3R_35() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(23)) { + if (jj_scan_token(24)) { jj_scanpos = xsp; - if (jj_scan_token(24)) return true; + if (jj_scan_token(25)) return true; } return false; } - private boolean jj_3R_22() { + private boolean jj_3R_34() { Token xsp; xsp = jj_scanpos; - if (jj_3R_27()) { - jj_scanpos = xsp; - if (jj_3R_28()) { - jj_scanpos = xsp; - if (jj_3R_29()) { + if (jj_scan_token(26)) { jj_scanpos = xsp; - if (jj_3R_30()) return true; - } - } + if (jj_scan_token(27)) return true; } return false; } - private boolean jj_3R_27() { + private boolean jj_3R_29() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(25)) { + if (jj_3R_34()) { + jj_scanpos = xsp; + if (jj_3R_35()) { + jj_scanpos = xsp; + if (jj_3R_36()) { jj_scanpos = xsp; - if (jj_scan_token(26)) return true; + if (jj_3R_37()) return true; + } + } } return false; } - private boolean jj_3R_61() { - if (jj_scan_token(LBRACK)) return true; + private boolean jj_3R_63() { + if (jj_3R_75()) return true; return false; } - private boolean jj_3R_51() { - if (jj_3R_61()) return true; + private boolean jj_3R_62() { + if (jj_3R_74()) return true; return false; } - private boolean jj_3R_64() { - if (jj_scan_token(INTEGER_LITERAL)) return true; + private boolean jj_3R_61() { + if (jj_3R_73()) return true; return false; } - private boolean jj_3R_19() { - if (jj_3R_21()) return true; + private boolean jj_3R_26() { + if (jj_3R_28()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_22()) { jj_scanpos = xsp; break; } + if (jj_3R_29()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_60() { - if (jj_scan_token(DOT)) return true; + if (jj_3R_72()) return true; return false; } - private boolean jj_3R_24() { + private boolean jj_3R_55() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(33)) { + if (jj_3R_59()) { + jj_scanpos = xsp; + if (jj_3R_60()) { jj_scanpos = xsp; - if (jj_scan_token(34)) return true; + if (jj_3R_61()) { + jj_scanpos = xsp; + if (jj_3R_62()) { + jj_scanpos = xsp; + if (jj_3R_63()) return true; + } + } + } } return false; } - private boolean jj_3R_63() { - if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; + private boolean jj_3R_59() { + if (jj_3R_71()) return true; return false; } - private boolean jj_3R_23() { + private boolean jj_3R_31() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(31)) { + if (jj_scan_token(34)) { jj_scanpos = xsp; - if (jj_scan_token(32)) return true; + if (jj_scan_token(35)) return true; } return false; } - private boolean jj_3R_20() { + private boolean jj_3R_30() { Token xsp; xsp = jj_scanpos; - if (jj_3R_23()) { + if (jj_scan_token(32)) { jj_scanpos = xsp; - if (jj_3R_24()) return true; + if (jj_scan_token(33)) return true; } return false; } - private boolean jj_3R_50() { - if (jj_3R_60()) return true; - return false; - } - - private boolean jj_3R_18() { + private boolean jj_3R_27() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(37)) { + if (jj_3R_30()) { jj_scanpos = xsp; - if (jj_scan_token(38)) return true; + if (jj_3R_31()) return true; } return false; } - private boolean jj_3R_47() { + private boolean jj_3R_25() { Token xsp; xsp = jj_scanpos; - if (jj_3R_50()) { + if (jj_scan_token(38)) { jj_scanpos = xsp; - if (jj_3R_51()) return true; + if (jj_scan_token(39)) return true; } return false; } - private boolean jj_3R_71() { - if (jj_scan_token(FALSE)) return true; - return false; - } - - private boolean jj_3R_17() { - if (jj_3R_19()) return true; + private boolean jj_3R_24() { + if (jj_3R_26()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_20()) { jj_scanpos = xsp; break; } + if (jj_3R_27()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_44() { - if (jj_3R_47()) return true; + private boolean jj_3_4() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(COLON)) return true; return false; } - private boolean jj_3R_70() { - if (jj_scan_token(TRUE)) return true; + private boolean jj_3R_76() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_4()) jj_scanpos = xsp; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - private boolean jj_3R_62() { + private boolean jj_3R_20() { + if (jj_3R_24()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_25()) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_21() { Token xsp; xsp = jj_scanpos; - if (jj_3R_70()) { + if (jj_scan_token(40)) { jj_scanpos = xsp; - if (jj_3R_71()) return true; + if (jj_scan_token(41)) return true; } return false; } - private boolean jj_3R_46() { - if (jj_3R_49()) return true; + private boolean jj_3R_18() { + if (jj_3R_20()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_21()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_45() { - if (jj_3R_48()) return true; + private boolean jj_3R_77() { + if (jj_scan_token(IDENTIFIER)) return true; + return false; + } + + private boolean jj_3_1() { + if (jj_scan_token(QUESTIONMARK)) return true; + if (jj_3R_15()) return true; + if (jj_scan_token(COLON)) return true; return false; } private boolean jj_3R_15() { - if (jj_3R_17()) return true; + if (jj_3R_18()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_18()) { jj_scanpos = xsp; break; } + if (jj_3_1()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_43() { + private boolean jj_3R_23() { + if (jj_scan_token(COMMA)) return true; + return false; + } + + private boolean jj_3R_84() { + if (jj_3R_22()) return true; + return false; + } + + private boolean jj_3R_83() { + if (jj_3R_84()) return true; + return false; + } + + private boolean jj_3R_82() { + if (jj_3R_22()) return true; + return false; + } + + private boolean jj_3R_22() { + if (jj_3R_15()) return true; + return false; + } + + private boolean jj_3R_79() { + if (jj_scan_token(START_SET_OR_MAP)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_45()) { - jj_scanpos = xsp; - if (jj_3R_46()) return true; + if (jj_3R_83()) jj_scanpos = xsp; + if (jj_scan_token(RCURL)) return true; + return false; + } + + private boolean jj_3R_19() { + if (jj_3R_22()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_23()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_56() { - if (jj_3R_66()) return true; + private boolean jj_3R_78() { + if (jj_scan_token(LBRACK)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_82()) jj_scanpos = xsp; + if (jj_scan_token(RBRACK)) return true; return false; } private boolean jj_3R_16() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(COLON)) return true; + return false; + } + + private boolean jj_3_2() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(39)) { - jj_scanpos = xsp; - if (jj_scan_token(40)) return true; - } + if (jj_3R_16()) jj_scanpos = xsp; + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - private boolean jj_3R_55() { - if (jj_3R_65()) return true; + private boolean jj_3R_17() { + if (jj_scan_token(START_SET_OR_MAP)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_19()) jj_scanpos = xsp; + if (jj_scan_token(RCURL)) return true; return false; } - private boolean jj_3R_54() { - if (jj_3R_64()) return true; + private boolean jj_3R_68() { + if (jj_3R_79()) return true; return false; } - private boolean jj_3R_53() { - if (jj_3R_63()) return true; + private boolean jj_3R_67() { + if (jj_3R_78()) return true; return false; } - private boolean jj_3R_52() { - if (jj_3R_62()) return true; + private boolean jj_3_3() { + if (jj_3R_17()) return true; return false; } - private boolean jj_3R_48() { + private boolean jj_3R_66() { + if (jj_3R_77()) return true; + return false; + } + + private boolean jj_3R_65() { + if (jj_3R_76()) return true; + return false; + } + + private boolean jj_3R_56() { Token xsp; xsp = jj_scanpos; - if (jj_3R_52()) { + if (jj_3R_64()) { jj_scanpos = xsp; - if (jj_3R_53()) { + if (jj_3R_65()) { jj_scanpos = xsp; - if (jj_3R_54()) { + if (jj_3R_66()) { jj_scanpos = xsp; - if (jj_3R_55()) { + if (jj_3_3()) { jj_scanpos = xsp; - if (jj_3R_56()) return true; + if (jj_3R_67()) { + jj_scanpos = xsp; + if (jj_3R_68()) return true; + } } } } @@ -1833,145 +2136,169 @@ public class ELParser/*@bgen(jjtree)*/im return false; } - private boolean jj_3R_14() { - if (jj_3R_15()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_16()) { jj_scanpos = xsp; break; } - } + private boolean jj_3R_64() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_22()) return true; return false; } - private boolean jj_3R_42() { - if (jj_3R_43()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_44()) { jj_scanpos = xsp; break; } - } + private boolean jj_3R_70() { + if (jj_scan_token(LBRACK)) return true; return false; } - private boolean jj_3_1() { - if (jj_scan_token(QUESTIONMARK)) return true; - if (jj_3R_12()) return true; - if (jj_scan_token(COLON)) return true; + private boolean jj_3R_58() { + if (jj_3R_70()) return true; return false; } - private boolean jj_3R_38() { - if (jj_3R_42()) return true; + private boolean jj_3R_69() { + if (jj_scan_token(DOT)) return true; return false; } - private boolean jj_3R_37() { - if (jj_scan_token(EMPTY)) return true; - if (jj_3R_31()) return true; + private boolean jj_3R_57() { + if (jj_3R_69()) return true; return false; } - private boolean jj_3R_12() { - if (jj_3R_14()) return true; + private boolean jj_3R_54() { Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_1()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_57()) { + jj_scanpos = xsp; + if (jj_3R_58()) return true; } return false; } - private boolean jj_3R_36() { + private boolean jj_3R_51() { + if (jj_3R_54()) return true; + return false; + } + + private boolean jj_3R_53() { + if (jj_3R_56()) return true; + return false; + } + + private boolean jj_3R_50() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(35)) { + if (jj_3R_52()) { jj_scanpos = xsp; - if (jj_scan_token(36)) return true; + if (jj_3R_53()) return true; } - if (jj_3R_31()) return true; return false; } - private boolean jj_3R_31() { + private boolean jj_3R_52() { + if (jj_3R_55()) return true; + return false; + } + + private boolean jj_3R_49() { + if (jj_3R_50()) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_35()) { - jj_scanpos = xsp; - if (jj_3R_36()) { - jj_scanpos = xsp; - if (jj_3R_37()) { - jj_scanpos = xsp; - if (jj_3R_38()) return true; - } - } + while (true) { + xsp = jj_scanpos; + if (jj_3R_51()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_35() { - if (jj_scan_token(MINUS)) return true; - if (jj_3R_31()) return true; + private boolean jj_3R_45() { + if (jj_3R_49()) return true; return false; } - private boolean jj_3_3() { - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(COLON)) return true; + private boolean jj_3R_44() { + if (jj_scan_token(EMPTY)) return true; + if (jj_3R_38()) return true; return false; } - private boolean jj_3R_68() { + private boolean jj_3R_43() { Token xsp; xsp = jj_scanpos; - if (jj_3_3()) jj_scanpos = xsp; - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(36)) { + jj_scanpos = xsp; + if (jj_scan_token(37)) return true; + } + if (jj_3R_38()) return true; return false; } - private boolean jj_3R_67() { - if (jj_3R_12()) return true; + private boolean jj_3R_42() { + if (jj_scan_token(MINUS)) return true; + if (jj_3R_38()) return true; return false; } - private boolean jj_3R_41() { + private boolean jj_3R_38() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(49)) { + if (jj_3R_42()) { + jj_scanpos = xsp; + if (jj_3R_43()) { + jj_scanpos = xsp; + if (jj_3R_44()) { jj_scanpos = xsp; - if (jj_scan_token(50)) return true; + if (jj_3R_45()) return true; + } + } } return false; } - private boolean jj_3R_40() { + private boolean jj_3R_75() { + if (jj_scan_token(NULL)) return true; + return false; + } + + private boolean jj_3R_48() { Token xsp; xsp = jj_scanpos; - if (jj_scan_token(47)) { + if (jj_scan_token(50)) { jj_scanpos = xsp; - if (jj_scan_token(48)) return true; + if (jj_scan_token(51)) return true; } return false; } - private boolean jj_3R_32() { + private boolean jj_3R_47() { Token xsp; xsp = jj_scanpos; - if (jj_3R_39()) { + if (jj_scan_token(48)) { jj_scanpos = xsp; - if (jj_3R_40()) { + if (jj_scan_token(49)) return true; + } + return false; + } + + private boolean jj_3R_39() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_46()) { jj_scanpos = xsp; - if (jj_3R_41()) return true; + if (jj_3R_47()) { + jj_scanpos = xsp; + if (jj_3R_48()) return true; } } return false; } - private boolean jj_3R_39() { + private boolean jj_3R_46() { if (jj_scan_token(MULT)) return true; return false; } + private boolean jj_3R_74() { + if (jj_scan_token(STRING_LITERAL)) return true; + return false; + } + /** Generated Token Manager. */ public ELParserTokenManager token_source; SimpleCharStream jj_input_stream; @@ -1983,7 +2310,7 @@ public class ELParser/*@bgen(jjtree)*/im private Token jj_scanpos, jj_lastpos; private int jj_la; private int jj_gen; - final private int[] jj_la1 = new int[36]; + final private int[] jj_la1 = new int[43]; static private int[] jj_la1_0; static private int[] jj_la1_1; static { @@ -1991,12 +2318,12 @@ public class ELParser/*@bgen(jjtree)*/im jj_la1_init_1(); } private static void jj_la1_init_0() { - jj_la1_0 = new int[] {0xe,0xe,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x80000000,0x7f800000,0x6000000,0x1800000,0x60000000,0x18000000,0x7f800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x27b00,0x90000,0x27b00,0x90000,0x20000,0x400000,0x27b00,0x20000,0x0,0x400000,0x27b00,0x7b00,0x3000,}; + jj_la1_0 = new int[] {0xe,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff000000,0xc000000,0x3000000,0xc0000000,0x30000000,0xff000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x15ed00,0x120000,0x15ed00,0x120000,0x40000,0x800000,0x15ed00,0x40000,0x0,0x100100,0x800000,0x15ed00,0x800000,0x15ed00,0x800000,0x15ed00,0x800000,0x15ed00,0x1ec00,0xc000,}; } private static void jj_la1_init_1() { - jj_la1_1 = new int[] {0x0,0x0,0x180,0x180,0x60,0x60,0x7,0x1,0x6,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x3000,0x3000,0x78800,0x18000,0x60000,0x78800,0x18,0x82218,0x0,0x80000,0x0,0x0,0x0,0x82218,0x0,0x80000,0x0,0x82218,0x0,0x0,}; + jj_la1_1 = new int[] {0x0,0x0,0x300,0x300,0xc0,0xc0,0xf,0x3,0xc,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x6000,0xf1000,0x30000,0xc0000,0xf1000,0x30,0x104430,0x0,0x100000,0x0,0x0,0x0,0x104430,0x0,0x100000,0x0,0x0,0x104430,0x0,0x104430,0x0,0x104430,0x0,0x104430,0x0,0x0,}; } - final private JJCalls[] jj_2_rtns = new JJCalls[3]; + final private JJCalls[] jj_2_rtns = new JJCalls[4]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -2011,7 +2338,7 @@ public class ELParser/*@bgen(jjtree)*/im token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 36; i++) jj_la1[i] = -1; + for (int i = 0; i < 43; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2027,7 +2354,7 @@ public class ELParser/*@bgen(jjtree)*/im jj_ntk = -1; jjtree.reset(); jj_gen = 0; - for (int i = 0; i < 36; i++) jj_la1[i] = -1; + for (int i = 0; i < 43; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2038,7 +2365,7 @@ public class ELParser/*@bgen(jjtree)*/im token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 36; i++) jj_la1[i] = -1; + for (int i = 0; i < 43; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2050,7 +2377,7 @@ public class ELParser/*@bgen(jjtree)*/im jj_ntk = -1; jjtree.reset(); jj_gen = 0; - for (int i = 0; i < 36; i++) jj_la1[i] = -1; + for (int i = 0; i < 43; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2060,7 +2387,7 @@ public class ELParser/*@bgen(jjtree)*/im token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 36; i++) jj_la1[i] = -1; + for (int i = 0; i < 43; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2071,7 +2398,7 @@ public class ELParser/*@bgen(jjtree)*/im jj_ntk = -1; jjtree.reset(); jj_gen = 0; - for (int i = 0; i < 36; i++) jj_la1[i] = -1; + for (int i = 0; i < 43; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -2183,12 +2510,12 @@ public class ELParser/*@bgen(jjtree)*/im /** Generate ParseException. */ public ParseException generateParseException() { jj_expentries.clear(); - boolean[] la1tokens = new boolean[57]; + boolean[] la1tokens = new boolean[58]; if (jj_kind >= 0) { la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 36; i++) { + for (int i = 0; i < 43; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<<j)) != 0) { @@ -2200,7 +2527,7 @@ public class ELParser/*@bgen(jjtree)*/im } } } - for (int i = 0; i < 57; i++) { + for (int i = 0; i < 58; i++) { if (la1tokens[i]) { jj_expentry = new int[1]; jj_expentry[0] = i; @@ -2227,7 +2554,7 @@ public class ELParser/*@bgen(jjtree)*/im private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 3; i++) { + for (int i = 0; i < 4; i++) { try { JJCalls p = jj_2_rtns[i]; do { @@ -2237,6 +2564,7 @@ public class ELParser/*@bgen(jjtree)*/im case 0: jj_3_1(); break; case 1: jj_3_2(); break; case 2: jj_3_3(); break; + case 3: jj_3_4(); break; } } p = p.next; Modified: tomcat/trunk/java/org/apache/el/parser/ELParser.jjt URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParser.jjt?rev=1502847&r1=1502846&r2=1502847&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/ELParser.jjt (original) +++ tomcat/trunk/java/org/apache/el/parser/ELParser.jjt Sat Jul 13 19:28:02 2013 @@ -78,7 +78,7 @@ void LiteralExpression() #LiteralExpress */ void DeferredExpression() #DeferredExpression : {} { - <START_DEFERRED_EXPRESSION> Expression() <END_EXPRESSION> + <START_DEFERRED_EXPRESSION> Expression() <RCURL> } /* @@ -87,7 +87,7 @@ void DeferredExpression() #DeferredExpre */ void DynamicExpression() #DynamicExpression : {} { - <START_DYNAMIC_EXPRESSION> Expression() <END_EXPRESSION> + <START_DYNAMIC_EXPRESSION> Expression() <RCURL> } /* @@ -266,6 +266,35 @@ void NonLiteral() : {} <LPAREN> Expression() <RPAREN> | LOOKAHEAD((<IDENTIFIER> <COLON>)? <IDENTIFIER> <LPAREN>) Function() | Identifier() + | LOOKAHEAD(3)SetData() + | ListData() + | MapData() +} + +void SetData() #SetData: {} +{ + <START_SET_OR_MAP> + ( Expression() ( <COMMA> Expression() )* )? + <RCURL> +} + +void ListData() #ListData: {} +{ + <LBRACK> + ( Expression() ( <COMMA> Expression() )* )? + <RBRACK> +} + +void MapData() #MapData: {} +{ + <START_SET_OR_MAP> + ( MapEntry() ( <COMMA> MapEntry() )* )? + <RCURL> +} + +void MapEntry() #MapEntry: {} +{ + Expression() <COLON> Expression() } /* @@ -360,6 +389,10 @@ void Null() #Null : {} /* ========================================================================== */ +TOKEN_MGR_DECLS: +{ +java.util.Deque<Integer> deque = new java.util.ArrayDeque<Integer>(); +} <DEFAULT> TOKEN : { /* @@ -376,16 +409,18 @@ void Null() #Null : {} | "#" > | - < START_DYNAMIC_EXPRESSION: "${" > : IN_EXPRESSION + < START_DYNAMIC_EXPRESSION: "${" > {deque.push(DEFAULT);}: IN_EXPRESSION | - < START_DEFERRED_EXPRESSION: "#{" > : IN_EXPRESSION + < START_DEFERRED_EXPRESSION: "#{" > {deque.push(DEFAULT);}: IN_EXPRESSION } <IN_EXPRESSION> SKIP : { " " | "\t" | "\n" | "\r" } -<IN_EXPRESSION> TOKEN : +<IN_EXPRESSION, IN_SET_OR_MAP> TOKEN : { - < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* > + < START_SET_OR_MAP : "{" > {deque.push(curLexState);}: IN_SET_OR_MAP +| < RCURL: "}" > {SwitchTo(deque.pop());} +| < INTEGER_LITERAL: ["0"-"9"] (["0"-"9"])* > | < FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? | "." (["0"-"9"])+ (<EXPONENT>)? | (["0"-"9"])+ <EXPONENT> @@ -399,7 +434,6 @@ void Null() #Null : {} | < TRUE : "true" > | < FALSE : "false" > | < NULL : "null" > -| < END_EXPRESSION : "}" > : DEFAULT | < DOT : "." > | < LPAREN : "(" > | < RPAREN : ")" > Modified: tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java?rev=1502847&r1=1502846&r2=1502847&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java (original) +++ tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java Sat Jul 13 19:28:02 2013 @@ -17,108 +17,112 @@ public interface ELParserConstants { /** RegularExpression Id. */ int START_DEFERRED_EXPRESSION = 3; /** RegularExpression Id. */ - int INTEGER_LITERAL = 8; + int START_SET_OR_MAP = 8; /** RegularExpression Id. */ - int FLOATING_POINT_LITERAL = 9; + int RCURL = 9; /** RegularExpression Id. */ - int EXPONENT = 10; + int INTEGER_LITERAL = 10; /** RegularExpression Id. */ - int STRING_LITERAL = 11; + int FLOATING_POINT_LITERAL = 11; /** RegularExpression Id. */ - int TRUE = 12; + int EXPONENT = 12; /** RegularExpression Id. */ - int FALSE = 13; + int STRING_LITERAL = 13; /** RegularExpression Id. */ - int NULL = 14; + int TRUE = 14; /** RegularExpression Id. */ - int END_EXPRESSION = 15; + int FALSE = 15; /** RegularExpression Id. */ - int DOT = 16; + int NULL = 16; /** RegularExpression Id. */ - int LPAREN = 17; + int DOT = 17; /** RegularExpression Id. */ - int RPAREN = 18; + int LPAREN = 18; /** RegularExpression Id. */ - int LBRACK = 19; + int RPAREN = 19; /** RegularExpression Id. */ - int RBRACK = 20; + int LBRACK = 20; /** RegularExpression Id. */ - int COLON = 21; + int RBRACK = 21; /** RegularExpression Id. */ - int COMMA = 22; + int COLON = 22; /** RegularExpression Id. */ - int GT0 = 23; + int COMMA = 23; /** RegularExpression Id. */ - int GT1 = 24; + int GT0 = 24; /** RegularExpression Id. */ - int LT0 = 25; + int GT1 = 25; /** RegularExpression Id. */ - int LT1 = 26; + int LT0 = 26; /** RegularExpression Id. */ - int GE0 = 27; + int LT1 = 27; /** RegularExpression Id. */ - int GE1 = 28; + int GE0 = 28; /** RegularExpression Id. */ - int LE0 = 29; + int GE1 = 29; /** RegularExpression Id. */ - int LE1 = 30; + int LE0 = 30; /** RegularExpression Id. */ - int EQ0 = 31; + int LE1 = 31; /** RegularExpression Id. */ - int EQ1 = 32; + int EQ0 = 32; /** RegularExpression Id. */ - int NE0 = 33; + int EQ1 = 33; /** RegularExpression Id. */ - int NE1 = 34; + int NE0 = 34; /** RegularExpression Id. */ - int NOT0 = 35; + int NE1 = 35; /** RegularExpression Id. */ - int NOT1 = 36; + int NOT0 = 36; /** RegularExpression Id. */ - int AND0 = 37; + int NOT1 = 37; /** RegularExpression Id. */ - int AND1 = 38; + int AND0 = 38; /** RegularExpression Id. */ - int OR0 = 39; + int AND1 = 39; /** RegularExpression Id. */ - int OR1 = 40; + int OR0 = 40; /** RegularExpression Id. */ - int EMPTY = 41; + int OR1 = 41; /** RegularExpression Id. */ - int INSTANCEOF = 42; + int EMPTY = 42; /** RegularExpression Id. */ - int MULT = 43; + int INSTANCEOF = 43; /** RegularExpression Id. */ - int PLUS = 44; + int MULT = 44; /** RegularExpression Id. */ - int MINUS = 45; + int PLUS = 45; /** RegularExpression Id. */ - int QUESTIONMARK = 46; + int MINUS = 46; /** RegularExpression Id. */ - int DIV0 = 47; + int QUESTIONMARK = 47; /** RegularExpression Id. */ - int DIV1 = 48; + int DIV0 = 48; /** RegularExpression Id. */ - int MOD0 = 49; + int DIV1 = 49; /** RegularExpression Id. */ - int MOD1 = 50; + int MOD0 = 50; /** RegularExpression Id. */ - int IDENTIFIER = 51; + int MOD1 = 51; /** RegularExpression Id. */ - int FUNCTIONSUFFIX = 52; + int IDENTIFIER = 52; /** RegularExpression Id. */ - int IMPL_OBJ_START = 53; + int FUNCTIONSUFFIX = 53; /** RegularExpression Id. */ - int LETTER = 54; + int IMPL_OBJ_START = 54; /** RegularExpression Id. */ - int DIGIT = 55; + int LETTER = 55; /** RegularExpression Id. */ - int ILLEGAL_CHARACTER = 56; + int DIGIT = 56; + /** RegularExpression Id. */ + int ILLEGAL_CHARACTER = 57; /** Lexical state. */ int DEFAULT = 0; /** Lexical state. */ int IN_EXPRESSION = 1; + /** Lexical state. */ + int IN_SET_OR_MAP = 2; /** Literal token values. */ String[] tokenImage = { @@ -130,6 +134,8 @@ public interface ELParserConstants { "\"\\t\"", "\"\\n\"", "\"\\r\"", + "\"{\"", + "\"}\"", "<INTEGER_LITERAL>", "<FLOATING_POINT_LITERAL>", "<EXPONENT>", @@ -137,7 +143,6 @@ public interface ELParserConstants { "\"true\"", "\"false\"", "\"null\"", - "\"}\"", "\".\"", "\"(\"", "\")\"", --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org