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 2008/05/17 19:33:43 UTC
svn commit: r657404 [1/2] - in /tomcat/trunk/java/org/apache/el/parser:
ELParser.html ELParser.java ELParser.jjt ELParserConstants.java
ELParserTokenManager.java ParseException.java
Author: markt
Date: Sat May 17 10:33:43 2008
New Revision: 657404
URL: http://svn.apache.org/viewvc?rev=657404&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=44994
Correct BNF grammar so ${0 lt a ? 1 lt a ? "many": "one": "none"} does not throw an exception
The patch is bigger than I would like due to the code generation tools used
Modified:
tomcat/trunk/java/org/apache/el/parser/ELParser.html
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/ParseException.java
Modified: tomcat/trunk/java/org/apache/el/parser/ELParser.html
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/ELParser.html?rev=657404&r1=657403&r2=657404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ELParser.html (original)
+++ tomcat/trunk/java/org/apache/el/parser/ELParser.html Sat May 17 10:33:43 2008
@@ -51,7 +51,7 @@
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod6">Choice</A></TD>
<TD ALIGN=CENTER VALIGN=BASELINE>::=</TD>
-<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod7">Or</A> ( <QUESTIONMARK> <A HREF="#prod7">Or</A> <COLON> <A HREF="#prod6">Choice</A> )*</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod7">Or</A> ( <QUESTIONMARK> <A HREF="#prod6">Choice</A> <COLON> <A HREF="#prod6">Choice</A> )*</TD>
</TR>
<TR>
<TD ALIGN=RIGHT VALIGN=BASELINE><A NAME="prod7">Or</A></TD>
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=657404&r1=657403&r2=657404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ELParser.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/ELParser.java Sat May 17 10:33:43 2008
@@ -27,15 +27,6 @@
throw new ELException(pe.getMessage());
}
}
-
- public static void main(String[] argv) throws Exception {
- String[] str = { "${foo()}", "${fn.fn:foo() ? a : b}", "${fn:foo() ? (fn_af.f:fd() ? a : b) : b}", "${a.b.c ? a : b}" };
- for (int i = 0; i < str.length; i++) {
- SimpleNode sn = (SimpleNode) ELParser.parse(str[i]);
- System.out.println("====\n" + str[i]);
- sn.dump("\t");
- }
- }
/*
* CompositeExpression
@@ -216,31 +207,31 @@
break label_2;
}
jj_consume_token(QUESTIONMARK);
- Or();
+ Choice();
jj_consume_token(COLON);
- AstChoice jjtn001 = new AstChoice(JJTCHOICE);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstChoice jjtn001 = new AstChoice(JJTCHOICE);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
Choice();
} catch (Throwable jjte001) {
- if (jjtc001) {
- jjtree.clearNodeScope(jjtn001);
- jjtc001 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte001 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte001;}
- }
- if (jjte001 instanceof ParseException) {
- {if (true) throw (ParseException)jjte001;}
- }
- {if (true) throw (Error)jjte001;}
+ if (jjtc001) {
+ jjtree.clearNodeScope(jjtn001);
+ jjtc001 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte001 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte001;}
+ }
+ if (jjte001 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte001;}
+ }
+ {if (true) throw (Error)jjte001;}
} finally {
- if (jjtc001) {
- jjtree.closeNodeScope(jjtn001, 3);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, 3);
+ }
}
}
}
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=657404&r1=657403&r2=657404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ELParser.jjt (original)
+++ tomcat/trunk/java/org/apache/el/parser/ELParser.jjt Sat May 17 10:33:43 2008
@@ -104,7 +104,7 @@
*/
void Choice() : {}
{
- Or() (<QUESTIONMARK> Or() <COLON> Choice() #Choice(3))*
+ Or() (<QUESTIONMARK> Choice() <COLON> Choice() #Choice(3))*
}
/*
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=657404&r1=657403&r2=657404&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java (original)
+++ tomcat/trunk/java/org/apache/el/parser/ELParserConstants.java Sat May 17 10:33:43 2008
@@ -19,131 +19,126 @@
public interface ELParserConstants {
- int EOF = 0;
-
- int LITERAL_EXPRESSION = 1;
-
- int START_DYNAMIC_EXPRESSION = 2;
-
- int START_DEFERRED_EXPRESSION = 3;
-
- int INTEGER_LITERAL = 9;
-
- int FLOATING_POINT_LITERAL = 10;
-
- int EXPONENT = 11;
-
- int STRING_LITERAL = 12;
-
- int BADLY_ESCAPED_STRING_LITERAL = 13;
-
- int TRUE = 14;
-
- int FALSE = 15;
-
- int NULL = 16;
-
- int END_EXPRESSION = 17;
-
- int DOT = 18;
-
- int LPAREN = 19;
-
- int RPAREN = 20;
-
- int LBRACK = 21;
-
- int RBRACK = 22;
-
- int COLON = 23;
-
- int COMMA = 24;
-
- int GT0 = 25;
-
- int GT1 = 26;
-
- int LT0 = 27;
-
- int LT1 = 28;
-
- int GE0 = 29;
-
- int GE1 = 30;
-
- int LE0 = 31;
-
- int LE1 = 32;
-
- int EQ0 = 33;
-
- int EQ1 = 34;
-
- int NE0 = 35;
-
- int NE1 = 36;
-
- int NOT0 = 37;
-
- int NOT1 = 38;
-
- int AND0 = 39;
-
- int AND1 = 40;
-
- int OR0 = 41;
-
- int OR1 = 42;
-
- int EMPTY = 43;
-
- int INSTANCEOF = 44;
-
- int MULT = 45;
-
- int PLUS = 46;
-
- int MINUS = 47;
-
- int QUESTIONMARK = 48;
-
- int DIV0 = 49;
-
- int DIV1 = 50;
-
- int MOD0 = 51;
-
- int MOD1 = 52;
-
- int IDENTIFIER = 53;
-
- int NAMESPACE = 54;
-
- int FUNCTIONSUFFIX = 55;
-
- int IMPL_OBJ_START = 56;
-
- int LETTER = 57;
-
- int DIGIT = 58;
-
- int ILLEGAL_CHARACTER = 59;
-
- int DEFAULT = 0;
-
- int IN_EXPRESSION = 1;
-
- String[] tokenImage = { "<EOF>", "<LITERAL_EXPRESSION>", "\"${\"",
- "\"#{\"", "\"\\\\\"", "\" \"", "\"\\t\"", "\"\\n\"", "\"\\r\"",
- "<INTEGER_LITERAL>", "<FLOATING_POINT_LITERAL>", "<EXPONENT>",
- "<STRING_LITERAL>", "<BADLY_ESCAPED_STRING_LITERAL>", "\"true\"",
- "\"false\"", "\"null\"", "\"}\"", "\".\"", "\"(\"", "\")\"",
- "\"[\"", "\"]\"", "\":\"", "\",\"", "\">\"", "\"gt\"", "\"<\"",
- "\"lt\"", "\">=\"", "\"ge\"", "\"<=\"", "\"le\"", "\"==\"",
- "\"eq\"", "\"!=\"", "\"ne\"", "\"!\"", "\"not\"", "\"&&\"",
- "\"and\"", "\"||\"", "\"or\"", "\"empty\"", "\"instanceof\"",
- "\"*\"", "\"+\"", "\"-\"", "\"?\"", "\"/\"", "\"div\"", "\"%\"",
- "\"mod\"", "<IDENTIFIER>", "<NAMESPACE>", "<FUNCTIONSUFFIX>",
- "\"#\"", "<LETTER>", "<DIGIT>", "<ILLEGAL_CHARACTER>", };
+ int EOF = 0;
+ int LITERAL_EXPRESSION = 1;
+ int START_DYNAMIC_EXPRESSION = 2;
+ int START_DEFERRED_EXPRESSION = 3;
+ int INTEGER_LITERAL = 9;
+ int FLOATING_POINT_LITERAL = 10;
+ int EXPONENT = 11;
+ int STRING_LITERAL = 12;
+ int BADLY_ESCAPED_STRING_LITERAL = 13;
+ int TRUE = 14;
+ int FALSE = 15;
+ int NULL = 16;
+ int END_EXPRESSION = 17;
+ int DOT = 18;
+ int LPAREN = 19;
+ int RPAREN = 20;
+ int LBRACK = 21;
+ int RBRACK = 22;
+ int COLON = 23;
+ int COMMA = 24;
+ int GT0 = 25;
+ int GT1 = 26;
+ int LT0 = 27;
+ int LT1 = 28;
+ int GE0 = 29;
+ int GE1 = 30;
+ int LE0 = 31;
+ int LE1 = 32;
+ int EQ0 = 33;
+ int EQ1 = 34;
+ int NE0 = 35;
+ int NE1 = 36;
+ int NOT0 = 37;
+ int NOT1 = 38;
+ int AND0 = 39;
+ int AND1 = 40;
+ int OR0 = 41;
+ int OR1 = 42;
+ int EMPTY = 43;
+ int INSTANCEOF = 44;
+ int MULT = 45;
+ int PLUS = 46;
+ int MINUS = 47;
+ int QUESTIONMARK = 48;
+ int DIV0 = 49;
+ int DIV1 = 50;
+ int MOD0 = 51;
+ int MOD1 = 52;
+ int IDENTIFIER = 53;
+ int NAMESPACE = 54;
+ int FUNCTIONSUFFIX = 55;
+ int IMPL_OBJ_START = 56;
+ int LETTER = 57;
+ int DIGIT = 58;
+ int ILLEGAL_CHARACTER = 59;
+
+ int DEFAULT = 0;
+ int IN_EXPRESSION = 1;
+
+ String[] tokenImage = {
+ "<EOF>",
+ "<LITERAL_EXPRESSION>",
+ "\"${\"",
+ "\"#{\"",
+ "\"\\\\\"",
+ "\" \"",
+ "\"\\t\"",
+ "\"\\n\"",
+ "\"\\r\"",
+ "<INTEGER_LITERAL>",
+ "<FLOATING_POINT_LITERAL>",
+ "<EXPONENT>",
+ "<STRING_LITERAL>",
+ "<BADLY_ESCAPED_STRING_LITERAL>",
+ "\"true\"",
+ "\"false\"",
+ "\"null\"",
+ "\"}\"",
+ "\".\"",
+ "\"(\"",
+ "\")\"",
+ "\"[\"",
+ "\"]\"",
+ "\":\"",
+ "\",\"",
+ "\">\"",
+ "\"gt\"",
+ "\"<\"",
+ "\"lt\"",
+ "\">=\"",
+ "\"ge\"",
+ "\"<=\"",
+ "\"le\"",
+ "\"==\"",
+ "\"eq\"",
+ "\"!=\"",
+ "\"ne\"",
+ "\"!\"",
+ "\"not\"",
+ "\"&&\"",
+ "\"and\"",
+ "\"||\"",
+ "\"or\"",
+ "\"empty\"",
+ "\"instanceof\"",
+ "\"*\"",
+ "\"+\"",
+ "\"-\"",
+ "\"?\"",
+ "\"/\"",
+ "\"div\"",
+ "\"%\"",
+ "\"mod\"",
+ "<IDENTIFIER>",
+ "<NAMESPACE>",
+ "<FUNCTIONSUFFIX>",
+ "\"#\"",
+ "<LETTER>",
+ "<DIGIT>",
+ "<ILLEGAL_CHARACTER>",
+ };
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org