You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/07/13 21:28:03 UTC
svn commit: r1502847 [1/2] - /tomcat/trunk/java/org/apache/el/parser/
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org