JBossWeb SVN: r778 - in trunk: webapps/docs and 1 other directory.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-09-15 08:59:10 -0400 (Mon, 15 Sep 2008)
New Revision: 778
Modified:
trunk/java/org/apache/catalina/loader/WebappLoader.java
trunk/webapps/docs/changelog.xml
Log:
- Additional fix (cosmetic, it didn't seem to do anything serious) for .jar folders in /web-inf/lib.
Modified: trunk/java/org/apache/catalina/loader/WebappLoader.java
===================================================================
--- trunk/java/org/apache/catalina/loader/WebappLoader.java 2008-09-11 17:02:55 UTC (rev 777)
+++ trunk/java/org/apache/catalina/loader/WebappLoader.java 2008-09-15 12:59:10 UTC (rev 778)
@@ -996,7 +996,11 @@
log.debug(sm.getString("webappLoader.jarDeploy", filename,
destFile.getAbsolutePath()));
- Resource jarResource = (Resource) binding.getObject();
+ Object obj = binding.getObject();
+ if (!(obj instanceof Resource))
+ continue;
+
+ Resource jarResource = (Resource) obj;
if (copyJars) {
if (!copy(jarResource.streamContent(),
new FileOutputStream(destFile)))
Modified: trunk/webapps/docs/changelog.xml
===================================================================
--- trunk/webapps/docs/changelog.xml 2008-09-11 17:02:55 UTC (rev 777)
+++ trunk/webapps/docs/changelog.xml 2008-09-15 12:59:10 UTC (rev 778)
@@ -16,6 +16,22 @@
<body>
+<section name="JBoss Web 2.1.1.GA (remm)">
+ <subsection name="Catalina">
+ <changelog>
+ <bug>45785</bug>: Add a check in the loader in addition to the fix for JBAS-4965. (markt)
+ </changelog>
+ </subsection>
+ <subsection name="Coyote">
+ <changelog>
+ </changelog>
+ </subsection>
+ <subsection name="Jasper">
+ <changelog>
+ </changelog>
+ </subsection>
+</section>
+
<section name="JBoss Web 2.1.1.CR7 (remm)">
<subsection name="Catalina">
<changelog>
16 years, 3 months
JBossWeb SVN: r777 - branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp.
by jbossweb-commits@lists.jboss.org
Author: mmillson
Date: 2008-09-11 13:02:55 -0400 (Thu, 11 Sep 2008)
New Revision: 777
Modified:
branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java
branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java
Log:
Fix for [JBPAPP-1173].
Modified: branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java
===================================================================
--- branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java 2008-09-10 18:44:39 UTC (rev 776)
+++ branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java 2008-09-11 17:02:55 UTC (rev 777)
@@ -990,6 +990,14 @@
outputBuffer.put(endMessageArray);
flush();
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLength() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
}
Modified: branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java
===================================================================
--- branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java 2008-09-10 18:44:39 UTC (rev 776)
+++ branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java 2008-09-11 17:02:55 UTC (rev 777)
@@ -992,6 +992,15 @@
// Add the end message
output.write(endMessageArray);
+
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLength() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
}
16 years, 3 months
JBossWeb SVN: r776 - branches.
by jbossweb-commits@lists.jboss.org
Author: mmillson
Date: 2008-09-10 14:44:39 -0400 (Wed, 10 Sep 2008)
New Revision: 776
Added:
branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173/
Log:
Create JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173 patch branch from JBOSSWEB_2_0_0_GA_CP05 tag
Copied: branches/JBOSSWEB_2_0_0_GA_CP05_JBPAPP-1173 (from rev 775, tags/JBOSSWEB_2_0_0_GA_CP05)
16 years, 3 months
JBossWeb SVN: r775 - tags.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-09-10 12:59:25 -0400 (Wed, 10 Sep 2008)
New Revision: 775
Added:
tags/JBOSSWEB_2_1_1_CR7/
Log:
- JBoss Web 2.1.1 CR7.
Copied: tags/JBOSSWEB_2_1_1_CR7 (from rev 774, trunk)
16 years, 3 months
JBossWeb SVN: r774 - in trunk: java/org/apache/el/parser and 1 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-09-10 11:27:46 -0400 (Wed, 10 Sep 2008)
New Revision: 774
Modified:
trunk/BUILDING.txt
trunk/java/org/apache/el/parser/ELParser.java
trunk/java/org/apache/el/parser/ELParser.jjt
trunk/java/org/apache/el/parser/ELParserConstants.java
trunk/java/org/apache/el/parser/ELParserTokenManager.java
trunk/java/org/apache/el/parser/ELParserTreeConstants.java
trunk/java/org/apache/el/parser/JJTELParserState.java
trunk/java/org/apache/el/parser/ParseException.java
trunk/java/org/apache/el/parser/SimpleCharStream.java
trunk/java/org/apache/el/parser/Token.java
trunk/java/org/apache/el/parser/TokenMgrError.java
trunk/webapps/docs/changelog.xml
Log:
- Regenerate with JavaCC 4.1, and add lookahead setting (it seems 3 is used).
Modified: trunk/BUILDING.txt
===================================================================
--- trunk/BUILDING.txt 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/BUILDING.txt 2008-09-10 15:27:46 UTC (rev 774)
@@ -117,4 +117,11 @@
cd ${jboss-web.source}
ant -f dist.xml release
+(7) Building EL parser with JavaCC 4.1+:
+ Download JavaCC 4.1+
+ export JAVACC_HOME=/somepath/javacc-4.1
+ export PATH=$JAVACC_HOME/bin:$PATH
+ cd java/org/apache/el/parser
+ jjtree ELParser.jjt
+ javacc ELParser.jj
Modified: trunk/java/org/apache/el/parser/ELParser.java
===================================================================
--- trunk/java/org/apache/el/parser/ELParser.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/ELParser.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -22,9 +22,9 @@
protected JJTELParserState jjtree = new JJTELParserState();public static Node parse(String ref) throws ELException
{
try {
- return (new ELParser(new StringReader(ref))).CompositeExpression();
+ return (new ELParser(new StringReader(ref))).CompositeExpression();
} catch (ParseException pe) {
- throw new ELException(pe.getMessage());
+ throw new ELException(pe.getMessage());
}
}
@@ -41,54 +41,44 @@
try {
label_1:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LITERAL_EXPRESSION:
- case START_DYNAMIC_EXPRESSION:
- case START_DEFERRED_EXPRESSION:
+ if (jj_2_1(3)) {
;
- break;
- default:
- jj_la1[0] = jj_gen;
+ } else {
break label_1;
}
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case START_DEFERRED_EXPRESSION:
+ if (jj_2_2(3)) {
DeferredExpression();
- break;
- case START_DYNAMIC_EXPRESSION:
+ } else if (jj_2_3(3)) {
DynamicExpression();
- break;
- case LITERAL_EXPRESSION:
+ } else if (jj_2_4(3)) {
LiteralExpression();
- break;
- default:
- jj_la1[1] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
}
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);
- 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;}
+ 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);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
throw new Error("Missing return statement in function");
}
@@ -104,13 +94,13 @@
jjtree.openNodeScope(jjtn000);Token t = null;
try {
t = jj_consume_token(LITERAL_EXPRESSION);
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtn000.setImage(t.image);
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ jjtn000.setImage(t.image);
} finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -128,23 +118,23 @@
Expression();
jj_consume_token(END_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;}
+ 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);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -162,23 +152,23 @@
Expression();
jj_consume_token(END_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;}
+ 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);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -198,40 +188,37 @@
Or();
label_2:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case QUESTIONMARK:
+ if (jj_2_5(3)) {
;
- break;
- default:
- jj_la1[2] = jj_gen;
+ } else {
break label_2;
}
jj_consume_token(QUESTIONMARK);
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);
+ }
}
}
}
@@ -244,50 +231,42 @@
And();
label_3:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case OR0:
- case OR1:
+ if (jj_2_6(3)) {
;
- break;
- default:
- jj_la1[3] = jj_gen;
+ } else {
break label_3;
}
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case OR0:
+ if (jj_2_7(3)) {
jj_consume_token(OR0);
- break;
- case OR1:
+ } else if (jj_2_8(3)) {
jj_consume_token(OR1);
- break;
- default:
- jj_la1[4] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstOr jjtn001 = new AstOr(JJTOR);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstOr jjtn001 = new AstOr(JJTOR);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
And();
} 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, 2);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, 2);
+ }
}
}
}
@@ -300,50 +279,42 @@
Equality();
label_4:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case AND0:
- case AND1:
+ if (jj_2_9(3)) {
;
- break;
- default:
- jj_la1[5] = jj_gen;
+ } else {
break label_4;
}
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case AND0:
+ if (jj_2_10(3)) {
jj_consume_token(AND0);
- break;
- case AND1:
+ } else if (jj_2_11(3)) {
jj_consume_token(AND1);
- break;
- default:
- jj_la1[6] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstAnd jjtn001 = new AstAnd(JJTAND);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstAnd jjtn001 = new AstAnd(JJTAND);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
Equality();
} 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, 2);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, 2);
+ }
}
}
}
@@ -356,98 +327,78 @@
Compare();
label_5:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case EQ0:
- case EQ1:
- case NE0:
- case NE1:
+ if (jj_2_12(3)) {
;
- break;
- default:
- jj_la1[7] = jj_gen;
+ } else {
break label_5;
}
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case EQ0:
- case EQ1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case EQ0:
+ if (jj_2_17(3)) {
+ if (jj_2_13(3)) {
jj_consume_token(EQ0);
- break;
- case EQ1:
+ } else if (jj_2_14(3)) {
jj_consume_token(EQ1);
- break;
- default:
- jj_la1[8] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstEqual jjtn001 = new AstEqual(JJTEQUAL);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstEqual jjtn001 = new AstEqual(JJTEQUAL);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
Compare();
} 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, 2);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, 2);
+ }
}
- break;
- case NE0:
- case NE1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case NE0:
+ } else if (jj_2_18(3)) {
+ if (jj_2_15(3)) {
jj_consume_token(NE0);
- break;
- case NE1:
+ } else if (jj_2_16(3)) {
jj_consume_token(NE1);
- break;
- default:
- jj_la1[9] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstNotEqual jjtn002 = new AstNotEqual(JJTNOTEQUAL);
- boolean jjtc002 = true;
- jjtree.openNodeScope(jjtn002);
+ AstNotEqual jjtn002 = new AstNotEqual(JJTNOTEQUAL);
+ boolean jjtc002 = true;
+ jjtree.openNodeScope(jjtn002);
try {
Compare();
} catch (Throwable jjte002) {
- if (jjtc002) {
- jjtree.clearNodeScope(jjtn002);
- jjtc002 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte002 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte002;}
- }
- if (jjte002 instanceof ParseException) {
- {if (true) throw (ParseException)jjte002;}
- }
- {if (true) throw (Error)jjte002;}
+ if (jjtc002) {
+ jjtree.clearNodeScope(jjtn002);
+ jjtc002 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte002 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte002;}
+ }
+ if (jjte002 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte002;}
+ }
+ {if (true) throw (Error)jjte002;}
} finally {
- if (jjtc002) {
- jjtree.closeNodeScope(jjtn002, 2);
- }
+ if (jjtc002) {
+ jjtree.closeNodeScope(jjtn002, 2);
+ }
}
- break;
- default:
- jj_la1[10] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -462,180 +413,144 @@
Math();
label_6:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case GT0:
- case GT1:
- case LT0:
- case LT1:
- case GE0:
- case GE1:
- case LE0:
- case LE1:
+ if (jj_2_19(3)) {
;
- break;
- default:
- jj_la1[11] = jj_gen;
+ } else {
break label_6;
}
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LT0:
- case LT1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LT0:
+ if (jj_2_28(3)) {
+ if (jj_2_20(3)) {
jj_consume_token(LT0);
- break;
- case LT1:
+ } else if (jj_2_21(3)) {
jj_consume_token(LT1);
- break;
- default:
- jj_la1[12] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstLessThan jjtn001 = new AstLessThan(JJTLESSTHAN);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstLessThan jjtn001 = new AstLessThan(JJTLESSTHAN);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
Math();
} 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, 2);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, 2);
+ }
}
- break;
- case GT0:
- case GT1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case GT0:
+ } else if (jj_2_29(3)) {
+ if (jj_2_22(3)) {
jj_consume_token(GT0);
- break;
- case GT1:
+ } else if (jj_2_23(3)) {
jj_consume_token(GT1);
- break;
- default:
- jj_la1[13] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstGreaterThan jjtn002 = new AstGreaterThan(JJTGREATERTHAN);
- boolean jjtc002 = true;
- jjtree.openNodeScope(jjtn002);
+ AstGreaterThan jjtn002 = new AstGreaterThan(JJTGREATERTHAN);
+ boolean jjtc002 = true;
+ jjtree.openNodeScope(jjtn002);
try {
Math();
} catch (Throwable jjte002) {
- if (jjtc002) {
- jjtree.clearNodeScope(jjtn002);
- jjtc002 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte002 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte002;}
- }
- if (jjte002 instanceof ParseException) {
- {if (true) throw (ParseException)jjte002;}
- }
- {if (true) throw (Error)jjte002;}
+ if (jjtc002) {
+ jjtree.clearNodeScope(jjtn002);
+ jjtc002 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte002 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte002;}
+ }
+ if (jjte002 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte002;}
+ }
+ {if (true) throw (Error)jjte002;}
} finally {
- if (jjtc002) {
- jjtree.closeNodeScope(jjtn002, 2);
- }
+ if (jjtc002) {
+ jjtree.closeNodeScope(jjtn002, 2);
+ }
}
- break;
- case LE0:
- case LE1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LE0:
+ } else if (jj_2_30(3)) {
+ if (jj_2_24(3)) {
jj_consume_token(LE0);
- break;
- case LE1:
+ } else if (jj_2_25(3)) {
jj_consume_token(LE1);
- break;
- default:
- jj_la1[14] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstLessThanEqual jjtn003 = new AstLessThanEqual(JJTLESSTHANEQUAL);
- boolean jjtc003 = true;
- jjtree.openNodeScope(jjtn003);
+ AstLessThanEqual jjtn003 = new AstLessThanEqual(JJTLESSTHANEQUAL);
+ boolean jjtc003 = true;
+ jjtree.openNodeScope(jjtn003);
try {
Math();
} catch (Throwable jjte003) {
- if (jjtc003) {
- jjtree.clearNodeScope(jjtn003);
- jjtc003 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte003 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte003;}
- }
- if (jjte003 instanceof ParseException) {
- {if (true) throw (ParseException)jjte003;}
- }
- {if (true) throw (Error)jjte003;}
+ if (jjtc003) {
+ jjtree.clearNodeScope(jjtn003);
+ jjtc003 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte003 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte003;}
+ }
+ if (jjte003 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte003;}
+ }
+ {if (true) throw (Error)jjte003;}
} finally {
- if (jjtc003) {
- jjtree.closeNodeScope(jjtn003, 2);
- }
+ if (jjtc003) {
+ jjtree.closeNodeScope(jjtn003, 2);
+ }
}
- break;
- case GE0:
- case GE1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case GE0:
+ } else if (jj_2_31(3)) {
+ if (jj_2_26(3)) {
jj_consume_token(GE0);
- break;
- case GE1:
+ } else if (jj_2_27(3)) {
jj_consume_token(GE1);
- break;
- default:
- jj_la1[15] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstGreaterThanEqual jjtn004 = new AstGreaterThanEqual(JJTGREATERTHANEQUAL);
- boolean jjtc004 = true;
- jjtree.openNodeScope(jjtn004);
+ AstGreaterThanEqual jjtn004 = new AstGreaterThanEqual(JJTGREATERTHANEQUAL);
+ boolean jjtc004 = true;
+ jjtree.openNodeScope(jjtn004);
try {
Math();
} catch (Throwable jjte004) {
- if (jjtc004) {
- jjtree.clearNodeScope(jjtn004);
- jjtc004 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte004 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte004;}
- }
- if (jjte004 instanceof ParseException) {
- {if (true) throw (ParseException)jjte004;}
- }
- {if (true) throw (Error)jjte004;}
+ if (jjtc004) {
+ jjtree.clearNodeScope(jjtn004);
+ jjtc004 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte004 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte004;}
+ }
+ if (jjte004 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte004;}
+ }
+ {if (true) throw (Error)jjte004;}
} finally {
- if (jjtc004) {
- jjtree.closeNodeScope(jjtn004, 2);
- }
+ if (jjtc004) {
+ jjtree.closeNodeScope(jjtn004, 2);
+ }
}
- break;
- default:
- jj_la1[16] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -650,72 +565,64 @@
Multiplication();
label_7:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
- case MINUS:
+ if (jj_2_32(3)) {
;
- break;
- default:
- jj_la1[17] = jj_gen;
+ } else {
break label_7;
}
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case PLUS:
+ if (jj_2_33(3)) {
jj_consume_token(PLUS);
- AstPlus jjtn001 = new AstPlus(JJTPLUS);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstPlus jjtn001 = new AstPlus(JJTPLUS);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
Multiplication();
} 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, 2);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, 2);
+ }
}
- break;
- case MINUS:
+ } else if (jj_2_34(3)) {
jj_consume_token(MINUS);
- AstMinus jjtn002 = new AstMinus(JJTMINUS);
- boolean jjtc002 = true;
- jjtree.openNodeScope(jjtn002);
+ AstMinus jjtn002 = new AstMinus(JJTMINUS);
+ boolean jjtc002 = true;
+ jjtree.openNodeScope(jjtn002);
try {
Multiplication();
} catch (Throwable jjte002) {
- if (jjtc002) {
- jjtree.clearNodeScope(jjtn002);
- jjtc002 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte002 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte002;}
- }
- if (jjte002 instanceof ParseException) {
- {if (true) throw (ParseException)jjte002;}
- }
- {if (true) throw (Error)jjte002;}
+ if (jjtc002) {
+ jjtree.clearNodeScope(jjtn002);
+ jjtc002 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte002 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte002;}
+ }
+ if (jjte002 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte002;}
+ }
+ {if (true) throw (Error)jjte002;}
} finally {
- if (jjtc002) {
- jjtree.closeNodeScope(jjtn002, 2);
- }
+ if (jjtc002) {
+ jjtree.closeNodeScope(jjtn002, 2);
+ }
}
- break;
- default:
- jj_la1[18] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -730,126 +637,104 @@
Unary();
label_8:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case MULT:
- case DIV0:
- case DIV1:
- case MOD0:
- case MOD1:
+ if (jj_2_35(3)) {
;
- break;
- default:
- jj_la1[19] = jj_gen;
+ } else {
break label_8;
}
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case MULT:
+ if (jj_2_40(3)) {
jj_consume_token(MULT);
- AstMult jjtn001 = new AstMult(JJTMULT);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstMult jjtn001 = new AstMult(JJTMULT);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
Unary();
} 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, 2);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, 2);
+ }
}
- break;
- case DIV0:
- case DIV1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DIV0:
+ } else if (jj_2_41(3)) {
+ if (jj_2_36(3)) {
jj_consume_token(DIV0);
- break;
- case DIV1:
+ } else if (jj_2_37(3)) {
jj_consume_token(DIV1);
- break;
- default:
- jj_la1[20] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstDiv jjtn002 = new AstDiv(JJTDIV);
- boolean jjtc002 = true;
- jjtree.openNodeScope(jjtn002);
+ AstDiv jjtn002 = new AstDiv(JJTDIV);
+ boolean jjtc002 = true;
+ jjtree.openNodeScope(jjtn002);
try {
Unary();
} catch (Throwable jjte002) {
- if (jjtc002) {
- jjtree.clearNodeScope(jjtn002);
- jjtc002 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte002 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte002;}
- }
- if (jjte002 instanceof ParseException) {
- {if (true) throw (ParseException)jjte002;}
- }
- {if (true) throw (Error)jjte002;}
+ if (jjtc002) {
+ jjtree.clearNodeScope(jjtn002);
+ jjtc002 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte002 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte002;}
+ }
+ if (jjte002 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte002;}
+ }
+ {if (true) throw (Error)jjte002;}
} finally {
- if (jjtc002) {
- jjtree.closeNodeScope(jjtn002, 2);
- }
+ if (jjtc002) {
+ jjtree.closeNodeScope(jjtn002, 2);
+ }
}
- break;
- case MOD0:
- case MOD1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case MOD0:
+ } else if (jj_2_42(3)) {
+ if (jj_2_38(3)) {
jj_consume_token(MOD0);
- break;
- case MOD1:
+ } else if (jj_2_39(3)) {
jj_consume_token(MOD1);
- break;
- default:
- jj_la1[21] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstMod jjtn003 = new AstMod(JJTMOD);
- boolean jjtc003 = true;
- jjtree.openNodeScope(jjtn003);
+ AstMod jjtn003 = new AstMod(JJTMOD);
+ boolean jjtc003 = true;
+ jjtree.openNodeScope(jjtn003);
try {
Unary();
} catch (Throwable jjte003) {
- if (jjtc003) {
- jjtree.clearNodeScope(jjtn003);
- jjtc003 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte003 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte003;}
- }
- if (jjte003 instanceof ParseException) {
- {if (true) throw (ParseException)jjte003;}
- }
- {if (true) throw (Error)jjte003;}
+ if (jjtc003) {
+ jjtree.clearNodeScope(jjtn003);
+ jjtc003 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte003 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte003;}
+ }
+ if (jjte003 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte003;}
+ }
+ {if (true) throw (Error)jjte003;}
} finally {
- if (jjtc003) {
- jjtree.closeNodeScope(jjtn003, 2);
- }
+ if (jjtc003) {
+ jjtree.closeNodeScope(jjtn003, 2);
+ }
}
- break;
- default:
- jj_la1[22] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -861,112 +746,94 @@
* For '-' '!' 'not' 'empty', then Value
*/
final public void Unary() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case MINUS:
+ if (jj_2_45(3)) {
jj_consume_token(MINUS);
- AstNegative jjtn001 = new AstNegative(JJTNEGATIVE);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstNegative jjtn001 = new AstNegative(JJTNEGATIVE);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
Unary();
} 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, true);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, true);
+ }
}
- break;
- case NOT0:
- case NOT1:
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case NOT0:
+ } else if (jj_2_46(3)) {
+ if (jj_2_43(3)) {
jj_consume_token(NOT0);
- break;
- case NOT1:
+ } else if (jj_2_44(3)) {
jj_consume_token(NOT1);
- break;
- default:
- jj_la1[23] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
- AstNot jjtn002 = new AstNot(JJTNOT);
- boolean jjtc002 = true;
- jjtree.openNodeScope(jjtn002);
+ AstNot jjtn002 = new AstNot(JJTNOT);
+ boolean jjtc002 = true;
+ jjtree.openNodeScope(jjtn002);
try {
Unary();
} catch (Throwable jjte002) {
- if (jjtc002) {
- jjtree.clearNodeScope(jjtn002);
- jjtc002 = false;
- } else {
- jjtree.popNode();
- }
- if (jjte002 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte002;}
- }
- if (jjte002 instanceof ParseException) {
- {if (true) throw (ParseException)jjte002;}
- }
- {if (true) throw (Error)jjte002;}
- } finally {
- if (jjtc002) {
- jjtree.closeNodeScope(jjtn002, true);
- }
- }
- break;
- case EMPTY:
- jj_consume_token(EMPTY);
- AstEmpty jjtn003 = new AstEmpty(JJTEMPTY);
- boolean jjtc003 = true;
- jjtree.openNodeScope(jjtn003);
- try {
- Unary();
- } catch (Throwable jjte003) {
- if (jjtc003) {
- jjtree.clearNodeScope(jjtn003);
- jjtc003 = false;
+ if (jjtc002) {
+ jjtree.clearNodeScope(jjtn002);
+ jjtc002 = false;
} else {
jjtree.popNode();
}
- if (jjte003 instanceof RuntimeException) {
- {if (true) throw (RuntimeException)jjte003;}
+ if (jjte002 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte002;}
}
- if (jjte003 instanceof ParseException) {
- {if (true) throw (ParseException)jjte003;}
+ if (jjte002 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte002;}
}
- {if (true) throw (Error)jjte003;}
+ {if (true) throw (Error)jjte002;}
} finally {
- if (jjtc003) {
- jjtree.closeNodeScope(jjtn003, true);
+ if (jjtc002) {
+ jjtree.closeNodeScope(jjtn002, true);
}
}
- break;
- case INTEGER_LITERAL:
- case FLOATING_POINT_LITERAL:
- case STRING_LITERAL:
- case TRUE:
- case FALSE:
- case NULL:
- case LPAREN:
- case IDENTIFIER:
+ } else if (jj_2_47(3)) {
+ jj_consume_token(EMPTY);
+ AstEmpty jjtn003 = new AstEmpty(JJTEMPTY);
+ boolean jjtc003 = true;
+ jjtree.openNodeScope(jjtn003);
+ try {
+ Unary();
+ } catch (Throwable jjte003) {
+ if (jjtc003) {
+ jjtree.clearNodeScope(jjtn003);
+ jjtc003 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte003 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte003;}
+ }
+ if (jjte003 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte003;}
+ }
+ {if (true) throw (Error)jjte003;}
+ } finally {
+ if (jjtc003) {
+ jjtree.closeNodeScope(jjtn003, true);
+ }
+ }
+ } else if (jj_2_48(3)) {
Value();
- break;
- default:
- jj_la1[24] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -977,42 +844,38 @@
* Defines Prefix plus zero or more Suffixes
*/
final public void Value() throws ParseException {
- AstValue jjtn001 = new AstValue(JJTVALUE);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ AstValue jjtn001 = new AstValue(JJTVALUE);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
ValuePrefix();
label_9:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
- case LBRACK:
+ if (jj_2_49(3)) {
;
- break;
- default:
- jj_la1[25] = jj_gen;
+ } else {
break label_9;
}
ValueSuffix();
}
} 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, jjtree.nodeArity() > 1);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, jjtree.nodeArity() > 1);
+ }
}
}
@@ -1021,21 +884,11 @@
* For Literals, Variables, and Functions
*/
final public void ValuePrefix() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTEGER_LITERAL:
- case FLOATING_POINT_LITERAL:
- case STRING_LITERAL:
- case TRUE:
- case FALSE:
- case NULL:
+ if (jj_2_50(3)) {
Literal();
- break;
- case LPAREN:
- case IDENTIFIER:
+ } else if (jj_2_51(3)) {
NonLiteral();
- break;
- default:
- jj_la1[26] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -1046,15 +899,11 @@
* Either dot or bracket notation
*/
final public void ValueSuffix() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case DOT:
+ if (jj_2_52(3)) {
DotSuffix();
- break;
- case LBRACK:
+ } else if (jj_2_53(3)) {
BracketSuffix();
- break;
- default:
- jj_la1[27] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -1072,13 +921,13 @@
try {
jj_consume_token(DOT);
t = jj_consume_token(IDENTIFIER);
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtn000.setImage(t.image);
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ jjtn000.setImage(t.image);
} finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -1096,23 +945,23 @@
Expression();
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;}
+ 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);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -1121,27 +970,17 @@
* For Grouped Operations, Identifiers, and Functions
*/
final public void NonLiteral() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LPAREN:
+ if (jj_2_54(3)) {
jj_consume_token(LPAREN);
Expression();
jj_consume_token(RPAREN);
- break;
- default:
- jj_la1[28] = jj_gen;
- if (jj_2_1(2147483647)) {
- Function();
- } else {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENTIFIER:
- Identifier();
- break;
- default:
- jj_la1[29] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- }
+ } else if (jj_2_55(2147483647)) {
+ Function();
+ } else if (jj_2_56(3)) {
+ Identifier();
+ } else {
+ jj_consume_token(-1);
+ throw new ParseException();
}
}
@@ -1156,13 +995,13 @@
jjtree.openNodeScope(jjtn000);Token t = null;
try {
t = jj_consume_token(IDENTIFIER);
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtn000.setImage(t.image);
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ jjtn000.setImage(t.image);
} finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -1172,79 +1011,59 @@
*/
final public void Function() throws ParseException {
/*@bgen(jjtree) Function */
- AstFunction jjtn000 = new AstFunction(JJTFUNCTION);
- boolean jjtc000 = true;
- jjtree.openNodeScope(jjtn000);Token t0 = null;
- Token t1 = null;
+ AstFunction jjtn000 = new AstFunction(JJTFUNCTION);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);Token t0 = null;
+ Token t1 = null;
try {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case IDENTIFIER:
+ if (jj_2_57(3)) {
t0 = jj_consume_token(IDENTIFIER);
jj_consume_token(COLON);
- break;
- default:
- jj_la1[30] = jj_gen;
+ } else {
;
}
t1 = jj_consume_token(IDENTIFIER);
- if (t0 != null) {
- jjtn000.setPrefix(t0.image);
- jjtn000.setLocalName(t1.image);
- } else {
- jjtn000.setLocalName(t1.image);
- }
+ if (t0 != null) {
+ jjtn000.setPrefix(t0.image);
+ jjtn000.setLocalName(t1.image);
+ } else {
+ jjtn000.setLocalName(t1.image);
+ }
jj_consume_token(LPAREN);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case INTEGER_LITERAL:
- case FLOATING_POINT_LITERAL:
- case STRING_LITERAL:
- case TRUE:
- case FALSE:
- case NULL:
- case LPAREN:
- case NOT0:
- case NOT1:
- case EMPTY:
- case MINUS:
- case IDENTIFIER:
+ if (jj_2_59(3)) {
Expression();
label_10:
while (true) {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case COMMA:
+ if (jj_2_58(3)) {
;
- break;
- default:
- jj_la1[31] = jj_gen;
+ } else {
break label_10;
}
jj_consume_token(COMMA);
Expression();
}
- break;
- default:
- jj_la1[32] = jj_gen;
+ } else {
;
}
jj_consume_token(RPAREN);
} 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;}
+ 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);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -1253,25 +1072,17 @@
* Reserved Keywords
*/
final public void Literal() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case TRUE:
- case FALSE:
+ if (jj_2_60(3)) {
Boolean();
- break;
- case FLOATING_POINT_LITERAL:
+ } else if (jj_2_61(3)) {
FloatingPoint();
- break;
- case INTEGER_LITERAL:
+ } else if (jj_2_62(3)) {
Integer();
- break;
- case STRING_LITERAL:
+ } else if (jj_2_63(3)) {
String();
- break;
- case NULL:
+ } else if (jj_2_64(3)) {
Null();
- break;
- default:
- jj_la1[33] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -1282,33 +1093,29 @@
* For 'true' 'false'
*/
final public void Boolean() throws ParseException {
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case TRUE:
- AstTrue jjtn001 = new AstTrue(JJTTRUE);
- boolean jjtc001 = true;
- jjtree.openNodeScope(jjtn001);
+ if (jj_2_65(3)) {
+ AstTrue jjtn001 = new AstTrue(JJTTRUE);
+ boolean jjtc001 = true;
+ jjtree.openNodeScope(jjtn001);
try {
jj_consume_token(TRUE);
} finally {
- if (jjtc001) {
- jjtree.closeNodeScope(jjtn001, true);
- }
+ if (jjtc001) {
+ jjtree.closeNodeScope(jjtn001, true);
}
- break;
- case FALSE:
- AstFalse jjtn002 = new AstFalse(JJTFALSE);
- boolean jjtc002 = true;
- jjtree.openNodeScope(jjtn002);
+ }
+ } else if (jj_2_66(3)) {
+ AstFalse jjtn002 = new AstFalse(JJTFALSE);
+ boolean jjtc002 = true;
+ jjtree.openNodeScope(jjtn002);
try {
jj_consume_token(FALSE);
} finally {
- if (jjtc002) {
- jjtree.closeNodeScope(jjtn002, true);
- }
+ if (jjtc002) {
+ jjtree.closeNodeScope(jjtn002, true);
+ }
}
- break;
- default:
- jj_la1[34] = jj_gen;
+ } else {
jj_consume_token(-1);
throw new ParseException();
}
@@ -1325,13 +1132,13 @@
jjtree.openNodeScope(jjtn000);Token t = null;
try {
t = jj_consume_token(FLOATING_POINT_LITERAL);
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtn000.setImage(t.image);
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ jjtn000.setImage(t.image);
} finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -1346,13 +1153,13 @@
jjtree.openNodeScope(jjtn000);Token t = null;
try {
t = jj_consume_token(INTEGER_LITERAL);
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtn000.setImage(t.image);
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ jjtn000.setImage(t.image);
} finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -1367,13 +1174,13 @@
jjtree.openNodeScope(jjtn000);Token t = null;
try {
t = jj_consume_token(STRING_LITERAL);
- jjtree.closeNodeScope(jjtn000, true);
- jjtc000 = false;
- jjtn000.setImage(t.image);
+ jjtree.closeNodeScope(jjtn000, true);
+ jjtc000 = false;
+ jjtn000.setImage(t.image);
} finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
@@ -1389,76 +1196,1218 @@
try {
jj_consume_token(NULL);
} finally {
- if (jjtc000) {
- jjtree.closeNodeScope(jjtn000, true);
- }
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
}
}
- final private boolean jj_2_1(int xla) {
+ private boolean jj_2_1(int xla) {
jj_la = xla; jj_lastpos = jj_scanpos = token;
try { return !jj_3_1(); }
catch(LookaheadSuccess ls) { return true; }
finally { jj_save(0, xla); }
}
- final private boolean jj_3R_11() {
+ private boolean jj_2_2(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_2(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1, xla); }
+ }
+
+ private boolean jj_2_3(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_3(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(2, xla); }
+ }
+
+ 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_2_5(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_5(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(4, xla); }
+ }
+
+ private boolean jj_2_6(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_6(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(5, xla); }
+ }
+
+ private boolean jj_2_7(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_7(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(6, xla); }
+ }
+
+ private boolean jj_2_8(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_8(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(7, xla); }
+ }
+
+ private boolean jj_2_9(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_9(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(8, xla); }
+ }
+
+ private boolean jj_2_10(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_10(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(9, xla); }
+ }
+
+ private boolean jj_2_11(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_11(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(10, xla); }
+ }
+
+ private boolean jj_2_12(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_12(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(11, xla); }
+ }
+
+ private boolean jj_2_13(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_13(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(12, xla); }
+ }
+
+ private boolean jj_2_14(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_14(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(13, xla); }
+ }
+
+ private boolean jj_2_15(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_15(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(14, xla); }
+ }
+
+ private boolean jj_2_16(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_16(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(15, xla); }
+ }
+
+ private boolean jj_2_17(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_17(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(16, xla); }
+ }
+
+ private boolean jj_2_18(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_18(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(17, xla); }
+ }
+
+ private boolean jj_2_19(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_19(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(18, xla); }
+ }
+
+ private boolean jj_2_20(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_20(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(19, xla); }
+ }
+
+ private boolean jj_2_21(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_21(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(20, xla); }
+ }
+
+ private boolean jj_2_22(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_22(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(21, xla); }
+ }
+
+ private boolean jj_2_23(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_23(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(22, xla); }
+ }
+
+ private boolean jj_2_24(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_24(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(23, xla); }
+ }
+
+ private boolean jj_2_25(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_25(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(24, xla); }
+ }
+
+ private boolean jj_2_26(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_26(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(25, xla); }
+ }
+
+ private boolean jj_2_27(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_27(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(26, xla); }
+ }
+
+ private boolean jj_2_28(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_28(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(27, xla); }
+ }
+
+ private boolean jj_2_29(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_29(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(28, xla); }
+ }
+
+ private boolean jj_2_30(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_30(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(29, xla); }
+ }
+
+ private boolean jj_2_31(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_31(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(30, xla); }
+ }
+
+ private boolean jj_2_32(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_32(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(31, xla); }
+ }
+
+ private boolean jj_2_33(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_33(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(32, xla); }
+ }
+
+ private boolean jj_2_34(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_34(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(33, xla); }
+ }
+
+ private boolean jj_2_35(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_35(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(34, xla); }
+ }
+
+ private boolean jj_2_36(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_36(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(35, xla); }
+ }
+
+ private boolean jj_2_37(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_37(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(36, xla); }
+ }
+
+ private boolean jj_2_38(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_38(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(37, xla); }
+ }
+
+ private boolean jj_2_39(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_39(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(38, xla); }
+ }
+
+ private boolean jj_2_40(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_40(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(39, xla); }
+ }
+
+ private boolean jj_2_41(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_41(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(40, xla); }
+ }
+
+ private boolean jj_2_42(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_42(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(41, xla); }
+ }
+
+ private boolean jj_2_43(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_43(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(42, xla); }
+ }
+
+ private boolean jj_2_44(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_44(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(43, xla); }
+ }
+
+ private boolean jj_2_45(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_45(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(44, xla); }
+ }
+
+ private boolean jj_2_46(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_46(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(45, xla); }
+ }
+
+ private boolean jj_2_47(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_47(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(46, xla); }
+ }
+
+ private boolean jj_2_48(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_48(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(47, xla); }
+ }
+
+ private boolean jj_2_49(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_49(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(48, xla); }
+ }
+
+ private boolean jj_2_50(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_50(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(49, xla); }
+ }
+
+ private boolean jj_2_51(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_51(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(50, xla); }
+ }
+
+ private boolean jj_2_52(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_52(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(51, xla); }
+ }
+
+ private boolean jj_2_53(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_53(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(52, xla); }
+ }
+
+ private boolean jj_2_54(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_54(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(53, xla); }
+ }
+
+ private boolean jj_2_55(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_55(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(54, xla); }
+ }
+
+ private boolean jj_2_56(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_56(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(55, xla); }
+ }
+
+ private boolean jj_2_57(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_57(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(56, xla); }
+ }
+
+ private boolean jj_2_58(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_58(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(57, xla); }
+ }
+
+ private boolean jj_2_59(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_59(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(58, xla); }
+ }
+
+ private boolean jj_2_60(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_60(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(59, xla); }
+ }
+
+ private boolean jj_2_61(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_61(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(60, xla); }
+ }
+
+ private boolean jj_2_62(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_62(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(61, xla); }
+ }
+
+ private boolean jj_2_63(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_63(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(62, xla); }
+ }
+
+ private boolean jj_2_64(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_64(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(63, xla); }
+ }
+
+ private boolean jj_2_65(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_65(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(64, xla); }
+ }
+
+ private boolean jj_2_66(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_66(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(65, xla); }
+ }
+
+ private boolean jj_3R_19() {
+ if (jj_3R_20()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_35()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3_34() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_3R_19()) return true;
+ return false;
+ }
+
+ private boolean jj_3_33() {
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_3R_19()) return true;
+ return false;
+ }
+
+ private boolean jj_3_32() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_33()) {
+ jj_scanpos = xsp;
+ if (jj_3_34()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3_27() {
+ if (jj_scan_token(GE1)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_18() {
+ if (jj_3R_19()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_32()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3_25() {
+ if (jj_scan_token(LE1)) return true;
+ return false;
+ }
+
+ private boolean jj_3_23() {
+ if (jj_scan_token(GT1)) return true;
+ return false;
+ }
+
+ private boolean jj_3_26() {
+ if (jj_scan_token(GE0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_21() {
+ if (jj_scan_token(LT1)) return true;
+ return false;
+ }
+
+ private boolean jj_3_31() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_26()) {
+ jj_scanpos = xsp;
+ if (jj_3_27()) return true;
+ }
+ if (jj_3R_18()) return true;
+ return false;
+ }
+
+ private boolean jj_3_24() {
+ if (jj_scan_token(LE0)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_34() {
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ private boolean jj_3_30() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_24()) {
+ jj_scanpos = xsp;
+ if (jj_3_25()) return true;
+ }
+ if (jj_3R_18()) return true;
+ return false;
+ }
+
+ private boolean jj_3_22() {
+ if (jj_scan_token(GT0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_29() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_22()) {
+ jj_scanpos = xsp;
+ if (jj_3_23()) return true;
+ }
+ if (jj_3R_18()) return true;
+ return false;
+ }
+
+ private boolean jj_3_20() {
+ if (jj_scan_token(LT0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_28() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_20()) {
+ jj_scanpos = xsp;
+ if (jj_3_21()) return true;
+ }
+ if (jj_3R_18()) return true;
+ return false;
+ }
+
+ private boolean jj_3_19() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_28()) {
+ jj_scanpos = xsp;
+ if (jj_3_29()) {
+ jj_scanpos = xsp;
+ if (jj_3_30()) {
+ jj_scanpos = xsp;
+ if (jj_3_31()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3_16() {
+ if (jj_scan_token(NE1)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_33() {
+ if (jj_scan_token(STRING_LITERAL)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_17() {
+ if (jj_3R_18()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_19()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3_14() {
+ if (jj_scan_token(EQ1)) return true;
+ return false;
+ }
+
+ private boolean jj_3_11() {
+ if (jj_scan_token(AND1)) return true;
+ return false;
+ }
+
+ private boolean jj_3_15() {
+ if (jj_scan_token(NE0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_18() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_15()) {
+ jj_scanpos = xsp;
+ if (jj_3_16()) return true;
+ }
+ if (jj_3R_17()) return true;
+ return false;
+ }
+
+ private boolean jj_3_13() {
+ if (jj_scan_token(EQ0)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_32() {
+ if (jj_scan_token(INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ private boolean jj_3_12() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_17()) {
+ jj_scanpos = xsp;
+ if (jj_3_18()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3_17() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_13()) {
+ jj_scanpos = xsp;
+ if (jj_3_14()) return true;
+ }
+ if (jj_3R_17()) return true;
+ return false;
+ }
+
+ private boolean jj_3_10() {
+ if (jj_scan_token(AND0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_9() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_10()) {
+ jj_scanpos = xsp;
+ if (jj_3_11()) return true;
+ }
+ if (jj_3R_16()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_16() {
+ if (jj_3R_17()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_12()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_31() {
+ if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
+ return false;
+ }
+
+ private boolean jj_3_8() {
+ if (jj_scan_token(OR1)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_15() {
+ if (jj_3R_16()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_9()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3_66() {
+ if (jj_scan_token(FALSE)) return true;
+ return false;
+ }
+
+ private boolean jj_3_7() {
+ if (jj_scan_token(OR0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_6() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_7()) {
+ jj_scanpos = xsp;
+ if (jj_3_8()) return true;
+ }
+ if (jj_3R_15()) return true;
+ return false;
+ }
+
+ private boolean jj_3_58() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_27()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_30() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_65()) {
+ jj_scanpos = xsp;
+ if (jj_3_66()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3_65() {
+ if (jj_scan_token(TRUE)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_35() {
+ if (jj_3R_15()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_6()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3_64() {
+ if (jj_3R_34()) return true;
+ return false;
+ }
+
+ private boolean jj_3_5() {
+ if (jj_scan_token(QUESTIONMARK)) return true;
+ if (jj_3R_14()) return true;
+ if (jj_scan_token(COLON)) return true;
+ return false;
+ }
+
+ private boolean jj_3_63() {
+ if (jj_3R_33()) return true;
+ return false;
+ }
+
+ private boolean jj_3_62() {
+ if (jj_3R_32()) return true;
+ return false;
+ }
+
+ private boolean jj_3_61() {
+ if (jj_3R_31()) return true;
+ return false;
+ }
+
+ private boolean jj_3_59() {
+ if (jj_3R_27()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_58()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_23() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_60()) {
+ jj_scanpos = xsp;
+ if (jj_3_61()) {
+ jj_scanpos = xsp;
+ if (jj_3_62()) {
+ jj_scanpos = xsp;
+ if (jj_3_63()) {
+ jj_scanpos = xsp;
+ if (jj_3_64()) return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3_4() {
+ if (jj_3R_13()) return true;
+ return false;
+ }
+
+ private boolean jj_3_60() {
+ if (jj_3R_30()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_14() {
+ if (jj_3R_35()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_5()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_27() {
+ if (jj_3R_14()) return true;
+ return false;
+ }
+
+ private boolean jj_3_57() {
if (jj_scan_token(IDENTIFIER)) return true;
if (jj_scan_token(COLON)) return true;
return false;
}
- final private boolean jj_3_1() {
+ private boolean jj_3R_38() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_11()) jj_scanpos = xsp;
+ if (jj_3_57()) jj_scanpos = xsp;
if (jj_scan_token(IDENTIFIER)) return true;
if (jj_scan_token(LPAREN)) return true;
+ xsp = jj_scanpos;
+ if (jj_3_59()) jj_scanpos = xsp;
+ if (jj_scan_token(RPAREN)) return true;
return false;
}
+ private boolean jj_3R_12() {
+ if (jj_scan_token(START_DYNAMIC_EXPRESSION)) return true;
+ if (jj_3R_27()) return true;
+ if (jj_scan_token(END_EXPRESSION)) return true;
+ return false;
+ }
+
+ private boolean jj_3_3() {
+ if (jj_3R_12()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_28() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_scan_token(COLON)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_11() {
+ if (jj_scan_token(START_DEFERRED_EXPRESSION)) return true;
+ if (jj_3R_27()) return true;
+ if (jj_scan_token(END_EXPRESSION)) return true;
+ return false;
+ }
+
+ private boolean jj_3_55() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_28()) jj_scanpos = xsp;
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_29() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_13() {
+ if (jj_scan_token(LITERAL_EXPRESSION)) return true;
+ return false;
+ }
+
+ private boolean jj_3_56() {
+ if (jj_3R_29()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_37() {
+ if (jj_3R_38()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_24() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_54()) {
+ jj_scanpos = xsp;
+ if (jj_3R_37()) {
+ jj_scanpos = xsp;
+ if (jj_3_56()) return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3_54() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_27()) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ private boolean jj_3_2() {
+ if (jj_3R_11()) return true;
+ return false;
+ }
+
+ private boolean jj_3_1() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_2()) {
+ jj_scanpos = xsp;
+ if (jj_3_3()) {
+ jj_scanpos = xsp;
+ if (jj_3_4()) return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_26() {
+ if (jj_scan_token(LBRACK)) return true;
+ if (jj_3R_27()) return true;
+ if (jj_scan_token(RBRACK)) return true;
+ return false;
+ }
+
+ private boolean jj_3_53() {
+ if (jj_3R_26()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_25() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_scan_token(IDENTIFIER)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_22() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_52()) {
+ jj_scanpos = xsp;
+ if (jj_3_53()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3_52() {
+ if (jj_3R_25()) return true;
+ return false;
+ }
+
+ private boolean jj_3_49() {
+ if (jj_3R_22()) return true;
+ return false;
+ }
+
+ private boolean jj_3_51() {
+ if (jj_3R_24()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_36() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_50()) {
+ jj_scanpos = xsp;
+ if (jj_3_51()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3_50() {
+ if (jj_3R_23()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_21() {
+ if (jj_3R_36()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_49()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3_44() {
+ if (jj_scan_token(NOT1)) return true;
+ return false;
+ }
+
+ private boolean jj_3_48() {
+ if (jj_3R_21()) return true;
+ return false;
+ }
+
+ private boolean jj_3_47() {
+ if (jj_scan_token(EMPTY)) return true;
+ if (jj_3R_20()) return true;
+ return false;
+ }
+
+ private boolean jj_3_43() {
+ if (jj_scan_token(NOT0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_46() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_43()) {
+ jj_scanpos = xsp;
+ if (jj_3_44()) return true;
+ }
+ if (jj_3R_20()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_20() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_45()) {
+ jj_scanpos = xsp;
+ if (jj_3_46()) {
+ jj_scanpos = xsp;
+ if (jj_3_47()) {
+ jj_scanpos = xsp;
+ if (jj_3_48()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3_45() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_3R_20()) return true;
+ return false;
+ }
+
+ private boolean jj_3_39() {
+ if (jj_scan_token(MOD1)) return true;
+ return false;
+ }
+
+ private boolean jj_3_37() {
+ if (jj_scan_token(DIV1)) return true;
+ return false;
+ }
+
+ private boolean jj_3_38() {
+ if (jj_scan_token(MOD0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_36() {
+ if (jj_scan_token(DIV0)) return true;
+ return false;
+ }
+
+ private boolean jj_3_42() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_38()) {
+ jj_scanpos = xsp;
+ if (jj_3_39()) return true;
+ }
+ if (jj_3R_20()) return true;
+ return false;
+ }
+
+ private boolean jj_3_41() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_36()) {
+ jj_scanpos = xsp;
+ if (jj_3_37()) return true;
+ }
+ if (jj_3R_20()) return true;
+ return false;
+ }
+
+ private boolean jj_3_35() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_40()) {
+ jj_scanpos = xsp;
+ if (jj_3_41()) {
+ jj_scanpos = xsp;
+ if (jj_3_42()) return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean jj_3_40() {
+ if (jj_scan_token(MULT)) return true;
+ if (jj_3R_20()) return true;
+ return false;
+ }
+
+ /** Generated Token Manager. */
public ELParserTokenManager token_source;
SimpleCharStream jj_input_stream;
- public Token token, jj_nt;
+ /** Current token. */
+ public Token token;
+ /** Next token. */
+ public Token jj_nt;
private int jj_ntk;
private Token jj_scanpos, jj_lastpos;
private int jj_la;
- public boolean lookingAhead = false;
- private boolean jj_semLA;
private int jj_gen;
- final private int[] jj_la1 = new int[35];
+ final private int[] jj_la1 = new int[0];
static private int[] jj_la1_0;
static private int[] jj_la1_1;
static {
- jj_la1_0();
- jj_la1_1();
+ jj_la1_init_0();
+ jj_la1_init_1();
}
- private static void jj_la1_0() {
- jj_la1_0 = new int[] {0xe,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe000000,0x18000000,0x6000000,0x80000000,0x60000000,0xfe000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9d600,0x240000,0x9d600,0x240000,0x80000,0x0,0x0,0x1000000,0x9d600,0x1d600,0xc000,};
+ private static void jj_la1_init_0() {
+ jj_la1_0 = new int[] {};
}
- private static void jj_la1_1() {
- jj_la1_1 = new int[] {0x0,0x0,0x10000,0x600,0x600,0x180,0x180,0x1e,0x6,0x18,0x1e,0x1,0x0,0x0,0x1,0x0,0x1,0xc000,0xc000,0x1e2000,0x60000,0x180000,0x1e2000,0x60,0x208860,0x0,0x200000,0x0,0x0,0x200000,0x200000,0x0,0x208860,0x0,0x0,};
+ private static void jj_la1_init_1() {
+ jj_la1_1 = new int[] {};
}
- final private JJCalls[] jj_2_rtns = new JJCalls[1];
+ final private JJCalls[] jj_2_rtns = new JJCalls[66];
private boolean jj_rescan = false;
private int jj_gc = 0;
+ /** Constructor with InputStream. */
public ELParser(java.io.InputStream stream) {
this(stream, null);
}
+ /** Constructor with InputStream and supplied encoding */
public ELParser(java.io.InputStream stream, String encoding) {
try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
token_source = new ELParserTokenManager(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 0; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream stream) {
ReInit(stream, null);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream stream, String encoding) {
try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
token_source.ReInit(jj_input_stream);
@@ -1466,20 +2415,22 @@
jj_ntk = -1;
jjtree.reset();
jj_gen = 0;
- for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 0; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
+ /** Constructor. */
public ELParser(java.io.Reader stream) {
jj_input_stream = new SimpleCharStream(stream, 1, 1);
token_source = new ELParserTokenManager(jj_input_stream);
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 0; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
+ /** Reinitialise. */
public void ReInit(java.io.Reader stream) {
jj_input_stream.ReInit(stream, 1, 1);
token_source.ReInit(jj_input_stream);
@@ -1487,30 +2438,32 @@
jj_ntk = -1;
jjtree.reset();
jj_gen = 0;
- for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 0; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
+ /** Constructor with generated Token Manager. */
public ELParser(ELParserTokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 0; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
+ /** Reinitialise. */
public void ReInit(ELParserTokenManager tm) {
token_source = tm;
token = new Token();
jj_ntk = -1;
jjtree.reset();
jj_gen = 0;
- for (int i = 0; i < 35; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 0; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
- final private Token jj_consume_token(int kind) throws ParseException {
+ private Token jj_consume_token(int kind) throws ParseException {
Token oldToken;
if ((oldToken = token).next != null) token = token.next;
else token = token.next = token_source.getNextToken();
@@ -1536,7 +2489,7 @@
static private final class LookaheadSuccess extends java.lang.Error { }
final private LookaheadSuccess jj_ls = new LookaheadSuccess();
- final private boolean jj_scan_token(int kind) {
+ private boolean jj_scan_token(int kind) {
if (jj_scanpos == jj_lastpos) {
jj_la--;
if (jj_scanpos.next == null) {
@@ -1557,6 +2510,8 @@
return false;
}
+
+/** Get the next Token. */
final public Token getNextToken() {
if (token.next != null) token = token.next;
else token = token.next = token_source.getNextToken();
@@ -1565,8 +2520,9 @@
return token;
}
+/** Get the specific Token. */
final public Token getToken(int index) {
- Token t = lookingAhead ? jj_scanpos : token;
+ Token t = token;
for (int i = 0; i < index; i++) {
if (t.next != null) t = t.next;
else t = t.next = token_source.getNextToken();
@@ -1574,14 +2530,14 @@
return t;
}
- final private int jj_ntk() {
+ private int jj_ntk() {
if ((jj_nt=token.next) == null)
return (jj_ntk = (token.next=token_source.getNextToken()).kind);
else
return (jj_ntk = jj_nt.kind);
}
- private java.util.Vector jj_expentries = new java.util.Vector();
+ private java.util.List jj_expentries = new java.util.ArrayList();
private int[] jj_expentry;
private int jj_kind = -1;
private int[] jj_lasttokens = new int[100];
@@ -1596,36 +2552,31 @@
for (int i = 0; i < jj_endpos; i++) {
jj_expentry[i] = jj_lasttokens[i];
}
- boolean exists = false;
- for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
- int[] oldentry = (int[])(e.nextElement());
+ jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) {
+ int[] oldentry = (int[])(it.next());
if (oldentry.length == jj_expentry.length) {
- exists = true;
for (int i = 0; i < jj_expentry.length; i++) {
if (oldentry[i] != jj_expentry[i]) {
- exists = false;
- break;
+ continue jj_entries_loop;
}
}
- if (exists) break;
+ jj_expentries.add(jj_expentry);
+ break jj_entries_loop;
}
}
- if (!exists) jj_expentries.addElement(jj_expentry);
if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
}
}
+ /** Generate ParseException. */
public ParseException generateParseException() {
- jj_expentries.removeAllElements();
+ jj_expentries.clear();
boolean[] la1tokens = new boolean[59];
- for (int i = 0; i < 59; i++) {
- la1tokens[i] = false;
- }
if (jj_kind >= 0) {
la1tokens[jj_kind] = true;
jj_kind = -1;
}
- for (int i = 0; i < 35; i++) {
+ for (int i = 0; i < 0; i++) {
if (jj_la1[i] == jj_gen) {
for (int j = 0; j < 32; j++) {
if ((jj_la1_0[i] & (1<<j)) != 0) {
@@ -1641,7 +2592,7 @@
if (la1tokens[i]) {
jj_expentry = new int[1];
jj_expentry[0] = i;
- jj_expentries.addElement(jj_expentry);
+ jj_expentries.add(jj_expentry);
}
}
jj_endpos = 0;
@@ -1649,20 +2600,22 @@
jj_add_error_token(0, 0);
int[][] exptokseq = new int[jj_expentries.size()][];
for (int i = 0; i < jj_expentries.size(); i++) {
- exptokseq[i] = (int[])jj_expentries.elementAt(i);
+ exptokseq[i] = (int[])jj_expentries.get(i);
}
return new ParseException(token, exptokseq, tokenImage);
}
+ /** Enable tracing. */
final public void enable_tracing() {
}
+ /** Disable tracing. */
final public void disable_tracing() {
}
- final private void jj_rescan_token() {
+ private void jj_rescan_token() {
jj_rescan = true;
- for (int i = 0; i < 1; i++) {
+ for (int i = 0; i < 66; i++) {
try {
JJCalls p = jj_2_rtns[i];
do {
@@ -1670,6 +2623,71 @@
jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
switch (i) {
case 0: jj_3_1(); break;
+ case 1: jj_3_2(); break;
+ case 2: jj_3_3(); break;
+ case 3: jj_3_4(); break;
+ case 4: jj_3_5(); break;
+ case 5: jj_3_6(); break;
+ case 6: jj_3_7(); break;
+ case 7: jj_3_8(); break;
+ case 8: jj_3_9(); break;
+ case 9: jj_3_10(); break;
+ case 10: jj_3_11(); break;
+ case 11: jj_3_12(); break;
+ case 12: jj_3_13(); break;
+ case 13: jj_3_14(); break;
+ case 14: jj_3_15(); break;
+ case 15: jj_3_16(); break;
+ case 16: jj_3_17(); break;
+ case 17: jj_3_18(); break;
+ case 18: jj_3_19(); break;
+ case 19: jj_3_20(); break;
+ case 20: jj_3_21(); break;
+ case 21: jj_3_22(); break;
+ case 22: jj_3_23(); break;
+ case 23: jj_3_24(); break;
+ case 24: jj_3_25(); break;
+ case 25: jj_3_26(); break;
+ case 26: jj_3_27(); break;
+ case 27: jj_3_28(); break;
+ case 28: jj_3_29(); break;
+ case 29: jj_3_30(); break;
+ case 30: jj_3_31(); break;
+ case 31: jj_3_32(); break;
+ case 32: jj_3_33(); break;
+ case 33: jj_3_34(); break;
+ case 34: jj_3_35(); break;
+ case 35: jj_3_36(); break;
+ case 36: jj_3_37(); break;
+ case 37: jj_3_38(); break;
+ case 38: jj_3_39(); break;
+ case 39: jj_3_40(); break;
+ case 40: jj_3_41(); break;
+ case 41: jj_3_42(); break;
+ case 42: jj_3_43(); break;
+ case 43: jj_3_44(); break;
+ case 44: jj_3_45(); break;
+ case 45: jj_3_46(); break;
+ case 46: jj_3_47(); break;
+ case 47: jj_3_48(); break;
+ case 48: jj_3_49(); break;
+ case 49: jj_3_50(); break;
+ case 50: jj_3_51(); break;
+ case 51: jj_3_52(); break;
+ case 52: jj_3_53(); break;
+ case 53: jj_3_54(); break;
+ case 54: jj_3_55(); break;
+ case 55: jj_3_56(); break;
+ case 56: jj_3_57(); break;
+ case 57: jj_3_58(); break;
+ case 58: jj_3_59(); break;
+ case 59: jj_3_60(); break;
+ case 60: jj_3_61(); break;
+ case 61: jj_3_62(); break;
+ case 62: jj_3_63(); break;
+ case 63: jj_3_64(); break;
+ case 64: jj_3_65(); break;
+ case 65: jj_3_66(); break;
}
}
p = p.next;
@@ -1679,7 +2697,7 @@
jj_rescan = false;
}
- final private void jj_save(int index, int xla) {
+ private void jj_save(int index, int xla) {
JJCalls p = jj_2_rtns[index];
while (p.gen > jj_gen) {
if (p.next == null) { p = p.next = new JJCalls(); break; }
Modified: trunk/java/org/apache/el/parser/ELParser.jjt
===================================================================
--- trunk/java/org/apache/el/parser/ELParser.jjt 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/ELParser.jjt 2008-09-10 15:27:46 UTC (rev 774)
@@ -32,6 +32,7 @@
JAVA_UNICODE_ESCAPE=false;
UNICODE_INPUT=true;
BUILD_NODE_FILES=true;
+ LOOKAHEAD=3;
}
/* == Parser Declaration == */
Modified: trunk/java/org/apache/el/parser/ELParserConstants.java
===================================================================
--- trunk/java/org/apache/el/parser/ELParserConstants.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/ELParserConstants.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -17,66 +17,128 @@
/* Generated By:JJTree&JavaCC: Do not edit this line. ELParserConstants.java */
package org.apache.el.parser;
+
+/**
+ * Token literal values and constants.
+ * Generated by org.javacc.parser.OtherFilesGen#start()
+ */
public interface ELParserConstants {
+ /** End of File. */
int EOF = 0;
+ /** RegularExpression Id. */
int LITERAL_EXPRESSION = 1;
+ /** RegularExpression Id. */
int START_DYNAMIC_EXPRESSION = 2;
+ /** RegularExpression Id. */
int START_DEFERRED_EXPRESSION = 3;
+ /** RegularExpression Id. */
int INTEGER_LITERAL = 9;
+ /** RegularExpression Id. */
int FLOATING_POINT_LITERAL = 10;
+ /** RegularExpression Id. */
int EXPONENT = 11;
+ /** RegularExpression Id. */
int STRING_LITERAL = 12;
+ /** RegularExpression Id. */
int BADLY_ESCAPED_STRING_LITERAL = 13;
+ /** RegularExpression Id. */
int TRUE = 14;
+ /** RegularExpression Id. */
int FALSE = 15;
+ /** RegularExpression Id. */
int NULL = 16;
+ /** RegularExpression Id. */
int END_EXPRESSION = 17;
+ /** RegularExpression Id. */
int DOT = 18;
+ /** RegularExpression Id. */
int LPAREN = 19;
+ /** RegularExpression Id. */
int RPAREN = 20;
+ /** RegularExpression Id. */
int LBRACK = 21;
+ /** RegularExpression Id. */
int RBRACK = 22;
+ /** RegularExpression Id. */
int COLON = 23;
+ /** RegularExpression Id. */
int COMMA = 24;
+ /** RegularExpression Id. */
int GT0 = 25;
+ /** RegularExpression Id. */
int GT1 = 26;
+ /** RegularExpression Id. */
int LT0 = 27;
+ /** RegularExpression Id. */
int LT1 = 28;
+ /** RegularExpression Id. */
int GE0 = 29;
+ /** RegularExpression Id. */
int GE1 = 30;
+ /** RegularExpression Id. */
int LE0 = 31;
+ /** RegularExpression Id. */
int LE1 = 32;
+ /** RegularExpression Id. */
int EQ0 = 33;
+ /** RegularExpression Id. */
int EQ1 = 34;
+ /** RegularExpression Id. */
int NE0 = 35;
+ /** RegularExpression Id. */
int NE1 = 36;
+ /** RegularExpression Id. */
int NOT0 = 37;
+ /** RegularExpression Id. */
int NOT1 = 38;
+ /** RegularExpression Id. */
int AND0 = 39;
+ /** RegularExpression Id. */
int AND1 = 40;
+ /** RegularExpression Id. */
int OR0 = 41;
+ /** RegularExpression Id. */
int OR1 = 42;
+ /** RegularExpression Id. */
int EMPTY = 43;
+ /** RegularExpression Id. */
int INSTANCEOF = 44;
+ /** RegularExpression Id. */
int MULT = 45;
+ /** RegularExpression Id. */
int PLUS = 46;
+ /** RegularExpression Id. */
int MINUS = 47;
+ /** RegularExpression Id. */
int QUESTIONMARK = 48;
+ /** RegularExpression Id. */
int DIV0 = 49;
+ /** RegularExpression Id. */
int DIV1 = 50;
+ /** RegularExpression Id. */
int MOD0 = 51;
+ /** RegularExpression Id. */
int MOD1 = 52;
+ /** RegularExpression Id. */
int IDENTIFIER = 53;
+ /** RegularExpression Id. */
int FUNCTIONSUFFIX = 54;
+ /** RegularExpression Id. */
int IMPL_OBJ_START = 55;
+ /** RegularExpression Id. */
int LETTER = 56;
+ /** RegularExpression Id. */
int DIGIT = 57;
+ /** RegularExpression Id. */
int ILLEGAL_CHARACTER = 58;
+ /** Lexical state. */
int DEFAULT = 0;
+ /** Lexical state. */
int IN_EXPRESSION = 1;
+ /** Literal token values. */
String[] tokenImage = {
"<EOF>",
"<LITERAL_EXPRESSION>",
Modified: trunk/java/org/apache/el/parser/ELParserTokenManager.java
===================================================================
--- trunk/java/org/apache/el/parser/ELParserTokenManager.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/ELParserTokenManager.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -19,9 +19,13 @@
import java.io.StringReader;
import javax.el.ELException;
+/** Token Manager. */
public class ELParserTokenManager implements ELParserConstants
{
+
+ /** Debug output. */
public java.io.PrintStream debugStream = System.out;
+ /** Set debug output. */
public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
private final int jjStopStringLiteralDfa_0(int pos, long active0)
{
@@ -49,22 +53,14 @@
{
return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
}
-private final int jjStopAtPos(int pos, int kind)
+private int jjStopAtPos(int pos, int kind)
{
jjmatchedKind = kind;
jjmatchedPos = pos;
return pos + 1;
}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
+private int jjMoveStringLiteralDfa0_0()
{
- jjmatchedKind = kind;
- jjmatchedPos = pos;
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) { return pos + 1; }
- return jjMoveNfa_0(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_0()
-{
switch(curChar)
{
case 35:
@@ -77,7 +73,7 @@
return jjMoveNfa_0(7, 0);
}
}
-private final int jjMoveStringLiteralDfa1_0(long active0)
+private int jjMoveStringLiteralDfa1_0(long active0)
{
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
@@ -97,50 +93,27 @@
}
return jjStartNfa_0(0, active0);
}
-private final void jjCheckNAdd(int state)
+private int jjStartNfaWithStates_0(int pos, int kind, int state)
{
- if (jjrounds[state] != jjround)
- {
- jjstateSet[jjnewStateCnt++] = state;
- jjrounds[state] = jjround;
- }
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_0(state, pos + 1);
}
-private final void jjAddStates(int start, int end)
-{
- do {
- jjstateSet[jjnewStateCnt++] = jjnextStates[start];
- } while (start++ != end);
-}
-private final void jjCheckNAddTwoStates(int state1, int state2)
-{
- jjCheckNAdd(state1);
- jjCheckNAdd(state2);
-}
-private final void jjCheckNAddStates(int start, int end)
-{
- do {
- jjCheckNAdd(jjnextStates[start]);
- } while (start++ != end);
-}
-private final void jjCheckNAddStates(int start)
-{
- jjCheckNAdd(jjnextStates[start]);
- jjCheckNAdd(jjnextStates[start + 1]);
-}
static final long[] jjbitVec0 = {
0xfffffffffffffffeL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL
};
static final long[] jjbitVec2 = {
0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
};
-private final int jjMoveNfa_0(int startState, int curPos)
+private int jjMoveNfa_0(int startState, int curPos)
{
- int[] nextStates;
int startsAt = 0;
jjnewStateCnt = 8;
int i = 1;
jjstateSet[0] = startState;
- int j, kind = 0x7fffffff;
+ int kind = 0x7fffffff;
for (;;)
{
if (++jjround == 0x7fffffff)
@@ -148,7 +121,7 @@
if (curChar < 64)
{
long l = 1L << curChar;
- MatchLoop: do
+ do
{
switch(jjstateSet[--i])
{
@@ -212,7 +185,7 @@
else if (curChar < 128)
{
long l = 1L << (curChar & 077);
- MatchLoop: do
+ do
{
switch(jjstateSet[--i])
{
@@ -263,7 +236,7 @@
long l1 = 1L << (hiByte & 077);
int i2 = (curChar & 0xff) >> 6;
long l2 = 1L << (curChar & 077);
- MatchLoop: do
+ do
{
switch(jjstateSet[--i])
{
@@ -387,16 +360,8 @@
{
return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
}
-private final int jjStartNfaWithStates_1(int pos, int kind, int state)
+private int jjMoveStringLiteralDfa0_1()
{
- jjmatchedKind = kind;
- jjmatchedPos = pos;
- try { curChar = input_stream.readChar(); }
- catch(java.io.IOException e) { return pos + 1; }
- return jjMoveNfa_1(state, pos + 1);
-}
-private final int jjMoveStringLiteralDfa0_1()
-{
switch(curChar)
{
case 33:
@@ -468,7 +433,7 @@
return jjMoveNfa_1(0, 0);
}
}
-private final int jjMoveStringLiteralDfa1_1(long active0)
+private int jjMoveStringLiteralDfa1_1(long active0)
{
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
@@ -534,10 +499,10 @@
}
return jjStartNfa_1(0, active0);
}
-private final int jjMoveStringLiteralDfa2_1(long old0, long active0)
+private int jjMoveStringLiteralDfa2_1(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(0, old0);
+ return jjStartNfa_1(0, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
jjStopStringLiteralDfa_1(1, active0);
@@ -572,10 +537,10 @@
}
return jjStartNfa_1(1, active0);
}
-private final int jjMoveStringLiteralDfa3_1(long old0, long active0)
+private int jjMoveStringLiteralDfa3_1(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(1, old0);
+ return jjStartNfa_1(1, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
jjStopStringLiteralDfa_1(2, active0);
@@ -600,10 +565,10 @@
}
return jjStartNfa_1(2, active0);
}
-private final int jjMoveStringLiteralDfa4_1(long old0, long active0)
+private int jjMoveStringLiteralDfa4_1(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(2, old0);
+ return jjStartNfa_1(2, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
jjStopStringLiteralDfa_1(3, active0);
@@ -626,10 +591,10 @@
}
return jjStartNfa_1(3, active0);
}
-private final int jjMoveStringLiteralDfa5_1(long old0, long active0)
+private int jjMoveStringLiteralDfa5_1(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(3, old0);
+ return jjStartNfa_1(3, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
jjStopStringLiteralDfa_1(4, active0);
@@ -644,10 +609,10 @@
}
return jjStartNfa_1(4, active0);
}
-private final int jjMoveStringLiteralDfa6_1(long old0, long active0)
+private int jjMoveStringLiteralDfa6_1(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(4, old0);
+ return jjStartNfa_1(4, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
jjStopStringLiteralDfa_1(5, active0);
@@ -662,10 +627,10 @@
}
return jjStartNfa_1(5, active0);
}
-private final int jjMoveStringLiteralDfa7_1(long old0, long active0)
+private int jjMoveStringLiteralDfa7_1(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(5, old0);
+ return jjStartNfa_1(5, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
jjStopStringLiteralDfa_1(6, active0);
@@ -680,10 +645,10 @@
}
return jjStartNfa_1(6, active0);
}
-private final int jjMoveStringLiteralDfa8_1(long old0, long active0)
+private int jjMoveStringLiteralDfa8_1(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(6, old0);
+ return jjStartNfa_1(6, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
jjStopStringLiteralDfa_1(7, active0);
@@ -698,10 +663,10 @@
}
return jjStartNfa_1(7, active0);
}
-private final int jjMoveStringLiteralDfa9_1(long old0, long active0)
+private int jjMoveStringLiteralDfa9_1(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(7, old0);
+ return jjStartNfa_1(7, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
jjStopStringLiteralDfa_1(8, active0);
@@ -718,6 +683,14 @@
}
return jjStartNfa_1(8, active0);
}
+private int jjStartNfaWithStates_1(int pos, int kind, int state)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return pos + 1; }
+ return jjMoveNfa_1(state, pos + 1);
+}
static final long[] jjbitVec3 = {
0x1ff00000fffffffeL, 0xffffffffffffc000L, 0xffffffffL, 0x600000000000000L
};
@@ -736,14 +709,13 @@
static final long[] jjbitVec8 = {
0x3fffffffffffL, 0x0L, 0x0L, 0x0L
};
-private final int jjMoveNfa_1(int startState, int curPos)
+private int jjMoveNfa_1(int startState, int curPos)
{
- int[] nextStates;
int startsAt = 0;
jjnewStateCnt = 36;
int i = 1;
jjstateSet[0] = startState;
- int j, kind = 0x7fffffff;
+ int kind = 0x7fffffff;
for (;;)
{
if (++jjround == 0x7fffffff)
@@ -751,7 +723,7 @@
if (curChar < 64)
{
long l = 1L << curChar;
- MatchLoop: do
+ do
{
switch(jjstateSet[--i])
{
@@ -941,7 +913,7 @@
else if (curChar < 128)
{
long l = 1L << (curChar & 077);
- MatchLoop: do
+ do
{
switch(jjstateSet[--i])
{
@@ -1048,7 +1020,7 @@
long l1 = 1L << (hiByte & 077);
int i2 = (curChar & 0xff) >> 6;
long l2 = 1L << (curChar & 077);
- MatchLoop: do
+ do
{
switch(jjstateSet[--i])
{
@@ -1136,7 +1108,7 @@
{
case 0:
return ((jjbitVec2[i2] & l2) != 0L);
- default :
+ default :
if ((jjbitVec0[i1] & l1) != 0L)
return true;
return false;
@@ -1156,12 +1128,14 @@
return ((jjbitVec7[i2] & l2) != 0L);
case 61:
return ((jjbitVec8[i2] & l2) != 0L);
- default :
+ default :
if ((jjbitVec3[i1] & l1) != 0L)
return true;
return false;
}
}
+
+/** Token literal values. */
public static final String[] jjstrLiteralImages = {
"", null, "\44\173", "\43\173", null, null, null, null, null, null, null, null,
null, null, "\164\162\165\145", "\146\141\154\163\145", "\156\165\154\154", "\175",
@@ -1170,10 +1144,14 @@
"\156\145", "\41", "\156\157\164", "\46\46", "\141\156\144", "\174\174", "\157\162",
"\145\155\160\164\171", "\151\156\163\164\141\156\143\145\157\146", "\52", "\53", "\55", "\77", "\57",
"\144\151\166", "\45", "\155\157\144", null, null, null, null, null, null, };
+
+/** Lexer state names. */
public static final String[] lexStateNames = {
- "DEFAULT",
- "IN_EXPRESSION",
+ "DEFAULT",
+ "IN_EXPRESSION",
};
+
+/** Lex State array. */
public static final int[] jjnewLexState = {
-1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -1189,15 +1167,20 @@
private final int[] jjrounds = new int[36];
private final int[] jjstateSet = new int[72];
protected char curChar;
+/** Constructor. */
public ELParserTokenManager(SimpleCharStream stream){
if (SimpleCharStream.staticFlag)
throw new Error("ERROR: Cannot use a static CharStream class with a non-static lexical analyzer.");
input_stream = stream;
}
+
+/** Constructor. */
public ELParserTokenManager(SimpleCharStream stream, int lexState){
this(stream);
SwitchTo(lexState);
}
+
+/** Reinitialise parser. */
public void ReInit(SimpleCharStream stream)
{
jjmatchedPos = jjnewStateCnt = 0;
@@ -1205,18 +1188,22 @@
input_stream = stream;
ReInitRounds();
}
-private final void ReInitRounds()
+private void ReInitRounds()
{
int i;
jjround = 0x80000001;
for (i = 36; i-- > 0;)
jjrounds[i] = 0x80000000;
}
+
+/** Reinitialise parser. */
public void ReInit(SimpleCharStream stream, int lexState)
{
ReInit(stream);
SwitchTo(lexState);
}
+
+/** Switch to specified lex state. */
public void SwitchTo(int lexState)
{
if (lexState >= 2 || lexState < 0)
@@ -1227,14 +1214,25 @@
protected Token jjFillToken()
{
- Token t = Token.newToken(jjmatchedKind);
- t.kind = jjmatchedKind;
+ final Token t;
+ final String curTokenImage;
+ final int beginLine;
+ final int endLine;
+ final int beginColumn;
+ final int endColumn;
String im = jjstrLiteralImages[jjmatchedKind];
- t.image = (im == null) ? input_stream.GetImage() : im;
- t.beginLine = input_stream.getBeginLine();
- t.beginColumn = input_stream.getBeginColumn();
- t.endLine = input_stream.getEndLine();
- t.endColumn = input_stream.getEndColumn();
+ curTokenImage = (im == null) ? input_stream.GetImage() : im;
+ beginLine = input_stream.getBeginLine();
+ beginColumn = input_stream.getBeginColumn();
+ endLine = input_stream.getEndLine();
+ endColumn = input_stream.getEndColumn();
+ t = Token.newToken(jjmatchedKind, curTokenImage);
+
+ t.beginLine = beginLine;
+ t.endLine = endLine;
+ t.beginColumn = beginColumn;
+ t.endColumn = endColumn;
+
return t;
}
@@ -1245,22 +1243,21 @@
int jjmatchedPos;
int jjmatchedKind;
+/** Get the next Token. */
public Token getNextToken()
{
- int kind;
- Token specialToken = null;
Token matchedToken;
int curPos = 0;
EOFLoop :
for (;;)
- {
- try
- {
+ {
+ try
+ {
curChar = input_stream.BeginToken();
- }
+ }
catch(java.io.IOException e)
- {
+ {
jjmatchedKind = 0;
matchedToken = jjFillToken();
return matchedToken;
@@ -1329,4 +1326,31 @@
}
}
+private void jjCheckNAdd(int state)
+{
+ if (jjrounds[state] != jjround)
+ {
+ jjstateSet[jjnewStateCnt++] = state;
+ jjrounds[state] = jjround;
+ }
}
+private void jjAddStates(int start, int end)
+{
+ do {
+ jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+ } while (start++ != end);
+}
+private void jjCheckNAddTwoStates(int state1, int state2)
+{
+ jjCheckNAdd(state1);
+ jjCheckNAdd(state2);
+}
+
+private void jjCheckNAddStates(int start, int end)
+{
+ do {
+ jjCheckNAdd(jjnextStates[start]);
+ } while (start++ != end);
+}
+
+}
Modified: trunk/java/org/apache/el/parser/ELParserTreeConstants.java
===================================================================
--- trunk/java/org/apache/el/parser/ELParserTreeConstants.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/ELParserTreeConstants.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -14,8 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* Generated By:JJTree: Do not edit this line. ./ELParserTreeConstants.java */
-
+/* Generated By:JavaCC: Do not edit this line. ELParserTreeConstants.java Version 4.1 */
package org.apache.el.parser;
public interface ELParserTreeConstants
@@ -91,3 +90,4 @@
"Null",
};
}
+/* JavaCC - OriginalChecksum=bf4d2e0f35a3199e11bfd8303212d1ad (do not edit this line) */
Modified: trunk/java/org/apache/el/parser/JJTELParserState.java
===================================================================
--- trunk/java/org/apache/el/parser/JJTELParserState.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/JJTELParserState.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -14,21 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* Generated By:JJTree: Do not edit this line. /tomc/web.align/webtier-alignment/prototype/el-ri/src/com/sun/el/parser/JJTELParserState.java */
-
+/* Generated By:JavaCC: Do not edit this line. JJTELParserState.java Version 4.1 */
package org.apache.el.parser;
-class JJTELParserState {
- private java.util.Stack nodes;
- private java.util.Stack marks;
+public class JJTELParserState {
+ private java.util.List nodes;
+ private java.util.List marks;
- private int sp; // number of nodes on stack
- private int mk; // current mark
+ private int sp; // number of nodes on stack
+ private int mk; // current mark
private boolean node_created;
- JJTELParserState() {
- nodes = new java.util.Stack();
- marks = new java.util.Stack();
+ public JJTELParserState() {
+ nodes = new java.util.ArrayList();
+ marks = new java.util.ArrayList();
sp = 0;
mk = 0;
}
@@ -36,62 +35,62 @@
/* Determines whether the current node was actually closed and
pushed. This should only be called in the final user action of a
node scope. */
- boolean nodeCreated() {
+ public boolean nodeCreated() {
return node_created;
}
/* Call this to reinitialize the node stack. It is called
automatically by the parser's ReInit() method. */
- void reset() {
- nodes.removeAllElements();
- marks.removeAllElements();
+ public void reset() {
+ nodes.clear();
+ marks.clear();
sp = 0;
mk = 0;
}
/* Returns the root node of the AST. It only makes sense to call
this after a successful parse. */
- Node rootNode() {
- return (Node)nodes.elementAt(0);
+ public Node rootNode() {
+ return (Node)nodes.get(0);
}
/* Pushes a node on to the stack. */
- void pushNode(Node n) {
- nodes.push(n);
+ public void pushNode(Node n) {
+ nodes.add(n);
++sp;
}
/* Returns the node on the top of the stack, and remove it from the
stack. */
- Node popNode() {
+ public Node popNode() {
if (--sp < mk) {
- mk = ((Integer)marks.pop()).intValue();
+ mk = ((Integer)marks.remove(marks.size()-1)).intValue();
}
- return (Node)nodes.pop();
+ return (Node)nodes.remove(nodes.size()-1);
}
/* Returns the node currently on the top of the stack. */
- Node peekNode() {
- return (Node)nodes.peek();
+ public Node peekNode() {
+ return (Node)nodes.get(nodes.size()-1);
}
/* Returns the number of children on the stack in the current node
scope. */
- int nodeArity() {
+ public int nodeArity() {
return sp - mk;
}
- void clearNodeScope(Node n) {
+ public void clearNodeScope(Node n) {
while (sp > mk) {
popNode();
}
- mk = ((Integer)marks.pop()).intValue();
+ mk = ((Integer)marks.remove(marks.size()-1)).intValue();
}
- void openNodeScope(Node n) {
- marks.push(new Integer(mk));
+ public void openNodeScope(Node n) {
+ marks.add(new Integer(mk));
mk = sp;
n.jjtOpen();
}
@@ -101,8 +100,8 @@
children. That number of nodes are popped from the stack and
made the children of the definite node. Then the definite node
is pushed on to the stack. */
- void closeNodeScope(Node n, int num) {
- mk = ((Integer)marks.pop()).intValue();
+ public void closeNodeScope(Node n, int num) {
+ mk = ((Integer)marks.remove(marks.size()-1)).intValue();
while (num-- > 0) {
Node c = popNode();
c.jjtSetParent(n);
@@ -116,24 +115,25 @@
/* A conditional node is constructed if its condition is true. All
the nodes that have been pushed since the node was opened are
- made children of the the conditional node, which is then pushed
+ made children of the conditional node, which is then pushed
on to the stack. If the condition is false the node is not
constructed and they are left on the stack. */
- void closeNodeScope(Node n, boolean condition) {
+ public void closeNodeScope(Node n, boolean condition) {
if (condition) {
int a = nodeArity();
- mk = ((Integer)marks.pop()).intValue();
+ mk = ((Integer)marks.remove(marks.size()-1)).intValue();
while (a-- > 0) {
- Node c = popNode();
- c.jjtSetParent(n);
- n.jjtAddChild(c, a);
+ Node c = popNode();
+ c.jjtSetParent(n);
+ n.jjtAddChild(c, a);
}
n.jjtClose();
pushNode(n);
node_created = true;
} else {
- mk = ((Integer)marks.pop()).intValue();
+ mk = ((Integer)marks.remove(marks.size()-1)).intValue();
node_created = false;
}
}
}
+/* JavaCC - OriginalChecksum=302852ad347878d613824b11862fef15 (do not edit this line) */
Modified: trunk/java/org/apache/el/parser/ParseException.java
===================================================================
--- trunk/java/org/apache/el/parser/ParseException.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/ParseException.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -14,7 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 4.1 */
+/* JavaCCOptions:KEEP_LINE_COL=null */
package org.apache.el.parser;
/**
@@ -67,6 +68,7 @@
specialConstructor = false;
}
+ /** Constructor with message. */
public ParseException(String message) {
super(message);
specialConstructor = false;
@@ -121,7 +123,7 @@
maxSize = expectedTokenSequences[i].length;
}
for (int j = 0; j < expectedTokenSequences[i].length; j++) {
- expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
+ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
}
if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
expected.append("...");
@@ -136,8 +138,11 @@
retval += tokenImage[0];
break;
}
+ retval += " " + tokenImage[tok.kind];
+ retval += " \"";
retval += add_escapes(tok.image);
- tok = tok.next;
+ retval += " \"";
+ tok = tok.next;
}
retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
retval += "." + eol;
@@ -154,7 +159,7 @@
* The end of line string for this machine.
*/
protected String eol = System.getProperty("line.separator", "\n");
-
+
/**
* Used to convert raw characters to their escaped version
* when these raw version cannot be used as part of an ASCII
@@ -206,3 +211,4 @@
}
}
+/* JavaCC - OriginalChecksum=8e2ccd67f74aad88b27a1262c61e9157 (do not edit this line) */
Modified: trunk/java/org/apache/el/parser/SimpleCharStream.java
===================================================================
--- trunk/java/org/apache/el/parser/SimpleCharStream.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/SimpleCharStream.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -14,7 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.1 */
+/* JavaCCOptions:STATIC=false */
package org.apache.el.parser;
/**
@@ -24,10 +25,12 @@
public class SimpleCharStream
{
+/** Whether parser is static. */
public static final boolean staticFlag = false;
int bufsize;
int available;
int tokenBegin;
+/** Position in buffer. */
public int bufpos = -1;
protected int bufline[];
protected int bufcolumn[];
@@ -144,6 +147,7 @@
}
}
+/** Start. */
public char BeginToken() throws java.io.IOException
{
tokenBegin = -1;
@@ -193,6 +197,7 @@
bufcolumn[bufpos] = column;
}
+/** Read a character. */
public char readChar() throws java.io.IOException
{
if (inBuf > 0)
@@ -211,11 +216,11 @@
char c = buffer[bufpos];
UpdateLineColumn(c);
- return (c);
+ return c;
}
/**
- * @deprecated
+ * @deprecated
* @see #getEndColumn
*/
@@ -224,7 +229,7 @@
}
/**
- * @deprecated
+ * @deprecated
* @see #getEndLine
*/
@@ -232,22 +237,27 @@
return bufline[bufpos];
}
+ /** Get token end column number. */
public int getEndColumn() {
return bufcolumn[bufpos];
}
+ /** Get token end line number. */
public int getEndLine() {
return bufline[bufpos];
}
+ /** Get token beginning column number. */
public int getBeginColumn() {
return bufcolumn[tokenBegin];
}
+ /** Get token beginning line number. */
public int getBeginLine() {
return bufline[tokenBegin];
}
+/** Backup a number of characters. */
public void backup(int amount) {
inBuf += amount;
@@ -255,6 +265,7 @@
bufpos += bufsize;
}
+ /** Constructor. */
public SimpleCharStream(java.io.Reader dstream, int startline,
int startcolumn, int buffersize)
{
@@ -268,16 +279,20 @@
bufcolumn = new int[buffersize];
}
+ /** Constructor. */
public SimpleCharStream(java.io.Reader dstream, int startline,
int startcolumn)
{
this(dstream, startline, startcolumn, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.Reader dstream)
{
this(dstream, 1, 1, 4096);
}
+
+ /** Reinitialise. */
public void ReInit(java.io.Reader dstream, int startline,
int startcolumn, int buffersize)
{
@@ -297,81 +312,96 @@
bufpos = -1;
}
+ /** Reinitialise. */
public void ReInit(java.io.Reader dstream, int startline,
int startcolumn)
{
ReInit(dstream, startline, startcolumn, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.Reader dstream)
{
ReInit(dstream, 1, 1, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
{
this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, int startline,
int startcolumn, int buffersize)
{
this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
int startcolumn) throws java.io.UnsupportedEncodingException
{
this(dstream, encoding, startline, startcolumn, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, int startline,
int startcolumn)
{
this(dstream, startline, startcolumn, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
{
this(dstream, encoding, 1, 1, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream)
{
this(dstream, 1, 1, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, String encoding, int startline,
int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
{
ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, int startline,
int startcolumn, int buffersize)
{
ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
{
ReInit(dstream, encoding, 1, 1, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream)
{
ReInit(dstream, 1, 1, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, String encoding, int startline,
int startcolumn) throws java.io.UnsupportedEncodingException
{
ReInit(dstream, encoding, startline, startcolumn, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, int startline,
int startcolumn)
{
ReInit(dstream, startline, startcolumn, 4096);
}
+ /** Get token literal value. */
public String GetImage()
{
if (bufpos >= tokenBegin)
@@ -381,6 +411,7 @@
new String(buffer, 0, bufpos + 1);
}
+ /** Get the suffix. */
public char[] GetSuffix(int len)
{
char[] ret = new char[len];
@@ -397,6 +428,7 @@
return ret;
}
+ /** Reset buffer when finished. */
public void Done()
{
buffer = null;
@@ -432,7 +464,7 @@
bufcolumn[j] = newCol + columnDiff;
columnDiff = nextColDiff;
i++;
- }
+ }
if (i < len)
{
@@ -453,3 +485,4 @@
}
}
+/* JavaCC - OriginalChecksum=818cc1c71ac884d7a3756c5d760b3c8f (do not edit this line) */
Modified: trunk/java/org/apache/el/parser/Token.java
===================================================================
--- trunk/java/org/apache/el/parser/Token.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/Token.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -14,7 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 4.1 */
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null */
package org.apache.el.parser;
/**
@@ -30,12 +31,14 @@
*/
public int kind;
- /**
- * beginLine and beginColumn describe the position of the first character
- * of this token; endLine and endColumn describe the position of the
- * last character of this token.
- */
- public int beginLine, beginColumn, endLine, endColumn;
+ /** The line number of the first character of this Token. */
+ public int beginLine;
+ /** The column number of the first character of this Token. */
+ public int beginColumn;
+ /** The line number of the last character of this Token. */
+ public int endLine;
+ /** The column number of the last character of this Token. */
+ public int endColumn;
/**
* The string image of the token.
@@ -67,6 +70,40 @@
public Token specialToken;
/**
+ * An optional attribute value of the Token.
+ * Tokens which are not used as syntactic sugar will often contain
+ * meaningful values that will be used later on by the compiler or
+ * interpreter. This attribute value is often different from the image.
+ * Any subclass of Token that actually wants to return a non-null value can
+ * override this method as appropriate.
+ */
+ public Object getValue() {
+ return null;
+ }
+
+ /**
+ * No-argument constructor
+ */
+ public Token() {}
+
+ /**
+ * Constructs a new token for the specified Image.
+ */
+ public Token(int kind)
+ {
+ this(kind, null);
+ }
+
+ /**
+ * Constructs a new token for the specified Image and Kind.
+ */
+ public Token(int kind, String image)
+ {
+ this.kind = kind;
+ this.image = image;
+ }
+
+ /**
* Returns the image.
*/
public String toString()
@@ -79,19 +116,25 @@
* can create and return subclass objects based on the value of ofKind.
* Simply add the cases to the switch for all those special cases.
* For example, if you have a subclass of Token called IDToken that
- * you want to create if ofKind is ID, simlpy add something like :
+ * you want to create if ofKind is ID, simply add something like :
*
- * case MyParserConstants.ID : return new IDToken();
+ * case MyParserConstants.ID : return new IDToken(ofKind, image);
*
* to the following switch statement. Then you can cast matchedToken
- * variable to the appropriate type and use it in your lexical actions.
+ * variable to the appropriate type and use sit in your lexical actions.
*/
- public static final Token newToken(int ofKind)
+ public static Token newToken(int ofKind, String image)
{
switch(ofKind)
{
- default : return new Token();
+ default : return new Token(ofKind, image);
}
}
+ public static Token newToken(int ofKind)
+ {
+ return newToken(ofKind, null);
+ }
+
}
+/* JavaCC - OriginalChecksum=7feb61b391e60d3d8ef1a9482b26365e (do not edit this line) */
Modified: trunk/java/org/apache/el/parser/TokenMgrError.java
===================================================================
--- trunk/java/org/apache/el/parser/TokenMgrError.java 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/java/org/apache/el/parser/TokenMgrError.java 2008-09-10 15:27:46 UTC (rev 774)
@@ -14,22 +14,25 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 4.1 */
+/* JavaCCOptions: */
package org.apache.el.parser;
+/** Token Manager Error. */
public class TokenMgrError extends Error
{
+
/*
* Ordinals for various reasons why an Error of this type can be thrown.
*/
/**
- * Lexical error occured.
+ * Lexical error occurred.
*/
static final int LEXICAL_ERROR = 0;
/**
- * An attempt wass made to create a second instance of a static token manager.
+ * An attempt was made to create a second instance of a static token manager.
*/
static final int STATIC_LEXER_ERROR = 1;
@@ -50,7 +53,7 @@
int errorCode;
/**
- * Replaces unprintable characters by their espaced (or unicode escaped)
+ * Replaces unprintable characters by their escaped (or unicode escaped)
* equivalents in the given string
*/
protected static final String addEscapes(String str) {
@@ -101,12 +104,12 @@
/**
* Returns a detailed message for the Error when it is thrown by the
* token manager to indicate a lexical error.
- * Parameters :
- * EOFSeen : indicates if EOF caused the lexicl error
- * curLexState : lexical state in which this error occured
- * errorLine : line number when the error occured
- * errorColumn : column number when the error occured
- * errorAfter : prefix that was seen before this error occured
+ * Parameters :
+ * EOFSeen : indicates if EOF caused the lexical error
+ * curLexState : lexical state in which this error occurred
+ * errorLine : line number when the error occurred
+ * errorColumn : column number when the error occurred
+ * errorAfter : prefix that was seen before this error occurred
* curchar : the offending character
* Note: You can customize the lexical error message by modifying this method.
*/
@@ -121,7 +124,7 @@
/**
* You can also modify the body of this method to customize your error messages.
* For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
- * of end-users concern, so you can return something like :
+ * of end-users concern, so you can return something like :
*
* "Internal Error : Please file a bug report .... "
*
@@ -135,15 +138,19 @@
* Constructors of various flavors follow.
*/
+ /** No arg constructor. */
public TokenMgrError() {
}
+ /** Constructor with message and reason. */
public TokenMgrError(String message, int reason) {
super(message);
errorCode = reason;
}
+ /** Full Constructor. */
public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
}
}
+/* JavaCC - OriginalChecksum=6b523b4a5c49e1ee9e58afea685a63ce (do not edit this line) */
Modified: trunk/webapps/docs/changelog.xml
===================================================================
--- trunk/webapps/docs/changelog.xml 2008-09-10 13:00:44 UTC (rev 773)
+++ trunk/webapps/docs/changelog.xml 2008-09-10 15:27:46 UTC (rev 774)
@@ -47,7 +47,7 @@
<subsection name="Jasper">
<changelog>
<fix>
- Sync with EL from Tomcat, to fix a number of complex expressions. (remm)
+ Sync with EL parser from Tomcat, to fix a number of complex expressions. (remm)
</fix>
<fix>
<bug>45691</bug>: Fix possible duplicates variable names. (markt)
@@ -55,6 +55,9 @@
<fix>
<bug>45666</bug>: Fir infinite loop on include. (markt)
</fix>
+ <fix>
+ Rebuild EL parser with JavaCC 4.1. (remm)
+ </fix>
</changelog>
</subsection>
</section>
16 years, 3 months
JBossWeb SVN: r773 - in trunk/webapps/docs: config and 1 other directory.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-09-10 09:00:44 -0400 (Wed, 10 Sep 2008)
New Revision: 773
Modified:
trunk/webapps/docs/changelog.xml
trunk/webapps/docs/config/realm.xml
trunk/webapps/docs/realm-howto.xml
Log:
- Add combined realm doc.
Modified: trunk/webapps/docs/changelog.xml
===================================================================
--- trunk/webapps/docs/changelog.xml 2008-09-09 14:32:12 UTC (rev 772)
+++ trunk/webapps/docs/changelog.xml 2008-09-10 13:00:44 UTC (rev 773)
@@ -40,7 +40,7 @@
<subsection name="Coyote">
<changelog>
<fix>
- Fix a rare problem identifying AJP body packets that should be dropped. (remm)
+ Fix a rare problem identifying AJP body packets that should be dropped. (jfclere)
</fix>
</changelog>
</subsection>
Modified: trunk/webapps/docs/config/realm.xml
===================================================================
--- trunk/webapps/docs/config/realm.xml 2008-09-09 14:32:12 UTC (rev 772)
+++ trunk/webapps/docs/config/realm.xml 2008-09-10 13:00:44 UTC (rev 773)
@@ -158,7 +158,30 @@
information on setting up container managed security using the
JDBC Database Realm component.</p>
+ <h3>Combined Realm (org.apache.catalina.realm.CombinedRealm)</h3>
+ <p><strong>CombinedRealm</strong> is an implementation of the Tomcat 6
+ <code>Realm</code> interface that authenticates users through one or more
+ sub-Realms.</p>
+
+ <p>Using CombinedRealm gives the developer the ability to combine multiple
+ Realms of the same or different types. This can be used to authenticate
+ against different sources, provide fall back in case one Realm fails or for
+ any other purpose that requires multiple Realms.</p>
+
+ <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the
+ <code>Realm</code> element that defines the CombinedRealm. Authentication
+ will be attempted against each <code>Realm</code> in the order they are
+ listed. Authentication against any Realm will be sufficient to authenticate
+ the user.</p>
+
+ <p>The Combined Realm implementation does not support any additional
+ attributes.</p>
+
+ <p>See the <a href="../realm-howto.html">Container-Managed Security
+ Guide</a> for more information on setting up container managed security
+ using the Combined Realm component.</p>
+
<h3>
DataSource Database Realm (org.apache.catalina.realm.DataSourceRealm)
</h3>
@@ -478,8 +501,15 @@
<section name="Nested Components">
- <p>No components may be nested inside a <strong>Realm</strong> element.</p>
+ <h3>Combined Realm Implementation</h3>
+ <p>If you are using the <em>Combined Realm Implementation</em>
+ <strong><Realm></strong> elements may be nested inside it.</p>
+
+ <h3>Other Realm Implementations</h3>
+
+ <p>No other Realm implementation supports nested components.</p>
+
</section>
Modified: trunk/webapps/docs/realm-howto.xml
===================================================================
--- trunk/webapps/docs/realm-howto.xml 2008-09-09 14:32:12 UTC (rev 772)
+++ trunk/webapps/docs/realm-howto.xml 2008-09-10 13:00:44 UTC (rev 773)
@@ -1409,6 +1409,61 @@
</subsection>
+<subsection name="CombinedRealm">
+
+ <h3>Introduction</h3>
+
+ <p><strong>CombinedRealm</strong> is an implementation of the
+ <code>Realm</code> interface that authenticates users through one or more
+ sub-Realms.</p>
+
+ <p>Using CombinedRealm gives the developer the ability to combine multiple
+ Realms of the same or different types. This can be used to authenticate
+ against different sources, provide fall back in case one Realm fails or for
+ any other purpose that requires multiple Realms.</p>
+
+ <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the
+ <code>Realm</code> element that defines the CombinedRealm. Authentication
+ will be attempted against each <code>Realm</code> in the order they are
+ listed. Authentication against any Realm will be sufficient to authenticate
+ the user.</p>
+
+ <h3>Realm Element Attributes</h3>
+ <p>To configure CombinedRealm, you create a <code><Realm></code>
+ element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code>
+ file within your <code><Engine></code> or <code><Host></code>.
+ You can also nest inside a <code><Context></code> node in a
+ <code>context.xml</code> file. The following attributes are supported by
+ this implementation:</p>
+
+<attributes>
+
+ <attribute name="className" required="true">
+ <p>The fully qualified Java class name of this Realm implementation.
+ You <strong>MUST</strong> specify the value
+ "<code>org.apache.catalina.realm.CombinedRealm</code>" here.</p>
+ </attribute>
+
+</attributes>
+
+<h3>Example</h3>
+
+<p>Here is an example of how your server.xml snippet should look to use a
+UserDatabase Realm and a DataSource Realm.</p>
+
+<source>
+<Realm className="org.apache.catalina.realm.CombinedRealm" >
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ <Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99"
+ dataSourceName="jdbc/authority"
+ userTable="users" userNameCol="user_name" userCredCol="user_pass"
+ userRoleTable="user_roles" roleNameCol="role_name"/>
+<Realm/>
+</source>
+
+</subsection>
+
</section>
</body>
16 years, 3 months
JBossWeb SVN: r772 - branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp.
by jbossweb-commits@lists.jboss.org
Author: jfrederic.clere(a)jboss.com
Date: 2008-09-09 10:32:12 -0400 (Tue, 09 Sep 2008)
New Revision: 772
Modified:
branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java
branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java
Log:
Port JBWEB_117 from trunk.
Modified: branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java
===================================================================
--- branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java 2008-09-09 14:29:16 UTC (rev 771)
+++ branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java 2008-09-09 14:32:12 UTC (rev 772)
@@ -993,6 +993,14 @@
outputBuffer.put(endMessageArray);
flush();
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLength() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
}
Modified: branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java
===================================================================
--- branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java 2008-09-09 14:29:16 UTC (rev 771)
+++ branches/JBOSSWEB_2_0_0_GA_CP/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java 2008-09-09 14:32:12 UTC (rev 772)
@@ -995,6 +995,15 @@
// Add the end message
output.write(endMessageArray);
+
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLength() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
}
16 years, 3 months
JBossWeb SVN: r771 - branches/2.0.x/src/share/classes/org/apache/coyote/ajp.
by jbossweb-commits@lists.jboss.org
Author: jfrederic.clere(a)jboss.com
Date: 2008-09-09 10:29:16 -0400 (Tue, 09 Sep 2008)
New Revision: 771
Modified:
branches/2.0.x/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java
branches/2.0.x/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java
Log:
Port JBWEB_117 from trunk.
Modified: branches/2.0.x/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java
===================================================================
--- branches/2.0.x/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java 2008-09-05 12:21:35 UTC (rev 770)
+++ branches/2.0.x/src/share/classes/org/apache/coyote/ajp/AjpAprProcessor.java 2008-09-09 14:29:16 UTC (rev 771)
@@ -995,6 +995,14 @@
outputBuffer.put(endMessageArray);
flush();
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLength() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
}
Modified: branches/2.0.x/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java
===================================================================
--- branches/2.0.x/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java 2008-09-05 12:21:35 UTC (rev 770)
+++ branches/2.0.x/src/share/classes/org/apache/coyote/ajp/AjpProcessor.java 2008-09-09 14:29:16 UTC (rev 771)
@@ -997,6 +997,15 @@
// Add the end message
output.write(endMessageArray);
+
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLength() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
}
16 years, 3 months
JBossWeb SVN: r770 - trunk/java/org/apache/coyote/ajp.
by jbossweb-commits@lists.jboss.org
Author: jfrederic.clere(a)jboss.com
Date: 2008-09-05 08:21:35 -0400 (Fri, 05 Sep 2008)
New Revision: 770
Modified:
trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java
trunk/java/org/apache/coyote/ajp/AjpProcessor.java
Log:
Fix for JBWEB_117.
Modified: trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java
===================================================================
--- trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java 2008-09-04 11:00:08 UTC (rev 769)
+++ trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java 2008-09-05 12:21:35 UTC (rev 770)
@@ -993,6 +993,14 @@
outputBuffer.put(endMessageArray);
flush();
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLength() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
}
Modified: trunk/java/org/apache/coyote/ajp/AjpProcessor.java
===================================================================
--- trunk/java/org/apache/coyote/ajp/AjpProcessor.java 2008-09-04 11:00:08 UTC (rev 769)
+++ trunk/java/org/apache/coyote/ajp/AjpProcessor.java 2008-09-05 12:21:35 UTC (rev 770)
@@ -995,6 +995,15 @@
// Add the end message
output.write(endMessageArray);
+
+ // read remaining data from the special first-body-chunk
+ if (first && request.getContentLength() > 0) {
+ try {
+ receive();
+ } catch (IOException e) {
+ }
+ }
+
}
16 years, 3 months
JBossWeb SVN: r769 - in trunk: java/org/apache/catalina/startup and 2 other directories.
by jbossweb-commits@lists.jboss.org
Author: remy.maucherat(a)jboss.com
Date: 2008-09-04 07:00:08 -0400 (Thu, 04 Sep 2008)
New Revision: 769
Added:
trunk/java/org/apache/catalina/realm/CombinedRealm.java
trunk/java/org/apache/catalina/startup/RealmRuleSet.java
Modified:
trunk/java/org/apache/catalina/realm/LocalStrings.properties
trunk/java/org/apache/catalina/startup/ContextRuleSet.java
trunk/java/org/apache/catalina/startup/EngineRuleSet.java
trunk/java/org/apache/catalina/startup/HostRuleSet.java
trunk/java/org/apache/juli/ClassLoaderLogManager.java
trunk/webapps/docs/changelog.xml
Log:
- Add combined realm.
- Port logging improvement in juli.
Added: trunk/java/org/apache/catalina/realm/CombinedRealm.java
===================================================================
--- trunk/java/org/apache/catalina/realm/CombinedRealm.java (rev 0)
+++ trunk/java/org/apache/catalina/realm/CombinedRealm.java 2008-09-04 11:00:08 UTC (rev 769)
@@ -0,0 +1,297 @@
+/*
+ * 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.
+ */
+
+package org.apache.catalina.realm;
+
+import java.security.Principal;
+
+import java.security.cert.X509Certificate;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.catalina.Container;
+import org.apache.catalina.Lifecycle;
+import org.apache.catalina.LifecycleException;
+import org.apache.catalina.Realm;
+import org.apache.catalina.util.StringManager;
+import org.jboss.logging.Logger;
+
+/**
+ * Realm implementation that contains one or more realms. Authentication is
+ * attempted for each realm in the order they were configured. If any realm
+ * authenticates the user then the authentication succeeds.
+ */
+public class CombinedRealm extends RealmBase {
+
+ private static Logger log = Logger.getLogger(CombinedRealm.class);
+
+ /**
+ * The string manager for this package.
+ */
+ protected static StringManager sm =
+ StringManager.getManager(Constants.Package);
+
+ /**
+ * The list of Realms contained by this Realm.
+ */
+ protected List<Realm> realms = new LinkedList<Realm>();
+
+
+ /**
+ * Add a realm to the list of realms that will be used to authenticate
+ * users.
+ */
+ public void addRealm(Realm theRealm) {
+ realms.add(theRealm);
+
+ if (log.isDebugEnabled()) {
+ sm.getString("combinedRealm.addRealm", theRealm.getInfo(),
+ Integer.toString(realms.size()));
+ }
+ }
+
+
+ /**
+ * Return the Principal associated with the specified username and
+ * credentials, if there is one; otherwise return <code>null</code>.
+ *
+ * @param username Username of the Principal to look up
+ * @param credentials Password or other credentials to use in
+ * authenticating this username
+ */
+ public Principal authenticate(String username, byte[] credentials) {
+ Principal authenticatedUser = null;
+
+ for (Realm realm : realms) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authStart", username, realm.getInfo()));
+ }
+
+ authenticatedUser = realm.authenticate(username, credentials);
+
+ if (authenticatedUser == null) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authFail", username, realm.getInfo()));
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authSucess", username, realm.getInfo()));
+ }
+ break;
+ }
+ }
+ return authenticatedUser;
+ }
+
+
+ /**
+ * Return the Principal associated with the specified username, which
+ * matches the digest calculated using the given parameters using the
+ * method described in RFC 2069; otherwise return <code>null</code>.
+ *
+ * @param username Username of the Principal to look up
+ * @param clientDigest Digest which has been submitted by the client
+ * @param nOnce Unique (or supposedly unique) token which has been used
+ * for this request
+ * @param realm Realm name
+ * @param md5a2 Second MD5 digest used to calculate the digest :
+ * MD5(Method + ":" + uri)
+ */
+ public Principal authenticate(String username, String clientDigest,
+ String once, String nc, String cnonce, String qop,
+ String realmName, String md5a2) {
+ Principal authenticatedUser = null;
+
+ for (Realm realm : realms) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authStart", username, realm.getInfo()));
+ }
+
+ authenticatedUser = realm.authenticate(username, clientDigest, once,
+ nc, cnonce, qop, realmName, md5a2);
+
+ if (authenticatedUser == null) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authFail", username, realm.getInfo()));
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authSucess", username, realm.getInfo()));
+ }
+ break;
+ }
+ }
+ return authenticatedUser;
+ }
+
+
+ /**
+ * Return the Principal associated with the specified username and
+ * credentials, if there is one; otherwise return <code>null</code>.
+ *
+ * @param username Username of the Principal to look up
+ * @param credentials Password or other credentials to use in
+ * authenticating this username
+ */
+ public Principal authenticate(String username, String credentials) {
+ Principal authenticatedUser = null;
+
+ for (Realm realm : realms) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authStart", username, realm.getInfo()));
+ }
+
+ authenticatedUser = realm.authenticate(username, credentials);
+
+ if (authenticatedUser == null) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authFail", username, realm.getInfo()));
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authSucess", username, realm.getInfo()));
+ }
+ break;
+ }
+ }
+ return authenticatedUser;
+ }
+
+
+ /**
+ * Set the Container with which this Realm has been associated.
+ *
+ * @param container The associated Container
+ */
+ public void setContainer(Container container) {
+ // Set the container for sub-realms. Mainly so logging works.
+ for(Realm realm : realms) {
+ realm.setContainer(container);
+ }
+ super.setContainer(container);
+ }
+
+
+ /**
+ * Prepare for the beginning of active use of the public methods of this
+ * component. This method should be called before any of the public
+ * methods of this component are utilized. It should also send a
+ * LifecycleEvent of type START_EVENT to any registered listeners.
+ *
+ * @exception LifecycleException if this component detects a fatal error
+ * that prevents this component from being used
+ */
+ public void start() throws LifecycleException {
+ // Start 'sub-realms' then this one
+ for (Realm realm : realms) {
+ if (realm instanceof Lifecycle) {
+ ((Lifecycle) realm).start();
+ }
+ }
+ super.start();
+ }
+
+
+ /**
+ * Gracefully terminate the active use of the public methods of this
+ * component. This method should be the last one called on a given
+ * instance of this component. It should also send a LifecycleEvent
+ * of type STOP_EVENT to any registered listeners.
+ *
+ * @exception LifecycleException if this component detects a fatal error
+ * that needs to be reported
+ */
+ public void stop() throws LifecycleException {
+ // Stop this realm, then the sub-realms (reverse order to start)
+ super.stop();
+ for (Realm realm : realms) {
+ if (realm instanceof Lifecycle) {
+ ((Lifecycle) realm).stop();
+ }
+ }
+ }
+
+
+ /**
+ * Return the Principal associated with the specified chain of X509
+ * client certificates. If there is none, return <code>null</code>.
+ *
+ * @param certs Array of client certificates, with the first one in
+ * the array being the certificate of the client itself.
+ */
+ public Principal authenticate(X509Certificate[] certs) {
+ Principal authenticatedUser = null;
+ String username = null;
+ if (certs != null && certs.length >0) {
+ username = certs[0].getSubjectDN().getName();
+ }
+
+ for (Realm realm : realms) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authStart", username, realm.getInfo()));
+ }
+
+ authenticatedUser = realm.authenticate(certs);
+
+ if (authenticatedUser == null) {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authFail", username, realm.getInfo()));
+ }
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("combinedRealm.authSucess", username, realm.getInfo()));
+ }
+ break;
+ }
+ }
+ return authenticatedUser;
+ }
+
+ @Override
+ protected String getName() {
+ // This method should never be called
+ // Stack trace will show where this was called from
+ UnsupportedOperationException uoe =
+ new UnsupportedOperationException(
+ sm.getString("combinedRealm.getName"));
+ log.error(sm.getString("combinedRealm.unexpectedMethod"), uoe);
+ throw uoe;
+ }
+
+ @Override
+ protected String getPassword(String username) {
+ // This method should never be called
+ // Stack trace will show where this was called from
+ UnsupportedOperationException uoe =
+ new UnsupportedOperationException(
+ sm.getString("combinedRealm.getPassword"));
+ log.error(sm.getString("combinedRealm.unexpectedMethod"), uoe);
+ throw uoe;
+ }
+
+ @Override
+ protected Principal getPrincipal(String username) {
+ // This method should never be called
+ // Stack trace will show where this was called from
+ UnsupportedOperationException uoe =
+ new UnsupportedOperationException(
+ sm.getString("combinedRealm.getPrincipal"));
+ log.error(sm.getString("combinedRealm.unexpectedMethod"), uoe);
+ throw uoe;
+ }
+
+}
Modified: trunk/java/org/apache/catalina/realm/LocalStrings.properties
===================================================================
--- trunk/java/org/apache/catalina/realm/LocalStrings.properties 2008-09-03 18:48:04 UTC (rev 768)
+++ trunk/java/org/apache/catalina/realm/LocalStrings.properties 2008-09-04 11:00:08 UTC (rev 769)
@@ -70,3 +70,11 @@
dataSourceRealm.getPassword.exception=Exception retrieving password for "{0}"
dataSourceRealm.getRoles.exception=Exception retrieving roles for "{0}"
dataSourceRealm.open=Exception opening database connection
+combinedRealm.unexpectedMethod=An unexpected call was made to a method on the combined realm
+combinedRealm.getName=The getName() method should never be called
+combinedRealm.getPassword=The getPassword() method should never be called
+combinedRealm.getPrincipal=The getPrincipal() method should never be called
+combinedRealm.authStart=Attempting to authenticate user "{0}" with realm "{1}"
+combinedRealm.authFailed=Failed to authenticate user "{0}" with realm "{1}"
+combinedRealm.authSucess=Authenticated user "{0}" with realm "{1}"
+combinedRealm.addRealm=Add "{0}" realm, making a total of "{1}" realms
Modified: trunk/java/org/apache/catalina/startup/ContextRuleSet.java
===================================================================
--- trunk/java/org/apache/catalina/startup/ContextRuleSet.java 2008-09-03 18:48:04 UTC (rev 768)
+++ trunk/java/org/apache/catalina/startup/ContextRuleSet.java 2008-09-04 11:00:08 UTC (rev 769)
@@ -170,13 +170,7 @@
"addApplicationParameter",
"org.apache.catalina.deploy.ApplicationParameter");
- digester.addObjectCreate(prefix + "Context/Realm",
- null, // MUST be specified in the element
- "className");
- digester.addSetProperties(prefix + "Context/Realm");
- digester.addSetNext(prefix + "Context/Realm",
- "setRealm",
- "org.apache.catalina.Realm");
+ digester.addRuleSet(new RealmRuleSet(prefix + "Context/"));
digester.addObjectCreate(prefix + "Context/Resources",
"org.apache.naming.resources.FileDirContext",
Modified: trunk/java/org/apache/catalina/startup/EngineRuleSet.java
===================================================================
--- trunk/java/org/apache/catalina/startup/EngineRuleSet.java 2008-09-03 18:48:04 UTC (rev 768)
+++ trunk/java/org/apache/catalina/startup/EngineRuleSet.java 2008-09-04 11:00:08 UTC (rev 769)
@@ -121,13 +121,7 @@
"org.apache.catalina.LifecycleListener");
- digester.addObjectCreate(prefix + "Engine/Realm",
- null, // MUST be specified in the element
- "className");
- digester.addSetProperties(prefix + "Engine/Realm");
- digester.addSetNext(prefix + "Engine/Realm",
- "setRealm",
- "org.apache.catalina.Realm");
+ digester.addRuleSet(new RealmRuleSet(prefix + "Engine/"));
digester.addObjectCreate(prefix + "Engine/Valve",
null, // MUST be specified in the element
Modified: trunk/java/org/apache/catalina/startup/HostRuleSet.java
===================================================================
--- trunk/java/org/apache/catalina/startup/HostRuleSet.java 2008-09-03 18:48:04 UTC (rev 768)
+++ trunk/java/org/apache/catalina/startup/HostRuleSet.java 2008-09-04 11:00:08 UTC (rev 769)
@@ -124,13 +124,7 @@
"addLifecycleListener",
"org.apache.catalina.LifecycleListener");
- digester.addObjectCreate(prefix + "Host/Realm",
- null, // MUST be specified in the element
- "className");
- digester.addSetProperties(prefix + "Host/Realm");
- digester.addSetNext(prefix + "Host/Realm",
- "setRealm",
- "org.apache.catalina.Realm");
+ digester.addRuleSet(new RealmRuleSet(prefix + "Host/"));
digester.addObjectCreate(prefix + "Host/Valve",
null, // MUST be specified in the element
Added: trunk/java/org/apache/catalina/startup/RealmRuleSet.java
===================================================================
--- trunk/java/org/apache/catalina/startup/RealmRuleSet.java (rev 0)
+++ trunk/java/org/apache/catalina/startup/RealmRuleSet.java 2008-09-04 11:00:08 UTC (rev 769)
@@ -0,0 +1,109 @@
+/*
+ * 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.
+ */
+
+
+package org.apache.catalina.startup;
+
+
+import org.apache.tomcat.util.digester.Digester;
+import org.apache.tomcat.util.digester.RuleSetBase;
+
+
+/**
+ * <p><strong>RuleSet</strong> for processing the contents of a Realm definition
+ * element. This <code>RuleSet</code> supports Realms such as the
+ * <code>CombinedRealm</code> that used nested Realms.</p>
+ *
+ * @version $Revision: 691805 $ $Date: 2008-09-04 00:18:39 +0200 (Thu, 04 Sep 2008) $
+ */
+
+public class RealmRuleSet extends RuleSetBase {
+
+
+ // ----------------------------------------------------- Instance Variables
+
+
+ /**
+ * The matching pattern prefix to use for recognizing our elements.
+ */
+ protected String prefix = null;
+
+
+ // ------------------------------------------------------------ Constructor
+
+
+ /**
+ * Construct an instance of this <code>RuleSet</code> with the default
+ * matching pattern prefix.
+ */
+ public RealmRuleSet() {
+
+ this("");
+
+ }
+
+
+ /**
+ * Construct an instance of this <code>RuleSet</code> with the specified
+ * matching pattern prefix.
+ *
+ * @param prefix Prefix for matching pattern rules (including the
+ * trailing slash character)
+ */
+ public RealmRuleSet(String prefix) {
+
+ super();
+ this.namespaceURI = null;
+ this.prefix = prefix;
+
+ }
+
+
+ // --------------------------------------------------------- Public Methods
+
+
+ /**
+ * <p>Add the set of Rule instances defined in this RuleSet to the
+ * specified <code>Digester</code> instance, associating them with
+ * our namespace URI (if any). This method should only be called
+ * by a Digester instance.</p>
+ *
+ * @param digester Digester instance to which the new Rule instances
+ * should be added.
+ */
+ public void addRuleInstances(Digester digester) {
+
+ digester.addObjectCreate(prefix + "Realm",
+ null, // MUST be specified in the element,
+ "className");
+ digester.addSetProperties(prefix + "Realm");
+ digester.addSetNext(prefix + "Realm",
+ "setRealm",
+ "org.apache.catalina.Realm");
+
+ digester.addObjectCreate(prefix + "Realm/Realm",
+ null, // MUST be specified in the element
+ "className");
+ digester.addSetProperties(prefix + "Realm/Realm");
+ digester.addSetNext(prefix + "Realm/Realm",
+ "addRealm",
+ "org.apache.catalina.Realm");
+
+ }
+
+
+}
Modified: trunk/java/org/apache/juli/ClassLoaderLogManager.java
===================================================================
--- trunk/java/org/apache/juli/ClassLoaderLogManager.java 2008-09-03 18:48:04 UTC (rev 768)
+++ trunk/java/org/apache/juli/ClassLoaderLogManager.java 2008-09-04 11:00:08 UTC (rev 769)
@@ -19,11 +19,13 @@
import java.io.File;
import java.io.FileInputStream;
+import java.io.FilePermission;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLClassLoader;
import java.security.AccessControlException;
import java.security.AccessController;
+import java.security.Permission;
import java.security.PrivilegedAction;
import java.util.Collections;
import java.util.Enumeration;
@@ -303,7 +305,21 @@
}
} catch (AccessControlException ace) {
// No permission to configure logging in context
- // Ignore and carry on
+ // Log and carry on
+ ClassLoaderLogInfo info = classLoaderLoggers.get(ClassLoader.getSystemClassLoader());
+ if (info != null) {
+ Logger log = info.loggers.get("");
+ if (log != null) {
+ Permission perm = ace.getPermission();
+ if (perm instanceof FilePermission && perm.getActions().equals("read")) {
+ log.warning("Reading " + perm.getName() + " is not permitted. See \"per context logging\" in the default catalina.policy file.");
+ }
+ else {
+ log.warning("Reading logging.properties is not permitted in some context. See \"per context logging\" in the default catalina.policy file.");
+ log.warning("Original error was: " + ace.getMessage());
+ }
+ }
+ }
}
if ((is == null) && (classLoader == ClassLoader.getSystemClassLoader())) {
String configFileStr = System.getProperty("java.util.logging.config.file");
Modified: trunk/webapps/docs/changelog.xml
===================================================================
--- trunk/webapps/docs/changelog.xml 2008-09-03 18:48:04 UTC (rev 768)
+++ trunk/webapps/docs/changelog.xml 2008-09-04 11:00:08 UTC (rev 769)
@@ -29,6 +29,12 @@
<fix>
<bug>45735</bug>: More consistent getETag. (remm)
</fix>
+ <fix>
+ Better logging of security exceptions reading logging configuration. (rjung)
+ </fix>
+ <add>
+ Add a special CombinedRealm which can aggregate authentication from multiple realms. (markt)
+ </add>
</changelog>
</subsection>
<subsection name="Coyote">
16 years, 3 months