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> ( &lt;QUESTIONMARK&gt; <A HREF="#prod7">Or</A> &lt;COLON&gt; <A HREF="#prod6">Choice</A> )*</TD>
+<TD ALIGN=LEFT VALIGN=BASELINE><A HREF="#prod7">Or</A> ( &lt;QUESTIONMARK&gt; <A HREF="#prod6">Choice</A> &lt;COLON&gt; <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