You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by jv...@locus.apache.org on 2000/08/30 02:37:17 UTC
cvs commit: jakarta-velocity/src/java/org/apache/velocity/parser Parser.java Parser.jj Parser.jjt ParserTreeConstants.java ParserVisitor.java SimpleNode.java
jvanzyl 00/08/29 17:37:16
Modified: src/java/org/apache/velocity/parser Parser.java Parser.jj
Parser.jjt ParserTreeConstants.java
ParserVisitor.java SimpleNode.java
Log:
- added #if/#elseif/#else
Revision Changes Path
1.5 +63 -29 jakarta-velocity/src/java/org/apache/velocity/parser/Parser.java
Index: Parser.java
===================================================================
RCS file: /home/cvs/jakarta-velocity/src/java/org/apache/velocity/parser/Parser.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Parser.java 2000/08/29 20:06:57 1.4
+++ Parser.java 2000/08/30 00:37:09 1.5
@@ -14,7 +14,7 @@
* what controls the generation of this class.
*
* @author <a href="mailto:jvanzyl@periapt.com">Jason van Zyl</a>
- * @version $Id: Parser.java,v 1.4 2000/08/29 20:06:57 jvanzyl Exp $
+ * @version $Id: Parser.java,v 1.5 2000/08/30 00:37:09 jvanzyl Exp $
*/
public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants {/*@bgen(jjtree)*/
protected JJTParserState jjtree = new JJTParserState();
@@ -69,6 +69,7 @@
case INCLUDE_DIRECTIVE:
case PARSE_DIRECTIVE:
case IF_DIRECTIVE:
+ case ELSEIF_DIRECTIVE:
case FOREACH_DIRECTIVE:
case SET_DIRECTIVE:
case PARAM_DIRECTIVE:
@@ -155,6 +156,9 @@
case IF_DIRECTIVE:
IfStatement();
break;
+ case ELSEIF_DIRECTIVE:
+ ElseIfStatement();
+ break;
case FOREACH_DIRECTIVE:
ForeachStatement();
break;
@@ -505,6 +509,7 @@
case INCLUDE_DIRECTIVE:
case PARSE_DIRECTIVE:
case IF_DIRECTIVE:
+ case ELSEIF_DIRECTIVE:
case FOREACH_DIRECTIVE:
case SET_DIRECTIVE:
case PARAM_DIRECTIVE:
@@ -615,37 +620,66 @@
jj_consume_token(RPAREN);
Statement();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case ELSEIF_DIRECTIVE:
- jj_consume_token(ELSEIF_DIRECTIVE);
- jj_consume_token(LPAREN);
- switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case TRUE:
- jj_consume_token(TRUE);
- break;
- case FALSE:
- jj_consume_token(FALSE);
- break;
- case VARIABLE:
- jj_consume_token(VARIABLE);
- break;
- case METHOD:
- jj_consume_token(METHOD);
- break;
- case PROPERTY:
- jj_consume_token(PROPERTY);
- break;
- default:
- jj_la1[10] = jj_gen;
- jj_consume_token(-1);
- throw new ParseException();
- }
- jj_consume_token(RPAREN);
+ case ELSE_DIRECTIVE:
+ jj_consume_token(ELSE_DIRECTIVE);
Statement();
break;
default:
- jj_la1[11] = jj_gen;
+ jj_la1[10] = jj_gen;
;
}
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ {if (true) throw (RuntimeException)jjte000;}
+ }
+ if (jjte000 instanceof ParseException) {
+ {if (true) throw (ParseException)jjte000;}
+ }
+ {if (true) throw (Error)jjte000;}
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+ }
+
+ final public void ElseIfStatement() throws ParseException {
+ /*@bgen(jjtree) ElseIfStatement */
+ ASTElseIfStatement jjtn000 = new ASTElseIfStatement(this, JJTELSEIFSTATEMENT);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+ try {
+ jj_consume_token(ELSEIF_DIRECTIVE);
+ jj_consume_token(LPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case TRUE:
+ jj_consume_token(TRUE);
+ break;
+ case FALSE:
+ jj_consume_token(FALSE);
+ break;
+ case VARIABLE:
+ jj_consume_token(VARIABLE);
+ break;
+ case METHOD:
+ jj_consume_token(METHOD);
+ break;
+ case PROPERTY:
+ jj_consume_token(PROPERTY);
+ break;
+ default:
+ jj_la1[11] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ jj_consume_token(RPAREN);
+ Statement();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case ELSE_DIRECTIVE:
jj_consume_token(ELSE_DIRECTIVE);
@@ -960,8 +994,8 @@
private int jj_ntk;
private int jj_gen;
final private int[] jj_la1 = new int[17];
- final private int[] jj_la1_0 = {0x3fdff380,0x3fdff380,0x20000,0x0,0x20000,0x10000000,0x0,0x0,0x3fdff380,0x6000000,0x6000000,0x400,0x800,0x0,0x0,0x6020000,0x3fce0000,};
- final private int[] jj_la1_1 = {0x1b1,0x1b1,0xb0,0x200,0xb0,0x0,0x108,0x108,0x1b1,0xb0,0xb0,0x0,0x0,0xb0,0x30,0xb0,0x101,};
+ final private int[] jj_la1_0 = {0x3fdff780,0x3fdff780,0x20000,0x0,0x20000,0x10000000,0x0,0x0,0x3fdff780,0x6000000,0x800,0x6000000,0x800,0x0,0x0,0x6020000,0x3fce0000,};
+ final private int[] jj_la1_1 = {0x1b1,0x1b1,0xb0,0x200,0xb0,0x0,0x108,0x108,0x1b1,0xb0,0x0,0xb0,0x0,0xb0,0x30,0xb0,0x101,};
public Parser(java.io.InputStream stream) {
jj_input_stream = new ASCII_CharStream(stream, 1, 1);
1.6 +38 -9 jakarta-velocity/src/java/org/apache/velocity/parser/Parser.jj
Index: Parser.jj
===================================================================
RCS file: /home/cvs/jakarta-velocity/src/java/org/apache/velocity/parser/Parser.jj,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Parser.jj 2000/08/29 20:06:57 1.5
+++ Parser.jj 2000/08/30 00:37:12 1.6
@@ -91,7 +91,7 @@
* what controls the generation of this class.
*
* @author <a href="mailto:jvanzyl@periapt.com">Jason van Zyl</a>
- * @version $Id: Parser.jj,v 1.5 2000/08/29 20:06:57 jvanzyl Exp $
+ * @version $Id: Parser.jj,v 1.6 2000/08/30 00:37:12 jvanzyl Exp $
*/
public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants/*@egen*/
{/*@bgen(jjtree)*/
@@ -419,6 +419,7 @@
Text()
| Block()
| IfStatement()
+| ElseIfStatement()
| ForeachStatement()
| IncludeStatement()
| SetStatement()
@@ -754,14 +755,42 @@
( <TRUE> | <FALSE> | <VARIABLE> | <METHOD> | <PROPERTY> )
<RPAREN>
Statement()
- [
- LOOKAHEAD(1)
- <ELSEIF_DIRECTIVE>
- <LPAREN>
- ( <TRUE> | <FALSE> | <VARIABLE> | <METHOD> | <PROPERTY> )
- <RPAREN>
- Statement()
- ]
+ [ LOOKAHEAD(1) <ELSE_DIRECTIVE> Statement() ]/*@bgen(jjtree)*/
+ } catch (Throwable jjte000) {
+ if (jjtc000) {
+ jjtree.clearNodeScope(jjtn000);
+ jjtc000 = false;
+ } else {
+ jjtree.popNode();
+ }
+ if (jjte000 instanceof RuntimeException) {
+ throw (RuntimeException)jjte000;
+ }
+ if (jjte000 instanceof ParseException) {
+ throw (ParseException)jjte000;
+ }
+ throw (Error)jjte000;
+ } finally {
+ if (jjtc000) {
+ jjtree.closeNodeScope(jjtn000, true);
+ }
+ }
+/*@egen*/
+}
+
+void ElseIfStatement() : {/*@bgen(jjtree) ElseIfStatement */
+ ASTElseIfStatement jjtn000 = new ASTElseIfStatement(this, JJTELSEIFSTATEMENT);
+ boolean jjtc000 = true;
+ jjtree.openNodeScope(jjtn000);
+/*@egen*/}
+{/*@bgen(jjtree) ElseIfStatement */
+ try {
+/*@egen*/
+ <ELSEIF_DIRECTIVE>
+ <LPAREN>
+ ( <TRUE> | <FALSE> | <VARIABLE> | <METHOD> | <PROPERTY> )
+ <RPAREN>
+ Statement()
[ LOOKAHEAD(1) <ELSE_DIRECTIVE> Statement() ]/*@bgen(jjtree)*/
} catch (Throwable jjte000) {
if (jjtc000) {
1.7 +12 -9 jakarta-velocity/src/java/org/apache/velocity/parser/Parser.jjt
Index: Parser.jjt
===================================================================
RCS file: /home/cvs/jakarta-velocity/src/java/org/apache/velocity/parser/Parser.jjt,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- Parser.jjt 2000/08/29 20:06:58 1.6
+++ Parser.jjt 2000/08/30 00:37:12 1.7
@@ -115,7 +115,7 @@
* what controls the generation of this class.
*
* @author <a href="mailto:jvanzyl@periapt.com">Jason van Zyl</a>
- * @version $Id: Parser.jjt,v 1.6 2000/08/29 20:06:58 jvanzyl Exp $
+ * @version $Id: Parser.jjt,v 1.7 2000/08/30 00:37:12 jvanzyl Exp $
*/
public class Parser
{
@@ -409,6 +409,7 @@
Text()
| Block()
| IfStatement()
+| ElseIfStatement()
| ForeachStatement()
| IncludeStatement()
| SetStatement()
@@ -586,14 +587,16 @@
( <TRUE> | <FALSE> | <VARIABLE> | <METHOD> | <PROPERTY> )
<RPAREN>
Statement()
- [
- LOOKAHEAD(1)
- <ELSEIF_DIRECTIVE>
- <LPAREN>
- ( <TRUE> | <FALSE> | <VARIABLE> | <METHOD> | <PROPERTY> )
- <RPAREN>
- Statement()
- ]
+ [ LOOKAHEAD(1) <ELSE_DIRECTIVE> Statement() ]
+}
+
+void ElseIfStatement() : {}
+{
+ <ELSEIF_DIRECTIVE>
+ <LPAREN>
+ ( <TRUE> | <FALSE> | <VARIABLE> | <METHOD> | <PROPERTY> )
+ <RPAREN>
+ Statement()
[ LOOKAHEAD(1) <ELSE_DIRECTIVE> Statement() ]
}
1.3 +7 -5 jakarta-velocity/src/java/org/apache/velocity/parser/ParserTreeConstants.java
Index: ParserTreeConstants.java
===================================================================
RCS file: /home/cvs/jakarta-velocity/src/java/org/apache/velocity/parser/ParserTreeConstants.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ParserTreeConstants.java 2000/08/29 06:48:25 1.2
+++ ParserTreeConstants.java 2000/08/30 00:37:13 1.3
@@ -15,11 +15,12 @@
public int JJTEXPRESSION = 8;
public int JJTBLOCK = 9;
public int JJTIFSTATEMENT = 10;
- public int JJTFOREACHSTATEMENT = 11;
- public int JJTSETSTATEMENT = 12;
- public int JJTUSESTATEMENT = 13;
- public int JJTPARAMSTATEMENT = 14;
- public int JJTTEXT = 15;
+ public int JJTELSEIFSTATEMENT = 11;
+ public int JJTFOREACHSTATEMENT = 12;
+ public int JJTSETSTATEMENT = 13;
+ public int JJTUSESTATEMENT = 14;
+ public int JJTPARAMSTATEMENT = 15;
+ public int JJTTEXT = 16;
public String[] jjtNodeName = {
@@ -34,6 +35,7 @@
"Expression",
"Block",
"IfStatement",
+ "ElseIfStatement",
"ForeachStatement",
"SetStatement",
"UseStatement",
1.3 +1 -0 jakarta-velocity/src/java/org/apache/velocity/parser/ParserVisitor.java
Index: ParserVisitor.java
===================================================================
RCS file: /home/cvs/jakarta-velocity/src/java/org/apache/velocity/parser/ParserVisitor.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ParserVisitor.java 2000/08/29 06:48:25 1.2
+++ ParserVisitor.java 2000/08/30 00:37:13 1.3
@@ -15,6 +15,7 @@
public Object visit(ASTExpression node, Object data);
public Object visit(ASTBlock node, Object data);
public Object visit(ASTIfStatement node, Object data);
+ public Object visit(ASTElseIfStatement node, Object data);
public Object visit(ASTForeachStatement node, Object data);
public Object visit(ASTSetStatement node, Object data);
public Object visit(ASTUseStatement node, Object data);
1.2 +3 -1 jakarta-velocity/src/java/org/apache/velocity/parser/SimpleNode.java
Index: SimpleNode.java
===================================================================
RCS file: /home/cvs/jakarta-velocity/src/java/org/apache/velocity/parser/SimpleNode.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SimpleNode.java 2000/08/24 21:42:48 1.1
+++ SimpleNode.java 2000/08/30 00:37:13 1.2
@@ -7,7 +7,9 @@
protected Node[] children;
protected int id;
protected Parser parser;
-
+
+ public boolean state;
+
/* Added */
protected Token first, last;