jvanzyl 00/10/11 07:46:28
Modified: src/java/org/apache/velocity/runtime/parser Parser.java
Parser.jj Parser.jjt ParserConstants.java
ParserTokenManager.java
Log:
- updating parser with geirs great work on the grammar! all parsing
problems appear to be fixed, everything passes the testbed.
Revision Changes Path
1.5 +367 -338
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.java
Index: Parser.java
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Parser.java 2000/10/09 15:06:31 1.4
+++ Parser.java 2000/10/11 14:46:24 1.5
@@ -16,7 +16,8 @@
* what controls the generation of this class.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
- * @version $Id: Parser.java,v 1.4 2000/10/09 15:06:31 jvanzyl Exp $
+ * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
+ * @version $Id: Parser.java,v 1.5 2000/10/11 14:46:24 jvanzyl Exp $
*/
public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants
{/*@bgen(jjtree)*/
protected JJTParserState jjtree = new JJTParserState();
@@ -53,6 +54,7 @@
*/
public SimpleNode parse(InputStream stream) throws ParseException
{
+ token_source.clearStateVars();
ReInit(stream);
return process();
}
@@ -93,20 +95,23 @@
label_1:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LPAREN:
+ case RPAREN:
case ESCAPE_SEQUENCE:
case TEXT:
- case NUMBER_LITERAL:
case SINGLE_LINE_COMMENT:
case FORMAL_COMMENT:
case MULTI_LINE_COMMENT:
+ case STRING_LITERAL:
case INCLUDE_DIRECTIVE:
case IF_DIRECTIVE:
case SET_DIRECTIVE:
case STOP_DIRECTIVE:
+ case NUMBER_LITERAL:
case WORD:
case IDENTIFIER:
- case DOT:
case SHORTHAND:
+ case DOT:
case LCURLY:
;
break;
@@ -157,12 +162,6 @@
*/
final public void Statement() throws ParseException {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case ESCAPE_SEQUENCE:
- case TEXT:
- case NUMBER_LITERAL:
- case DOT:
- Text();
- break;
case IF_DIRECTIVE:
IfStatement();
break;
@@ -188,6 +187,15 @@
case WORD:
Directive();
break;
+ case LPAREN:
+ case RPAREN:
+ case ESCAPE_SEQUENCE:
+ case TEXT:
+ case STRING_LITERAL:
+ case NUMBER_LITERAL:
+ case DOT:
+ Text();
+ break;
default:
jj_la1[1] = jj_gen;
jj_consume_token(-1);
@@ -328,7 +336,7 @@
if (d == null)
{
- token_source.SwitchTo(DEFAULT);
+ token_source.stateStackPop();
token_source.inDirective = false;
{if (true) return jjtn000;}
}
@@ -362,20 +370,23 @@
while (true) {
Statement();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LPAREN:
+ case RPAREN:
case ESCAPE_SEQUENCE:
case TEXT:
- case NUMBER_LITERAL:
case SINGLE_LINE_COMMENT:
case FORMAL_COMMENT:
case MULTI_LINE_COMMENT:
+ case STRING_LITERAL:
case INCLUDE_DIRECTIVE:
case IF_DIRECTIVE:
case SET_DIRECTIVE:
case STOP_DIRECTIVE:
+ case NUMBER_LITERAL:
case WORD:
case IDENTIFIER:
- case DOT:
case SHORTHAND:
+ case DOT:
case LCURLY:
;
break;
@@ -706,9 +717,18 @@
case DOT:
jj_consume_token(DOT);
break;
+ case RPAREN:
+ jj_consume_token(RPAREN);
+ break;
+ case LPAREN:
+ jj_consume_token(LPAREN);
+ break;
case NUMBER_LITERAL:
jj_consume_token(NUMBER_LITERAL);
break;
+ case STRING_LITERAL:
+ jj_consume_token(STRING_LITERAL);
+ break;
case ESCAPE_SEQUENCE:
t = jj_consume_token(ESCAPE_SEQUENCE);
jjtree.closeNodeScope(jjtn000, true);
@@ -750,20 +770,23 @@
while (true) {
Statement();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LPAREN:
+ case RPAREN:
case ESCAPE_SEQUENCE:
case TEXT:
- case NUMBER_LITERAL:
case SINGLE_LINE_COMMENT:
case FORMAL_COMMENT:
case MULTI_LINE_COMMENT:
+ case STRING_LITERAL:
case INCLUDE_DIRECTIVE:
case IF_DIRECTIVE:
case SET_DIRECTIVE:
case STOP_DIRECTIVE:
+ case NUMBER_LITERAL:
case WORD:
case IDENTIFIER:
- case DOT:
case SHORTHAND:
+ case DOT:
case LCURLY:
;
break;
@@ -820,23 +843,23 @@
}
jj_consume_token(END);
} 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);
+ }
}
}
@@ -855,20 +878,23 @@
while (true) {
Statement();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LPAREN:
+ case RPAREN:
case ESCAPE_SEQUENCE:
case TEXT:
- case NUMBER_LITERAL:
case SINGLE_LINE_COMMENT:
case FORMAL_COMMENT:
case MULTI_LINE_COMMENT:
+ case STRING_LITERAL:
case INCLUDE_DIRECTIVE:
case IF_DIRECTIVE:
case SET_DIRECTIVE:
case STOP_DIRECTIVE:
+ case NUMBER_LITERAL:
case WORD:
case IDENTIFIER:
- case DOT:
case SHORTHAND:
+ case DOT:
case LCURLY:
;
break;
@@ -935,20 +961,23 @@
while (true) {
Statement();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LPAREN:
+ case RPAREN:
case ESCAPE_SEQUENCE:
case TEXT:
- case NUMBER_LITERAL:
case SINGLE_LINE_COMMENT:
case FORMAL_COMMENT:
case MULTI_LINE_COMMENT:
+ case STRING_LITERAL:
case INCLUDE_DIRECTIVE:
case IF_DIRECTIVE:
case SET_DIRECTIVE:
case STOP_DIRECTIVE:
+ case NUMBER_LITERAL:
case WORD:
case IDENTIFIER:
- case DOT:
case SHORTHAND:
+ case DOT:
case LCURLY:
;
break;
@@ -1066,13 +1095,13 @@
Assignment();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
- case LPAREN:
case LBRACKET:
+ case LPAREN:
case STRING_LITERAL:
- case NUMBER_LITERAL:
case TRUE:
case FALSE:
case LOGICAL_NOT:
+ case NUMBER_LITERAL:
case IDENTIFIER:
case SHORTHAND:
case LCURLY:
@@ -1632,12 +1661,12 @@
}
}
break;
- case LPAREN:
case LBRACKET:
+ case LPAREN:
case STRING_LITERAL:
- case NUMBER_LITERAL:
case TRUE:
case FALSE:
+ case NUMBER_LITERAL:
case IDENTIFIER:
case SHORTHAND:
case LCURLY:
@@ -1705,589 +1734,589 @@
return retval;
}
- final private boolean jj_3_1() {
- if (jj_scan_token(DOT)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_2()) {
- jj_scanpos = xsp;
- if (jj_3R_17()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- xsp = jj_scanpos;
- if (jj_3R_48()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_44() {
+ final private boolean jj_3R_48() {
if (jj_scan_token(RCURLY)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_43() {
- if (jj_scan_token(LCURLY)) return true;
+ final private boolean jj_3R_72() {
+ if (jj_scan_token(MINUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_42() {
- if (jj_scan_token(SHORTHAND)) return true;
+ if (jj_3R_63()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_30() {
- if (jj_scan_token(STRING_LITERAL)) return true;
+ final private boolean jj_3R_63() {
+ if (jj_3R_69()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_32() {
Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_42()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- xsp = jj_scanpos;
- if (jj_3R_43()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(IDENTIFIER)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- xsp = jj_scanpos;
- if (jj_3R_44()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
while (true) {
xsp = jj_scanpos;
- if (jj_3_1()) { jj_scanpos = xsp; break; }
+ if (jj_3R_70()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
- final private boolean jj_3R_49() {
- if (jj_scan_token(COMMA)) return true;
+ final private boolean jj_3R_33() {
+ if (jj_scan_token(LBRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_29()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_45()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(RBRACKET)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_31() {
- if (jj_scan_token(NUMBER_LITERAL)) return true;
+ final private boolean jj_3R_71() {
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_63()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_18() {
- if (jj_3R_20()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(LPAREN)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ final private boolean jj_3R_64() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_21()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(RPAREN)) return true;
+ if (jj_3R_71()) {
+ jj_scanpos = xsp;
+ if (jj_3R_72()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_28() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_36()) return true;
+ final private boolean jj_3R_68() {
+ if (jj_scan_token(LOGICAL_GE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(RPAREN)) return true;
+ if (jj_3R_59()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_27() {
- if (jj_3R_35()) return true;
+ final private boolean jj_3R_59() {
+ if (jj_3R_63()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_64()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
return false;
}
- final private boolean jj_3R_26() {
- if (jj_3R_34()) return true;
+ final private boolean jj_3R_67() {
+ if (jj_scan_token(LOGICAL_LE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_59()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_25() {
- if (jj_3R_33()) return true;
+ final private boolean jj_3R_66() {
+ if (jj_scan_token(LOGICAL_GT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_59()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_24() {
- if (jj_3R_32()) return true;
+ final private boolean jj_3R_65() {
+ if (jj_scan_token(LOGICAL_LT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_59()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_41() {
- if (jj_3R_32()) return true;
+ final private boolean jj_3R_60() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_65()) {
+ jj_scanpos = xsp;
+ if (jj_3R_66()) {
+ jj_scanpos = xsp;
+ if (jj_3R_67()) {
+ jj_scanpos = xsp;
+ if (jj_3R_68()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_23() {
- if (jj_3R_31()) return true;
+ final private boolean jj_3R_17() {
+ if (jj_3R_20()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_40() {
- if (jj_3R_35()) return true;
+ final private boolean jj_3R_62() {
+ if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_57()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_45() {
- if (jj_3R_29()) return true;
+ final private boolean jj_3R_57() {
+ if (jj_3R_59()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_49()) { jj_scanpos = xsp; break; }
+ if (jj_3R_60()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
- final private boolean jj_3R_22() {
- if (jj_3R_30()) return true;
+ final private boolean jj_3R_61() {
+ if (jj_scan_token(LOGICAL_EQUALS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_57()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_19() {
+ final private boolean jj_3R_58() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_22()) {
- jj_scanpos = xsp;
- if (jj_3R_23()) {
- jj_scanpos = xsp;
- if (jj_3R_24()) {
- jj_scanpos = xsp;
- if (jj_3R_25()) {
- jj_scanpos = xsp;
- if (jj_3R_26()) {
- jj_scanpos = xsp;
- if (jj_3R_27()) {
+ if (jj_3R_61()) {
jj_scanpos = xsp;
- if (jj_3R_28()) return true;
+ if (jj_3R_62()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_39() {
- if (jj_3R_34()) return true;
+ final private boolean jj_3R_54() {
+ if (jj_3R_57()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_58()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
return false;
}
- final private boolean jj_3R_38() {
- if (jj_3R_33()) return true;
+ final private boolean jj_3R_56() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_29()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_29() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_37()) {
- jj_scanpos = xsp;
- if (jj_3R_38()) {
- jj_scanpos = xsp;
- if (jj_3R_39()) {
- jj_scanpos = xsp;
- if (jj_3R_40()) {
- jj_scanpos = xsp;
- if (jj_3R_41()) return true;
+ final private boolean jj_3R_55() {
+ if (jj_scan_token(LOGICAL_AND)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_54()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_37() {
- if (jj_3R_30()) return true;
+ final private boolean jj_3R_52() {
+ if (jj_3R_54()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_55()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
return false;
}
- final private boolean jj_3R_74() {
- if (jj_3R_19()) return true;
+ final private boolean jj_3_2() {
+ if (jj_3R_18()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_77() {
- if (jj_scan_token(MODULUS)) return true;
+ final private boolean jj_3R_53() {
+ if (jj_scan_token(LOGICAL_OR)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_69()) return true;
+ if (jj_3R_52()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_73() {
- if (jj_scan_token(LOGICAL_NOT)) return true;
+ final private boolean jj_3_3() {
+ if (jj_3R_19()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_69()) return true;
+ if (jj_scan_token(EQUALS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_69() {
+ final private boolean jj_3R_51() {
+ if (jj_3R_52()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_73()) {
- jj_scanpos = xsp;
- if (jj_3R_74()) return true;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_53()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_50() {
+ if (jj_3R_19()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(EQUALS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_36()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_76() {
- if (jj_scan_token(DIVIDE)) return true;
+ final private boolean jj_3R_21() {
+ if (jj_3R_29()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_69()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_56()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_20() {
+ if (jj_scan_token(IDENTIFIER)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_75() {
- if (jj_scan_token(MULTIPLY)) return true;
+ final private boolean jj_3R_35() {
+ if (jj_scan_token(FALSE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_69()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_47() {
+ if (jj_3R_51()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_70() {
+ final private boolean jj_3R_36() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_75()) {
- jj_scanpos = xsp;
- if (jj_3R_76()) {
+ if (jj_3R_46()) {
jj_scanpos = xsp;
- if (jj_3R_77()) return true;
+ if (jj_3R_47()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_48() {
- if (jj_scan_token(RCURLY)) return true;
+ final private boolean jj_3R_46() {
+ if (jj_3R_50()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_33() {
- if (jj_scan_token(LBRACKET)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_45()) jj_scanpos = xsp;
- else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(RBRACKET)) return true;
+ final private boolean jj_3R_34() {
+ if (jj_scan_token(TRUE)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_72() {
- if (jj_scan_token(MINUS)) return true;
+ final private boolean jj_3_1() {
+ if (jj_scan_token(DOT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_63()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_2()) {
+ jj_scanpos = xsp;
+ if (jj_3R_17()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ xsp = jj_scanpos;
+ if (jj_3R_48()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_63() {
- if (jj_3R_69()) return true;
+ final private boolean jj_3R_44() {
+ if (jj_scan_token(RCURLY)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_70()) { jj_scanpos = xsp; break; }
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- }
return false;
}
- final private boolean jj_3R_71() {
- if (jj_scan_token(PLUS)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_63()) return true;
+ final private boolean jj_3R_43() {
+ if (jj_scan_token(LCURLY)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_64() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_71()) {
- jj_scanpos = xsp;
- if (jj_3R_72()) return true;
+ final private boolean jj_3R_42() {
+ if (jj_scan_token(SHORTHAND)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_68() {
- if (jj_scan_token(LOGICAL_GE)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_59()) return true;
+ final private boolean jj_3R_30() {
+ if (jj_scan_token(STRING_LITERAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_59() {
- if (jj_3R_63()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ final private boolean jj_3R_32() {
Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_42()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ xsp = jj_scanpos;
+ if (jj_3R_43()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ xsp = jj_scanpos;
+ if (jj_3R_44()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_64()) { jj_scanpos = xsp; break; }
+ if (jj_3_1()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
- final private boolean jj_3R_67() {
- if (jj_scan_token(LOGICAL_LE)) return true;
+ final private boolean jj_3R_49() {
+ if (jj_scan_token(COMMA)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_59()) return true;
+ if (jj_3R_29()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_66() {
- if (jj_scan_token(LOGICAL_GT)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_59()) return true;
+ final private boolean jj_3R_31() {
+ if (jj_scan_token(NUMBER_LITERAL)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_65() {
- if (jj_scan_token(LOGICAL_LT)) return true;
+ final private boolean jj_3R_18() {
+ if (jj_3R_20()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_59()) return true;
+ if (jj_scan_token(LPAREN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_60() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_65()) {
- jj_scanpos = xsp;
- if (jj_3R_66()) {
- jj_scanpos = xsp;
- if (jj_3R_67()) {
- jj_scanpos = xsp;
- if (jj_3R_68()) return true;
+ if (jj_3R_21()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(RPAREN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_17() {
- if (jj_3R_20()) return true;
+ final private boolean jj_3R_28() {
+ if (jj_scan_token(LPAREN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_36()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(RPAREN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_62() {
- if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_57()) return true;
+ final private boolean jj_3R_27() {
+ if (jj_3R_35()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_57() {
- if (jj_3R_59()) return true;
+ final private boolean jj_3R_26() {
+ if (jj_3R_34()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_60()) { jj_scanpos = xsp; break; }
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- }
return false;
}
- final private boolean jj_3R_61() {
- if (jj_scan_token(LOGICAL_EQUALS)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_57()) return true;
+ final private boolean jj_3R_25() {
+ if (jj_3R_33()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_58() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_61()) {
- jj_scanpos = xsp;
- if (jj_3R_62()) return true;
+ final private boolean jj_3R_24() {
+ if (jj_3R_32()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_54() {
- if (jj_3R_57()) return true;
+ final private boolean jj_3R_23() {
+ if (jj_3R_31()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_58()) { jj_scanpos = xsp; break; }
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- }
return false;
}
- final private boolean jj_3R_56() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_29()) return true;
+ final private boolean jj_3R_22() {
+ if (jj_3R_30()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_55() {
- if (jj_scan_token(LOGICAL_AND)) return true;
+ final private boolean jj_3R_19() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_22()) {
+ jj_scanpos = xsp;
+ if (jj_3R_23()) {
+ jj_scanpos = xsp;
+ if (jj_3R_24()) {
+ jj_scanpos = xsp;
+ if (jj_3R_25()) {
+ jj_scanpos = xsp;
+ if (jj_3R_26()) {
+ jj_scanpos = xsp;
+ if (jj_3R_27()) {
+ jj_scanpos = xsp;
+ if (jj_3R_28()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_54()) return true;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ final private boolean jj_3R_41() {
+ if (jj_3R_32()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3_2() {
- if (jj_3R_18()) return true;
+ final private boolean jj_3R_40() {
+ if (jj_3R_35()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_52() {
- if (jj_3R_54()) return true;
+ final private boolean jj_3R_45() {
+ if (jj_3R_29()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_55()) { jj_scanpos = xsp; break; }
+ if (jj_3R_49()) { jj_scanpos = xsp; break; }
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
}
return false;
}
- final private boolean jj_3R_53() {
- if (jj_scan_token(LOGICAL_OR)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_52()) return true;
+ final private boolean jj_3R_39() {
+ if (jj_3R_34()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3_3() {
+ final private boolean jj_3R_74() {
if (jj_3R_19()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(EQUALS)) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_51() {
- if (jj_3R_52()) return true;
+ final private boolean jj_3R_38() {
+ if (jj_3R_33()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_53()) { jj_scanpos = xsp; break; }
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- }
return false;
}
- final private boolean jj_3R_21() {
- if (jj_3R_29()) return true;
+ final private boolean jj_3R_77() {
+ if (jj_scan_token(MODULUS)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_56()) { jj_scanpos = xsp; break; }
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- }
+ if (jj_3R_69()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_50() {
- if (jj_3R_19()) return true;
+ final private boolean jj_3R_73() {
+ if (jj_scan_token(LOGICAL_NOT)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_scan_token(EQUALS)) return true;
+ if (jj_3R_69()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- if (jj_3R_36()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_69() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_73()) {
+ jj_scanpos = xsp;
+ if (jj_3R_74()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_20() {
- if (jj_scan_token(IDENTIFIER)) return true;
+ final private boolean jj_3R_29() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_37()) {
+ jj_scanpos = xsp;
+ if (jj_3R_38()) {
+ jj_scanpos = xsp;
+ if (jj_3R_39()) {
+ jj_scanpos = xsp;
+ if (jj_3R_40()) {
+ jj_scanpos = xsp;
+ if (jj_3R_41()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_35() {
- if (jj_scan_token(FALSE)) return true;
+ final private boolean jj_3R_37() {
+ if (jj_3R_30()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_34() {
- if (jj_scan_token(TRUE)) return true;
+ final private boolean jj_3R_76() {
+ if (jj_scan_token(DIVIDE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_69()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_47() {
- if (jj_3R_51()) return true;
+ final private boolean jj_3R_75() {
+ if (jj_scan_token(MULTIPLY)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_69()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- final private boolean jj_3R_36() {
+ final private boolean jj_3R_70() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_46()) {
+ if (jj_3R_75()) {
jj_scanpos = xsp;
- if (jj_3R_47()) return true;
+ if (jj_3R_76()) {
+ jj_scanpos = xsp;
+ if (jj_3R_77()) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
} else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
- return false;
- }
-
- final private boolean jj_3R_46() {
- if (jj_3R_50()) return true;
- if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
@@ -2301,8 +2330,8 @@
private boolean jj_semLA;
private int jj_gen;
final private int[] jj_la1 = new int[36];
- final private int[] jj_la1_0 =
{0x380206,0x380206,0x380000,0x2a0,0x2a0,0x380206,0x400,0x18a0,0x18a0,0x400,0x18a0,0x0,0x0,0x0,0x0,0x0,0x206,0x380206,0x0,0x0,0x0,0x380206,0x380206,0x1aa8,0x0,0x80000000,0x0,0x0,0x0,0x0,0xc000000,0xc000000,0x70000000,0x70000000,0x1aa8,0x1aa8,};
- final private int[] jj_la1_1 =
{0xf16600,0xf16600,0x0,0xd10000,0xd10000,0xf16600,0x0,0xd00000,0xd00000,0x0,0xd00000,0x400000,0x800000,0x1000000,0x100000,0x1000000,0x200000,0xf16600,0x800,0x800,0x1000,0xf16600,0xf16600,0xd00080,0x1,0x0,0x60,0x60,0x1e,0x1e,0x0,0x0,0x0,0x0,0xd00080,0xd00000,};
+ final private int[] jj_la1_0 =
{0x8e0f0,0x8e0f0,0xe000,0x80002,0x80002,0x8e0f0,0x8,0x380002,0x380002,0x8,0x380002,0x0,0x0,0x0,0x0,0x0,0x800f0,0x8e0f0,0x0,0x0,0x0,0x8e0f0,0x8e0f0,0x380012,0x20000000,0x10000000,0x0,0x0,0xc0000000,0xc0000000,0x1800000,0x1800000,0xe000000,0xe000000,0x380012,0x380012,};
+ final private int[] jj_la1_1 =
{0xf15980,0xf15980,0x0,0xb14000,0xb14000,0xf15980,0x0,0xb00000,0xb00000,0x0,0xb00000,0x200000,0x800000,0x1000000,0x100000,0x1000000,0x404000,0xf15980,0x200,0x200,0x400,0xf15980,0xf15980,0xb04010,0x0,0x0,0xc,0xc,0x3,0x3,0x0,0x0,0x0,0x0,0xb04010,0xb04000,};
final private JJCalls[] jj_2_rtns = new JJCalls[3];
private boolean jj_rescan = false;
private int jj_gc = 0;
1.5 +317 -94
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jj
Index: Parser.jj
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jj,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Parser.jj 2000/10/09 15:06:31 1.4
+++ Parser.jj 2000/10/11 14:46:25 1.5
@@ -96,7 +96,8 @@
* what controls the generation of this class.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
- * @version $Id: Parser.jj,v 1.4 2000/10/09 15:06:31 jvanzyl Exp $
+ * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
+ * @version $Id: Parser.jj,v 1.5 2000/10/11 14:46:25 jvanzyl Exp $
*/
public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants/*@egen*/
{/*@bgen(jjtree)*/
@@ -137,7 +138,8 @@
*/
public SimpleNode parse(InputStream stream) throws ParseException
{
- ReInit(stream);
+ token_source.clearStateVars();
+ ReInit(stream);
return process();
}
@@ -186,6 +188,12 @@
private int lparen = 0;
private int rparen = 0;
+ /*
+ * gmj : make sure this is reset before each parse
+ */
+ Stack stateStack = new Stack();
+ public boolean bDebugPrint_ = false;
+
private boolean inReference;
public boolean inDirective;
private boolean inComment;
@@ -260,59 +268,184 @@
t.specialToken = new_t.specialToken;
}
}
+
+ /**
+ * pushes the current state onto the 'state stack',
+ * and maintains the parens counts
+ * public because we need it in PD & VM handling
+ *
+ * @return boolean : success. It can fail if the state machine
+ * gets messed up.
+ */
+ public boolean stateStackPop()
+ {
+
+ Hashtable hStack;
+
+ try
+ {
+ hStack = (Hashtable) stateStack.pop();
+ }
+ catch( EmptyStackException e)
+ {
+ lparen=0;
+ SwitchTo(DEFAULT);
+ return false;
+ }
+
+ if( bDebugPrint_ )
+ System.out.println(" stack pop (" + stateStack.size() + ") : lparen=" +
( (Integer) hStack.get("lparen")).intValue()
+ + " newstate=" + ( (Integer) hStack.get("lexstate")).intValue() );
+
+ lparen = ( (Integer) hStack.get("lparen")).intValue();
+ rparen = ( (Integer) hStack.get("rparen")).intValue();
+ SwitchTo( ( (Integer) hStack.get("lexstate")).intValue() );
+
+ return true;
+ }
+
+ /**
+ * pops a state off the stack, and restores paren counts
+ *
+ * @return boolean : success of operation
+ */
+ public boolean stateStackPush()
+ {
+ if( bDebugPrint_ )
+ System.out.println(" (" + stateStack.size() + ") pushing cur state : "
+ curLexState );
+
+ Hashtable hStack = new Hashtable();
+ hStack.put("lexstate", new Integer( curLexState ) );
+ hStack.put("lparen", new Integer( lparen ));
+ hStack.put("rparen", new Integer( rparen ));
+ lparen = 0;
+
+ stateStack.push( hStack );
+
+ return true;
+ }
+
+ /**
+ * Clears all state variables, resets to
+ * start values, clears stateStack. Call
+ * before parsing.
+ * @return void
+ */
+ public void clearStateVars()
+ {
+ stateStack.clear();
+
+ lparen = 0;
+ rparen = 0;
+ inReference = false;
+ inDirective = false;
+ inComment = false;
+ inSet = false;
+
+ return;
+ }
}
/* ------------------------------------------------------------------------
*
* Tokens
*
+ * Note : we now have another state, REFMODIFIER. This is sort of a
+ * type of REFERENCE state, simply use to use the DIRECTIVE token
+ * set when we are processing a $foo.bar() construct
+ *
* ------------------------------------------------------------------------- */
-TOKEN :
+<DIRECTIVE,REFMODIFIER,REFMOD2>
+TOKEN:
+{
+ <LBRACKET: "[">
+| <RBRACKET: "]">
+}
+
+<DIRECTIVE,REFMOD2>
+TOKEN:
{
- <ESCAPE_SEQUENCE: "\\" ~[] >
-| <TEXT: (~["$", "#", "\\"])+ >
-}
+ <COMMA:",">
+}
-<REFERENCE,DIRECTIVE>
-TOKEN :
+
+<DIRECTIVE,REFMODIFIER,REFMOD2>
+TOKEN:
{
- <LPAREN: "(" >
- {
- lparen++;
+ <LPAREN: "(">
+ {
+ if (!inComment)
+ lparen++;
+
+ /*
+ * if we have seen the dot, then move to REFMOD2 -> Modifier()
+ */
+
+ if (curLexState == REFMODIFIER )
+ SwitchTo( REFMOD2 );
+
}
-| <RPAREN: ")" >
+| <RPAREN: ")">
{
- rparen++;
+ /*
+ * Ultimately, we want to drop down to the state below the one that has an
open (
+ * if we hit bottom (DEFAULT), that's fine. It's just text schmoo.
+ *
+ */
- if (lparen == rparen)
- {
- SwitchTo(DEFAULT);
- inDirective = false;
- }
- }
+
+ boolean bClosed = false;
-| <LBRACKET: "[">
-| <RBRACKET: "]">
+ if (inComment)
+ bClosed = true;
-| <STRING_LITERAL: ( "\"" ( ~["\"","\n","\r"] )* "\"" ) >
- {
- if (incMode)
+ while( !bClosed)
{
- matchedToken.image = stripQuotes(image.toString());
- pushFile(matchedToken.image);
+ /*
+ * look at current state. If we haven't seen a lparen in this state
+ * then we drop a state, because this lparen clearly closes our state
+ */
+
+ if( lparen > 0)
+ {
+ /*
+ * if rparen + 1 == lparen, then this state is closed. Otherwise,
increment
+ * and keep parsing
+ */
+
+ if( lparen == rparen + 1)
+ {
+ stateStackPop();
+ }
+ else
+ {
+ rparen++;
+ }
+
+ bClosed = true;
+ }
+ else
+ {
+ /*
+ * now, drop a state
+ */
+
+ if(!stateStackPop())
+ break;
+ }
}
- incMode = false;
- }
-| <#DIGIT: [ "0"-"9" ] >
-| <NUMBER_LITERAL: (<DIGIT>)+ >
-| <COMMA: ",">
-| <TRUE: "true">
-| <FALSE: "false">
-| <EQUALS: "=" >
+ }
}
+
+TOKEN :
+{
+ <ESCAPE_SEQUENCE: "\\" ~[] >
+| <TEXT: (~["$", "#", "\\"])+ >
+}
+
<*>
MORE :
{
@@ -321,26 +454,49 @@
if (! inComment)
{
inReference = true;
+
+ if ( bDebugPrint_ )
+ System.out.print( "$ : going to " + REFERENCE );
+
+ stateStackPush();
SwitchTo(REFERENCE);
}
}
+
| "##"
- { inComment = true; }
- : IN_SINGLE_LINE_COMMENT
+ {
+ inComment = true;
+ stateStackPush();
+ SwitchTo(IN_SINGLE_LINE_COMMENT);
+ }
| <"#**" ~["#"]>
- { input_stream.backup(1); inComment = true; }
- : IN_FORMAL_COMMENT
+ {
+ input_stream.backup(1);
+ inComment = true;
+ stateStackPush();
+ SwitchTo( IN_FORMAL_COMMENT);
+ // was : IN_FORMAL_COMMENT
+ }
| "#*"
- { inComment=true; }
- : IN_MULTI_LINE_COMMENT
+ {
+ inComment=true;
+ stateStackPush();
+ SwitchTo( IN_MULTI_LINE_COMMENT );
+ }
+
| <HASH : "#">
- {
+ {
if (! inComment)
{
inDirective = true;
+
+ if ( bDebugPrint_ )
+ System.out.print("# : going to " + DIRECTIVE );
+
+ stateStackPush();
SwitchTo(DIRECTIVE);
}
}
@@ -356,24 +512,34 @@
TOKEN :
{
<SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n" >
- { inComment = false; }
- : DEFAULT
+ {
+ inComment = false;
+ stateStackPop();
+ // was :DEFAULT
+ }
+
}
<IN_FORMAL_COMMENT>
TOKEN :
{
<FORMAL_COMMENT: "*#" >
- { inComment = false; }
- : DEFAULT
+ {
+ inComment = false;
+ stateStackPop();
+ // was :DEFAULT
+ }
}
<IN_MULTI_LINE_COMMENT>
TOKEN :
{
<MULTI_LINE_COMMENT: "*#" >
- { inComment = false; }
- : DEFAULT
+ {
+ inComment = false;
+ stateStackPop();
+ // was :DEFAULT
+ }
}
<IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT>
@@ -388,7 +554,7 @@
//
// -----------------------------------------------------------------------
-<DIRECTIVE>
+<DIRECTIVE,REFMOD2>
SKIP:
{
" "
@@ -397,18 +563,41 @@
//| "\r"
}
+<REFERENCE,DIRECTIVE,REFMODIFIER,REFMOD2>
+TOKEN :
+{
+
+ <STRING_LITERAL: ( "\"" ( ~["\"","\n","\r"] )* "\"" ) >
+ {
+ if (incMode)
+ {
+ matchedToken.image = stripQuotes(image.toString());
+ pushFile(matchedToken.image);
+ }
+ incMode = false;
+
+ if (lparen == 0)
+ SwitchTo(DEFAULT);
+ }
+
+| <TRUE: "true">
+| <FALSE: "false">
+}
+
<DIRECTIVE>
SPECIAL_TOKEN :
{
<NEWLINE: "\n" | "\r" | "\r\n" >
{
if (inSet)
- {
- SwitchTo(DEFAULT);
- inSet = false;
- inDirective = false;
+ {
+ if ( bDebugPrint_ )
+ System.out.print(" NEWLINE :");
+ stateStackPop();
+ inSet = false;
+ inDirective = false;
}
- }
+ }
}
<DIRECTIVE>
@@ -428,6 +617,7 @@
| <LOGICAL_EQUALS: "==">
| <LOGICAL_NOT_EQUALS: "!=">
| <LOGICAL_NOT: "!">
+| <EQUALS: "=" >
}
<DIRECTIVE>
@@ -436,8 +626,9 @@
<END: "end">
{
inDirective = false;
+ stateStackPop();
+ // was :DEFAULT
}
- : DEFAULT
| <INCLUDE_DIRECTIVE: "include">
{ incMode = true; }
@@ -458,6 +649,8 @@
fileDepth = 0;
}
+| <#DIGIT: [ "0"-"9" ] >
+| <NUMBER_LITERAL: (<DIGIT>)+ >
| <#LETTER: [ "a"-"z" ] >
| <WORD: (<LETTER>)+ >
}
@@ -469,36 +662,63 @@
//
// -----------------------------------------------------------------------
-<REFERENCE>
+<REFERENCE,REFMODIFIER,REFMOD2>
TOKEN :
{
<#ALPHA_CHAR: ["a"-"z", "A"-"Z"] >
| <#ALPHANUM_CHAR: [ "a"-"z", "A"-"Z", "0"-"9" ] >
| <#IDENTIFIER_CHAR: [ "a"-"z", "A"-"Z", "0"-"9", "-", "_" ] >
-| <IDENTIFIER: <ALPHA_CHAR> (<IDENTIFIER_CHAR>)* >
-| <DOT: ".">
+| <IDENTIFIER: <ALPHA_CHAR> (<IDENTIFIER_CHAR>)* >
| <SHORTHAND: "!">
+| <DOT: ".">
+ {
+ if ( bDebugPrint_ )
+ System.out.print("DOT : switching to " + REFMODIFIER);
+ SwitchTo(REFMODIFIER);
+ }
| <LCURLY: "{">
-| <RCURLY: "}"> : DEFAULT
+| <RCURLY: "}">
+ {
+ // was :DEFAULT
+ stateStackPop();
+ }
}
-<REFERENCE>
+<REFERENCE,REFMODIFIER,REFMOD2>
SPECIAL_TOKEN :
{
<REFERENCE_TERMINATOR: ~[] >
- {
- if (inDirective)
- SwitchTo(DIRECTIVE);
- else if (lparen == rparen)
+ {
+ /*
+ * These can terminate a reference, but are needed in subsequent states
+ */
+
+ if (image.toString().equals("="))
{
- lparen = 0;
- rparen = 0;
- inReference = false;
-
- SwitchTo(DEFAULT);
+ input_stream.backup(1);
+ }
+
+ inReference = false;
+
+ if ( bDebugPrint_ )
+ System.out.print("REF_TERM :");
+
+ stateStackPop();
+
+ /*
+ * I removed LPAREN & RPAREN from REFERENCE; as there is no LPAREN,RPAREN
in REF is there is REFMETHOD
+ */
+
+ if (curLexState != DEFAULT && ( image.toString().equals(")")
+ || image.toString().equals(",")
+ || image.toString().equals("[")
+ || image.toString().equals("]")
+ || image.toString().equals("\n")
+ ) )
+ {
+ input_stream.backup(1);
}
- else
- SwitchTo(REFERENCE);
+
}
}
@@ -564,14 +784,14 @@
void Statement() : {}
{
- Text()
-| IfStatement()
+ IfStatement()
| IncludeStatement()
| StopStatement()
| Reference()
| Comment()
| SetDirective()
| Directive()
+| Text()
}
void Comment() : {/*@bgen(jjtree) Comment */
@@ -699,7 +919,7 @@
if (d == null)
{
- token_source.SwitchTo(DEFAULT);
+ token_source.stateStackPop();
token_source.inDirective = false;
return jjtn000;
}
@@ -940,7 +1160,10 @@
/*@egen*/
<TEXT>
| <DOT>
+| <RPAREN>
+| <LPAREN>
| <NUMBER_LITERAL>
+| <STRING_LITERAL>
| t = <ESCAPE_SEQUENCE>/*@bgen(jjtree)*/
{
jjtree.closeNodeScope(jjtn000, true);
@@ -970,9 +1193,9 @@
jjtree.openNodeScope(jjtn000);
/*@egen*/}
{/*@bgen(jjtree) IfStatement */
- try {
+ try {
/*@egen*/
- <IF_DIRECTIVE> <LPAREN> Expression() <RPAREN>/*@bgen(jjtree) Block */
+ <IF_DIRECTIVE> <LPAREN> Expression() <RPAREN>/*@bgen(jjtree) Block */
{
ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
boolean jjtc001 = true;
@@ -1004,25 +1227,25 @@
[ LOOKAHEAD(1) ( ElseIfStatement() )+ ]
[ LOOKAHEAD(1) ElseStatement() ]
<END>/*@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);
- }
- }
+ } 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*/
}
1.5 +297 -74
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jjt
Index: Parser.jjt
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/Parser.jjt,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Parser.jjt 2000/10/09 15:06:32 1.4
+++ Parser.jjt 2000/10/11 14:46:26 1.5
@@ -120,7 +120,8 @@
* what controls the generation of this class.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
- * @version $Id: Parser.jjt,v 1.4 2000/10/09 15:06:32 jvanzyl Exp $
+ * @author <a href="mailto:[EMAIL PROTECTED]">Geir Magnusson Jr.</a>
+ * @version $Id: Parser.jjt,v 1.5 2000/10/11 14:46:26 jvanzyl Exp $
*/
public class Parser
{
@@ -158,7 +159,8 @@
*/
public SimpleNode parse(InputStream stream) throws ParseException
{
- ReInit(stream);
+ token_source.clearStateVars();
+ ReInit(stream);
return process();
}
@@ -207,6 +209,12 @@
private int lparen = 0;
private int rparen = 0;
+ /*
+ * gmj : make sure this is reset before each parse
+ */
+ Stack stateStack = new Stack();
+ public boolean bDebugPrint_ = false;
+
private boolean inReference;
public boolean inDirective;
private boolean inComment;
@@ -281,59 +289,184 @@
t.specialToken = new_t.specialToken;
}
}
+
+ /**
+ * pushes the current state onto the 'state stack',
+ * and maintains the parens counts
+ * public because we need it in PD & VM handling
+ *
+ * @return boolean : success. It can fail if the state machine
+ * gets messed up.
+ */
+ public boolean stateStackPop()
+ {
+
+ Hashtable hStack;
+
+ try
+ {
+ hStack = (Hashtable) stateStack.pop();
+ }
+ catch( EmptyStackException e)
+ {
+ lparen=0;
+ SwitchTo(DEFAULT);
+ return false;
+ }
+
+ if( bDebugPrint_ )
+ System.out.println(" stack pop (" + stateStack.size() + ") : lparen=" +
( (Integer) hStack.get("lparen")).intValue()
+ + " newstate=" + ( (Integer) hStack.get("lexstate")).intValue() );
+
+ lparen = ( (Integer) hStack.get("lparen")).intValue();
+ rparen = ( (Integer) hStack.get("rparen")).intValue();
+ SwitchTo( ( (Integer) hStack.get("lexstate")).intValue() );
+
+ return true;
+ }
+
+ /**
+ * pops a state off the stack, and restores paren counts
+ *
+ * @return boolean : success of operation
+ */
+ public boolean stateStackPush()
+ {
+ if( bDebugPrint_ )
+ System.out.println(" (" + stateStack.size() + ") pushing cur state : "
+ curLexState );
+
+ Hashtable hStack = new Hashtable();
+ hStack.put("lexstate", new Integer( curLexState ) );
+ hStack.put("lparen", new Integer( lparen ));
+ hStack.put("rparen", new Integer( rparen ));
+ lparen = 0;
+
+ stateStack.push( hStack );
+
+ return true;
+ }
+
+ /**
+ * Clears all state variables, resets to
+ * start values, clears stateStack. Call
+ * before parsing.
+ * @return void
+ */
+ public void clearStateVars()
+ {
+ stateStack.clear();
+
+ lparen = 0;
+ rparen = 0;
+ inReference = false;
+ inDirective = false;
+ inComment = false;
+ inSet = false;
+
+ return;
+ }
}
/* ------------------------------------------------------------------------
*
* Tokens
*
+ * Note : we now have another state, REFMODIFIER. This is sort of a
+ * type of REFERENCE state, simply use to use the DIRECTIVE token
+ * set when we are processing a $foo.bar() construct
+ *
* ------------------------------------------------------------------------- */
-TOKEN :
+<DIRECTIVE,REFMODIFIER,REFMOD2>
+TOKEN:
+{
+ <LBRACKET: "[">
+| <RBRACKET: "]">
+}
+
+<DIRECTIVE,REFMOD2>
+TOKEN:
{
- <ESCAPE_SEQUENCE: "\\" ~[] >
-| <TEXT: (~["$", "#", "\\"])+ >
-}
+ <COMMA:",">
+}
-<REFERENCE,DIRECTIVE>
-TOKEN :
+
+<DIRECTIVE,REFMODIFIER,REFMOD2>
+TOKEN:
{
- <LPAREN: "(" >
- {
- lparen++;
+ <LPAREN: "(">
+ {
+ if (!inComment)
+ lparen++;
+
+ /*
+ * if we have seen the dot, then move to REFMOD2 -> Modifier()
+ */
+
+ if (curLexState == REFMODIFIER )
+ SwitchTo( REFMOD2 );
+
}
-| <RPAREN: ")" >
+| <RPAREN: ")">
{
- rparen++;
+ /*
+ * Ultimately, we want to drop down to the state below the one that has an
open (
+ * if we hit bottom (DEFAULT), that's fine. It's just text schmoo.
+ *
+ */
- if (lparen == rparen)
- {
- SwitchTo(DEFAULT);
- inDirective = false;
- }
- }
+
+ boolean bClosed = false;
-| <LBRACKET: "[">
-| <RBRACKET: "]">
+ if (inComment)
+ bClosed = true;
-| <STRING_LITERAL: ( "\"" ( ~["\"","\n","\r"] )* "\"" ) >
- {
- if (incMode)
+ while( !bClosed)
{
- matchedToken.image = stripQuotes(image.toString());
- pushFile(matchedToken.image);
+ /*
+ * look at current state. If we haven't seen a lparen in this state
+ * then we drop a state, because this lparen clearly closes our state
+ */
+
+ if( lparen > 0)
+ {
+ /*
+ * if rparen + 1 == lparen, then this state is closed. Otherwise,
increment
+ * and keep parsing
+ */
+
+ if( lparen == rparen + 1)
+ {
+ stateStackPop();
+ }
+ else
+ {
+ rparen++;
+ }
+
+ bClosed = true;
+ }
+ else
+ {
+ /*
+ * now, drop a state
+ */
+
+ if(!stateStackPop())
+ break;
+ }
}
- incMode = false;
- }
-| <#DIGIT: [ "0"-"9" ] >
-| <NUMBER_LITERAL: (<DIGIT>)+ >
-| <COMMA: ",">
-| <TRUE: "true">
-| <FALSE: "false">
-| <EQUALS: "=" >
+ }
}
+
+TOKEN :
+{
+ <ESCAPE_SEQUENCE: "\\" ~[] >
+| <TEXT: (~["$", "#", "\\"])+ >
+}
+
<*>
MORE :
{
@@ -342,26 +475,49 @@
if (! inComment)
{
inReference = true;
+
+ if ( bDebugPrint_ )
+ System.out.print( "$ : going to " + REFERENCE );
+
+ stateStackPush();
SwitchTo(REFERENCE);
}
}
+
| "##"
- { inComment = true; }
- : IN_SINGLE_LINE_COMMENT
+ {
+ inComment = true;
+ stateStackPush();
+ SwitchTo(IN_SINGLE_LINE_COMMENT);
+ }
| <"#**" ~["#"]>
- { input_stream.backup(1); inComment = true; }
- : IN_FORMAL_COMMENT
+ {
+ input_stream.backup(1);
+ inComment = true;
+ stateStackPush();
+ SwitchTo( IN_FORMAL_COMMENT);
+ // was : IN_FORMAL_COMMENT
+ }
| "#*"
- { inComment=true; }
- : IN_MULTI_LINE_COMMENT
+ {
+ inComment=true;
+ stateStackPush();
+ SwitchTo( IN_MULTI_LINE_COMMENT );
+ }
+
| <HASH : "#">
- {
+ {
if (! inComment)
{
inDirective = true;
+
+ if ( bDebugPrint_ )
+ System.out.print("# : going to " + DIRECTIVE );
+
+ stateStackPush();
SwitchTo(DIRECTIVE);
}
}
@@ -377,24 +533,34 @@
TOKEN :
{
<SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n" >
- { inComment = false; }
- : DEFAULT
+ {
+ inComment = false;
+ stateStackPop();
+ // was :DEFAULT
+ }
+
}
<IN_FORMAL_COMMENT>
TOKEN :
{
<FORMAL_COMMENT: "*#" >
- { inComment = false; }
- : DEFAULT
+ {
+ inComment = false;
+ stateStackPop();
+ // was :DEFAULT
+ }
}
<IN_MULTI_LINE_COMMENT>
TOKEN :
{
<MULTI_LINE_COMMENT: "*#" >
- { inComment = false; }
- : DEFAULT
+ {
+ inComment = false;
+ stateStackPop();
+ // was :DEFAULT
+ }
}
<IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT>
@@ -409,7 +575,7 @@
//
// -----------------------------------------------------------------------
-<DIRECTIVE>
+<DIRECTIVE,REFMOD2>
SKIP:
{
" "
@@ -418,18 +584,41 @@
//| "\r"
}
+<REFERENCE,DIRECTIVE,REFMODIFIER,REFMOD2>
+TOKEN :
+{
+
+ <STRING_LITERAL: ( "\"" ( ~["\"","\n","\r"] )* "\"" ) >
+ {
+ if (incMode)
+ {
+ matchedToken.image = stripQuotes(image.toString());
+ pushFile(matchedToken.image);
+ }
+ incMode = false;
+
+ if (lparen == 0)
+ SwitchTo(DEFAULT);
+ }
+
+| <TRUE: "true">
+| <FALSE: "false">
+}
+
<DIRECTIVE>
SPECIAL_TOKEN :
{
<NEWLINE: "\n" | "\r" | "\r\n" >
{
if (inSet)
- {
- SwitchTo(DEFAULT);
- inSet = false;
- inDirective = false;
+ {
+ if ( bDebugPrint_ )
+ System.out.print(" NEWLINE :");
+ stateStackPop();
+ inSet = false;
+ inDirective = false;
}
- }
+ }
}
<DIRECTIVE>
@@ -449,6 +638,7 @@
| <LOGICAL_EQUALS: "==">
| <LOGICAL_NOT_EQUALS: "!=">
| <LOGICAL_NOT: "!">
+| <EQUALS: "=" >
}
<DIRECTIVE>
@@ -457,8 +647,9 @@
<END: "end">
{
inDirective = false;
+ stateStackPop();
+ // was :DEFAULT
}
- : DEFAULT
| <INCLUDE_DIRECTIVE: "include">
{ incMode = true; }
@@ -479,6 +670,8 @@
fileDepth = 0;
}
+| <#DIGIT: [ "0"-"9" ] >
+| <NUMBER_LITERAL: (<DIGIT>)+ >
| <#LETTER: [ "a"-"z" ] >
| <WORD: (<LETTER>)+ >
}
@@ -490,36 +683,63 @@
//
// -----------------------------------------------------------------------
-<REFERENCE>
+<REFERENCE,REFMODIFIER,REFMOD2>
TOKEN :
{
<#ALPHA_CHAR: ["a"-"z", "A"-"Z"] >
| <#ALPHANUM_CHAR: [ "a"-"z", "A"-"Z", "0"-"9" ] >
| <#IDENTIFIER_CHAR: [ "a"-"z", "A"-"Z", "0"-"9", "-", "_" ] >
-| <IDENTIFIER: <ALPHA_CHAR> (<IDENTIFIER_CHAR>)* >
-| <DOT: ".">
+| <IDENTIFIER: <ALPHA_CHAR> (<IDENTIFIER_CHAR>)* >
| <SHORTHAND: "!">
+| <DOT: ".">
+ {
+ if ( bDebugPrint_ )
+ System.out.print("DOT : switching to " + REFMODIFIER);
+ SwitchTo(REFMODIFIER);
+ }
| <LCURLY: "{">
-| <RCURLY: "}"> : DEFAULT
+| <RCURLY: "}">
+ {
+ // was :DEFAULT
+ stateStackPop();
+ }
}
-<REFERENCE>
+<REFERENCE,REFMODIFIER,REFMOD2>
SPECIAL_TOKEN :
{
<REFERENCE_TERMINATOR: ~[] >
- {
- if (inDirective)
- SwitchTo(DIRECTIVE);
- else if (lparen == rparen)
+ {
+ /*
+ * These can terminate a reference, but are needed in subsequent states
+ */
+
+ if (image.toString().equals("="))
{
- lparen = 0;
- rparen = 0;
- inReference = false;
-
- SwitchTo(DEFAULT);
+ input_stream.backup(1);
+ }
+
+ inReference = false;
+
+ if ( bDebugPrint_ )
+ System.out.print("REF_TERM :");
+
+ stateStackPop();
+
+ /*
+ * I removed LPAREN & RPAREN from REFERENCE; as there is no LPAREN,RPAREN
in REF is there is REFMETHOD
+ */
+
+ if (curLexState != DEFAULT && ( image.toString().equals(")")
+ || image.toString().equals(",")
+ || image.toString().equals("[")
+ || image.toString().equals("]")
+ || image.toString().equals("\n")
+ ) )
+ {
+ input_stream.backup(1);
}
- else
- SwitchTo(REFERENCE);
+
}
}
@@ -554,14 +774,14 @@
void Statement() #void : {}
{
- Text()
-| IfStatement()
+ IfStatement()
| IncludeStatement()
| StopStatement()
| Reference()
| Comment()
| SetDirective()
| Directive()
+| Text()
}
void Comment() : {}
@@ -623,7 +843,7 @@
if (d == null)
{
- token_source.SwitchTo(DEFAULT);
+ token_source.stateStackPop();
token_source.inDirective = false;
return jjtThis;
}
@@ -704,7 +924,10 @@
{
<TEXT>
| <DOT>
+| <RPAREN>
+| <LPAREN>
| <NUMBER_LITERAL>
+| <STRING_LITERAL>
| t = <ESCAPE_SEQUENCE>
{
t.image = t.image.substring(1);
@@ -719,7 +942,7 @@
void IfStatement() : {}
{
- <IF_DIRECTIVE> <LPAREN> Expression() <RPAREN>
+ <IF_DIRECTIVE> <LPAREN> Expression() <RPAREN>
( Statement() )+ #Block
[ LOOKAHEAD(1) ( ElseIfStatement() )+ ]
[ LOOKAHEAD(1) ElseStatement() ]
1.4 +63 -61
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserConstants.java
Index: ParserConstants.java
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserConstants.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ParserConstants.java 2000/10/09 15:06:32 1.3
+++ ParserConstants.java 2000/10/11 14:46:26 1.4
@@ -4,91 +4,90 @@
public interface ParserConstants {
int EOF = 0;
- int ESCAPE_SEQUENCE = 1;
- int TEXT = 2;
- int LPAREN = 3;
- int RPAREN = 4;
- int LBRACKET = 5;
- int RBRACKET = 6;
- int STRING_LITERAL = 7;
- int DIGIT = 8;
- int NUMBER_LITERAL = 9;
- int COMMA = 10;
- int TRUE = 11;
- int FALSE = 12;
- int EQUALS = 13;
- int DOLLAR = 14;
- int HASH = 18;
- int SINGLE_LINE_COMMENT = 19;
- int FORMAL_COMMENT = 20;
- int MULTI_LINE_COMMENT = 21;
- int NEWLINE = 25;
- int MINUS = 26;
- int PLUS = 27;
- int MULTIPLY = 28;
- int DIVIDE = 29;
- int MODULUS = 30;
- int LOGICAL_AND = 31;
- int LOGICAL_OR = 32;
- int LOGICAL_LT = 33;
- int LOGICAL_LE = 34;
- int LOGICAL_GT = 35;
- int LOGICAL_GE = 36;
- int LOGICAL_EQUALS = 37;
- int LOGICAL_NOT_EQUALS = 38;
- int LOGICAL_NOT = 39;
- int END = 40;
- int INCLUDE_DIRECTIVE = 41;
- int IF_DIRECTIVE = 42;
- int ELSEIF_DIRECTIVE = 43;
- int ELSE_DIRECTIVE = 44;
- int SET_DIRECTIVE = 45;
- int STOP_DIRECTIVE = 46;
+ int LBRACKET = 1;
+ int RBRACKET = 2;
+ int COMMA = 3;
+ int LPAREN = 4;
+ int RPAREN = 5;
+ int ESCAPE_SEQUENCE = 6;
+ int TEXT = 7;
+ int DOLLAR = 8;
+ int HASH = 12;
+ int SINGLE_LINE_COMMENT = 13;
+ int FORMAL_COMMENT = 14;
+ int MULTI_LINE_COMMENT = 15;
+ int STRING_LITERAL = 19;
+ int TRUE = 20;
+ int FALSE = 21;
+ int NEWLINE = 22;
+ int MINUS = 23;
+ int PLUS = 24;
+ int MULTIPLY = 25;
+ int DIVIDE = 26;
+ int MODULUS = 27;
+ int LOGICAL_AND = 28;
+ int LOGICAL_OR = 29;
+ int LOGICAL_LT = 30;
+ int LOGICAL_LE = 31;
+ int LOGICAL_GT = 32;
+ int LOGICAL_GE = 33;
+ int LOGICAL_EQUALS = 34;
+ int LOGICAL_NOT_EQUALS = 35;
+ int LOGICAL_NOT = 36;
+ int EQUALS = 37;
+ int END = 38;
+ int INCLUDE_DIRECTIVE = 39;
+ int IF_DIRECTIVE = 40;
+ int ELSEIF_DIRECTIVE = 41;
+ int ELSE_DIRECTIVE = 42;
+ int SET_DIRECTIVE = 43;
+ int STOP_DIRECTIVE = 44;
+ int DIGIT = 45;
+ int NUMBER_LITERAL = 46;
int LETTER = 47;
int WORD = 48;
int ALPHA_CHAR = 49;
int ALPHANUM_CHAR = 50;
int IDENTIFIER_CHAR = 51;
int IDENTIFIER = 52;
- int DOT = 53;
- int SHORTHAND = 54;
+ int SHORTHAND = 53;
+ int DOT = 54;
int LCURLY = 55;
int RCURLY = 56;
int REFERENCE_TERMINATOR = 57;
- int DEFAULT = 0;
- int REFERENCE = 1;
- int DIRECTIVE = 2;
- int IN_MULTI_LINE_COMMENT = 3;
- int IN_FORMAL_COMMENT = 4;
- int IN_SINGLE_LINE_COMMENT = 5;
+ int DIRECTIVE = 0;
+ int REFMODIFIER = 1;
+ int REFMOD2 = 2;
+ int DEFAULT = 3;
+ int REFERENCE = 4;
+ int IN_MULTI_LINE_COMMENT = 5;
+ int IN_FORMAL_COMMENT = 6;
+ int IN_SINGLE_LINE_COMMENT = 7;
String[] tokenImage = {
"<EOF>",
- "<ESCAPE_SEQUENCE>",
- "<TEXT>",
- "\"(\"",
- "\")\"",
"\"[\"",
"\"]\"",
- "<STRING_LITERAL>",
- "<DIGIT>",
- "<NUMBER_LITERAL>",
"\",\"",
- "\"true\"",
- "\"false\"",
- "\"=\"",
+ "\"(\"",
+ "\")\"",
+ "<ESCAPE_SEQUENCE>",
+ "<TEXT>",
"\"$\"",
"\"##\"",
- "<token of kind 16>",
+ "<token of kind 10>",
"\"#*\"",
"\"#\"",
"<SINGLE_LINE_COMMENT>",
"\"*#\"",
"\"*#\"",
- "<token of kind 22>",
+ "<token of kind 16>",
"\" \"",
"\"\\t\"",
+ "<STRING_LITERAL>",
+ "\"true\"",
+ "\"false\"",
"<NEWLINE>",
"\"-\"",
"\"+\"",
@@ -104,6 +103,7 @@
"\"==\"",
"\"!=\"",
"\"!\"",
+ "\"=\"",
"\"end\"",
"\"include\"",
"\"if\"",
@@ -111,14 +111,16 @@
"\"else\"",
"\"set\"",
"\"stop\"",
+ "<DIGIT>",
+ "<NUMBER_LITERAL>",
"<LETTER>",
"<WORD>",
"<ALPHA_CHAR>",
"<ALPHANUM_CHAR>",
"<IDENTIFIER_CHAR>",
"<IDENTIFIER>",
- "\".\"",
"\"!\"",
+ "\".\"",
"\"{\"",
"\"}\"",
"<REFERENCE_TERMINATOR>",
1.4 +1285 -487
jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java
Index: ParserTokenManager.java
===================================================================
RCS file:
/home/cvs/jakarta-velocity/src/java/org/apache/velocity/runtime/parser/ParserTokenManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ParserTokenManager.java 2000/10/09 15:06:32 1.3
+++ ParserTokenManager.java 2000/10/11 14:46:26 1.4
@@ -12,6 +12,12 @@
private int lparen = 0;
private int rparen = 0;
+ /*
+ * gmj : make sure this is reset before each parse
+ */
+ Stack stateStack = new Stack();
+ public boolean bDebugPrint_ = false;
+
private boolean inReference;
public boolean inDirective;
private boolean inComment;
@@ -86,21 +92,97 @@
t.specialToken = new_t.specialToken;
}
}
-private final int jjStopStringLiteralDfa_0(int pos, long active0)
+
+ /**
+ * pushes the current state onto the 'state stack',
+ * and maintains the parens counts
+ * public because we need it in PD & VM handling
+ *
+ * @return boolean : success. It can fail if the state machine
+ * gets messed up.
+ */
+ public boolean stateStackPop()
+ {
+
+ Hashtable hStack;
+
+ try
+ {
+ hStack = (Hashtable) stateStack.pop();
+ }
+ catch( EmptyStackException e)
+ {
+ lparen=0;
+ SwitchTo(DEFAULT);
+ return false;
+ }
+
+ if( bDebugPrint_ )
+ System.out.println(" stack pop (" + stateStack.size() + ") : lparen=" +
( (Integer) hStack.get("lparen")).intValue()
+ + " newstate=" + ( (Integer) hStack.get("lexstate")).intValue() );
+
+ lparen = ( (Integer) hStack.get("lparen")).intValue();
+ rparen = ( (Integer) hStack.get("rparen")).intValue();
+ SwitchTo( ( (Integer) hStack.get("lexstate")).intValue() );
+
+ return true;
+ }
+
+ /**
+ * pops a state off the stack, and restores paren counts
+ *
+ * @return boolean : success of operation
+ */
+ public boolean stateStackPush()
+ {
+ if( bDebugPrint_ )
+ System.out.println(" (" + stateStack.size() + ") pushing cur state : "
+ curLexState );
+
+ Hashtable hStack = new Hashtable();
+ hStack.put("lexstate", new Integer( curLexState ) );
+ hStack.put("lparen", new Integer( lparen ));
+ hStack.put("rparen", new Integer( rparen ));
+ lparen = 0;
+
+ stateStack.push( hStack );
+
+ return true;
+ }
+
+ /**
+ * Clears all state variables, resets to
+ * start values, clears stateStack. Call
+ * before parsing.
+ * @return void
+ */
+ public void clearStateVars()
+ {
+ stateStack.clear();
+
+ lparen = 0;
+ rparen = 0;
+ inReference = false;
+ inDirective = false;
+ inComment = false;
+ inSet = false;
+
+ return;
+ }
+private final int jjStopStringLiteralDfa_3(int pos, long active0)
{
switch (pos)
{
case 0:
- if ((active0 & 0x68000L) != 0L)
+ if ((active0 & 0x1a00L) != 0L)
return 5;
return -1;
default :
return -1;
}
}
-private final int jjStartNfa_0(int pos, long active0)
+private final int jjStartNfa_3(int pos, long active0)
{
- return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
+ return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
}
private final int jjStopAtPos(int pos, int kind)
{
@@ -108,48 +190,48 @@
jjmatchedPos = pos;
return pos + 1;
}
-private final int jjStartNfaWithStates_0(int pos, int kind, int state)
+private final int jjStartNfaWithStates_3(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_0(state, pos + 1);
+ return jjMoveNfa_3(state, pos + 1);
}
-private final int jjMoveStringLiteralDfa0_0()
+private final int jjMoveStringLiteralDfa0_3()
{
switch(curChar)
{
case 35:
- jjmatchedKind = 18;
- return jjMoveStringLiteralDfa1_0(0x28000L);
+ jjmatchedKind = 12;
+ return jjMoveStringLiteralDfa1_3(0xa00L);
case 36:
- return jjStopAtPos(0, 14);
+ return jjStopAtPos(0, 8);
default :
- return jjMoveNfa_0(0, 0);
+ return jjMoveNfa_3(0, 0);
}
}
-private final int jjMoveStringLiteralDfa1_0(long active0)
+private final int jjMoveStringLiteralDfa1_3(long active0)
{
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_0(0, active0);
+ jjStopStringLiteralDfa_3(0, active0);
return 1;
}
switch(curChar)
{
case 35:
- if ((active0 & 0x8000L) != 0L)
- return jjStopAtPos(1, 15);
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(1, 9);
break;
case 42:
- if ((active0 & 0x20000L) != 0L)
- return jjStartNfaWithStates_0(1, 17, 3);
+ if ((active0 & 0x800L) != 0L)
+ return jjStartNfaWithStates_3(1, 11, 3);
break;
default :
break;
}
- return jjStartNfa_0(0, active0);
+ return jjStartNfa_3(0, active0);
}
private final void jjCheckNAdd(int state)
{
@@ -184,7 +266,7 @@
static final long[] jjbitVec0 = {
0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
};
-private final int jjMoveNfa_0(int startState, int curPos)
+private final int jjMoveNfa_3(int startState, int curPos)
{
int[] nextStates;
int startsAt = 0;
@@ -206,22 +288,22 @@
case 0:
if ((0xffffffe7ffffffffL & l) != 0L)
{
- if (kind > 2)
- kind = 2;
+ if (kind > 7)
+ kind = 7;
jjCheckNAdd(2);
}
else if (curChar == 35)
jjstateSet[jjnewStateCnt++] = 5;
break;
case 1:
- if (kind > 1)
- kind = 1;
+ if (kind > 6)
+ kind = 6;
break;
case 2:
if ((0xffffffe7ffffffffL & l) == 0L)
break;
- if (kind > 2)
- kind = 2;
+ if (kind > 7)
+ kind = 7;
jjCheckNAdd(2);
break;
case 3:
@@ -229,8 +311,8 @@
jjstateSet[jjnewStateCnt++] = 4;
break;
case 4:
- if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
- kind = 16;
+ if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
+ kind = 10;
break;
case 5:
if (curChar == 42)
@@ -254,27 +336,27 @@
case 0:
if ((0xffffffffefffffffL & l) != 0L)
{
- if (kind > 2)
- kind = 2;
+ if (kind > 7)
+ kind = 7;
jjCheckNAdd(2);
}
else if (curChar == 92)
jjstateSet[jjnewStateCnt++] = 1;
break;
case 1:
- if (kind > 1)
- kind = 1;
+ if (kind > 6)
+ kind = 6;
break;
case 2:
if ((0xffffffffefffffffL & l) == 0L)
break;
- if (kind > 2)
- kind = 2;
+ if (kind > 7)
+ kind = 7;
jjCheckNAdd(2);
break;
case 4:
- if (kind > 16)
- kind = 16;
+ if (kind > 10)
+ kind = 10;
break;
default : break;
}
@@ -292,17 +374,17 @@
case 2:
if ((jjbitVec0[i2] & l2) == 0L)
break;
- if (kind > 2)
- kind = 2;
+ if (kind > 7)
+ kind = 7;
jjCheckNAdd(2);
break;
case 1:
- if ((jjbitVec0[i2] & l2) != 0L && kind > 1)
- kind = 1;
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 6)
+ kind = 6;
break;
case 4:
- if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
- kind = 16;
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
+ kind = 10;
break;
default : break;
}
@@ -321,74 +403,191 @@
catch(java.io.IOException e) { return curPos; }
}
}
-private final int jjStopStringLiteralDfa_3(int pos, long active0)
+private final int jjStopStringLiteralDfa_2(int pos, long active0)
{
switch (pos)
{
case 0:
- if ((active0 & 0x68000L) != 0L)
+ if ((active0 & 0x300000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ return 8;
+ }
+ if ((active0 & 0x1a00L) != 0L)
return 2;
return -1;
+ case 1:
+ if ((active0 & 0x800L) != 0L)
+ return 0;
+ if ((active0 & 0x300000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ jjmatchedPos = 1;
+ return 8;
+ }
+ return -1;
+ case 2:
+ if ((active0 & 0x300000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ jjmatchedPos = 2;
+ return 8;
+ }
+ return -1;
+ case 3:
+ if ((active0 & 0x200000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ jjmatchedPos = 3;
+ return 8;
+ }
+ if ((active0 & 0x100000L) != 0L)
+ return 8;
+ return -1;
default :
return -1;
}
}
-private final int jjStartNfa_3(int pos, long active0)
+private final int jjStartNfa_2(int pos, long active0)
{
- return jjMoveNfa_3(jjStopStringLiteralDfa_3(pos, active0), pos + 1);
+ return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
}
-private final int jjStartNfaWithStates_3(int pos, int kind, int state)
+private final int jjStartNfaWithStates_2(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_3(state, pos + 1);
+ return jjMoveNfa_2(state, pos + 1);
}
-private final int jjMoveStringLiteralDfa0_3()
+private final int jjMoveStringLiteralDfa0_2()
{
switch(curChar)
{
+ case 33:
+ return jjStopAtPos(0, 53);
case 35:
- jjmatchedKind = 18;
- return jjMoveStringLiteralDfa1_3(0x28000L);
+ jjmatchedKind = 12;
+ return jjMoveStringLiteralDfa1_2(0xa00L);
case 36:
- return jjStopAtPos(0, 14);
- case 42:
- return jjMoveStringLiteralDfa1_3(0x200000L);
+ return jjStopAtPos(0, 8);
+ case 40:
+ return jjStopAtPos(0, 4);
+ case 41:
+ return jjStopAtPos(0, 5);
+ case 44:
+ return jjStopAtPos(0, 3);
+ case 46:
+ return jjStopAtPos(0, 54);
+ case 91:
+ return jjStopAtPos(0, 1);
+ case 93:
+ return jjStopAtPos(0, 2);
+ case 102:
+ return jjMoveStringLiteralDfa1_2(0x200000L);
+ case 116:
+ return jjMoveStringLiteralDfa1_2(0x100000L);
+ case 123:
+ return jjStopAtPos(0, 55);
+ case 125:
+ return jjStopAtPos(0, 56);
default :
- return jjMoveNfa_3(3, 0);
+ return jjMoveNfa_2(3, 0);
}
}
-private final int jjMoveStringLiteralDfa1_3(long active0)
+private final int jjMoveStringLiteralDfa1_2(long active0)
{
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_3(0, active0);
+ jjStopStringLiteralDfa_2(0, active0);
return 1;
}
switch(curChar)
{
case 35:
- if ((active0 & 0x8000L) != 0L)
- return jjStopAtPos(1, 15);
- else if ((active0 & 0x200000L) != 0L)
- return jjStopAtPos(1, 21);
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(1, 9);
break;
case 42:
- if ((active0 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(1, 17, 0);
+ if ((active0 & 0x800L) != 0L)
+ return jjStartNfaWithStates_2(1, 11, 0);
break;
+ case 97:
+ return jjMoveStringLiteralDfa2_2(active0, 0x200000L);
+ case 114:
+ return jjMoveStringLiteralDfa2_2(active0, 0x100000L);
default :
break;
}
- return jjStartNfa_3(0, active0);
+ return jjStartNfa_2(0, active0);
}
-private final int jjMoveNfa_3(int startState, int curPos)
+private final int jjMoveStringLiteralDfa2_2(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_2(0, old0);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_2(1, active0);
+ return 2;
+ }
+ switch(curChar)
+ {
+ case 108:
+ return jjMoveStringLiteralDfa3_2(active0, 0x200000L);
+ case 117:
+ return jjMoveStringLiteralDfa3_2(active0, 0x100000L);
+ default :
+ break;
+ }
+ return jjStartNfa_2(1, active0);
+}
+private final int jjMoveStringLiteralDfa3_2(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_2(1, old0);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_2(2, active0);
+ return 3;
+ }
+ switch(curChar)
+ {
+ case 101:
+ if ((active0 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_2(3, 20, 8);
+ break;
+ case 115:
+ return jjMoveStringLiteralDfa4_2(active0, 0x200000L);
+ default :
+ break;
+ }
+ return jjStartNfa_2(2, active0);
+}
+private final int jjMoveStringLiteralDfa4_2(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_2(2, old0);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_2(3, active0);
+ return 4;
+ }
+ switch(curChar)
+ {
+ case 101:
+ if ((active0 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_2(4, 21, 8);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_2(3, active0);
+}
+private final int jjMoveNfa_2(int startState, int curPos)
{
int[] nextStates;
int startsAt = 0;
- jjnewStateCnt = 4;
+ jjnewStateCnt = 9;
int i = 1;
jjstateSet[0] = startState;
int j, kind = 0x7fffffff;
@@ -403,22 +602,43 @@
{
switch(jjstateSet[--i])
{
+ case 3:
+ if (curChar == 34)
+ jjCheckNAddTwoStates(5, 6);
+ else if (curChar == 35)
+ jjstateSet[jjnewStateCnt++] = 2;
+ break;
case 0:
if (curChar == 42)
jjstateSet[jjnewStateCnt++] = 1;
break;
case 1:
- if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
- kind = 16;
+ if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
+ kind = 10;
break;
case 2:
if (curChar == 42)
jjstateSet[jjnewStateCnt++] = 0;
break;
- case 3:
- if (curChar == 35)
- jjstateSet[jjnewStateCnt++] = 2;
+ case 4:
+ if (curChar == 34)
+ jjCheckNAddTwoStates(5, 6);
+ break;
+ case 5:
+ if ((0xfffffffbffffdbffL & l) != 0L)
+ jjCheckNAddTwoStates(5, 6);
break;
+ case 6:
+ if (curChar == 34 && kind > 19)
+ kind = 19;
+ break;
+ case 8:
+ if ((0x3ff200000000000L & l) == 0L)
+ break;
+ if (kind > 52)
+ kind = 52;
+ jjstateSet[jjnewStateCnt++] = 8;
+ break;
default : break;
}
} while(i != startsAt);
@@ -430,8 +650,26 @@
{
switch(jjstateSet[--i])
{
+ case 3:
+ if ((0x7fffffe07fffffeL & l) == 0L)
+ break;
+ if (kind > 52)
+ kind = 52;
+ jjCheckNAdd(8);
+ break;
case 1:
- kind = 16;
+ if (kind > 10)
+ kind = 10;
+ break;
+ case 5:
+ jjAddStates(0, 1);
+ break;
+ case 8:
+ if ((0x7fffffe87fffffeL & l) == 0L)
+ break;
+ if (kind > 52)
+ kind = 52;
+ jjCheckNAdd(8);
break;
default : break;
}
@@ -446,9 +684,13 @@
switch(jjstateSet[--i])
{
case 1:
- if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
- kind = 16;
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
+ kind = 10;
break;
+ case 5:
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(0, 1);
+ break;
default : break;
}
} while(i != startsAt);
@@ -460,7 +702,7 @@
kind = 0x7fffffff;
}
++curPos;
- if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
+ if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
return curPos;
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) { return curPos; }
@@ -471,7 +713,7 @@
switch (pos)
{
case 0:
- if ((active0 & 0x68000L) != 0L)
+ if ((active0 & 0x1a00L) != 0L)
return 2;
return -1;
default :
@@ -495,10 +737,12 @@
switch(curChar)
{
case 35:
- jjmatchedKind = 18;
- return jjMoveStringLiteralDfa1_5(0x28000L);
+ jjmatchedKind = 12;
+ return jjMoveStringLiteralDfa1_5(0xa00L);
case 36:
- return jjStopAtPos(0, 14);
+ return jjStopAtPos(0, 8);
+ case 42:
+ return jjMoveStringLiteralDfa1_5(0x8000L);
default :
return jjMoveNfa_5(3, 0);
}
@@ -513,12 +757,14 @@
switch(curChar)
{
case 35:
- if ((active0 & 0x8000L) != 0L)
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(1, 9);
+ else if ((active0 & 0x8000L) != 0L)
return jjStopAtPos(1, 15);
break;
case 42:
- if ((active0 & 0x20000L) != 0L)
- return jjStartNfaWithStates_5(1, 17, 0);
+ if ((active0 & 0x800L) != 0L)
+ return jjStartNfaWithStates_5(1, 11, 0);
break;
default :
break;
@@ -529,7 +775,7 @@
{
int[] nextStates;
int startsAt = 0;
- jjnewStateCnt = 7;
+ jjnewStateCnt = 4;
int i = 1;
jjstateSet[0] = startState;
int j, kind = 0x7fffffff;
@@ -544,40 +790,21 @@
{
switch(jjstateSet[--i])
{
- case 3:
- if ((0x2400L & l) != 0L)
- {
- if (kind > 19)
- kind = 19;
- }
- else if (curChar == 35)
- jjstateSet[jjnewStateCnt++] = 2;
- if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 5;
- break;
case 0:
if (curChar == 42)
jjstateSet[jjnewStateCnt++] = 1;
break;
case 1:
- if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
- kind = 16;
+ if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
+ kind = 10;
break;
case 2:
if (curChar == 42)
jjstateSet[jjnewStateCnt++] = 0;
- break;
- case 4:
- if ((0x2400L & l) != 0L && kind > 19)
- kind = 19;
- break;
- case 5:
- if (curChar == 10 && kind > 19)
- kind = 19;
break;
- case 6:
- if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 5;
+ case 3:
+ if (curChar == 35)
+ jjstateSet[jjnewStateCnt++] = 2;
break;
default : break;
}
@@ -591,7 +818,7 @@
switch(jjstateSet[--i])
{
case 1:
- kind = 16;
+ kind = 10;
break;
default : break;
}
@@ -606,8 +833,8 @@
switch(jjstateSet[--i])
{
case 1:
- if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
- kind = 16;
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
+ kind = 10;
break;
default : break;
}
@@ -620,41 +847,504 @@
kind = 0x7fffffff;
}
++curPos;
- if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
+ if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt)))
return curPos;
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) { return curPos; }
}
}
-private final int jjStopStringLiteralDfa_2(int pos, long active0)
+private final int jjStopStringLiteralDfa_7(int pos, long active0)
{
switch (pos)
{
case 0:
- if ((active0 & 0x7f0000001800L) != 0L)
- {
- jjmatchedKind = 48;
- return 11;
- }
- if ((active0 & 0x68000L) != 0L)
- return 6;
+ if ((active0 & 0x1a00L) != 0L)
+ return 2;
return -1;
- case 1:
- if ((active0 & 0x20000L) != 0L)
- return 4;
- if ((active0 & 0x7b0000001800L) != 0L)
- {
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_7(int pos, long active0)
+{
+ return jjMoveNfa_7(jjStopStringLiteralDfa_7(pos, active0), pos + 1);
+}
+private final int jjStartNfaWithStates_7(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_7(state, pos + 1);
+}
+private final int jjMoveStringLiteralDfa0_7()
+{
+ switch(curChar)
+ {
+ case 35:
+ jjmatchedKind = 12;
+ return jjMoveStringLiteralDfa1_7(0xa00L);
+ case 36:
+ return jjStopAtPos(0, 8);
+ default :
+ return jjMoveNfa_7(3, 0);
+ }
+}
+private final int jjMoveStringLiteralDfa1_7(long active0)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_7(0, active0);
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 35:
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(1, 9);
+ break;
+ case 42:
+ if ((active0 & 0x800L) != 0L)
+ return jjStartNfaWithStates_7(1, 11, 0);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_7(0, active0);
+}
+private final int jjMoveNfa_7(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 7;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ if ((0x2400L & l) != 0L)
+ {
+ if (kind > 13)
+ kind = 13;
+ }
+ else if (curChar == 35)
+ jjstateSet[jjnewStateCnt++] = 2;
+ if (curChar == 13)
+ jjstateSet[jjnewStateCnt++] = 5;
+ break;
+ case 0:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
+ kind = 10;
+ break;
+ case 2:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 0;
+ break;
+ case 4:
+ if ((0x2400L & l) != 0L && kind > 13)
+ kind = 13;
+ break;
+ case 5:
+ if (curChar == 10 && kind > 13)
+ kind = 13;
+ break;
+ case 6:
+ if (curChar == 13)
+ jjstateSet[jjnewStateCnt++] = 5;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 1:
+ kind = 10;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
+ kind = 10;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 7 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_1(int pos, long active0)
+{
+ switch (pos)
+ {
+ case 0:
+ if ((active0 & 0x300000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ return 8;
+ }
+ if ((active0 & 0x1a00L) != 0L)
+ return 2;
+ return -1;
+ case 1:
+ if ((active0 & 0x800L) != 0L)
+ return 0;
+ if ((active0 & 0x300000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ jjmatchedPos = 1;
+ return 8;
+ }
+ return -1;
+ case 2:
+ if ((active0 & 0x300000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ jjmatchedPos = 2;
+ return 8;
+ }
+ return -1;
+ case 3:
+ if ((active0 & 0x200000L) != 0L)
+ {
+ jjmatchedKind = 52;
+ jjmatchedPos = 3;
+ return 8;
+ }
+ if ((active0 & 0x100000L) != 0L)
+ return 8;
+ return -1;
+ default :
+ return -1;
+ }
+}
+private final int jjStartNfa_1(int pos, long active0)
+{
+ return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
+}
+private final 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);
+}
+private final int jjMoveStringLiteralDfa0_1()
+{
+ switch(curChar)
+ {
+ case 33:
+ return jjStopAtPos(0, 53);
+ case 35:
+ jjmatchedKind = 12;
+ return jjMoveStringLiteralDfa1_1(0xa00L);
+ case 36:
+ return jjStopAtPos(0, 8);
+ case 40:
+ return jjStopAtPos(0, 4);
+ case 41:
+ return jjStopAtPos(0, 5);
+ case 46:
+ return jjStopAtPos(0, 54);
+ case 91:
+ return jjStopAtPos(0, 1);
+ case 93:
+ return jjStopAtPos(0, 2);
+ case 102:
+ return jjMoveStringLiteralDfa1_1(0x200000L);
+ case 116:
+ return jjMoveStringLiteralDfa1_1(0x100000L);
+ case 123:
+ return jjStopAtPos(0, 55);
+ case 125:
+ return jjStopAtPos(0, 56);
+ default :
+ return jjMoveNfa_1(3, 0);
+ }
+}
+private final int jjMoveStringLiteralDfa1_1(long active0)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(0, active0);
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 35:
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(1, 9);
+ break;
+ case 42:
+ if ((active0 & 0x800L) != 0L)
+ return jjStartNfaWithStates_1(1, 11, 0);
+ break;
+ case 97:
+ return jjMoveStringLiteralDfa2_1(active0, 0x200000L);
+ case 114:
+ return jjMoveStringLiteralDfa2_1(active0, 0x100000L);
+ default :
+ break;
+ }
+ return jjStartNfa_1(0, active0);
+}
+private final int jjMoveStringLiteralDfa2_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(0, old0);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(1, active0);
+ return 2;
+ }
+ switch(curChar)
+ {
+ case 108:
+ return jjMoveStringLiteralDfa3_1(active0, 0x200000L);
+ case 117:
+ return jjMoveStringLiteralDfa3_1(active0, 0x100000L);
+ default :
+ break;
+ }
+ return jjStartNfa_1(1, active0);
+}
+private final int jjMoveStringLiteralDfa3_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(1, old0);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(2, active0);
+ return 3;
+ }
+ switch(curChar)
+ {
+ case 101:
+ if ((active0 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_1(3, 20, 8);
+ break;
+ case 115:
+ return jjMoveStringLiteralDfa4_1(active0, 0x200000L);
+ default :
+ break;
+ }
+ return jjStartNfa_1(2, active0);
+}
+private final int jjMoveStringLiteralDfa4_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(2, old0);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(3, active0);
+ return 4;
+ }
+ switch(curChar)
+ {
+ case 101:
+ if ((active0 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_1(4, 21, 8);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_1(3, active0);
+}
+private final int jjMoveNfa_1(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 9;
+ int i = 1;
+ jjstateSet[0] = startState;
+ int j, kind = 0x7fffffff;
+ for (;;)
+ {
+ if (++jjround == 0x7fffffff)
+ ReInitRounds();
+ if (curChar < 64)
+ {
+ long l = 1L << curChar;
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ if (curChar == 34)
+ jjCheckNAddTwoStates(5, 6);
+ else if (curChar == 35)
+ jjstateSet[jjnewStateCnt++] = 2;
+ break;
+ case 0:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
+ kind = 10;
+ break;
+ case 2:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 0;
+ break;
+ case 4:
+ if (curChar == 34)
+ jjCheckNAddTwoStates(5, 6);
+ break;
+ case 5:
+ if ((0xfffffffbffffdbffL & l) != 0L)
+ jjCheckNAddTwoStates(5, 6);
+ break;
+ case 6:
+ if (curChar == 34 && kind > 19)
+ kind = 19;
+ break;
+ case 8:
+ if ((0x3ff200000000000L & l) == 0L)
+ break;
+ if (kind > 52)
+ kind = 52;
+ jjstateSet[jjnewStateCnt++] = 8;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ if ((0x7fffffe07fffffeL & l) == 0L)
+ break;
+ if (kind > 52)
+ kind = 52;
+ jjCheckNAdd(8);
+ break;
+ case 1:
+ if (kind > 10)
+ kind = 10;
+ break;
+ case 5:
+ jjAddStates(0, 1);
+ break;
+ case 8:
+ if ((0x7fffffe87fffffeL & l) == 0L)
+ break;
+ if (kind > 52)
+ kind = 52;
+ jjCheckNAdd(8);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 1:
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
+ kind = 10;
+ break;
+ case 5:
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(0, 1);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private final int jjStopStringLiteralDfa_0(int pos, long active0)
+{
+ switch (pos)
+ {
+ case 0:
+ if ((active0 & 0x1a00L) != 0L)
+ return 2;
+ if ((active0 & 0x1fc000300000L) != 0L)
+ {
jjmatchedKind = 48;
+ return 11;
+ }
+ return -1;
+ case 1:
+ if ((active0 & 0x800L) != 0L)
+ return 0;
+ if ((active0 & 0x1ec000300000L) != 0L)
+ {
+ jjmatchedKind = 48;
jjmatchedPos = 1;
return 11;
}
- if ((active0 & 0x40000000000L) != 0L)
+ if ((active0 & 0x10000000000L) != 0L)
return 11;
return -1;
case 2:
- if ((active0 & 0x210000000000L) != 0L)
+ if ((active0 & 0x84000000000L) != 0L)
return 11;
- if ((active0 & 0x5a0000001800L) != 0L)
+ if ((active0 & 0x168000300000L) != 0L)
{
jjmatchedKind = 48;
jjmatchedPos = 2;
@@ -662,7 +1352,7 @@
}
return -1;
case 3:
- if ((active0 & 0x20000001000L) != 0L)
+ if ((active0 & 0x8000200000L) != 0L)
{
if (jjmatchedPos != 3)
{
@@ -671,23 +1361,23 @@
}
return 11;
}
- if ((active0 & 0x580000000800L) != 0L)
+ if ((active0 & 0x160000100000L) != 0L)
return 11;
return -1;
case 4:
- if ((active0 & 0xa0000000000L) != 0L)
+ if ((active0 & 0x28000000000L) != 0L)
{
jjmatchedKind = 48;
jjmatchedPos = 4;
return 11;
}
- if ((active0 & 0x1000L) != 0L)
+ if ((active0 & 0x200000L) != 0L)
return 11;
return -1;
case 5:
- if ((active0 & 0x80000000000L) != 0L)
- return 11;
if ((active0 & 0x20000000000L) != 0L)
+ return 11;
+ if ((active0 & 0x8000000000L) != 0L)
{
jjmatchedKind = 48;
jjmatchedPos = 5;
@@ -698,267 +1388,267 @@
return -1;
}
}
-private final int jjStartNfa_2(int pos, long active0)
+private final int jjStartNfa_0(int pos, long active0)
{
- return jjMoveNfa_2(jjStopStringLiteralDfa_2(pos, active0), pos + 1);
+ return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0), pos + 1);
}
-private final int jjStartNfaWithStates_2(int pos, int kind, int state)
+private final int jjStartNfaWithStates_0(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_2(state, pos + 1);
+ return jjMoveNfa_0(state, pos + 1);
}
-private final int jjMoveStringLiteralDfa0_2()
+private final int jjMoveStringLiteralDfa0_0()
{
switch(curChar)
{
case 33:
- jjmatchedKind = 39;
- return jjMoveStringLiteralDfa1_2(0x4000000000L);
+ jjmatchedKind = 36;
+ return jjMoveStringLiteralDfa1_0(0x800000000L);
case 35:
- jjmatchedKind = 18;
- return jjMoveStringLiteralDfa1_2(0x28000L);
+ jjmatchedKind = 12;
+ return jjMoveStringLiteralDfa1_0(0xa00L);
case 36:
- return jjStopAtPos(0, 14);
+ return jjStopAtPos(0, 8);
case 37:
- return jjStopAtPos(0, 30);
+ return jjStopAtPos(0, 27);
case 38:
- return jjMoveStringLiteralDfa1_2(0x80000000L);
+ return jjMoveStringLiteralDfa1_0(0x10000000L);
case 40:
- return jjStopAtPos(0, 3);
- case 41:
return jjStopAtPos(0, 4);
+ case 41:
+ return jjStopAtPos(0, 5);
case 42:
- return jjStopAtPos(0, 28);
+ return jjStopAtPos(0, 25);
case 43:
- return jjStopAtPos(0, 27);
+ return jjStopAtPos(0, 24);
case 44:
- return jjStopAtPos(0, 10);
+ return jjStopAtPos(0, 3);
case 45:
- return jjStopAtPos(0, 26);
+ return jjStopAtPos(0, 23);
case 47:
- return jjStopAtPos(0, 29);
+ return jjStopAtPos(0, 26);
case 60:
- jjmatchedKind = 33;
- return jjMoveStringLiteralDfa1_2(0x400000000L);
+ jjmatchedKind = 30;
+ return jjMoveStringLiteralDfa1_0(0x80000000L);
case 61:
- jjmatchedKind = 13;
- return jjMoveStringLiteralDfa1_2(0x2000000000L);
+ jjmatchedKind = 37;
+ return jjMoveStringLiteralDfa1_0(0x400000000L);
case 62:
- jjmatchedKind = 35;
- return jjMoveStringLiteralDfa1_2(0x1000000000L);
+ jjmatchedKind = 32;
+ return jjMoveStringLiteralDfa1_0(0x200000000L);
case 91:
- return jjStopAtPos(0, 5);
+ return jjStopAtPos(0, 1);
case 93:
- return jjStopAtPos(0, 6);
+ return jjStopAtPos(0, 2);
case 101:
- return jjMoveStringLiteralDfa1_2(0x190000000000L);
+ return jjMoveStringLiteralDfa1_0(0x64000000000L);
case 102:
- return jjMoveStringLiteralDfa1_2(0x1000L);
+ return jjMoveStringLiteralDfa1_0(0x200000L);
case 105:
- return jjMoveStringLiteralDfa1_2(0x60000000000L);
+ return jjMoveStringLiteralDfa1_0(0x18000000000L);
case 115:
- return jjMoveStringLiteralDfa1_2(0x600000000000L);
+ return jjMoveStringLiteralDfa1_0(0x180000000000L);
case 116:
- return jjMoveStringLiteralDfa1_2(0x800L);
+ return jjMoveStringLiteralDfa1_0(0x100000L);
case 124:
- return jjMoveStringLiteralDfa1_2(0x100000000L);
+ return jjMoveStringLiteralDfa1_0(0x20000000L);
default :
- return jjMoveNfa_2(0, 0);
+ return jjMoveNfa_0(3, 0);
}
}
-private final int jjMoveStringLiteralDfa1_2(long active0)
+private final int jjMoveStringLiteralDfa1_0(long active0)
{
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_2(0, active0);
+ jjStopStringLiteralDfa_0(0, active0);
return 1;
}
switch(curChar)
{
case 35:
- if ((active0 & 0x8000L) != 0L)
- return jjStopAtPos(1, 15);
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(1, 9);
break;
case 38:
- if ((active0 & 0x80000000L) != 0L)
- return jjStopAtPos(1, 31);
+ if ((active0 & 0x10000000L) != 0L)
+ return jjStopAtPos(1, 28);
break;
case 42:
- if ((active0 & 0x20000L) != 0L)
- return jjStartNfaWithStates_2(1, 17, 4);
+ if ((active0 & 0x800L) != 0L)
+ return jjStartNfaWithStates_0(1, 11, 0);
break;
case 61:
- if ((active0 & 0x400000000L) != 0L)
+ if ((active0 & 0x80000000L) != 0L)
+ return jjStopAtPos(1, 31);
+ else if ((active0 & 0x200000000L) != 0L)
+ return jjStopAtPos(1, 33);
+ else if ((active0 & 0x400000000L) != 0L)
return jjStopAtPos(1, 34);
- else if ((active0 & 0x1000000000L) != 0L)
- return jjStopAtPos(1, 36);
- else if ((active0 & 0x2000000000L) != 0L)
- return jjStopAtPos(1, 37);
- else if ((active0 & 0x4000000000L) != 0L)
- return jjStopAtPos(1, 38);
+ else if ((active0 & 0x800000000L) != 0L)
+ return jjStopAtPos(1, 35);
break;
case 97:
- return jjMoveStringLiteralDfa2_2(active0, 0x1000L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x200000L);
case 101:
- return jjMoveStringLiteralDfa2_2(active0, 0x200000000000L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x80000000000L);
case 102:
- if ((active0 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_2(1, 42, 11);
+ if ((active0 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_0(1, 40, 11);
break;
case 108:
- return jjMoveStringLiteralDfa2_2(active0, 0x180000000000L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x60000000000L);
case 110:
- return jjMoveStringLiteralDfa2_2(active0, 0x30000000000L);
+ return jjMoveStringLiteralDfa2_0(active0, 0xc000000000L);
case 114:
- return jjMoveStringLiteralDfa2_2(active0, 0x800L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x100000L);
case 116:
- return jjMoveStringLiteralDfa2_2(active0, 0x400000000000L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L);
case 124:
- if ((active0 & 0x100000000L) != 0L)
- return jjStopAtPos(1, 32);
+ if ((active0 & 0x20000000L) != 0L)
+ return jjStopAtPos(1, 29);
break;
default :
break;
}
- return jjStartNfa_2(0, active0);
+ return jjStartNfa_0(0, active0);
}
-private final int jjMoveStringLiteralDfa2_2(long old0, long active0)
+private final int jjMoveStringLiteralDfa2_0(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_2(0, old0);
+ return jjStartNfa_0(0, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_2(1, active0);
+ jjStopStringLiteralDfa_0(1, active0);
return 2;
}
switch(curChar)
{
case 99:
- return jjMoveStringLiteralDfa3_2(active0, 0x20000000000L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x8000000000L);
case 100:
- if ((active0 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_2(2, 40, 11);
+ if ((active0 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_0(2, 38, 11);
break;
case 108:
- return jjMoveStringLiteralDfa3_2(active0, 0x1000L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x200000L);
case 111:
- return jjMoveStringLiteralDfa3_2(active0, 0x400000000000L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L);
case 115:
- return jjMoveStringLiteralDfa3_2(active0, 0x180000000000L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x60000000000L);
case 116:
- if ((active0 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_2(2, 45, 11);
+ if ((active0 & 0x80000000000L) != 0L)
+ return jjStartNfaWithStates_0(2, 43, 11);
break;
case 117:
- return jjMoveStringLiteralDfa3_2(active0, 0x800L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x100000L);
default :
break;
}
- return jjStartNfa_2(1, active0);
+ return jjStartNfa_0(1, active0);
}
-private final int jjMoveStringLiteralDfa3_2(long old0, long active0)
+private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_2(1, old0);
+ return jjStartNfa_0(1, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_2(2, active0);
+ jjStopStringLiteralDfa_0(2, active0);
return 3;
}
switch(curChar)
{
case 101:
- if ((active0 & 0x800L) != 0L)
- return jjStartNfaWithStates_2(3, 11, 11);
- else if ((active0 & 0x100000000000L) != 0L)
+ if ((active0 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_0(3, 20, 11);
+ else if ((active0 & 0x40000000000L) != 0L)
{
- jjmatchedKind = 44;
+ jjmatchedKind = 42;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_2(active0, 0x80000000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x20000000000L);
case 108:
- return jjMoveStringLiteralDfa4_2(active0, 0x20000000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x8000000000L);
case 112:
- if ((active0 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_2(3, 46, 11);
+ if ((active0 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 44, 11);
break;
case 115:
- return jjMoveStringLiteralDfa4_2(active0, 0x1000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x200000L);
default :
break;
}
- return jjStartNfa_2(2, active0);
+ return jjStartNfa_0(2, active0);
}
-private final int jjMoveStringLiteralDfa4_2(long old0, long active0)
+private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_2(2, old0);
+ return jjStartNfa_0(2, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_2(3, active0);
+ jjStopStringLiteralDfa_0(3, active0);
return 4;
}
switch(curChar)
{
case 101:
- if ((active0 & 0x1000L) != 0L)
- return jjStartNfaWithStates_2(4, 12, 11);
+ if ((active0 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_0(4, 21, 11);
break;
case 105:
- return jjMoveStringLiteralDfa5_2(active0, 0x80000000000L);
+ return jjMoveStringLiteralDfa5_0(active0, 0x20000000000L);
case 117:
- return jjMoveStringLiteralDfa5_2(active0, 0x20000000000L);
+ return jjMoveStringLiteralDfa5_0(active0, 0x8000000000L);
default :
break;
}
- return jjStartNfa_2(3, active0);
+ return jjStartNfa_0(3, active0);
}
-private final int jjMoveStringLiteralDfa5_2(long old0, long active0)
+private final int jjMoveStringLiteralDfa5_0(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_2(3, old0);
+ return jjStartNfa_0(3, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_2(4, active0);
+ jjStopStringLiteralDfa_0(4, active0);
return 5;
}
switch(curChar)
{
case 100:
- return jjMoveStringLiteralDfa6_2(active0, 0x20000000000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0x8000000000L);
case 102:
- if ((active0 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_2(5, 43, 11);
+ if ((active0 & 0x20000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 41, 11);
break;
default :
break;
}
- return jjStartNfa_2(4, active0);
+ return jjStartNfa_0(4, active0);
}
-private final int jjMoveStringLiteralDfa6_2(long old0, long active0)
+private final int jjMoveStringLiteralDfa6_0(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_2(4, old0);
+ return jjStartNfa_0(4, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_2(5, active0);
+ jjStopStringLiteralDfa_0(5, active0);
return 6;
}
switch(curChar)
{
case 101:
- if ((active0 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_2(6, 41, 11);
+ if ((active0 & 0x8000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 39, 11);
break;
default :
break;
}
- return jjStartNfa_2(5, active0);
+ return jjStartNfa_0(5, active0);
}
-private final int jjMoveNfa_2(int startState, int curPos)
+private final int jjMoveNfa_0(int startState, int curPos)
{
int[] nextStates;
int startsAt = 0;
@@ -977,67 +1667,67 @@
{
switch(jjstateSet[--i])
{
- case 0:
+ case 3:
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 9)
- kind = 9;
- jjCheckNAdd(3);
+ if (kind > 46)
+ kind = 46;
+ jjCheckNAdd(10);
}
else if ((0x2400L & l) != 0L)
{
- if (kind > 25)
- kind = 25;
+ if (kind > 22)
+ kind = 22;
}
- else if (curChar == 35)
- jjstateSet[jjnewStateCnt++] = 6;
else if (curChar == 34)
- jjCheckNAddTwoStates(1, 2);
+ jjCheckNAddTwoStates(5, 6);
+ else if (curChar == 35)
+ jjstateSet[jjnewStateCnt++] = 2;
if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 9;
+ jjstateSet[jjnewStateCnt++] = 8;
+ break;
+ case 0:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 1;
break;
case 1:
- if ((0xfffffffbffffdbffL & l) != 0L)
- jjCheckNAddTwoStates(1, 2);
+ if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
+ kind = 10;
break;
case 2:
- if (curChar == 34 && kind > 7)
- kind = 7;
- break;
- case 3:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 9)
- kind = 9;
- jjCheckNAdd(3);
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 0;
break;
case 4:
- if (curChar == 42)
- jjstateSet[jjnewStateCnt++] = 5;
+ if (curChar == 34)
+ jjCheckNAddTwoStates(5, 6);
break;
case 5:
- if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
- kind = 16;
+ if ((0xfffffffbffffdbffL & l) != 0L)
+ jjCheckNAddTwoStates(5, 6);
break;
case 6:
- if (curChar == 42)
- jjstateSet[jjnewStateCnt++] = 4;
+ if (curChar == 34 && kind > 19)
+ kind = 19;
break;
case 7:
- if (curChar == 35)
- jjstateSet[jjnewStateCnt++] = 6;
+ if ((0x2400L & l) != 0L && kind > 22)
+ kind = 22;
break;
case 8:
- if ((0x2400L & l) != 0L && kind > 25)
- kind = 25;
+ if (curChar == 10 && kind > 22)
+ kind = 22;
break;
case 9:
- if (curChar == 10 && kind > 25)
- kind = 25;
+ if (curChar == 13)
+ jjstateSet[jjnewStateCnt++] = 8;
break;
case 10:
- if (curChar == 13)
- jjstateSet[jjnewStateCnt++] = 9;
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 46)
+ kind = 46;
+ jjCheckNAdd(10);
break;
default : break;
}
@@ -1050,7 +1740,7 @@
{
switch(jjstateSet[--i])
{
- case 0:
+ case 3:
case 11:
if ((0x7fffffe00000000L & l) == 0L)
break;
@@ -1059,11 +1749,11 @@
jjCheckNAdd(11);
break;
case 1:
- jjAddStates(0, 1);
+ if (kind > 10)
+ kind = 10;
break;
case 5:
- if (kind > 16)
- kind = 16;
+ jjAddStates(0, 1);
break;
default : break;
}
@@ -1078,12 +1768,12 @@
switch(jjstateSet[--i])
{
case 1:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjAddStates(0, 1);
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
+ kind = 10;
break;
case 5:
- if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
- kind = 16;
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(0, 1);
break;
default : break;
}
@@ -1102,70 +1792,70 @@
catch(java.io.IOException e) { return curPos; }
}
}
-private final int jjStopStringLiteralDfa_4(int pos, long active0)
+private final int jjStopStringLiteralDfa_6(int pos, long active0)
{
switch (pos)
{
case 0:
- if ((active0 & 0x68000L) != 0L)
+ if ((active0 & 0x1a00L) != 0L)
return 2;
return -1;
default :
return -1;
}
}
-private final int jjStartNfa_4(int pos, long active0)
+private final int jjStartNfa_6(int pos, long active0)
{
- return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0), pos + 1);
+ return jjMoveNfa_6(jjStopStringLiteralDfa_6(pos, active0), pos + 1);
}
-private final int jjStartNfaWithStates_4(int pos, int kind, int state)
+private final int jjStartNfaWithStates_6(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_4(state, pos + 1);
+ return jjMoveNfa_6(state, pos + 1);
}
-private final int jjMoveStringLiteralDfa0_4()
+private final int jjMoveStringLiteralDfa0_6()
{
switch(curChar)
{
case 35:
- jjmatchedKind = 18;
- return jjMoveStringLiteralDfa1_4(0x28000L);
+ jjmatchedKind = 12;
+ return jjMoveStringLiteralDfa1_6(0xa00L);
case 36:
- return jjStopAtPos(0, 14);
+ return jjStopAtPos(0, 8);
case 42:
- return jjMoveStringLiteralDfa1_4(0x100000L);
+ return jjMoveStringLiteralDfa1_6(0x4000L);
default :
- return jjMoveNfa_4(3, 0);
+ return jjMoveNfa_6(3, 0);
}
}
-private final int jjMoveStringLiteralDfa1_4(long active0)
+private final int jjMoveStringLiteralDfa1_6(long active0)
{
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_4(0, active0);
+ jjStopStringLiteralDfa_6(0, active0);
return 1;
}
switch(curChar)
{
case 35:
- if ((active0 & 0x8000L) != 0L)
- return jjStopAtPos(1, 15);
- else if ((active0 & 0x100000L) != 0L)
- return jjStopAtPos(1, 20);
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(1, 9);
+ else if ((active0 & 0x4000L) != 0L)
+ return jjStopAtPos(1, 14);
break;
case 42:
- if ((active0 & 0x20000L) != 0L)
- return jjStartNfaWithStates_4(1, 17, 0);
+ if ((active0 & 0x800L) != 0L)
+ return jjStartNfaWithStates_6(1, 11, 0);
break;
default :
break;
}
- return jjStartNfa_4(0, active0);
+ return jjStartNfa_6(0, active0);
}
-private final int jjMoveNfa_4(int startState, int curPos)
+private final int jjMoveNfa_6(int startState, int curPos)
{
int[] nextStates;
int startsAt = 0;
@@ -1189,8 +1879,8 @@
jjstateSet[jjnewStateCnt++] = 1;
break;
case 1:
- if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
- kind = 16;
+ if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
+ kind = 10;
break;
case 2:
if (curChar == 42)
@@ -1212,7 +1902,7 @@
switch(jjstateSet[--i])
{
case 1:
- kind = 16;
+ kind = 10;
break;
default : break;
}
@@ -1227,8 +1917,8 @@
switch(jjstateSet[--i])
{
case 1:
- if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
- kind = 16;
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
+ kind = 10;
break;
default : break;
}
@@ -1247,193 +1937,181 @@
catch(java.io.IOException e) { return curPos; }
}
}
-private final int jjStopStringLiteralDfa_1(int pos, long active0)
+private final int jjStopStringLiteralDfa_4(int pos, long active0)
{
switch (pos)
{
case 0:
- if ((active0 & 0x68000L) != 0L)
- return 6;
- if ((active0 & 0x1800L) != 0L)
+ if ((active0 & 0x300000L) != 0L)
{
jjmatchedKind = 52;
- return 9;
+ return 8;
}
+ if ((active0 & 0x1a00L) != 0L)
+ return 2;
return -1;
case 1:
- if ((active0 & 0x20000L) != 0L)
- return 4;
- if ((active0 & 0x1800L) != 0L)
+ if ((active0 & 0x800L) != 0L)
+ return 0;
+ if ((active0 & 0x300000L) != 0L)
{
jjmatchedKind = 52;
jjmatchedPos = 1;
- return 9;
+ return 8;
}
return -1;
case 2:
- if ((active0 & 0x1800L) != 0L)
+ if ((active0 & 0x300000L) != 0L)
{
jjmatchedKind = 52;
jjmatchedPos = 2;
- return 9;
+ return 8;
}
return -1;
case 3:
- if ((active0 & 0x1000L) != 0L)
+ if ((active0 & 0x200000L) != 0L)
{
jjmatchedKind = 52;
jjmatchedPos = 3;
- return 9;
+ return 8;
}
- if ((active0 & 0x800L) != 0L)
- return 9;
+ if ((active0 & 0x100000L) != 0L)
+ return 8;
return -1;
default :
return -1;
}
}
-private final int jjStartNfa_1(int pos, long active0)
+private final int jjStartNfa_4(int pos, long active0)
{
- return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1);
+ return jjMoveNfa_4(jjStopStringLiteralDfa_4(pos, active0), pos + 1);
}
-private final int jjStartNfaWithStates_1(int pos, int kind, int state)
+private final int jjStartNfaWithStates_4(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);
+ return jjMoveNfa_4(state, pos + 1);
}
-private final int jjMoveStringLiteralDfa0_1()
+private final int jjMoveStringLiteralDfa0_4()
{
switch(curChar)
{
case 33:
- return jjStopAtPos(0, 54);
+ return jjStopAtPos(0, 53);
case 35:
- jjmatchedKind = 18;
- return jjMoveStringLiteralDfa1_1(0x28000L);
+ jjmatchedKind = 12;
+ return jjMoveStringLiteralDfa1_4(0xa00L);
case 36:
- return jjStopAtPos(0, 14);
- case 40:
- return jjStopAtPos(0, 3);
- case 41:
- return jjStopAtPos(0, 4);
- case 44:
- return jjStopAtPos(0, 10);
+ return jjStopAtPos(0, 8);
case 46:
- return jjStopAtPos(0, 53);
- case 61:
- return jjStopAtPos(0, 13);
- case 91:
- return jjStopAtPos(0, 5);
- case 93:
- return jjStopAtPos(0, 6);
+ return jjStopAtPos(0, 54);
case 102:
- return jjMoveStringLiteralDfa1_1(0x1000L);
+ return jjMoveStringLiteralDfa1_4(0x200000L);
case 116:
- return jjMoveStringLiteralDfa1_1(0x800L);
+ return jjMoveStringLiteralDfa1_4(0x100000L);
case 123:
return jjStopAtPos(0, 55);
case 125:
return jjStopAtPos(0, 56);
default :
- return jjMoveNfa_1(0, 0);
+ return jjMoveNfa_4(3, 0);
}
}
-private final int jjMoveStringLiteralDfa1_1(long active0)
+private final int jjMoveStringLiteralDfa1_4(long active0)
{
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_1(0, active0);
+ jjStopStringLiteralDfa_4(0, active0);
return 1;
}
switch(curChar)
{
case 35:
- if ((active0 & 0x8000L) != 0L)
- return jjStopAtPos(1, 15);
+ if ((active0 & 0x200L) != 0L)
+ return jjStopAtPos(1, 9);
break;
case 42:
- if ((active0 & 0x20000L) != 0L)
- return jjStartNfaWithStates_1(1, 17, 4);
+ if ((active0 & 0x800L) != 0L)
+ return jjStartNfaWithStates_4(1, 11, 0);
break;
case 97:
- return jjMoveStringLiteralDfa2_1(active0, 0x1000L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x200000L);
case 114:
- return jjMoveStringLiteralDfa2_1(active0, 0x800L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x100000L);
default :
break;
}
- return jjStartNfa_1(0, active0);
+ return jjStartNfa_4(0, active0);
}
-private final int jjMoveStringLiteralDfa2_1(long old0, long active0)
+private final int jjMoveStringLiteralDfa2_4(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(0, old0);
+ return jjStartNfa_4(0, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_1(1, active0);
+ jjStopStringLiteralDfa_4(1, active0);
return 2;
}
switch(curChar)
{
case 108:
- return jjMoveStringLiteralDfa3_1(active0, 0x1000L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x200000L);
case 117:
- return jjMoveStringLiteralDfa3_1(active0, 0x800L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x100000L);
default :
break;
}
- return jjStartNfa_1(1, active0);
+ return jjStartNfa_4(1, active0);
}
-private final int jjMoveStringLiteralDfa3_1(long old0, long active0)
+private final int jjMoveStringLiteralDfa3_4(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(1, old0);
+ return jjStartNfa_4(1, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_1(2, active0);
+ jjStopStringLiteralDfa_4(2, active0);
return 3;
}
switch(curChar)
{
case 101:
- if ((active0 & 0x800L) != 0L)
- return jjStartNfaWithStates_1(3, 11, 9);
+ if ((active0 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_4(3, 20, 8);
break;
case 115:
- return jjMoveStringLiteralDfa4_1(active0, 0x1000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0x200000L);
default :
break;
}
- return jjStartNfa_1(2, active0);
+ return jjStartNfa_4(2, active0);
}
-private final int jjMoveStringLiteralDfa4_1(long old0, long active0)
+private final int jjMoveStringLiteralDfa4_4(long old0, long active0)
{
if (((active0 &= old0)) == 0L)
- return jjStartNfa_1(2, old0);
+ return jjStartNfa_4(2, old0);
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) {
- jjStopStringLiteralDfa_1(3, active0);
+ jjStopStringLiteralDfa_4(3, active0);
return 4;
}
switch(curChar)
{
case 101:
- if ((active0 & 0x1000L) != 0L)
- return jjStartNfaWithStates_1(4, 12, 9);
+ if ((active0 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_4(4, 21, 8);
break;
default :
break;
}
- return jjStartNfa_1(3, active0);
+ return jjStartNfa_4(3, active0);
}
-private final int jjMoveNfa_1(int startState, int curPos)
+private final int jjMoveNfa_4(int startState, int curPos)
{
int[] nextStates;
int startsAt = 0;
- jjnewStateCnt = 10;
+ jjnewStateCnt = 9;
int i = 1;
jjstateSet[0] = startState;
int j, kind = 0x7fffffff;
@@ -1448,55 +2126,42 @@
{
switch(jjstateSet[--i])
{
- case 0:
- if ((0x3ff000000000000L & l) != 0L)
- {
- if (kind > 9)
- kind = 9;
- jjCheckNAdd(3);
- }
+ case 3:
+ if (curChar == 34)
+ jjCheckNAddTwoStates(5, 6);
else if (curChar == 35)
- jjstateSet[jjnewStateCnt++] = 6;
- else if (curChar == 34)
- jjCheckNAddTwoStates(1, 2);
+ jjstateSet[jjnewStateCnt++] = 2;
+ break;
+ case 0:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 1;
break;
case 1:
- if ((0xfffffffbffffdbffL & l) != 0L)
- jjCheckNAddTwoStates(1, 2);
+ if ((0xfffffff7ffffffffL & l) != 0L && kind > 10)
+ kind = 10;
break;
case 2:
- if (curChar == 34 && kind > 7)
- kind = 7;
- break;
- case 3:
- if ((0x3ff000000000000L & l) == 0L)
- break;
- if (kind > 9)
- kind = 9;
- jjCheckNAdd(3);
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 0;
break;
case 4:
- if (curChar == 42)
- jjstateSet[jjnewStateCnt++] = 5;
+ if (curChar == 34)
+ jjCheckNAddTwoStates(5, 6);
break;
case 5:
- if ((0xfffffff7ffffffffL & l) != 0L && kind > 16)
- kind = 16;
+ if ((0xfffffffbffffdbffL & l) != 0L)
+ jjCheckNAddTwoStates(5, 6);
break;
case 6:
- if (curChar == 42)
- jjstateSet[jjnewStateCnt++] = 4;
- break;
- case 7:
- if (curChar == 35)
- jjstateSet[jjnewStateCnt++] = 6;
+ if (curChar == 34 && kind > 19)
+ kind = 19;
break;
- case 9:
+ case 8:
if ((0x3ff200000000000L & l) == 0L)
break;
if (kind > 52)
kind = 52;
- jjstateSet[jjnewStateCnt++] = 9;
+ jjstateSet[jjnewStateCnt++] = 8;
break;
default : break;
}
@@ -1509,26 +2174,26 @@
{
switch(jjstateSet[--i])
{
- case 0:
+ case 3:
if ((0x7fffffe07fffffeL & l) == 0L)
break;
if (kind > 52)
kind = 52;
- jjCheckNAdd(9);
+ jjCheckNAdd(8);
break;
case 1:
- jjAddStates(0, 1);
+ if (kind > 10)
+ kind = 10;
break;
case 5:
- if (kind > 16)
- kind = 16;
+ jjAddStates(0, 1);
break;
- case 9:
+ case 8:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
if (kind > 52)
kind = 52;
- jjCheckNAdd(9);
+ jjCheckNAdd(8);
break;
default : break;
}
@@ -1543,12 +2208,12 @@
switch(jjstateSet[--i])
{
case 1:
- if ((jjbitVec0[i2] & l2) != 0L)
- jjAddStates(0, 1);
+ if ((jjbitVec0[i2] & l2) != 0L && kind > 10)
+ kind = 10;
break;
case 5:
- if ((jjbitVec0[i2] & l2) != 0L && kind > 16)
- kind = 16;
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(0, 1);
break;
default : break;
}
@@ -1561,14 +2226,14 @@
kind = 0x7fffffff;
}
++curPos;
- if ((i = jjnewStateCnt) == (startsAt = 10 - (jjnewStateCnt = startsAt)))
+ if ((i = jjnewStateCnt) == (startsAt = 9 - (jjnewStateCnt = startsAt)))
return curPos;
try { curChar = input_stream.readChar(); }
catch(java.io.IOException e) { return curPos; }
}
}
static final int[] jjnextStates = {
- 1, 2,
+ 5, 6,
};
public static final String[] jjstrLiteralImages = {
null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -1577,29 +2242,31 @@
null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, };
public static final String[] lexStateNames = {
+ "DIRECTIVE",
+ "REFMODIFIER",
+ "REFMOD2",
"DEFAULT",
"REFERENCE",
- "DIRECTIVE",
"IN_MULTI_LINE_COMMENT",
"IN_FORMAL_COMMENT",
"IN_SINGLE_LINE_COMMENT",
};
public static final int[] jjnewLexState = {
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 4, 3, -1, 0, 0,
0, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0,
-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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
-1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1,
};
static final long[] jjtoToken = {
- 0x1f17ffffc383effL,
+ 0x1f15fffffb8e0ffL,
};
static final long[] jjtoSkip = {
- 0x200000003800000L,
+ 0x200000000460000L,
};
static final long[] jjtoSpecial = {
- 0x200000002000000L,
+ 0x200000000400000L,
};
static final long[] jjtoMore = {
- 0x47c000L,
+ 0x11f00L,
};
private ASCII_CharStream input_stream;
private final int[] jjrounds = new int[12];
@@ -1640,7 +2307,7 @@
}
public void SwitchTo(int lexState)
{
- if (lexState >= 6 || lexState < 0)
+ if (lexState >= 8 || lexState < 0)
throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState
+ ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
else
curLexState = lexState;
@@ -1659,8 +2326,8 @@
return t;
}
-int curLexState = 0;
-int defaultLexState = 0;
+int curLexState = 3;
+int defaultLexState = 3;
int jjnewStateCnt;
int jjround;
int jjmatchedPos;
@@ -1696,6 +2363,11 @@
switch(curLexState)
{
case 0:
+ try { input_stream.backup(0);
+ while (curChar <= 32 && (0x100000200L & (1L << curChar)) != 0L)
+ curChar = input_stream.BeginToken();
+ }
+ catch (java.io.IOException e1) { continue EOFLoop; }
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = jjMoveStringLiteralDfa0_0();
@@ -1718,32 +2390,50 @@
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = jjMoveStringLiteralDfa0_2();
+ if (jjmatchedPos == 0 && jjmatchedKind > 57)
+ {
+ jjmatchedKind = 57;
+ }
break;
case 3:
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = jjMoveStringLiteralDfa0_3();
- if (jjmatchedPos == 0 && jjmatchedKind > 22)
- {
- jjmatchedKind = 22;
- }
break;
case 4:
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = jjMoveStringLiteralDfa0_4();
- if (jjmatchedPos == 0 && jjmatchedKind > 22)
+ if (jjmatchedPos == 0 && jjmatchedKind > 57)
{
- jjmatchedKind = 22;
+ jjmatchedKind = 57;
}
break;
case 5:
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = jjMoveStringLiteralDfa0_5();
- if (jjmatchedPos == 0 && jjmatchedKind > 22)
+ if (jjmatchedPos == 0 && jjmatchedKind > 16)
+ {
+ jjmatchedKind = 16;
+ }
+ break;
+ case 6:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_6();
+ if (jjmatchedPos == 0 && jjmatchedKind > 16)
+ {
+ jjmatchedKind = 16;
+ }
+ break;
+ case 7:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_7();
+ if (jjmatchedPos == 0 && jjmatchedKind > 16)
{
- jjmatchedKind = 22;
+ jjmatchedKind = 16;
}
break;
}
@@ -1820,16 +2510,18 @@
{
switch(jjmatchedKind)
{
- case 25 :
+ case 22 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
if (inSet)
- {
- SwitchTo(DEFAULT);
- inSet = false;
- inDirective = false;
+ {
+ if ( bDebugPrint_ )
+ System.out.print(" NEWLINE :");
+ stateStackPop();
+ inSet = false;
+ inDirective = false;
}
break;
case 57 :
@@ -1837,18 +2529,35 @@
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
- if (inDirective)
- SwitchTo(DIRECTIVE);
- else if (lparen == rparen)
+ /*
+ * These can terminate a reference, but are needed in subsequent states
+ */
+
+ if (image.toString().equals("="))
{
- lparen = 0;
- rparen = 0;
- inReference = false;
+ input_stream.backup(1);
+ }
- SwitchTo(DEFAULT);
+ inReference = false;
+
+ if ( bDebugPrint_ )
+ System.out.print("REF_TERM :");
+
+ stateStackPop();
+
+ /*
+ * I removed LPAREN & RPAREN from REFERENCE; as there is no LPAREN,RPAREN
in REF is there is REFMETHOD
+ */
+
+ if (curLexState != DEFAULT && ( image.toString().equals(")")
+ || image.toString().equals(",")
+ || image.toString().equals("[")
+ || image.toString().equals("]")
+ || image.toString().equals("\n")
+ ) )
+ {
+ input_stream.backup(1);
}
- else
- SwitchTo(REFERENCE);
break;
default :
break;
@@ -1859,7 +2568,7 @@
jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
switch(jjmatchedKind)
{
- case 14 :
+ case 8 :
if (image == null)
image = new StringBuffer(new
String(input_stream.GetSuffix(jjimageLen)));
else
@@ -1868,34 +2577,46 @@
if (! inComment)
{
inReference = true;
+
+ if ( bDebugPrint_ )
+ System.out.print( "$ : going to " + REFERENCE );
+
+ stateStackPush();
SwitchTo(REFERENCE);
}
break;
- case 15 :
+ case 9 :
if (image == null)
image = new StringBuffer(new
String(input_stream.GetSuffix(jjimageLen)));
else
image.append(new String(input_stream.GetSuffix(jjimageLen)));
jjimageLen = 0;
- inComment = true;
+ inComment = true;
+ stateStackPush();
+ SwitchTo(IN_SINGLE_LINE_COMMENT);
break;
- case 16 :
+ case 10 :
if (image == null)
image = new StringBuffer(new
String(input_stream.GetSuffix(jjimageLen)));
else
image.append(new String(input_stream.GetSuffix(jjimageLen)));
jjimageLen = 0;
- input_stream.backup(1); inComment = true;
+ input_stream.backup(1);
+ inComment = true;
+ stateStackPush();
+ SwitchTo( IN_FORMAL_COMMENT);
break;
- case 17 :
+ case 11 :
if (image == null)
image = new StringBuffer(new
String(input_stream.GetSuffix(jjimageLen)));
else
image.append(new String(input_stream.GetSuffix(jjimageLen)));
jjimageLen = 0;
- inComment=true;
+ inComment=true;
+ stateStackPush();
+ SwitchTo( IN_MULTI_LINE_COMMENT );
break;
- case 18 :
+ case 12 :
if (image == null)
image = new StringBuffer(new
String(input_stream.GetSuffix(jjimageLen)));
else
@@ -1904,6 +2625,11 @@
if (! inComment)
{
inDirective = true;
+
+ if ( bDebugPrint_ )
+ System.out.print("# : going to " + DIRECTIVE );
+
+ stateStackPush();
SwitchTo(DIRECTIVE);
}
break;
@@ -1915,87 +2641,159 @@
{
switch(jjmatchedKind)
{
- case 3 :
+ case 4 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
- lparen++;
+ if (!inComment)
+ lparen++;
+
+ /*
+ * if we have seen the dot, then move to REFMOD2 -> Modifier()
+ */
+
+ if (curLexState == REFMODIFIER )
+ SwitchTo( REFMOD2 );
break;
- case 4 :
+ case 5 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
- rparen++;
+ /*
+ * Ultimately, we want to drop down to the state below the one that has an
open (
+ * if we hit bottom (DEFAULT), that's fine. It's just text schmoo.
+ *
+ */
+
- if (lparen == rparen)
+ boolean bClosed = false;
+
+ if (inComment)
+ bClosed = true;
+
+ while( !bClosed)
{
- SwitchTo(DEFAULT);
- inDirective = false;
+ /*
+ * look at current state. If we haven't seen a lparen in this state
+ * then we drop a state, because this lparen clearly closes our state
+ */
+
+ if( lparen > 0)
+ {
+ /*
+ * if rparen + 1 == lparen, then this state is closed. Otherwise,
increment
+ * and keep parsing
+ */
+
+ if( lparen == rparen + 1)
+ {
+ stateStackPop();
+ }
+ else
+ {
+ rparen++;
+ }
+
+ bClosed = true;
+ }
+ else
+ {
+ /*
+ * now, drop a state
+ */
+
+ if(!stateStackPop())
+ break;
+ }
}
break;
- case 7 :
+ case 13 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
- if (incMode)
- {
- matchedToken.image = stripQuotes(image.toString());
- pushFile(matchedToken.image);
- }
- incMode = false;
+ inComment = false;
+ stateStackPop();
break;
- case 19 :
+ case 14 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
inComment = false;
+ stateStackPop();
break;
- case 20 :
+ case 15 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
inComment = false;
+ stateStackPop();
break;
- case 21 :
+ case 19 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
- inComment = false;
+ if (incMode)
+ {
+ matchedToken.image = stripQuotes(image.toString());
+ pushFile(matchedToken.image);
+ }
+ incMode = false;
+
+ if (lparen == 0)
+ SwitchTo(DEFAULT);
break;
- case 40 :
+ case 38 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
inDirective = false;
+ stateStackPop();
break;
- case 41 :
+ case 39 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
incMode = true;
break;
- case 45 :
+ case 43 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
inSet = true;
break;
- case 46 :
+ case 44 :
if (image == null)
image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
else
image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
matchedToken.kind = EOF;
fileDepth = 0;
+ break;
+ case 54 :
+ if (image == null)
+ image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
+ else
+ image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
+ if ( bDebugPrint_ )
+ System.out.print("DOT : switching to " + REFMODIFIER);
+ SwitchTo(REFMODIFIER);
+ break;
+ case 56 :
+ if (image == null)
+ image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
+ else
+ image.append(new String(input_stream.GetSuffix(jjimageLen +
(lengthOfMatch = jjmatchedPos + 1))));
+ // was :DEFAULT
+ stateStackPop();
break;
default :
break;