--- /dev/null
+/* Generated By:JavaCC: Do not edit this line. PHPParser.java */
+package test;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.ui.texteditor.MarkerUtilities;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import java.io.CharArrayReader;
+import java.util.Hashtable;
+import java.io.StringReader;
+import java.text.MessageFormat;
+
+import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
+
+/**
+ * A new php parser.
+ * This php parser is inspired by the Java 1.2 grammar example
+ * given with JavaCC. You can get JavaCC at http://www.webgain.com
+ * You can test the parser with the PHPParserTestCase2.java
+ * @author Matthieu Casanova
+ */
+public class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
+
+ private static PHPParser me;
+
+ private static IFile fileToParse;
+
+ private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
+ private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
+ public static final int ERROR = 2;
+ public static final int WARNING = 1;
+ public static final int INFO = 0;
+ PHPOutlineInfo outlineInfo;
+ private static int errorLevel = ERROR;
+ private static String errorMessage;
+
+ public PHPParser() {
+ }
+
+ public static PHPParser getInstance(IFile fileToParse) {
+ if (me == null) {
+ me = new PHPParser(fileToParse);
+ } else {
+ me.setFileToParse(fileToParse);
+ }
+ return me;
+ }
+
+ public void setFileToParse(IFile fileToParse) {
+ this.fileToParse = fileToParse;
+ }
+
+ public static PHPParser getInstance(java.io.Reader stream) {
+ if (me == null) {
+ me = new PHPParser(stream);
+ } else {
+ me.ReInit(stream);
+ }
+ return me;
+ }
+
+ public PHPParser(IFile fileToParse) {
+ this(new StringReader(""));
+ this.fileToParse = fileToParse;
+ }
+
+ public void phpParserTester(String strEval) throws CoreException, ParseException {
+ PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING);
+ StringReader stream = new StringReader(strEval);
+ if (jj_input_stream == null) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ }
+ ReInit(new StringReader(strEval));
+ phpTest();
+ }
+
+ public void htmlParserTester(String strEval) throws CoreException, ParseException {
+ StringReader stream = new StringReader(strEval);
+ if (jj_input_stream == null) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ }
+ ReInit(stream);
+ phpTest();
+ }
+
+ public PHPOutlineInfo parseInfo(Object parent, String s) {
+ outlineInfo = new PHPOutlineInfo(parent);
+ StringReader stream = new StringReader(s);
+ if (jj_input_stream == null) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ }
+ ReInit(stream);
+ try {
+ parse();
+ } catch (ParseException e) {
+ if (errorMessage == null) {
+ PHPeclipsePlugin.log(e);
+ } else {
+ setMarker(errorMessage, e.currentToken.beginLine, errorLevel);
+ errorMessage = null;
+ }
+ }
+ return outlineInfo;
+ }
+
+
+ /**
+ * Create marker for the parse error
+ */
+ private static void setMarker(String message, int lineNumber, int errorLevel) {
+ try {
+ setMarker(fileToParse, message, lineNumber, errorLevel);
+ } catch (CoreException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ }
+
+ public static void setMarker(IFile file, String message, int lineNumber, int errorLevel) throws CoreException {
+ if (file != null) {
+ Hashtable attributes = new Hashtable();
+ MarkerUtilities.setMessage(attributes, message);
+ switch (errorLevel) {
+ case ERROR :
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
+ break;
+ case WARNING :
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
+ break;
+ case INFO :
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
+ break;
+ }
+ MarkerUtilities.setLineNumber(attributes, lineNumber);
+ MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
+ }
+ }
+
+ /**
+ * Create markers according to the external parser output
+ */
+ private static void createMarkers(String output, IFile file) throws CoreException {
+ // delete all markers
+ file.deleteMarkers(IMarker.PROBLEM, false, 0);
+
+ int indx = 0;
+ int brIndx = 0;
+ boolean flag = true;
+ while ((brIndx = output.indexOf("<br />", indx)) != -1) {
+ // newer php error output (tested with 4.2.3)
+ scanLine(output, file, indx, brIndx);
+ indx = brIndx + 6;
+ flag = false;
+ }
+ if (flag) {
+ while ((brIndx = output.indexOf("<br>", indx)) != -1) {
+ // older php error output (tested with 4.2.3)
+ scanLine(output, file, indx, brIndx);
+ indx = brIndx + 4;
+ }
+ }
+ }
+
+ private static void scanLine(String output, IFile file, int indx, int brIndx) throws CoreException {
+ String current;
+ StringBuffer lineNumberBuffer = new StringBuffer(10);
+ char ch;
+ current = output.substring(indx, brIndx);
+
+ if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
+ int onLine = current.indexOf("on line <b>");
+ if (onLine != -1) {
+ lineNumberBuffer.delete(0, lineNumberBuffer.length());
+ for (int i = onLine; i < current.length(); i++) {
+ ch = current.charAt(i);
+ if ('0' <= ch && '9' >= ch) {
+ lineNumberBuffer.append(ch);
+ }
+ }
+
+ int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
+
+ Hashtable attributes = new Hashtable();
+
+ current = current.replaceAll("\n", "");
+ current = current.replaceAll("<b>", "");
+ current = current.replaceAll("</b>", "");
+ MarkerUtilities.setMessage(attributes, current);
+
+ if (current.indexOf(PARSE_ERROR_STRING) != -1)
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
+ else if (current.indexOf(PARSE_WARNING_STRING) != -1)
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
+ else
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
+ MarkerUtilities.setLineNumber(attributes, lineNumber);
+ MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
+ }
+ }
+ }
+
+ public void parse(String s) throws CoreException {
+ ReInit(new StringReader(s));
+ try {
+ parse();
+ } catch (ParseException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ }
+
+ /**
+ * Call the php parse command ( php -l -f <filename> )
+ * and create markers according to the external parser output
+ */
+ public static void phpExternalParse(IFile file) {
+ IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
+ String filename = file.getLocation().toString();
+
+ String[] arguments = { filename };
+ MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
+ String command = form.format(arguments);
+
+ String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
+
+ try {
+ // parse the buffer to find the errors and warnings
+ createMarkers(parserResult, file);
+ } catch (CoreException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ }
+
+ public void parse() throws ParseException {
+ phpFile();
+ }
+
+/*****************************************
+ * THE JAVA LANGUAGE GRAMMAR STARTS HERE *
+ *****************************************/
+
+/*
+ * Program structuring syntax follows.
+ */
+ static final public void phpTest() throws ParseException {
+ Php();
+ jj_consume_token(0);
+ }
+
+ static final public void phpFile() throws ParseException {
+ label_1:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case 1:
+ ;
+ break;
+ default:
+ jj_la1[0] = jj_gen;
+ break label_1;
+ }
+ jj_consume_token(1);
+ Php();
+ jj_consume_token(128);
+ }
+ jj_consume_token(0);
+ }
+
+ static final public void Php() throws ParseException {
+ label_2:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CLASS:
+ case FUNCTION:
+ case IF:
+ case ARRAY:
+ case PRINT:
+ case ECHO:
+ case INCLUDE:
+ case REQUIRE:
+ case INCLUDE_ONCE:
+ case REQUIRE_ONCE:
+ case GLOBAL:
+ case STATIC:
+ case BREAK:
+ case CONTINUE:
+ case DO:
+ case FALSE:
+ case FOR:
+ case NEW:
+ case NULL:
+ case RETURN:
+ case SWITCH:
+ case TRUE:
+ case WHILE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case LBRACE:
+ case SEMICOLON:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ ;
+ break;
+ default:
+ jj_la1[1] = jj_gen;
+ break label_2;
+ }
+ BlockStatement();
+ }
+ }
+
+ static final public void ClassDeclaration() throws ParseException {
+ jj_consume_token(CLASS);
+ jj_consume_token(IDENTIFIER);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case EXTENDS:
+ jj_consume_token(EXTENDS);
+ jj_consume_token(IDENTIFIER);
+ break;
+ default:
+ jj_la1[2] = jj_gen;
+ ;
+ }
+ ClassBody();
+ }
+
+ static final public void ClassBody() throws ParseException {
+ jj_consume_token(LBRACE);
+ label_3:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case FUNCTION:
+ case VAR:
+ ;
+ break;
+ default:
+ jj_la1[3] = jj_gen;
+ break label_3;
+ }
+ ClassBodyDeclaration();
+ }
+ jj_consume_token(RBRACE);
+ }
+
+ static final public void ClassBodyDeclaration() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case FUNCTION:
+ MethodDeclaration();
+ break;
+ case VAR:
+ FieldDeclaration();
+ break;
+ default:
+ jj_la1[4] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void FieldDeclaration() throws ParseException {
+ jj_consume_token(VAR);
+ VariableDeclarator();
+ label_4:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[5] = jj_gen;
+ break label_4;
+ }
+ jj_consume_token(COMMA);
+ VariableDeclarator();
+ }
+ jj_consume_token(SEMICOLON);
+ }
+
+ static final public void VariableDeclarator() throws ParseException {
+ VariableDeclaratorId();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ASSIGN:
+ jj_consume_token(ASSIGN);
+ VariableInitializer();
+ break;
+ default:
+ jj_la1[6] = jj_gen;
+ ;
+ }
+ }
+
+ static final public void VariableDeclaratorId() throws ParseException {
+ Variable();
+ label_5:
+ while (true) {
+ if (jj_2_1(2)) {
+ ;
+ } else {
+ break label_5;
+ }
+ VariableSuffix();
+ }
+ }
+
+ static final public void Variable() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOLLAR_ID:
+ jj_consume_token(DOLLAR_ID);
+ label_6:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LBRACE:
+ ;
+ break;
+ default:
+ jj_la1[7] = jj_gen;
+ break label_6;
+ }
+ jj_consume_token(LBRACE);
+ Expression();
+ jj_consume_token(RBRACE);
+ }
+ break;
+ case DOLLAR:
+ jj_consume_token(DOLLAR);
+ VariableName();
+ break;
+ default:
+ jj_la1[8] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void VariableName() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LBRACE:
+ jj_consume_token(LBRACE);
+ Expression();
+ jj_consume_token(RBRACE);
+ break;
+ case IDENTIFIER:
+ jj_consume_token(IDENTIFIER);
+ label_7:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LBRACE:
+ ;
+ break;
+ default:
+ jj_la1[9] = jj_gen;
+ break label_7;
+ }
+ jj_consume_token(LBRACE);
+ Expression();
+ jj_consume_token(RBRACE);
+ }
+ break;
+ case DOLLAR:
+ jj_consume_token(DOLLAR);
+ VariableName();
+ break;
+ default:
+ jj_la1[10] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void VariableInitializer() throws ParseException {
+ Expression();
+ }
+
+ static final public void ArrayVariable() throws ParseException {
+ Expression();
+ label_8:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAYASSIGN:
+ ;
+ break;
+ default:
+ jj_la1[11] = jj_gen;
+ break label_8;
+ }
+ jj_consume_token(ARRAYASSIGN);
+ Expression();
+ }
+ }
+
+ static final public void ArrayInitializer() throws ParseException {
+ jj_consume_token(LPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case PRINT:
+ case FALSE:
+ case NEW:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ ArrayVariable();
+ label_9:
+ while (true) {
+ if (jj_2_2(2)) {
+ ;
+ } else {
+ break label_9;
+ }
+ jj_consume_token(COMMA);
+ ArrayVariable();
+ }
+ break;
+ default:
+ jj_la1[12] = jj_gen;
+ ;
+ }
+ jj_consume_token(RPAREN);
+ }
+
+ static final public void MethodDeclaration() throws ParseException {
+ jj_consume_token(FUNCTION);
+ MethodDeclarator();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LBRACE:
+ Block();
+ break;
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ default:
+ jj_la1[13] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void MethodDeclarator() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BIT_AND:
+ jj_consume_token(BIT_AND);
+ break;
+ default:
+ jj_la1[14] = jj_gen;
+ ;
+ }
+ jj_consume_token(IDENTIFIER);
+ FormalParameters();
+ }
+
+ static final public void FormalParameters() throws ParseException {
+ jj_consume_token(LPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOLLAR:
+ case BIT_AND:
+ case DOLLAR_ID:
+ FormalParameter();
+ label_10:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[15] = jj_gen;
+ break label_10;
+ }
+ jj_consume_token(COMMA);
+ FormalParameter();
+ }
+ break;
+ default:
+ jj_la1[16] = jj_gen;
+ ;
+ }
+ jj_consume_token(RPAREN);
+ }
+
+ static final public void FormalParameter() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BIT_AND:
+ jj_consume_token(BIT_AND);
+ break;
+ default:
+ jj_la1[17] = jj_gen;
+ ;
+ }
+ VariableDeclarator();
+ }
+
+ static final public void Type() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case STRING:
+ jj_consume_token(STRING);
+ break;
+ case BOOL:
+ jj_consume_token(BOOL);
+ break;
+ case BOOLEAN:
+ jj_consume_token(BOOLEAN);
+ break;
+ case REAL:
+ jj_consume_token(REAL);
+ break;
+ case DOUBLE:
+ jj_consume_token(DOUBLE);
+ break;
+ case FLOAT:
+ jj_consume_token(FLOAT);
+ break;
+ case INT:
+ jj_consume_token(INT);
+ break;
+ case INTEGER:
+ jj_consume_token(INTEGER);
+ break;
+ default:
+ jj_la1[18] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+/*
+ * Expression syntax follows.
+ */
+ static final public void Expression() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PRINT:
+ PrintExpression();
+ break;
+ case ARRAY:
+ case FALSE:
+ case NEW:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ ConditionalExpression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ASSIGN:
+ case PLUSASSIGN:
+ case MINUSASSIGN:
+ case STARASSIGN:
+ case SLASHASSIGN:
+ case ANDASSIGN:
+ case ORASSIGN:
+ case XORASSIGN:
+ case DOTASSIGN:
+ case REMASSIGN:
+ case LSHIFTASSIGN:
+ case RSIGNEDSHIFTASSIGN:
+ case RUNSIGNEDSHIFTASSIGN:
+ AssignmentOperator();
+ Expression();
+ break;
+ default:
+ jj_la1[19] = jj_gen;
+ ;
+ }
+ break;
+ default:
+ jj_la1[20] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void AssignmentOperator() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ASSIGN:
+ jj_consume_token(ASSIGN);
+ break;
+ case STARASSIGN:
+ jj_consume_token(STARASSIGN);
+ break;
+ case SLASHASSIGN:
+ jj_consume_token(SLASHASSIGN);
+ break;
+ case REMASSIGN:
+ jj_consume_token(REMASSIGN);
+ break;
+ case PLUSASSIGN:
+ jj_consume_token(PLUSASSIGN);
+ break;
+ case MINUSASSIGN:
+ jj_consume_token(MINUSASSIGN);
+ break;
+ case LSHIFTASSIGN:
+ jj_consume_token(LSHIFTASSIGN);
+ break;
+ case RSIGNEDSHIFTASSIGN:
+ jj_consume_token(RSIGNEDSHIFTASSIGN);
+ break;
+ case RUNSIGNEDSHIFTASSIGN:
+ jj_consume_token(RUNSIGNEDSHIFTASSIGN);
+ break;
+ case ANDASSIGN:
+ jj_consume_token(ANDASSIGN);
+ break;
+ case XORASSIGN:
+ jj_consume_token(XORASSIGN);
+ break;
+ case ORASSIGN:
+ jj_consume_token(ORASSIGN);
+ break;
+ case DOTASSIGN:
+ jj_consume_token(DOTASSIGN);
+ break;
+ default:
+ jj_la1[21] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void ConditionalExpression() throws ParseException {
+ ConditionalOrExpression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case HOOK:
+ jj_consume_token(HOOK);
+ Expression();
+ jj_consume_token(COLON);
+ ConditionalExpression();
+ break;
+ default:
+ jj_la1[22] = jj_gen;
+ ;
+ }
+ }
+
+ static final public void ConditionalOrExpression() throws ParseException {
+ ConditionalAndExpression();
+ label_11:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case _ORL:
+ case SC_OR:
+ ;
+ break;
+ default:
+ jj_la1[23] = jj_gen;
+ break label_11;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SC_OR:
+ jj_consume_token(SC_OR);
+ break;
+ case _ORL:
+ jj_consume_token(_ORL);
+ break;
+ default:
+ jj_la1[24] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ ConditionalAndExpression();
+ }
+ }
+
+ static final public void ConditionalAndExpression() throws ParseException {
+ ConcatExpression();
+ label_12:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case _ANDL:
+ case SC_AND:
+ ;
+ break;
+ default:
+ jj_la1[25] = jj_gen;
+ break label_12;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SC_AND:
+ jj_consume_token(SC_AND);
+ break;
+ case _ANDL:
+ jj_consume_token(_ANDL);
+ break;
+ default:
+ jj_la1[26] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ ConcatExpression();
+ }
+ }
+
+ static final public void ConcatExpression() throws ParseException {
+ InclusiveOrExpression();
+ label_13:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DOT:
+ ;
+ break;
+ default:
+ jj_la1[27] = jj_gen;
+ break label_13;
+ }
+ jj_consume_token(DOT);
+ InclusiveOrExpression();
+ }
+ }
+
+ static final public void InclusiveOrExpression() throws ParseException {
+ ExclusiveOrExpression();
+ label_14:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BIT_OR:
+ ;
+ break;
+ default:
+ jj_la1[28] = jj_gen;
+ break label_14;
+ }
+ jj_consume_token(BIT_OR);
+ ExclusiveOrExpression();
+ }
+ }
+
+ static final public void ExclusiveOrExpression() throws ParseException {
+ AndExpression();
+ label_15:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case XOR:
+ ;
+ break;
+ default:
+ jj_la1[29] = jj_gen;
+ break label_15;
+ }
+ jj_consume_token(XOR);
+ AndExpression();
+ }
+ }
+
+ static final public void AndExpression() throws ParseException {
+ EqualityExpression();
+ label_16:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BIT_AND:
+ ;
+ break;
+ default:
+ jj_la1[30] = jj_gen;
+ break label_16;
+ }
+ jj_consume_token(BIT_AND);
+ EqualityExpression();
+ }
+ }
+
+ static final public void EqualityExpression() throws ParseException {
+ RelationalExpression();
+ label_17:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case EQ:
+ case NE:
+ ;
+ break;
+ default:
+ jj_la1[31] = jj_gen;
+ break label_17;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case EQ:
+ jj_consume_token(EQ);
+ break;
+ case NE:
+ jj_consume_token(NE);
+ break;
+ default:
+ jj_la1[32] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ RelationalExpression();
+ }
+ }
+
+ static final public void RelationalExpression() throws ParseException {
+ ShiftExpression();
+ label_18:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case GT:
+ case LT:
+ case LE:
+ case GE:
+ ;
+ break;
+ default:
+ jj_la1[33] = jj_gen;
+ break label_18;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LT:
+ jj_consume_token(LT);
+ break;
+ case GT:
+ jj_consume_token(GT);
+ break;
+ case LE:
+ jj_consume_token(LE);
+ break;
+ case GE:
+ jj_consume_token(GE);
+ break;
+ default:
+ jj_la1[34] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ ShiftExpression();
+ }
+ }
+
+ static final public void ShiftExpression() throws ParseException {
+ AdditiveExpression();
+ label_19:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LSHIFT:
+ case RSIGNEDSHIFT:
+ case RUNSIGNEDSHIFT:
+ ;
+ break;
+ default:
+ jj_la1[35] = jj_gen;
+ break label_19;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LSHIFT:
+ jj_consume_token(LSHIFT);
+ break;
+ case RSIGNEDSHIFT:
+ jj_consume_token(RSIGNEDSHIFT);
+ break;
+ case RUNSIGNEDSHIFT:
+ jj_consume_token(RUNSIGNEDSHIFT);
+ break;
+ default:
+ jj_la1[36] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ AdditiveExpression();
+ }
+ }
+
+ static final public void AdditiveExpression() throws ParseException {
+ MultiplicativeExpression();
+ label_20:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PLUS:
+ case MINUS:
+ ;
+ break;
+ default:
+ jj_la1[37] = jj_gen;
+ break label_20;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PLUS:
+ jj_consume_token(PLUS);
+ break;
+ case MINUS:
+ jj_consume_token(MINUS);
+ break;
+ default:
+ jj_la1[38] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ MultiplicativeExpression();
+ }
+ }
+
+ static final public void MultiplicativeExpression() throws ParseException {
+ UnaryExpression();
+ label_21:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case STAR:
+ case SLASH:
+ case REM:
+ ;
+ break;
+ default:
+ jj_la1[39] = jj_gen;
+ break label_21;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case STAR:
+ jj_consume_token(STAR);
+ break;
+ case SLASH:
+ jj_consume_token(SLASH);
+ break;
+ case REM:
+ jj_consume_token(REM);
+ break;
+ default:
+ jj_la1[40] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ UnaryExpression();
+ }
+ }
+
+ static final public void UnaryExpression() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case AT:
+ jj_consume_token(AT);
+ UnaryExpression();
+ break;
+ case PLUS:
+ case MINUS:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case PLUS:
+ jj_consume_token(PLUS);
+ break;
+ case MINUS:
+ jj_consume_token(MINUS);
+ break;
+ default:
+ jj_la1[41] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ UnaryExpression();
+ break;
+ case INCR:
+ PreIncrementExpression();
+ break;
+ case DECR:
+ PreDecrementExpression();
+ break;
+ case ARRAY:
+ case FALSE:
+ case NEW:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case DOLLAR:
+ case BANG:
+ case DOLLAR_ID:
+ UnaryExpressionNotPlusMinus();
+ break;
+ default:
+ jj_la1[42] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void PreIncrementExpression() throws ParseException {
+ jj_consume_token(INCR);
+ PrimaryExpression();
+ }
+
+ static final public void PreDecrementExpression() throws ParseException {
+ jj_consume_token(DECR);
+ PrimaryExpression();
+ }
+
+ static final public void UnaryExpressionNotPlusMinus() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case BANG:
+ jj_consume_token(BANG);
+ UnaryExpression();
+ break;
+ default:
+ jj_la1[43] = jj_gen;
+ if (jj_2_3(2147483647)) {
+ CastExpression();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case NEW:
+ case IDENTIFIER:
+ case DOLLAR:
+ case DOLLAR_ID:
+ PostfixExpression();
+ break;
+ case FALSE:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ Literal();
+ break;
+ case LPAREN:
+ jj_consume_token(LPAREN);
+ Expression();
+ jj_consume_token(RPAREN);
+ break;
+ default:
+ jj_la1[44] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+ }
+
+ static final public void CastExpression() throws ParseException {
+ jj_consume_token(LPAREN);
+ Type();
+ jj_consume_token(RPAREN);
+ UnaryExpression();
+ }
+
+ static final public void PostfixExpression() throws ParseException {
+ PrimaryExpression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INCR:
+ case DECR:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INCR:
+ jj_consume_token(INCR);
+ break;
+ case DECR:
+ jj_consume_token(DECR);
+ break;
+ default:
+ jj_la1[45] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ default:
+ jj_la1[46] = jj_gen;
+ ;
+ }
+ }
+
+ static final public void PrimaryExpression() throws ParseException {
+ if (jj_2_4(2)) {
+ jj_consume_token(IDENTIFIER);
+ jj_consume_token(STATICCLASSACCESS);
+ ClassIdentifier();
+ label_22:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CLASSACCESS:
+ case LPAREN:
+ case LBRACKET:
+ ;
+ break;
+ default:
+ jj_la1[47] = jj_gen;
+ break label_22;
+ }
+ PrimarySuffix();
+ }
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case NEW:
+ case IDENTIFIER:
+ case DOLLAR:
+ case DOLLAR_ID:
+ PrimaryPrefix();
+ label_23:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CLASSACCESS:
+ case LPAREN:
+ case LBRACKET:
+ ;
+ break;
+ default:
+ jj_la1[48] = jj_gen;
+ break label_23;
+ }
+ PrimarySuffix();
+ }
+ break;
+ case ARRAY:
+ jj_consume_token(ARRAY);
+ ArrayInitializer();
+ break;
+ default:
+ jj_la1[49] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+
+ static final public void PrimaryPrefix() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IDENTIFIER:
+ jj_consume_token(IDENTIFIER);
+ break;
+ case NEW:
+ jj_consume_token(NEW);
+ ClassIdentifier();
+ break;
+ case DOLLAR:
+ case DOLLAR_ID:
+ VariableDeclaratorId();
+ break;
+ default:
+ jj_la1[50] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void ClassIdentifier() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IDENTIFIER:
+ jj_consume_token(IDENTIFIER);
+ break;
+ case DOLLAR:
+ case DOLLAR_ID:
+ VariableDeclaratorId();
+ break;
+ default:
+ jj_la1[51] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void PrimarySuffix() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LPAREN:
+ Arguments();
+ break;
+ case CLASSACCESS:
+ case LBRACKET:
+ VariableSuffix();
+ break;
+ default:
+ jj_la1[52] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void VariableSuffix() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CLASSACCESS:
+ jj_consume_token(CLASSACCESS);
+ VariableName();
+ break;
+ case LBRACKET:
+ jj_consume_token(LBRACKET);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case PRINT:
+ case FALSE:
+ case NEW:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ Expression();
+ break;
+ default:
+ jj_la1[53] = jj_gen;
+ ;
+ }
+ jj_consume_token(RBRACKET);
+ break;
+ default:
+ jj_la1[54] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void Literal() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INTEGER_LITERAL:
+ jj_consume_token(INTEGER_LITERAL);
+ break;
+ case FLOATING_POINT_LITERAL:
+ jj_consume_token(FLOATING_POINT_LITERAL);
+ break;
+ case STRING_LITERAL:
+ jj_consume_token(STRING_LITERAL);
+ break;
+ case FALSE:
+ case TRUE:
+ BooleanLiteral();
+ break;
+ case NULL:
+ NullLiteral();
+ break;
+ default:
+ jj_la1[55] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void BooleanLiteral() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case TRUE:
+ jj_consume_token(TRUE);
+ break;
+ case FALSE:
+ jj_consume_token(FALSE);
+ break;
+ default:
+ jj_la1[56] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void NullLiteral() throws ParseException {
+ jj_consume_token(NULL);
+ }
+
+ static final public void Arguments() throws ParseException {
+ jj_consume_token(LPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case PRINT:
+ case FALSE:
+ case NEW:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ ArgumentList();
+ break;
+ default:
+ jj_la1[57] = jj_gen;
+ ;
+ }
+ jj_consume_token(RPAREN);
+ }
+
+ static final public void ArgumentList() throws ParseException {
+ Expression();
+ label_24:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[58] = jj_gen;
+ break label_24;
+ }
+ jj_consume_token(COMMA);
+ Expression();
+ }
+ }
+
+/*
+ * Statement syntax follows.
+ */
+ static final public void Statement() throws ParseException {
+ if (jj_2_5(2)) {
+ Expression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[59] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ } else if (jj_2_6(2)) {
+ LabeledStatement();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case LBRACE:
+ Block();
+ break;
+ case SEMICOLON:
+ EmptyStatement();
+ break;
+ case ARRAY:
+ case NEW:
+ case IDENTIFIER:
+ case DOLLAR:
+ case INCR:
+ case DECR:
+ case DOLLAR_ID:
+ StatementExpression();
+ try {
+ jj_consume_token(SEMICOLON);
+ } catch (ParseException e) {
+ errorMessage = "';' expected after expression";
+ errorLevel = ERROR;
+ {if (true) throw e;}
+ }
+ break;
+ case SWITCH:
+ SwitchStatement();
+ break;
+ case IF:
+ IfStatement();
+ break;
+ case WHILE:
+ WhileStatement();
+ break;
+ case DO:
+ DoStatement();
+ break;
+ case FOR:
+ ForStatement();
+ break;
+ case BREAK:
+ BreakStatement();
+ break;
+ case CONTINUE:
+ ContinueStatement();
+ break;
+ case RETURN:
+ ReturnStatement();
+ break;
+ case ECHO:
+ EchoStatement();
+ break;
+ case INCLUDE:
+ case REQUIRE:
+ case INCLUDE_ONCE:
+ case REQUIRE_ONCE:
+ IncludeStatement();
+ break;
+ case STATIC:
+ StaticStatement();
+ break;
+ case GLOBAL:
+ GlobalStatement();
+ break;
+ default:
+ jj_la1[60] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+
+ static final public void IncludeStatement() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case REQUIRE:
+ jj_consume_token(REQUIRE);
+ Expression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[61] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ case REQUIRE_ONCE:
+ jj_consume_token(REQUIRE_ONCE);
+ Expression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[62] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ case INCLUDE:
+ jj_consume_token(INCLUDE);
+ Expression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[63] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ case INCLUDE_ONCE:
+ jj_consume_token(INCLUDE_ONCE);
+ Expression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[64] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ default:
+ jj_la1[65] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void PrintExpression() throws ParseException {
+ jj_consume_token(PRINT);
+ Expression();
+ }
+
+ static final public void EchoStatement() throws ParseException {
+ jj_consume_token(ECHO);
+ Expression();
+ label_25:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[66] = jj_gen;
+ break label_25;
+ }
+ jj_consume_token(COMMA);
+ Expression();
+ }
+ try {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[67] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ } catch (ParseException e) {
+ errorMessage = "';' expected after 'echo' statement";
+ errorLevel = ERROR;
+ {if (true) throw e;}
+ }
+ }
+
+ static final public void GlobalStatement() throws ParseException {
+ jj_consume_token(GLOBAL);
+ VariableDeclaratorId();
+ label_26:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[68] = jj_gen;
+ break label_26;
+ }
+ jj_consume_token(COMMA);
+ VariableDeclaratorId();
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[69] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void StaticStatement() throws ParseException {
+ jj_consume_token(STATIC);
+ VariableDeclarator();
+ label_27:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[70] = jj_gen;
+ break label_27;
+ }
+ jj_consume_token(COMMA);
+ VariableDeclarator();
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[71] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void LabeledStatement() throws ParseException {
+ jj_consume_token(IDENTIFIER);
+ jj_consume_token(COLON);
+ Statement();
+ }
+
+ static final public void Block() throws ParseException {
+ jj_consume_token(LBRACE);
+ label_28:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CLASS:
+ case FUNCTION:
+ case IF:
+ case ARRAY:
+ case PRINT:
+ case ECHO:
+ case INCLUDE:
+ case REQUIRE:
+ case INCLUDE_ONCE:
+ case REQUIRE_ONCE:
+ case GLOBAL:
+ case STATIC:
+ case BREAK:
+ case CONTINUE:
+ case DO:
+ case FALSE:
+ case FOR:
+ case NEW:
+ case NULL:
+ case RETURN:
+ case SWITCH:
+ case TRUE:
+ case WHILE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case LBRACE:
+ case SEMICOLON:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ ;
+ break;
+ default:
+ jj_la1[72] = jj_gen;
+ break label_28;
+ }
+ BlockStatement();
+ }
+ jj_consume_token(RBRACE);
+ }
+
+ static final public void BlockStatement() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IF:
+ case ARRAY:
+ case PRINT:
+ case ECHO:
+ case INCLUDE:
+ case REQUIRE:
+ case INCLUDE_ONCE:
+ case REQUIRE_ONCE:
+ case GLOBAL:
+ case STATIC:
+ case BREAK:
+ case CONTINUE:
+ case DO:
+ case FALSE:
+ case FOR:
+ case NEW:
+ case NULL:
+ case RETURN:
+ case SWITCH:
+ case TRUE:
+ case WHILE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case LBRACE:
+ case SEMICOLON:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ Statement();
+ break;
+ case CLASS:
+ ClassDeclaration();
+ break;
+ case FUNCTION:
+ MethodDeclaration();
+ break;
+ default:
+ jj_la1[73] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void LocalVariableDeclaration() throws ParseException {
+ VariableDeclarator();
+ label_29:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[74] = jj_gen;
+ break label_29;
+ }
+ jj_consume_token(COMMA);
+ VariableDeclarator();
+ }
+ }
+
+ static final public void EmptyStatement() throws ParseException {
+ jj_consume_token(SEMICOLON);
+ }
+
+ static final public void StatementExpression() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INCR:
+ PreIncrementExpression();
+ break;
+ case DECR:
+ PreDecrementExpression();
+ break;
+ case ARRAY:
+ case NEW:
+ case IDENTIFIER:
+ case DOLLAR:
+ case DOLLAR_ID:
+ PrimaryExpression();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ASSIGN:
+ case INCR:
+ case DECR:
+ case PLUSASSIGN:
+ case MINUSASSIGN:
+ case STARASSIGN:
+ case SLASHASSIGN:
+ case ANDASSIGN:
+ case ORASSIGN:
+ case XORASSIGN:
+ case DOTASSIGN:
+ case REMASSIGN:
+ case LSHIFTASSIGN:
+ case RSIGNEDSHIFTASSIGN:
+ case RUNSIGNEDSHIFTASSIGN:
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case INCR:
+ jj_consume_token(INCR);
+ break;
+ case DECR:
+ jj_consume_token(DECR);
+ break;
+ case ASSIGN:
+ case PLUSASSIGN:
+ case MINUSASSIGN:
+ case STARASSIGN:
+ case SLASHASSIGN:
+ case ANDASSIGN:
+ case ORASSIGN:
+ case XORASSIGN:
+ case DOTASSIGN:
+ case REMASSIGN:
+ case LSHIFTASSIGN:
+ case RSIGNEDSHIFTASSIGN:
+ case RUNSIGNEDSHIFTASSIGN:
+ AssignmentOperator();
+ Expression();
+ break;
+ default:
+ jj_la1[75] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ default:
+ jj_la1[76] = jj_gen;
+ ;
+ }
+ break;
+ default:
+ jj_la1[77] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void SwitchStatement() throws ParseException {
+ jj_consume_token(SWITCH);
+ jj_consume_token(LPAREN);
+ Expression();
+ jj_consume_token(RPAREN);
+ jj_consume_token(LBRACE);
+ label_30:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CASE:
+ case _DEFAULT:
+ ;
+ break;
+ default:
+ jj_la1[78] = jj_gen;
+ break label_30;
+ }
+ SwitchLabel();
+ label_31:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CLASS:
+ case FUNCTION:
+ case IF:
+ case ARRAY:
+ case PRINT:
+ case ECHO:
+ case INCLUDE:
+ case REQUIRE:
+ case INCLUDE_ONCE:
+ case REQUIRE_ONCE:
+ case GLOBAL:
+ case STATIC:
+ case BREAK:
+ case CONTINUE:
+ case DO:
+ case FALSE:
+ case FOR:
+ case NEW:
+ case NULL:
+ case RETURN:
+ case SWITCH:
+ case TRUE:
+ case WHILE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case LBRACE:
+ case SEMICOLON:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ ;
+ break;
+ default:
+ jj_la1[79] = jj_gen;
+ break label_31;
+ }
+ BlockStatement();
+ }
+ }
+ jj_consume_token(RBRACE);
+ }
+
+ static final public void SwitchLabel() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case CASE:
+ jj_consume_token(CASE);
+ Expression();
+ jj_consume_token(COLON);
+ break;
+ case _DEFAULT:
+ jj_consume_token(_DEFAULT);
+ jj_consume_token(COLON);
+ break;
+ default:
+ jj_la1[80] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void IfStatement() throws ParseException {
+ jj_consume_token(IF);
+ Condition("if");
+ Statement();
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ELSEIF:
+ ElseIfStatement();
+ break;
+ default:
+ jj_la1[81] = jj_gen;
+ ;
+ }
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ELSE:
+ jj_consume_token(ELSE);
+ Statement();
+ break;
+ default:
+ jj_la1[82] = jj_gen;
+ ;
+ }
+ }
+
+ static final public void Condition(String keyword) throws ParseException {
+ try {
+ jj_consume_token(LPAREN);
+ } catch (ParseException e) {
+ errorMessage = "'(' expected after " + keyword + " keyword";
+ errorLevel = ERROR;
+ {if (true) throw e;}
+ }
+ Expression();
+ try {
+ jj_consume_token(RPAREN);
+ } catch (ParseException e) {
+ errorMessage = "')' expected after " + keyword + " keyword";
+ errorLevel = ERROR;
+ {if (true) throw e;}
+ }
+ }
+
+ static final public void ElseIfStatement() throws ParseException {
+ jj_consume_token(ELSEIF);
+ Condition("elseif");
+ Statement();
+ }
+
+ static final public void WhileStatement() throws ParseException {
+ jj_consume_token(WHILE);
+ Condition("while");
+ WhileStatement0();
+ }
+
+ static final public void WhileStatement0() throws ParseException {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COLON:
+ jj_consume_token(COLON);
+ label_32:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IF:
+ case ARRAY:
+ case PRINT:
+ case ECHO:
+ case INCLUDE:
+ case REQUIRE:
+ case INCLUDE_ONCE:
+ case REQUIRE_ONCE:
+ case GLOBAL:
+ case STATIC:
+ case BREAK:
+ case CONTINUE:
+ case DO:
+ case FALSE:
+ case FOR:
+ case NEW:
+ case NULL:
+ case RETURN:
+ case SWITCH:
+ case TRUE:
+ case WHILE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case LBRACE:
+ case SEMICOLON:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ ;
+ break;
+ default:
+ jj_la1[83] = jj_gen;
+ break label_32;
+ }
+ Statement();
+ }
+ jj_consume_token(ENDWHILE);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[84] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ break;
+ case IF:
+ case ARRAY:
+ case PRINT:
+ case ECHO:
+ case INCLUDE:
+ case REQUIRE:
+ case INCLUDE_ONCE:
+ case REQUIRE_ONCE:
+ case GLOBAL:
+ case STATIC:
+ case BREAK:
+ case CONTINUE:
+ case DO:
+ case FALSE:
+ case FOR:
+ case NEW:
+ case NULL:
+ case RETURN:
+ case SWITCH:
+ case TRUE:
+ case WHILE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case LBRACE:
+ case SEMICOLON:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ Statement();
+ break;
+ default:
+ jj_la1[85] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void DoStatement() throws ParseException {
+ jj_consume_token(DO);
+ Statement();
+ jj_consume_token(WHILE);
+ Condition("while");
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case SEMICOLON:
+ jj_consume_token(SEMICOLON);
+ break;
+ case 128:
+ jj_consume_token(128);
+ break;
+ default:
+ jj_la1[86] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+
+ static final public void ForStatement() throws ParseException {
+ jj_consume_token(FOR);
+ jj_consume_token(LPAREN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case NEW:
+ case IDENTIFIER:
+ case DOLLAR:
+ case INCR:
+ case DECR:
+ case DOLLAR_ID:
+ ForInit();
+ break;
+ default:
+ jj_la1[87] = jj_gen;
+ ;
+ }
+ jj_consume_token(SEMICOLON);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case PRINT:
+ case FALSE:
+ case NEW:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ Expression();
+ break;
+ default:
+ jj_la1[88] = jj_gen;
+ ;
+ }
+ jj_consume_token(SEMICOLON);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case NEW:
+ case IDENTIFIER:
+ case DOLLAR:
+ case INCR:
+ case DECR:
+ case DOLLAR_ID:
+ ForUpdate();
+ break;
+ default:
+ jj_la1[89] = jj_gen;
+ ;
+ }
+ jj_consume_token(RPAREN);
+ Statement();
+ }
+
+ static final public void ForInit() throws ParseException {
+ if (jj_2_7(2147483647)) {
+ LocalVariableDeclaration();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case NEW:
+ case IDENTIFIER:
+ case DOLLAR:
+ case INCR:
+ case DECR:
+ case DOLLAR_ID:
+ StatementExpressionList();
+ break;
+ default:
+ jj_la1[90] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ }
+
+ static final public void StatementExpressionList() throws ParseException {
+ StatementExpression();
+ label_33:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case COMMA:
+ ;
+ break;
+ default:
+ jj_la1[91] = jj_gen;
+ break label_33;
+ }
+ jj_consume_token(COMMA);
+ StatementExpression();
+ }
+ }
+
+ static final public void ForUpdate() throws ParseException {
+ StatementExpressionList();
+ }
+
+ static final public void BreakStatement() throws ParseException {
+ jj_consume_token(BREAK);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IDENTIFIER:
+ jj_consume_token(IDENTIFIER);
+ break;
+ default:
+ jj_la1[92] = jj_gen;
+ ;
+ }
+ jj_consume_token(SEMICOLON);
+ }
+
+ static final public void ContinueStatement() throws ParseException {
+ jj_consume_token(CONTINUE);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case IDENTIFIER:
+ jj_consume_token(IDENTIFIER);
+ break;
+ default:
+ jj_la1[93] = jj_gen;
+ ;
+ }
+ jj_consume_token(SEMICOLON);
+ }
+
+ static final public void ReturnStatement() throws ParseException {
+ jj_consume_token(RETURN);
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case ARRAY:
+ case PRINT:
+ case FALSE:
+ case NEW:
+ case NULL:
+ case TRUE:
+ case INTEGER_LITERAL:
+ case FLOATING_POINT_LITERAL:
+ case STRING_LITERAL:
+ case IDENTIFIER:
+ case LPAREN:
+ case AT:
+ case DOLLAR:
+ case BANG:
+ case INCR:
+ case DECR:
+ case PLUS:
+ case MINUS:
+ case DOLLAR_ID:
+ Expression();
+ break;
+ default:
+ jj_la1[94] = jj_gen;
+ ;
+ }
+ jj_consume_token(SEMICOLON);
+ }
+
+ static final private boolean jj_2_1(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ boolean retval = !jj_3_1();
+ jj_save(0, xla);
+ return retval;
+ }
+
+ static final private boolean jj_2_2(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ boolean retval = !jj_3_2();
+ jj_save(1, xla);
+ return retval;
+ }
+
+ static final private boolean jj_2_3(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ boolean retval = !jj_3_3();
+ jj_save(2, xla);
+ return retval;
+ }
+
+ static final private boolean jj_2_4(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ boolean retval = !jj_3_4();
+ jj_save(3, xla);
+ return retval;
+ }
+
+ static final private boolean jj_2_5(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ boolean retval = !jj_3_5();
+ jj_save(4, xla);
+ return retval;
+ }
+
+ static final private boolean jj_2_6(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ boolean retval = !jj_3_6();
+ jj_save(5, xla);
+ return retval;
+ }
+
+ static final private boolean jj_2_7(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ boolean retval = !jj_3_7();
+ jj_save(6, xla);
+ return retval;
+ }
+
+ static final private boolean jj_3R_77() {
+ if (jj_scan_token(PLUSASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_98() {
+ if (jj_scan_token(BIT_OR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_97()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_101() {
+ if (jj_scan_token(XOR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_100()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_104() {
+ if (jj_3R_106()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_107()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_91() {
+ if (jj_scan_token(_ORL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_96() {
+ if (jj_scan_token(_ANDL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_94() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_93()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_102() {
+ if (jj_3R_104()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_105()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_90() {
+ if (jj_scan_token(SC_OR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_76() {
+ if (jj_scan_token(REMASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_100() {
+ if (jj_3R_102()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_103()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_72() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_90()) {
+ jj_scanpos = xsp;
+ if (jj_3R_91()) 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_3R_71()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_95() {
+ if (jj_scan_token(SC_AND)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_89() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_95()) {
+ jj_scanpos = xsp;
+ if (jj_3R_96()) 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_3R_88()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_97() {
+ if (jj_3R_100()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_101()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_67() {
+ if (jj_scan_token(HOOK)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(COLON)) 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;
+ }
+
+ static final private boolean jj_3R_93() {
+ if (jj_3R_97()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_98()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_75() {
+ if (jj_scan_token(SLASHASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_88() {
+ if (jj_3R_93()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_94()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_71() {
+ if (jj_3R_88()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_89()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_66() {
+ if (jj_3R_71()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_72()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_74() {
+ if (jj_scan_token(STARASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_59() {
+ if (jj_3R_66()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_67()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_73() {
+ if (jj_scan_token(ASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_68() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_73()) {
+ jj_scanpos = xsp;
+ if (jj_3R_74()) {
+ jj_scanpos = xsp;
+ if (jj_3R_75()) {
+ jj_scanpos = xsp;
+ if (jj_3R_76()) {
+ jj_scanpos = xsp;
+ if (jj_3R_77()) {
+ jj_scanpos = xsp;
+ if (jj_3R_78()) {
+ jj_scanpos = xsp;
+ if (jj_3R_79()) {
+ jj_scanpos = xsp;
+ if (jj_3R_80()) {
+ jj_scanpos = xsp;
+ if (jj_3R_81()) {
+ jj_scanpos = xsp;
+ if (jj_3R_82()) {
+ jj_scanpos = xsp;
+ if (jj_3R_83()) {
+ jj_scanpos = xsp;
+ if (jj_3R_84()) {
+ jj_scanpos = xsp;
+ if (jj_3R_85()) 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;
+ } 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;
+ }
+
+ static final private boolean jj_3R_60() {
+ if (jj_3R_68()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_53() {
+ if (jj_3R_59()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_60()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_37() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_52()) {
+ jj_scanpos = xsp;
+ if (jj_3R_53()) 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;
+ }
+
+ static final private boolean jj_3R_52() {
+ if (jj_3R_58()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_55() {
+ if (jj_scan_token(COMMA)) return true;
+ 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;
+ }
+
+ static final private boolean jj_3R_51() {
+ if (jj_scan_token(INTEGER)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_50() {
+ if (jj_scan_token(INT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_49() {
+ if (jj_scan_token(FLOAT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_48() {
+ if (jj_scan_token(DOUBLE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_47() {
+ if (jj_scan_token(REAL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_46() {
+ if (jj_scan_token(BOOLEAN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_45() {
+ if (jj_scan_token(BOOL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_36() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_44()) {
+ jj_scanpos = xsp;
+ if (jj_3R_45()) {
+ jj_scanpos = xsp;
+ if (jj_3R_46()) {
+ jj_scanpos = xsp;
+ if (jj_3R_47()) {
+ jj_scanpos = xsp;
+ if (jj_3R_48()) {
+ jj_scanpos = xsp;
+ if (jj_3R_49()) {
+ jj_scanpos = xsp;
+ if (jj_3R_50()) {
+ jj_scanpos = xsp;
+ if (jj_3R_51()) 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;
+ } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_44() {
+ if (jj_scan_token(STRING)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3_2() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_35()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_41() {
+ 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;
+ }
+
+ static final private boolean jj_3R_175() {
+ if (jj_3R_35()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_2()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_176() {
+ if (jj_scan_token(ARRAYASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_40() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(COLON)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_164() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_175()) 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;
+ return false;
+ }
+
+ static final private boolean jj_3R_35() {
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_176()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_99() {
+ if (jj_scan_token(LBRACE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(RBRACE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_70() {
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_92() {
+ if (jj_scan_token(LBRACE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(RBRACE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_62() {
+ if (jj_scan_token(ASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_70()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_65() {
+ if (jj_scan_token(DOLLAR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_56()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_64() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_99()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_63() {
+ if (jj_scan_token(LBRACE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(RBRACE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_56() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_63()) {
+ jj_scanpos = xsp;
+ if (jj_3R_64()) {
+ jj_scanpos = xsp;
+ if (jj_3R_65()) 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;
+ }
+
+ static final private boolean jj_3_1() {
+ if (jj_3R_34()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_87() {
+ if (jj_scan_token(DOLLAR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_56()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_58() {
+ if (jj_scan_token(PRINT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_86() {
+ if (jj_scan_token(DOLLAR_ID)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_92()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_69() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_86()) {
+ jj_scanpos = xsp;
+ if (jj_3R_87()) 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;
+ }
+
+ static final private boolean jj_3R_61() {
+ if (jj_3R_69()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_1()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_54() {
+ if (jj_3R_61()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_62()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_39() {
+ if (jj_scan_token(128)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_38() {
+ if (jj_scan_token(SEMICOLON)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_179() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3_6() {
+ if (jj_3R_40()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3_5() {
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_38()) {
+ jj_scanpos = xsp;
+ if (jj_3R_39()) 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;
+ }
+
+ static final private boolean jj_3R_177() {
+ if (jj_3R_178()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_178() {
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_179()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_174() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_177()) 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;
+ return false;
+ }
+
+ static final private boolean jj_3R_162() {
+ if (jj_scan_token(NULL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_85() {
+ if (jj_scan_token(DOTASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_166() {
+ if (jj_scan_token(FALSE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_161() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_165()) {
+ jj_scanpos = xsp;
+ if (jj_3R_166()) 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;
+ }
+
+ static final private boolean jj_3R_165() {
+ if (jj_scan_token(TRUE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_171() {
+ if (jj_3R_167()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_155() {
+ if (jj_3R_162()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_57() {
+ if (jj_3R_37()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_154() {
+ if (jj_3R_161()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_84() {
+ if (jj_scan_token(ORASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_153() {
+ if (jj_scan_token(STRING_LITERAL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_152() {
+ if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_148() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_151()) {
+ jj_scanpos = xsp;
+ if (jj_3R_152()) {
+ jj_scanpos = xsp;
+ if (jj_3R_153()) {
+ jj_scanpos = xsp;
+ if (jj_3R_154()) {
+ jj_scanpos = xsp;
+ if (jj_3R_155()) 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;
+ }
+
+ static final private boolean jj_3R_151() {
+ if (jj_scan_token(INTEGER_LITERAL)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_43() {
+ 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_57()) 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;
+ }
+
+ static final private boolean jj_3R_42() {
+ if (jj_scan_token(CLASSACCESS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_56()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_34() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_42()) {
+ jj_scanpos = xsp;
+ if (jj_3R_43()) 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;
+ }
+
+ static final private boolean jj_3R_83() {
+ if (jj_scan_token(XORASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_170() {
+ if (jj_3R_34()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_167() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_169()) {
+ jj_scanpos = xsp;
+ if (jj_3R_170()) 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;
+ }
+
+ static final private boolean jj_3R_169() {
+ if (jj_3R_174()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_160() {
+ if (jj_scan_token(DECR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_173() {
+ if (jj_3R_61()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_172() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_82() {
+ if (jj_scan_token(ANDASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_163() {
+ if (jj_3R_167()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_168() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_172()) {
+ jj_scanpos = xsp;
+ if (jj_3R_173()) 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;
+ }
+
+ static final private boolean jj_3R_150() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_159()) {
+ jj_scanpos = xsp;
+ if (jj_3R_160()) 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;
+ }
+
+ static final private boolean jj_3R_159() {
+ if (jj_scan_token(INCR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_158() {
+ if (jj_3R_61()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_157() {
+ if (jj_scan_token(NEW)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_168()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_149() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_156()) {
+ jj_scanpos = xsp;
+ if (jj_3R_157()) {
+ jj_scanpos = xsp;
+ if (jj_3R_158()) 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;
+ }
+
+ static final private boolean jj_3R_156() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_145() {
+ if (jj_scan_token(ARRAY)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_164()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_144() {
+ if (jj_3R_149()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_163()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3_4() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_scan_token(STATICCLASSACCESS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_168()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_171()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_138() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_4()) {
+ jj_scanpos = xsp;
+ if (jj_3R_144()) {
+ jj_scanpos = xsp;
+ if (jj_3R_145()) 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;
+ }
+
+ static final private boolean jj_3R_81() {
+ if (jj_scan_token(RUNSIGNEDSHIFTASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_147() {
+ if (jj_3R_138()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_150()) jj_scanpos = xsp;
+ else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_146() {
+ 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;
+ if (jj_3R_121()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3_3() {
+ 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;
+ }
+
+ static final private boolean jj_3R_120() {
+ if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_132() {
+ if (jj_scan_token(REM)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_143() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_37()) 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;
+ }
+
+ static final private boolean jj_3R_142() {
+ if (jj_3R_148()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_141() {
+ if (jj_3R_147()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_124() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_140() {
+ if (jj_3R_146()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_80() {
+ if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_137() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_139()) {
+ jj_scanpos = xsp;
+ if (jj_3R_140()) {
+ jj_scanpos = xsp;
+ if (jj_3R_141()) {
+ jj_scanpos = xsp;
+ if (jj_3R_142()) {
+ jj_scanpos = xsp;
+ if (jj_3R_143()) 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;
+ }
+
+ static final private boolean jj_3R_139() {
+ if (jj_scan_token(BANG)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_121()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_131() {
+ if (jj_scan_token(SLASH)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_136() {
+ if (jj_scan_token(DECR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_138()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_115() {
+ if (jj_scan_token(GE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_123() {
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_119() {
+ if (jj_scan_token(RSIGNEDSHIFT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_117() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_123()) {
+ jj_scanpos = xsp;
+ if (jj_3R_124()) 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_3R_116()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_130() {
+ if (jj_scan_token(STAR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_122() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_130()) {
+ jj_scanpos = xsp;
+ if (jj_3R_131()) {
+ jj_scanpos = xsp;
+ if (jj_3R_132()) 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;
+ if (jj_3R_121()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_135() {
+ if (jj_scan_token(INCR)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_138()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_134() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_114() {
+ if (jj_scan_token(LE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_79() {
+ if (jj_scan_token(LSHIFTASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_129() {
+ if (jj_3R_137()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_118() {
+ if (jj_scan_token(LSHIFT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_128() {
+ if (jj_3R_136()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_111() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_118()) {
+ jj_scanpos = xsp;
+ if (jj_3R_119()) {
+ jj_scanpos = xsp;
+ if (jj_3R_120()) 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;
+ if (jj_3R_110()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_113() {
+ if (jj_scan_token(GT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_109() {
+ if (jj_scan_token(NE)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_127() {
+ if (jj_3R_135()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_133() {
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_126() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_133()) {
+ jj_scanpos = xsp;
+ if (jj_3R_134()) 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_3R_121()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_121() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_125()) {
+ jj_scanpos = xsp;
+ if (jj_3R_126()) {
+ jj_scanpos = xsp;
+ if (jj_3R_127()) {
+ jj_scanpos = xsp;
+ if (jj_3R_128()) {
+ jj_scanpos = xsp;
+ if (jj_3R_129()) 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;
+ }
+
+ static final private boolean jj_3R_125() {
+ if (jj_scan_token(AT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_121()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_112() {
+ if (jj_scan_token(LT)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_108() {
+ if (jj_scan_token(EQ)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_107() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_112()) {
+ jj_scanpos = xsp;
+ if (jj_3R_113()) {
+ jj_scanpos = xsp;
+ if (jj_3R_114()) {
+ jj_scanpos = xsp;
+ if (jj_3R_115()) 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;
+ if (jj_3R_106()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_105() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_108()) {
+ jj_scanpos = xsp;
+ if (jj_3R_109()) 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_3R_104()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_116() {
+ if (jj_3R_121()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_122()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3_7() {
+ if (jj_3R_41()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_78() {
+ if (jj_scan_token(MINUSASSIGN)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_110() {
+ if (jj_3R_116()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_117()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static final private boolean jj_3R_103() {
+ if (jj_scan_token(BIT_AND)) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ if (jj_3R_102()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
+ static final private boolean jj_3R_106() {
+ if (jj_3R_110()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_111()) { jj_scanpos = xsp; break; }
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ }
+ return false;
+ }
+
+ static private boolean jj_initialized_once = false;
+ static public PHPParserTokenManager token_source;
+ static SimpleCharStream jj_input_stream;
+ static public Token token, jj_nt;
+ static private int jj_ntk;
+ static private Token jj_scanpos, jj_lastpos;
+ static private int jj_la;
+ static public boolean lookingAhead = false;
+ static private boolean jj_semLA;
+ static private int jj_gen;
+ static final private int[] jj_la1 = new int[95];
+ static final private int[] jj_la1_0 = {0x2,0xff960000,0x0,0xc0000,0xc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0x800000,0x0,0x0,0x0,0x0,0x800000,0x0,0x0,0x0,0x1800000,0x0,0x0,0x0,0x1800000,0x0,0x0,0xfe900000,0x0,0x0,0x0,0x0,0x3c000000,0x0,0x0,0x0,0x0,0x0,0x0,0xff960000,0xff960000,0x0,0x0,0x0,0x800000,0x0,0xff960000,0x0,0x200000,0x400000,0xff900000,0x0,0xff900000,0x0,0x800000,0x1800000,0x800000,0x800000,0x0,0x0,0x0,0x1800000,};
+ static final private int[] jj_la1_1 = {0x0,0x1aed48,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x86400,0x0,0x0,0x0,0x0,0x0,0x7f400000,0x0,0x86400,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x86400,0x0,0x86400,0x0,0x0,0x1,0x1,0x2000,0x2000,0x0,0x1,0x86400,0x1,0x84400,0x80400,0x86400,0x0,0x0,0x12a948,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1aed48,0x1aed48,0x0,0x0,0x0,0x2000,0x90,0x1aed48,0x90,0x0,0x0,0x1aed48,0x0,0x1aed48,0x0,0x2000,0x86400,0x2000,0x2000,0x0,0x0,0x0,0x86400,};
+ static final private int[] jj_la1_2 = {0x0,0x232288a2,0x0,0x0,0x0,0x400000,0x4000000,0x20000,0x2000000,0x20000,0x2020800,0x0,0x230088a2,0x220000,0x0,0x400000,0x2000000,0x0,0x0,0x4000000,0x230088a2,0x4000000,0x40000000,0x0,0x0,0x1,0x1,0x800000,0x0,0x0,0x0,0x0,0x0,0x18000000,0x18000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x230088a2,0x20000000,0x20088a2,0x0,0x0,0x88000,0x88000,0x2000800,0x2000800,0x2000800,0x88000,0x230088a2,0x80000,0xa2,0x0,0x230088a2,0x400000,0x200000,0x2220800,0x200000,0x200000,0x200000,0x200000,0x0,0x400000,0x200000,0x400000,0x200000,0x400000,0x200000,0x232288a2,0x232288a2,0x400000,0x4000000,0x4000000,0x2000800,0x0,0x232288a2,0x0,0x0,0x0,0x232288a2,0x200000,0xa32288a2,0x200000,0x2000800,0x230088a2,0x2000800,0x2000800,0x400000,0x800,0x800,0x230088a2,};
+ static final private int[] jj_la1_3 = {0x0,0x800003c0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x800003c0,0x0,0x1000,0x0,0x80001000,0x1000,0x0,0x7ff80000,0x800003c0,0x7ff80000,0x0,0x10,0x10,0x20,0x20,0x0,0x2000,0x4000,0x1000,0x9,0x9,0x6,0x6,0x70000,0x70000,0x300,0x300,0x8c00,0x8c00,0x300,0x800003c0,0x0,0x80000000,0xc0,0xc0,0x0,0x0,0x80000000,0x80000000,0x80000000,0x0,0x800003c0,0x0,0x0,0x0,0x800003c0,0x0,0x0,0x800000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800003c0,0x800003c0,0x0,0x7ff800c0,0x7ff800c0,0x800000c0,0x0,0x800003c0,0x0,0x0,0x0,0x800003c0,0x0,0x800003c0,0x0,0x800000c0,0x800003c0,0x800000c0,0x800000c0,0x0,0x0,0x0,0x800003c0,};
+ static final private int[] jj_la1_4 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x1,0x1,0x1,0x0,0x0,0x1,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ static final private JJCalls[] jj_2_rtns = new JJCalls[7];
+ static private boolean jj_rescan = false;
+ static private int jj_gc = 0;
+
+ public PHPParser(java.io.InputStream stream) {
+ if (jj_initialized_once) {
+ System.out.println("ERROR: Second call to constructor of static parser. You must");
+ System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
+ System.out.println(" during parser generation.");
+ throw new Error();
+ }
+ jj_initialized_once = true;
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new PHPParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 95; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ static public void ReInit(java.io.InputStream stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 95; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public PHPParser(java.io.Reader stream) {
+ if (jj_initialized_once) {
+ System.out.println("ERROR: Second call to constructor of static parser. You must");
+ System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
+ System.out.println(" during parser generation.");
+ throw new Error();
+ }
+ jj_initialized_once = true;
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ token_source = new PHPParserTokenManager(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 95; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ static public void ReInit(java.io.Reader stream) {
+ jj_input_stream.ReInit(stream, 1, 1);
+ token_source.ReInit(jj_input_stream);
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 95; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public PHPParser(PHPParserTokenManager tm) {
+ if (jj_initialized_once) {
+ System.out.println("ERROR: Second call to constructor of static parser. You must");
+ System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
+ System.out.println(" during parser generation.");
+ throw new Error();
+ }
+ jj_initialized_once = true;
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 95; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ public void ReInit(PHPParserTokenManager tm) {
+ token_source = tm;
+ token = new Token();
+ jj_ntk = -1;
+ jj_gen = 0;
+ for (int i = 0; i < 95; i++) jj_la1[i] = -1;
+ for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
+ }
+
+ static final private Token jj_consume_token(int kind) throws ParseException {
+ Token oldToken;
+ if ((oldToken = token).next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ if (token.kind == kind) {
+ jj_gen++;
+ if (++jj_gc > 100) {
+ jj_gc = 0;
+ for (int i = 0; i < jj_2_rtns.length; i++) {
+ JJCalls c = jj_2_rtns[i];
+ while (c != null) {
+ if (c.gen < jj_gen) c.first = null;
+ c = c.next;
+ }
+ }
+ }
+ return token;
+ }
+ token = oldToken;
+ jj_kind = kind;
+ throw generateParseException();
+ }
+
+ static final private boolean jj_scan_token(int kind) {
+ if (jj_scanpos == jj_lastpos) {
+ jj_la--;
+ if (jj_scanpos.next == null) {
+ jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
+ } else {
+ jj_lastpos = jj_scanpos = jj_scanpos.next;
+ }
+ } else {
+ jj_scanpos = jj_scanpos.next;
+ }
+ if (jj_rescan) {
+ int i = 0; Token tok = token;
+ while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
+ if (tok != null) jj_add_error_token(kind, i);
+ }
+ return (jj_scanpos.kind != kind);
+ }
+
+ static final public Token getNextToken() {
+ if (token.next != null) token = token.next;
+ else token = token.next = token_source.getNextToken();
+ jj_ntk = -1;
+ jj_gen++;
+ return token;
+ }
+
+ static final public Token getToken(int index) {
+ Token t = lookingAhead ? jj_scanpos : token;
+ for (int i = 0; i < index; i++) {
+ if (t.next != null) t = t.next;
+ else t = t.next = token_source.getNextToken();
+ }
+ return t;
+ }
+
+ static final private int jj_ntk() {
+ if ((jj_nt=token.next) == null)
+ return (jj_ntk = (token.next=token_source.getNextToken()).kind);
+ else
+ return (jj_ntk = jj_nt.kind);
+ }
+
+ static private java.util.Vector jj_expentries = new java.util.Vector();
+ static private int[] jj_expentry;
+ static private int jj_kind = -1;
+ static private int[] jj_lasttokens = new int[100];
+ static private int jj_endpos;
+
+ static private void jj_add_error_token(int kind, int pos) {
+ if (pos >= 100) return;
+ if (pos == jj_endpos + 1) {
+ jj_lasttokens[jj_endpos++] = kind;
+ } else if (jj_endpos != 0) {
+ jj_expentry = new int[jj_endpos];
+ for (int i = 0; i < jj_endpos; i++) {
+ jj_expentry[i] = jj_lasttokens[i];
+ }
+ boolean exists = false;
+ for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
+ int[] oldentry = (int[])(enum.nextElement());
+ if (oldentry.length == jj_expentry.length) {
+ exists = true;
+ for (int i = 0; i < jj_expentry.length; i++) {
+ if (oldentry[i] != jj_expentry[i]) {
+ exists = false;
+ break;
+ }
+ }
+ if (exists) break;
+ }
+ }
+ if (!exists) jj_expentries.addElement(jj_expentry);
+ if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
+ }
+ }
+
+ static final public ParseException generateParseException() {
+ jj_expentries.removeAllElements();
+ boolean[] la1tokens = new boolean[129];
+ for (int i = 0; i < 129; i++) {
+ la1tokens[i] = false;
+ }
+ if (jj_kind >= 0) {
+ la1tokens[jj_kind] = true;
+ jj_kind = -1;
+ }
+ for (int i = 0; i < 95; i++) {
+ if (jj_la1[i] == jj_gen) {
+ for (int j = 0; j < 32; j++) {
+ if ((jj_la1_0[i] & (1<<j)) != 0) {
+ la1tokens[j] = true;
+ }
+ if ((jj_la1_1[i] & (1<<j)) != 0) {
+ la1tokens[32+j] = true;
+ }
+ if ((jj_la1_2[i] & (1<<j)) != 0) {
+ la1tokens[64+j] = true;
+ }
+ if ((jj_la1_3[i] & (1<<j)) != 0) {
+ la1tokens[96+j] = true;
+ }
+ if ((jj_la1_4[i] & (1<<j)) != 0) {
+ la1tokens[128+j] = true;
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 129; i++) {
+ if (la1tokens[i]) {
+ jj_expentry = new int[1];
+ jj_expentry[0] = i;
+ jj_expentries.addElement(jj_expentry);
+ }
+ }
+ jj_endpos = 0;
+ jj_rescan_token();
+ jj_add_error_token(0, 0);
+ int[][] exptokseq = new int[jj_expentries.size()][];
+ for (int i = 0; i < jj_expentries.size(); i++) {
+ exptokseq[i] = (int[])jj_expentries.elementAt(i);
+ }
+ return new ParseException(token, exptokseq, tokenImage);
+ }
+
+ static final public void enable_tracing() {
+ }
+
+ static final public void disable_tracing() {
+ }
+
+ static final private void jj_rescan_token() {
+ jj_rescan = true;
+ for (int i = 0; i < 7; i++) {
+ JJCalls p = jj_2_rtns[i];
+ do {
+ if (p.gen > jj_gen) {
+ jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
+ switch (i) {
+ case 0: jj_3_1(); break;
+ case 1: jj_3_2(); break;
+ case 2: jj_3_3(); break;
+ case 3: jj_3_4(); break;
+ case 4: jj_3_5(); break;
+ case 5: jj_3_6(); break;
+ case 6: jj_3_7(); break;
+ }
+ }
+ p = p.next;
+ } while (p != null);
+ }
+ jj_rescan = false;
+ }
+
+ static final private void jj_save(int index, int xla) {
+ JJCalls p = jj_2_rtns[index];
+ while (p.gen > jj_gen) {
+ if (p.next == null) { p = p.next = new JJCalls(); break; }
+ p = p.next;
+ }
+ p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
+ }
+
+ static final class JJCalls {
+ int gen;
+ Token first;
+ int arg;
+ JJCalls next;
+ }
+
+}
--- /dev/null
+options {
+ LOOKAHEAD = 1;
+ CHOICE_AMBIGUITY_CHECK = 2;
+ OTHER_AMBIGUITY_CHECK = 1;
+ STATIC = true;
+ DEBUG_PARSER = false;
+ DEBUG_LOOKAHEAD = false;
+ DEBUG_TOKEN_MANAGER = false;
+ OPTIMIZE_TOKEN_MANAGER = false;
+ ERROR_REPORTING = true;
+ JAVA_UNICODE_ESCAPE = false;
+ UNICODE_INPUT = false;
+ IGNORE_CASE = true;
+ USER_TOKEN_MANAGER = false;
+ USER_CHAR_STREAM = false;
+ BUILD_PARSER = true;
+ BUILD_TOKEN_MANAGER = true;
+ SANITY_CHECK = true;
+ FORCE_LA_CHECK = false;
+}
+
+PARSER_BEGIN(PHPParser)
+package test;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.ui.texteditor.MarkerUtilities;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import java.io.CharArrayReader;
+import java.util.Hashtable;
+import java.io.StringReader;
+import java.text.MessageFormat;
+
+import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
+
+/**
+ * A new php parser.
+ * This php parser is inspired by the Java 1.2 grammar example
+ * given with JavaCC. You can get JavaCC at http://www.webgain.com
+ * You can test the parser with the PHPParserTestCase2.java
+ * @author Matthieu Casanova
+ */
+public class PHPParser extends PHPParserSuperclass {
+
+ private static PHPParser me;
+
+ private static IFile fileToParse;
+
+ private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
+ private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
+ public static final int ERROR = 2;
+ public static final int WARNING = 1;
+ public static final int INFO = 0;
+ PHPOutlineInfo outlineInfo;
+ private static int errorLevel = ERROR;
+ private static String errorMessage;
+
+ public PHPParser() {
+ }
+
+ public static PHPParser getInstance(IFile fileToParse) {
+ if (me == null) {
+ me = new PHPParser(fileToParse);
+ } else {
+ me.setFileToParse(fileToParse);
+ }
+ return me;
+ }
+
+ public void setFileToParse(IFile fileToParse) {
+ this.fileToParse = fileToParse;
+ }
+
+ public static PHPParser getInstance(java.io.Reader stream) {
+ if (me == null) {
+ me = new PHPParser(stream);
+ } else {
+ me.ReInit(stream);
+ }
+ return me;
+ }
+
+ public PHPParser(IFile fileToParse) {
+ this(new StringReader(""));
+ this.fileToParse = fileToParse;
+ }
+
+ public void phpParserTester(String strEval) throws CoreException, ParseException {
+ PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING);
+ StringReader stream = new StringReader(strEval);
+ if (jj_input_stream == null) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ }
+ ReInit(new StringReader(strEval));
+ phpTest();
+ }
+
+ public void htmlParserTester(String strEval) throws CoreException, ParseException {
+ StringReader stream = new StringReader(strEval);
+ if (jj_input_stream == null) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ }
+ ReInit(stream);
+ phpTest();
+ }
+
+ public PHPOutlineInfo parseInfo(Object parent, String s) {
+ outlineInfo = new PHPOutlineInfo(parent);
+ StringReader stream = new StringReader(s);
+ if (jj_input_stream == null) {
+ jj_input_stream = new SimpleCharStream(stream, 1, 1);
+ }
+ ReInit(stream);
+ try {
+ parse();
+ } catch (ParseException e) {
+ if (errorMessage == null) {
+ PHPeclipsePlugin.log(e);
+ } else {
+ setMarker(errorMessage, e.currentToken.beginLine, errorLevel);
+ errorMessage = null;
+ }
+ }
+ return outlineInfo;
+ }
+
+
+ /**
+ * Create marker for the parse error
+ */
+ private static void setMarker(String message, int lineNumber, int errorLevel) {
+ try {
+ setMarker(fileToParse, message, lineNumber, errorLevel);
+ } catch (CoreException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ }
+
+ public static void setMarker(IFile file, String message, int lineNumber, int errorLevel) throws CoreException {
+ if (file != null) {
+ Hashtable attributes = new Hashtable();
+ MarkerUtilities.setMessage(attributes, message);
+ switch (errorLevel) {
+ case ERROR :
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
+ break;
+ case WARNING :
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
+ break;
+ case INFO :
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
+ break;
+ }
+ MarkerUtilities.setLineNumber(attributes, lineNumber);
+ MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
+ }
+ }
+
+ /**
+ * Create markers according to the external parser output
+ */
+ private static void createMarkers(String output, IFile file) throws CoreException {
+ // delete all markers
+ file.deleteMarkers(IMarker.PROBLEM, false, 0);
+
+ int indx = 0;
+ int brIndx = 0;
+ boolean flag = true;
+ while ((brIndx = output.indexOf("<br />", indx)) != -1) {
+ // newer php error output (tested with 4.2.3)
+ scanLine(output, file, indx, brIndx);
+ indx = brIndx + 6;
+ flag = false;
+ }
+ if (flag) {
+ while ((brIndx = output.indexOf("<br>", indx)) != -1) {
+ // older php error output (tested with 4.2.3)
+ scanLine(output, file, indx, brIndx);
+ indx = brIndx + 4;
+ }
+ }
+ }
+
+ private static void scanLine(String output, IFile file, int indx, int brIndx) throws CoreException {
+ String current;
+ StringBuffer lineNumberBuffer = new StringBuffer(10);
+ char ch;
+ current = output.substring(indx, brIndx);
+
+ if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
+ int onLine = current.indexOf("on line <b>");
+ if (onLine != -1) {
+ lineNumberBuffer.delete(0, lineNumberBuffer.length());
+ for (int i = onLine; i < current.length(); i++) {
+ ch = current.charAt(i);
+ if ('0' <= ch && '9' >= ch) {
+ lineNumberBuffer.append(ch);
+ }
+ }
+
+ int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
+
+ Hashtable attributes = new Hashtable();
+
+ current = current.replaceAll("\n", "");
+ current = current.replaceAll("<b>", "");
+ current = current.replaceAll("</b>", "");
+ MarkerUtilities.setMessage(attributes, current);
+
+ if (current.indexOf(PARSE_ERROR_STRING) != -1)
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
+ else if (current.indexOf(PARSE_WARNING_STRING) != -1)
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
+ else
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
+ MarkerUtilities.setLineNumber(attributes, lineNumber);
+ MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
+ }
+ }
+ }
+
+ public void parse(String s) throws CoreException {
+ ReInit(new StringReader(s));
+ try {
+ parse();
+ } catch (ParseException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ }
+
+ /**
+ * Call the php parse command ( php -l -f <filename> )
+ * and create markers according to the external parser output
+ */
+ public static void phpExternalParse(IFile file) {
+ IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
+ String filename = file.getLocation().toString();
+
+ String[] arguments = { filename };
+ MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
+ String command = form.format(arguments);
+
+ String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
+
+ try {
+ // parse the buffer to find the errors and warnings
+ createMarkers(parserResult, file);
+ } catch (CoreException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ }
+
+ public void parse() throws ParseException {
+ phpFile();
+ }
+}
+
+PARSER_END(PHPParser)
+
+<DEFAULT> TOKEN :
+{
+ "<?php" : PHPPARSING
+| "<?" : PHPPARSING
+}
+
+<DEFAULT> SKIP :
+{
+ < ~[] >
+}
+
+<PHPPARSING> TOKEN :
+{
+ "?>" : DEFAULT
+}
+
+/* WHITE SPACE */
+
+<PHPPARSING> SKIP :
+{
+ " "
+| "\t"
+| "\n"
+| "\r"
+| "\f"
+}
+
+/* COMMENTS */
+
+<PHPPARSING> MORE :
+{
+ "//" : IN_SINGLE_LINE_COMMENT
+|
+ <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT
+|
+ "/*" : IN_MULTI_LINE_COMMENT
+}
+
+<IN_SINGLE_LINE_COMMENT>
+SPECIAL_TOKEN :
+{
+ <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n" | "?>" > : PHPPARSING
+}
+
+<IN_FORMAL_COMMENT>
+SPECIAL_TOKEN :
+{
+ <FORMAL_COMMENT: "*/" > : PHPPARSING
+}
+
+<IN_MULTI_LINE_COMMENT>
+SPECIAL_TOKEN :
+{
+ <MULTI_LINE_COMMENT: "*/" > : PHPPARSING
+}
+
+<IN_SINGLE_LINE_COMMENT,IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT>
+MORE :
+{
+ < ~[] >
+}
+
+/* KEYWORDS */
+<PHPPARSING> TOKEN :
+{
+ <CLASS : "class">
+| <FUNCTION : "function">
+| <VAR : "var">
+| <IF : "if">
+| <ELSEIF : "elseif">
+| <ELSE : "else">
+| <ARRAY : "array">
+}
+
+/* LANGUAGE CONSTRUCT */
+<PHPPARSING> TOKEN :
+{
+ <PRINT : "print">
+| <ECHO : "echo">
+| <INCLUDE : "include">
+| <REQUIRE : "require">
+| <INCLUDE_ONCE : "include_once">
+| <REQUIRE_ONCE : "require_once">
+| <GLOBAL : "global">
+| <STATIC : "static">
+| <CLASSACCESS: "->">
+| <STATICCLASSACCESS: "::">
+| <ARRAYASSIGN: "=>">
+}
+
+/* RESERVED WORDS AND LITERALS */
+
+<PHPPARSING> TOKEN :
+{
+ < BREAK: "break" >
+| < CASE: "case" >
+| < CONST: "const" >
+| < CONTINUE: "continue" >
+| < _DEFAULT: "default" >
+| < DO: "do" >
+| < EXTENDS: "extends" >
+| < FALSE: "false" >
+| < FOR: "for" >
+| < GOTO: "goto" >
+| < NEW: "new" >
+| < NULL: "null" >
+| < RETURN: "return" >
+| < SUPER: "super" >
+| < SWITCH: "switch" >
+| < THIS: "this" >
+| < TRUE: "true" >
+| < WHILE: "while" >
+| < ENDWHILE : "endwhile" >
+}
+
+/* TYPES */
+
+<PHPPARSING> TOKEN :
+{
+ <STRING : "string">
+| <OBJECT : "object">
+| <BOOL : "bool">
+| <BOOLEAN : "boolean">
+| <REAL : "real">
+| <DOUBLE : "double">
+| <FLOAT : "float">
+| <INT : "int">
+| <INTEGER : "integer">
+}
+
+<PHPPARSING> TOKEN :
+{
+ < _ORL : "OR" >
+| < _ANDL: "AND">
+}
+
+/* LITERALS */
+
+<PHPPARSING> TOKEN :
+{
+ < INTEGER_LITERAL:
+ <DECIMAL_LITERAL> (["l","L"])?
+ | <HEX_LITERAL> (["l","L"])?
+ | <OCTAL_LITERAL> (["l","L"])?
+ >
+|
+ < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* >
+|
+ < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ >
+|
+ < #OCTAL_LITERAL: "0" (["0"-"7"])* >
+|
+ < FLOATING_POINT_LITERAL:
+ (["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)? (["f","F","d","D"])?
+ | "." (["0"-"9"])+ (<EXPONENT>)? (["f","F","d","D"])?
+ | (["0"-"9"])+ <EXPONENT> (["f","F","d","D"])?
+ | (["0"-"9"])+ (<EXPONENT>)? ["f","F","d","D"]
+ >
+|
+ < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
+|
+ < STRING_LITERAL: (<STRING_1> | <STRING_2> | <STRING_3>)>
+| < STRING_1:
+ "\""
+ ( (~["\""])
+ | "\\\""
+ )*
+ "\""
+ >
+| < STRING_2:
+ "'"
+ ( (~["'"]))*
+
+ "'"
+ >
+| < STRING_3:
+ "`"
+ ( (~["`"]))*
+ "`"
+ >
+}
+
+/* IDENTIFIERS */
+
+<PHPPARSING> TOKEN :
+{
+ < IDENTIFIER: (<LETTER>|<SPECIAL>) (<LETTER>|<DIGIT>|<SPECIAL>)* >
+|
+ < #LETTER:
+ ["a"-"z"] | ["A"-"Z"]
+ >
+|
+ < #DIGIT:
+ ["0"-"9"]
+ >
+|
+ < #SPECIAL:
+ "_"
+ >
+}
+
+/* SEPARATORS */
+
+<PHPPARSING> TOKEN :
+{
+ < LPAREN: "(" >
+| < RPAREN: ")" >
+| < LBRACE: "{" >
+| < RBRACE: "}" >
+| < LBRACKET: "[" >
+| < RBRACKET: "]" >
+| < SEMICOLON: ";" >
+| < COMMA: "," >
+| < DOT: "." >
+}
+
+/* OPERATORS */
+
+<PHPPARSING> TOKEN :
+{
+ <AT : "@">
+| <DOLLAR : "$">
+| < ASSIGN: "=" >
+| < GT: ">" >
+| < LT: "<" >
+| < BANG: "!" >
+| < HOOK: "?" >
+| < COLON: ":" >
+| < EQ: "==" >
+| < LE: "<=" >
+| < GE: ">=" >
+| < NE: "!=" >
+| < SC_OR: "||" >
+| < SC_AND: "&&" >
+| < INCR: "++" >
+| < DECR: "--" >
+| < PLUS: "+" >
+| < MINUS: "-" >
+| < STAR: "*" >
+| < SLASH: "/" >
+| < BIT_AND: "&" >
+| < BIT_OR: "|" >
+| < XOR: "^" >
+| < REM: "%" >
+| < LSHIFT: "<<" >
+| < RSIGNEDSHIFT: ">>" >
+| < RUNSIGNEDSHIFT: ">>>" >
+| < PLUSASSIGN: "+=" >
+| < MINUSASSIGN: "-=" >
+| < STARASSIGN: "*=" >
+| < SLASHASSIGN: "/=" >
+| < ANDASSIGN: "&=" >
+| < ORASSIGN: "|=" >
+| < XORASSIGN: "^=" >
+| < DOTASSIGN: ".=" >
+| < REMASSIGN: "%=" >
+| < LSHIFTASSIGN: "<<=" >
+| < RSIGNEDSHIFTASSIGN: ">>=" >
+| < RUNSIGNEDSHIFTASSIGN: ">>>=" >
+}
+
+<PHPPARSING> TOKEN :
+{
+ < DOLLAR_ID: <DOLLAR> <IDENTIFIER> >
+}
+
+/*****************************************
+ * THE JAVA LANGUAGE GRAMMAR STARTS HERE *
+ *****************************************/
+
+/*
+ * Program structuring syntax follows.
+ */
+
+void phpTest() :
+{}
+{
+ Php()
+ <EOF>
+}
+
+void phpFile() :
+{}
+{
+ ("<?php" Php() "?>")*
+ <EOF>
+}
+
+void Php() :
+{}
+{
+ (BlockStatement())*
+}
+
+void ClassDeclaration() :
+{}
+{
+ <CLASS> <IDENTIFIER> [ <EXTENDS> <IDENTIFIER> ]
+ ClassBody()
+}
+
+void ClassBody() :
+{}
+{
+ <LBRACE> ( ClassBodyDeclaration() )* <RBRACE>
+}
+
+void ClassBodyDeclaration() :
+{}
+{
+ MethodDeclaration()
+|
+ FieldDeclaration()
+}
+
+void FieldDeclaration() :
+{}
+{
+ <VAR> VariableDeclarator() ( <COMMA> VariableDeclarator() )* <SEMICOLON>
+}
+
+void VariableDeclarator() :
+{}
+{
+ VariableDeclaratorId() [ <ASSIGN> VariableInitializer() ]
+}
+
+void VariableDeclaratorId() :
+{}
+{
+ Variable() ( LOOKAHEAD(2) VariableSuffix() )*
+}
+
+void Variable():
+{}
+{
+ <DOLLAR_ID> (<LBRACE> Expression() <RBRACE>) *
+|
+ <DOLLAR> VariableName()
+}
+
+void VariableName():
+{}
+{
+ <LBRACE> Expression() <RBRACE>
+|
+ <IDENTIFIER> (<LBRACE> Expression() <RBRACE>) *
+|
+ <DOLLAR> VariableName()
+}
+
+void VariableInitializer() :
+{}
+{
+ Expression()
+}
+
+void ArrayVariable() :
+{}
+{
+ Expression() (<ARRAYASSIGN> Expression())*
+}
+
+void ArrayInitializer() :
+{}
+{
+ <LPAREN> [ ArrayVariable() ( LOOKAHEAD(2) <COMMA> ArrayVariable() )* ]<RPAREN>
+}
+
+void MethodDeclaration() :
+{}
+{
+ <FUNCTION> MethodDeclarator()
+ ( Block() | <SEMICOLON> )
+}
+
+void MethodDeclarator() :
+{}
+{
+ [<BIT_AND>] <IDENTIFIER> FormalParameters()
+}
+
+void FormalParameters() :
+{}
+{
+ <LPAREN> [ FormalParameter() ( <COMMA> FormalParameter() )* ] <RPAREN>
+}
+
+void FormalParameter() :
+{}
+{
+ [<BIT_AND>] VariableDeclarator()
+}
+
+void Type() :
+{}
+{
+ <STRING>
+|
+ <BOOL>
+|
+ <BOOLEAN>
+|
+ <REAL>
+|
+ <DOUBLE>
+|
+ <FLOAT>
+|
+ <INT>
+|
+ <INTEGER>
+}
+
+/*
+ * Expression syntax follows.
+ */
+
+void Expression() :
+/*
+ * This expansion has been written this way instead of:
+ * Assignment() | ConditionalExpression()
+ * for performance reasons.
+ * However, it is a weakening of the grammar for it allows the LHS of
+ * assignments to be any conditional expression whereas it can only be
+ * a primary expression. Consider adding a semantic predicate to work
+ * around this.
+ */
+{}
+{
+ PrintExpression()
+|
+ ConditionalExpression()
+ [
+ AssignmentOperator() Expression()
+ ]
+}
+
+void AssignmentOperator() :
+{}
+{
+ <ASSIGN> | <STARASSIGN> | <SLASHASSIGN> | <REMASSIGN> | <PLUSASSIGN> | <MINUSASSIGN> | <LSHIFTASSIGN> | <RSIGNEDSHIFTASSIGN> | <RUNSIGNEDSHIFTASSIGN> | <ANDASSIGN> | <XORASSIGN> | <ORASSIGN> | <DOTASSIGN>
+}
+
+void ConditionalExpression() :
+{}
+{
+ ConditionalOrExpression() [ <HOOK> Expression() <COLON> ConditionalExpression() ]
+}
+
+void ConditionalOrExpression() :
+{}
+{
+ ConditionalAndExpression() ( (<SC_OR> | <_ORL>) ConditionalAndExpression() )*
+}
+
+void ConditionalAndExpression() :
+{}
+{
+ ConcatExpression() ( (<SC_AND> | <_ANDL>) ConcatExpression() )*
+}
+
+void ConcatExpression() :
+{}
+{
+ InclusiveOrExpression() ( <DOT> InclusiveOrExpression() )*
+}
+
+void InclusiveOrExpression() :
+{}
+{
+ ExclusiveOrExpression() ( <BIT_OR> ExclusiveOrExpression() )*
+}
+
+void ExclusiveOrExpression() :
+{}
+{
+ AndExpression() ( <XOR> AndExpression() )*
+}
+
+void AndExpression() :
+{}
+{
+ EqualityExpression() ( <BIT_AND> EqualityExpression() )*
+}
+
+void EqualityExpression() :
+{}
+{
+ RelationalExpression() ( ( <EQ> | <NE> ) RelationalExpression() )*
+}
+
+void RelationalExpression() :
+{}
+{
+ ShiftExpression() ( ( <LT> | <GT> | <LE> | <GE> ) ShiftExpression() )*
+}
+
+void ShiftExpression() :
+{}
+{
+ AdditiveExpression() ( ( <LSHIFT> | <RSIGNEDSHIFT> | <RUNSIGNEDSHIFT> ) AdditiveExpression() )*
+}
+
+void AdditiveExpression() :
+{}
+{
+ MultiplicativeExpression() ( ( <PLUS> | <MINUS> ) MultiplicativeExpression() )*
+}
+
+void MultiplicativeExpression() :
+{}
+{
+ UnaryExpression() ( ( <STAR> | <SLASH> | <REM> ) UnaryExpression() )*
+}
+
+void UnaryExpression() :
+{}
+{
+ <AT> UnaryExpression()
+|
+ ( <PLUS> | <MINUS> ) UnaryExpression()
+|
+ PreIncrementExpression()
+|
+ PreDecrementExpression()
+|
+ UnaryExpressionNotPlusMinus()
+}
+
+void PreIncrementExpression() :
+{}
+{
+ <INCR> PrimaryExpression()
+}
+
+void PreDecrementExpression() :
+{}
+{
+ <DECR> PrimaryExpression()
+}
+
+void UnaryExpressionNotPlusMinus() :
+{}
+{
+ <BANG> UnaryExpression()
+|
+ LOOKAHEAD( <LPAREN> Type() <RPAREN> )
+ CastExpression()
+|
+ PostfixExpression()
+|
+ Literal()
+|
+ <LPAREN>Expression()<RPAREN>
+}
+
+void CastExpression() :
+{}
+{
+ <LPAREN> Type() <RPAREN> UnaryExpression()
+}
+
+void PostfixExpression() :
+{}
+{
+ PrimaryExpression() [ <INCR> | <DECR> ]
+}
+
+void PrimaryExpression() :
+{}
+{
+ LOOKAHEAD(2)
+ <IDENTIFIER> <STATICCLASSACCESS> ClassIdentifier() (PrimarySuffix())*
+|
+ PrimaryPrefix() ( PrimarySuffix() )*
+|
+ <ARRAY> ArrayInitializer()
+}
+
+void PrimaryPrefix() :
+{}
+{
+ <IDENTIFIER>
+|
+ <NEW> ClassIdentifier()
+|
+ VariableDeclaratorId()
+}
+
+void ClassIdentifier():
+{}
+{
+ <IDENTIFIER>
+|
+ VariableDeclaratorId()
+}
+
+void PrimarySuffix() :
+{}
+{
+ Arguments()
+|
+ VariableSuffix()
+}
+
+void VariableSuffix() :
+{}
+{
+ <CLASSACCESS> VariableName()
+|
+ <LBRACKET> [ Expression() ] <RBRACKET>
+}
+
+void Literal() :
+{}
+{
+ <INTEGER_LITERAL>
+|
+ <FLOATING_POINT_LITERAL>
+|
+ <STRING_LITERAL>
+|
+ BooleanLiteral()
+|
+ NullLiteral()
+}
+
+void BooleanLiteral() :
+{}
+{
+ <TRUE>
+|
+ <FALSE>
+}
+
+void NullLiteral() :
+{}
+{
+ <NULL>
+}
+
+void Arguments() :
+{}
+{
+ <LPAREN> [ ArgumentList() ] <RPAREN>
+}
+
+void ArgumentList() :
+{}
+{
+ Expression() ( <COMMA> Expression() )*
+}
+
+/*
+ * Statement syntax follows.
+ */
+
+void Statement() :
+{}
+{
+ LOOKAHEAD(2)
+ Expression() (<SEMICOLON> | "?>")
+|
+ LOOKAHEAD(2)
+ LabeledStatement()
+|
+ Block()
+|
+ EmptyStatement()
+|
+ StatementExpression()
+ try {
+ <SEMICOLON>
+ } catch (ParseException e) {
+ errorMessage = "';' expected after expression";
+ errorLevel = ERROR;
+ throw e;
+ }
+|
+ SwitchStatement()
+|
+ IfStatement()
+|
+ WhileStatement()
+|
+ DoStatement()
+|
+ ForStatement()
+|
+ BreakStatement()
+|
+ ContinueStatement()
+|
+ ReturnStatement()
+|
+ EchoStatement()
+|
+ IncludeStatement()
+|
+ StaticStatement()
+|
+ GlobalStatement()
+}
+
+void IncludeStatement() :
+{}
+{
+ <REQUIRE> Expression() (<SEMICOLON> | "?>")
+|
+ <REQUIRE_ONCE> Expression() (<SEMICOLON> | "?>")
+|
+ <INCLUDE> Expression() (<SEMICOLON> | "?>")
+|
+ <INCLUDE_ONCE> Expression() (<SEMICOLON> | "?>")
+}
+
+void PrintExpression() :
+{}
+{
+ <PRINT> Expression()
+}
+
+void EchoStatement() :
+{}
+{
+ <ECHO> Expression() (<COMMA> Expression())*
+ try {
+ (<SEMICOLON> | "?>")
+ } catch (ParseException e) {
+ errorMessage = "';' expected after 'echo' statement";
+ errorLevel = ERROR;
+ throw e;
+ }
+}
+
+void GlobalStatement() :
+{}
+{
+ <GLOBAL> VariableDeclaratorId() (<COMMA> VariableDeclaratorId())* (<SEMICOLON> | "?>")
+}
+
+void StaticStatement() :
+{}
+{
+ <STATIC> VariableDeclarator() (<COMMA> VariableDeclarator())* (<SEMICOLON> | "?>")
+}
+
+void LabeledStatement() :
+{}
+{
+ <IDENTIFIER> <COLON> Statement()
+}
+
+void Block() :
+{}
+{
+ <LBRACE> ( BlockStatement() )* <RBRACE>
+}
+
+void BlockStatement() :
+{}
+{
+ Statement()
+|
+ ClassDeclaration()
+|
+ MethodDeclaration()
+}
+
+void LocalVariableDeclaration() :
+{}
+{
+ VariableDeclarator() ( <COMMA> VariableDeclarator() )*
+}
+
+void EmptyStatement() :
+{}
+{
+ <SEMICOLON>
+}
+
+void StatementExpression() :
+/*
+ * The last expansion of this production accepts more than the legal
+ * Java expansions for StatementExpression. This expansion does not
+ * use PostfixExpression for performance reasons.
+ */
+{}
+{
+ PreIncrementExpression()
+|
+ PreDecrementExpression()
+|
+ PrimaryExpression()
+ [
+ <INCR>
+ |
+ <DECR>
+ |
+ AssignmentOperator() Expression()
+ ]
+}
+
+void SwitchStatement() :
+{}
+{
+ <SWITCH> <LPAREN> Expression() <RPAREN> <LBRACE>
+ ( SwitchLabel() ( BlockStatement() )* )*
+ <RBRACE>
+}
+
+void SwitchLabel() :
+{}
+{
+ <CASE> Expression() <COLON>
+|
+ <_DEFAULT> <COLON>
+}
+
+void IfStatement() :
+/*
+ * The disambiguating algorithm of JavaCC automatically binds dangling
+ * else's to the innermost if statement. The LOOKAHEAD specification
+ * is to tell JavaCC that we know what we are doing.
+ */
+{}
+{
+ <IF> Condition("if") Statement() [ LOOKAHEAD(1) ElseIfStatement() ] [ LOOKAHEAD(1) <ELSE> Statement() ]
+}
+
+void Condition(String keyword) :
+{}
+{
+ try {
+ <LPAREN>
+ } catch (ParseException e) {
+ errorMessage = "'(' expected after " + keyword + " keyword";
+ errorLevel = ERROR;
+ throw e;
+ }
+ Expression()
+ try {
+ <RPAREN>
+ } catch (ParseException e) {
+ errorMessage = "')' expected after " + keyword + " keyword";
+ errorLevel = ERROR;
+ throw e;
+ }
+}
+
+void ElseIfStatement() :
+{}
+{
+ <ELSEIF> Condition("elseif") Statement()
+}
+
+void WhileStatement() :
+{}
+{
+ <WHILE> Condition("while") WhileStatement0()
+}
+
+void WhileStatement0() :
+{}
+{
+ <COLON> (Statement())* <ENDWHILE> (<SEMICOLON> | "?>")
+|
+ Statement()
+}
+
+void DoStatement() :
+{}
+{
+ <DO> Statement() <WHILE> Condition("while") (<SEMICOLON> | "?>")
+}
+
+void ForStatement() :
+{}
+{
+ <FOR> <LPAREN> [ ForInit() ] <SEMICOLON> [ Expression() ] <SEMICOLON> [ ForUpdate() ] <RPAREN> Statement()
+}
+
+void ForInit() :
+{}
+{
+ LOOKAHEAD(LocalVariableDeclaration())
+ LocalVariableDeclaration()
+|
+ StatementExpressionList()
+}
+
+void StatementExpressionList() :
+{}
+{
+ StatementExpression() ( <COMMA> StatementExpression() )*
+}
+
+void ForUpdate() :
+{}
+{
+ StatementExpressionList()
+}
+
+void BreakStatement() :
+{}
+{
+ <BREAK> [ <IDENTIFIER> ] <SEMICOLON>
+}
+
+void ContinueStatement() :
+{}
+{
+ <CONTINUE> [ <IDENTIFIER> ] <SEMICOLON>
+}
+
+void ReturnStatement() :
+{}
+{
+ <RETURN> [ Expression() ] <SEMICOLON>
+}
\ No newline at end of file
--- /dev/null
+/* Generated By:JavaCC: Do not edit this line. PHPParserConstants.java */
+package test;
+
+public interface PHPParserConstants {
+
+ int EOF = 0;
+ int SINGLE_LINE_COMMENT = 13;
+ int FORMAL_COMMENT = 14;
+ int MULTI_LINE_COMMENT = 15;
+ int CLASS = 17;
+ int FUNCTION = 18;
+ int VAR = 19;
+ int IF = 20;
+ int ELSEIF = 21;
+ int ELSE = 22;
+ int ARRAY = 23;
+ int PRINT = 24;
+ int ECHO = 25;
+ int INCLUDE = 26;
+ int REQUIRE = 27;
+ int INCLUDE_ONCE = 28;
+ int REQUIRE_ONCE = 29;
+ int GLOBAL = 30;
+ int STATIC = 31;
+ int CLASSACCESS = 32;
+ int STATICCLASSACCESS = 33;
+ int ARRAYASSIGN = 34;
+ int BREAK = 35;
+ int CASE = 36;
+ int CONST = 37;
+ int CONTINUE = 38;
+ int _DEFAULT = 39;
+ int DO = 40;
+ int EXTENDS = 41;
+ int FALSE = 42;
+ int FOR = 43;
+ int GOTO = 44;
+ int NEW = 45;
+ int NULL = 46;
+ int RETURN = 47;
+ int SUPER = 48;
+ int SWITCH = 49;
+ int THIS = 50;
+ int TRUE = 51;
+ int WHILE = 52;
+ int ENDWHILE = 53;
+ int STRING = 54;
+ int OBJECT = 55;
+ int BOOL = 56;
+ int BOOLEAN = 57;
+ int REAL = 58;
+ int DOUBLE = 59;
+ int FLOAT = 60;
+ int INT = 61;
+ int INTEGER = 62;
+ int _ORL = 63;
+ int _ANDL = 64;
+ int INTEGER_LITERAL = 65;
+ int DECIMAL_LITERAL = 66;
+ int HEX_LITERAL = 67;
+ int OCTAL_LITERAL = 68;
+ int FLOATING_POINT_LITERAL = 69;
+ int EXPONENT = 70;
+ int STRING_LITERAL = 71;
+ int STRING_1 = 72;
+ int STRING_2 = 73;
+ int STRING_3 = 74;
+ int IDENTIFIER = 75;
+ int LETTER = 76;
+ int DIGIT = 77;
+ int SPECIAL = 78;
+ int LPAREN = 79;
+ int RPAREN = 80;
+ int LBRACE = 81;
+ int RBRACE = 82;
+ int LBRACKET = 83;
+ int RBRACKET = 84;
+ int SEMICOLON = 85;
+ int COMMA = 86;
+ int DOT = 87;
+ int AT = 88;
+ int DOLLAR = 89;
+ int ASSIGN = 90;
+ int GT = 91;
+ int LT = 92;
+ int BANG = 93;
+ int HOOK = 94;
+ int COLON = 95;
+ int EQ = 96;
+ int LE = 97;
+ int GE = 98;
+ int NE = 99;
+ int SC_OR = 100;
+ int SC_AND = 101;
+ int INCR = 102;
+ int DECR = 103;
+ int PLUS = 104;
+ int MINUS = 105;
+ int STAR = 106;
+ int SLASH = 107;
+ int BIT_AND = 108;
+ int BIT_OR = 109;
+ int XOR = 110;
+ int REM = 111;
+ int LSHIFT = 112;
+ int RSIGNEDSHIFT = 113;
+ int RUNSIGNEDSHIFT = 114;
+ int PLUSASSIGN = 115;
+ int MINUSASSIGN = 116;
+ int STARASSIGN = 117;
+ int SLASHASSIGN = 118;
+ int ANDASSIGN = 119;
+ int ORASSIGN = 120;
+ int XORASSIGN = 121;
+ int DOTASSIGN = 122;
+ int REMASSIGN = 123;
+ int LSHIFTASSIGN = 124;
+ int RSIGNEDSHIFTASSIGN = 125;
+ int RUNSIGNEDSHIFTASSIGN = 126;
+ int DOLLAR_ID = 127;
+
+ int DEFAULT = 0;
+ int PHPPARSING = 1;
+ int IN_SINGLE_LINE_COMMENT = 2;
+ int IN_FORMAL_COMMENT = 3;
+ int IN_MULTI_LINE_COMMENT = 4;
+
+ String[] tokenImage = {
+ "<EOF>",
+ "\"<?php\"",
+ "\"<?\"",
+ "<token of kind 3>",
+ "\"?>\"",
+ "\" \"",
+ "\"\\t\"",
+ "\"\\n\"",
+ "\"\\r\"",
+ "\"\\f\"",
+ "\"//\"",
+ "<token of kind 11>",
+ "\"/*\"",
+ "<SINGLE_LINE_COMMENT>",
+ "\"*/\"",
+ "\"*/\"",
+ "<token of kind 16>",
+ "\"class\"",
+ "\"function\"",
+ "\"var\"",
+ "\"if\"",
+ "\"elseif\"",
+ "\"else\"",
+ "\"array\"",
+ "\"print\"",
+ "\"echo\"",
+ "\"include\"",
+ "\"require\"",
+ "\"include_once\"",
+ "\"require_once\"",
+ "\"global\"",
+ "\"static\"",
+ "\"->\"",
+ "\"::\"",
+ "\"=>\"",
+ "\"break\"",
+ "\"case\"",
+ "\"const\"",
+ "\"continue\"",
+ "\"default\"",
+ "\"do\"",
+ "\"extends\"",
+ "\"false\"",
+ "\"for\"",
+ "\"goto\"",
+ "\"new\"",
+ "\"null\"",
+ "\"return\"",
+ "\"super\"",
+ "\"switch\"",
+ "\"this\"",
+ "\"true\"",
+ "\"while\"",
+ "\"endwhile\"",
+ "\"string\"",
+ "\"object\"",
+ "\"bool\"",
+ "\"boolean\"",
+ "\"real\"",
+ "\"double\"",
+ "\"float\"",
+ "\"int\"",
+ "\"integer\"",
+ "\"OR\"",
+ "\"AND\"",
+ "<INTEGER_LITERAL>",
+ "<DECIMAL_LITERAL>",
+ "<HEX_LITERAL>",
+ "<OCTAL_LITERAL>",
+ "<FLOATING_POINT_LITERAL>",
+ "<EXPONENT>",
+ "<STRING_LITERAL>",
+ "<STRING_1>",
+ "<STRING_2>",
+ "<STRING_3>",
+ "<IDENTIFIER>",
+ "<LETTER>",
+ "<DIGIT>",
+ "\"_\"",
+ "\"(\"",
+ "\")\"",
+ "\"{\"",
+ "\"}\"",
+ "\"[\"",
+ "\"]\"",
+ "\";\"",
+ "\",\"",
+ "\".\"",
+ "\"@\"",
+ "\"$\"",
+ "\"=\"",
+ "\">\"",
+ "\"<\"",
+ "\"!\"",
+ "\"?\"",
+ "\":\"",
+ "\"==\"",
+ "\"<=\"",
+ "\">=\"",
+ "\"!=\"",
+ "\"||\"",
+ "\"&&\"",
+ "\"++\"",
+ "\"--\"",
+ "\"+\"",
+ "\"-\"",
+ "\"*\"",
+ "\"/\"",
+ "\"&\"",
+ "\"|\"",
+ "\"^\"",
+ "\"%\"",
+ "\"<<\"",
+ "\">>\"",
+ "\">>>\"",
+ "\"+=\"",
+ "\"-=\"",
+ "\"*=\"",
+ "\"/=\"",
+ "\"&=\"",
+ "\"|=\"",
+ "\"^=\"",
+ "\".=\"",
+ "\"%=\"",
+ "\"<<=\"",
+ "\">>=\"",
+ "\">>>=\"",
+ "<DOLLAR_ID>",
+ "\"?>\"",
+ };
+
+}
--- /dev/null
+package test;
+
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import org.eclipse.core.resources.IFile;
+
+public class PHPParserManager {
+
+ private static PHPParserSuperclass parser;
+
+ public static PHPParserSuperclass getParser(IFile fileToParse) {
+ try {
+ PHPParserSuperclass actualParser;
+ if (PHPeclipsePlugin.PHPPARSER == PHPeclipsePlugin.PHPPARSER_ORIGINAL) {
+ actualParser = (PHPParserSuperclass) Class.forName(PHPeclipsePlugin.PHPPARSER).newInstance();
+ } else {
+ if (parser == null) {
+ parser = (PHPParserSuperclass) Class.forName(PHPeclipsePlugin.PHPPARSER).newInstance();
+ }
+ actualParser = parser;
+ }
+ actualParser.setFileToParse(fileToParse);
+ return actualParser;
+ } catch (InstantiationException e) {
+ PHPeclipsePlugin.log(e);
+ } catch (IllegalAccessException e) {
+ PHPeclipsePlugin.log(e);
+ } catch (ClassNotFoundException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ return null;
+ }
+
+ public static PHPParserSuperclass getParser() {
+ try {
+ PHPParserSuperclass actualParser;
+ if (PHPeclipsePlugin.PHPPARSER == PHPeclipsePlugin.PHPPARSER_ORIGINAL) {
+ actualParser = (PHPParserSuperclass) Class.forName(PHPeclipsePlugin.PHPPARSER).newInstance();
+ } else {
+ if (parser == null) {
+ parser = (PHPParserSuperclass) Class.forName(PHPeclipsePlugin.PHPPARSER).newInstance();
+ }
+ actualParser = parser;
+ }
+ return actualParser;
+ } catch (InstantiationException e) {
+ PHPeclipsePlugin.log(e);
+ } catch (IllegalAccessException e) {
+ PHPeclipsePlugin.log(e);
+ } catch (ClassNotFoundException e) {
+ PHPeclipsePlugin.log(e);
+ }
+ return null;
+ }
+
+ /**
+ * To avoid instantiation.
+ */
+ private PHPParserManager() {
+ }
+}
--- /dev/null
+package test;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.texteditor.MarkerUtilities;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
+import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
+
+import java.text.MessageFormat;
+import java.util.Hashtable;
+
+/**
+ * The superclass for our PHP parsers.
+ * @author Matthieu Casanova
+ */
+public abstract class PHPParserSuperclass {
+ // strings for external parser call
+ private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
+ private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
+
+ /**
+ * Call the php parse command ( php -l -f <filename> )
+ * and create markers according to the external parser output
+ */
+ public static void phpExternalParse(IFile file) {
+ //IFile file = (IFile) resource;
+ IPath path = file.getFullPath();
+ IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
+ String filename = file.getLocation().toString();
+
+ String[] arguments = { filename };
+ MessageFormat form =
+ new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
+ String command = form.format(arguments);
+
+ String parserResult =
+ PHPStartApacheAction.getParserOutput(command, "External parser: ");
+
+ try {
+ // parse the buffer to find the errors and warnings
+ PHPParserSuperclass.createMarkers(parserResult, file);
+ } catch (CoreException e) {
+ }
+ }
+
+ /**
+ * Create markers according to the external parser output
+ */
+ private static void createMarkers(String output, IFile file)
+ throws CoreException {
+ // delete all markers
+ file.deleteMarkers(IMarker.PROBLEM, false, 0);
+
+ int indx = 0;
+ int brIndx = 0;
+ boolean flag = true;
+ while ((brIndx = output.indexOf("<br />", indx)) != -1) {
+ // newer php error output (tested with 4.2.3)
+ scanLine(output, file, indx, brIndx);
+ indx = brIndx + 6;
+ flag = false;
+ }
+ if (flag) {
+ while ((brIndx = output.indexOf("<br>", indx)) != -1) {
+ // older php error output (tested with 4.2.3)
+ scanLine(output, file, indx, brIndx);
+ indx = brIndx + 4;
+ }
+ }
+ }
+
+ private static void scanLine(String output, IFile file, int indx, int brIndx)
+ throws CoreException {
+ String current;
+ String outLineNumberString;
+ StringBuffer lineNumberBuffer = new StringBuffer(10);
+ char ch;
+ current = output.substring(indx, brIndx);
+
+ if (current.indexOf(PARSE_WARNING_STRING) != -1
+ || current.indexOf(PARSE_ERROR_STRING) != -1) {
+ int onLine = current.indexOf("on line <b>");
+ if (onLine != -1) {
+ lineNumberBuffer.delete(0, lineNumberBuffer.length());
+ for (int i = onLine; i < current.length(); i++) {
+ ch = current.charAt(i);
+ if ('0' <= ch && '9' >= ch) {
+ lineNumberBuffer.append(ch);
+ }
+ }
+
+ int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
+
+ Hashtable attributes = new Hashtable();
+
+ current = current.replaceAll("\n", "");
+ current = current.replaceAll("<b>", "");
+ current = current.replaceAll("</b>", "");
+ MarkerUtilities.setMessage(attributes, current);
+
+ if (current.indexOf(PARSE_ERROR_STRING) != -1)
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
+ else if (current.indexOf(PARSE_WARNING_STRING) != -1)
+ attributes.put(
+ IMarker.SEVERITY,
+ new Integer(IMarker.SEVERITY_WARNING));
+ else
+ attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
+ MarkerUtilities.setLineNumber(attributes, lineNumber);
+ MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
+ }
+ }
+ }
+
+ public abstract PHPOutlineInfo parseInfo(Object parent, String s);
+
+ public abstract void setFileToParse(IFile fileToParse);
+
+ public abstract void parse(String s) throws CoreException;
+}
package test;
-
/**********************************************************************
- Copyright (c) 2002 Klaus Hartlage - www.eclipseproject.de
- All rights reserved. This program and the accompanying materials
- are made available under the terms of the Common Public License v1.0
- which accompanies this distribution, and is available at
- http://www.eclipse.org/legal/cpl-v10.html
- **********************************************************************/
+Copyright (c) 2002 Klaus Hartlage - www.eclipseproject.de
+All rights reserved. This program and the accompanying materials
+are made available under the terms of the Common Public License v1.0
+which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/cpl-v10.html
+**********************************************************************/
+
+import org.eclipse.core.runtime.CoreException;
import junit.framework.TestCase;
import java.io.CharArrayReader;
-import java.io.InputStream;
-
-import org.eclipse.core.runtime.CoreException;
/**
* Tests the php parser
*/
public class PHPParserTestCase2 extends TestCase {
- PHPParser2 phpparser;
+ PHPParser parser;
public PHPParserTestCase2(String name) {
super(name);
* Test the PHP Parser with different PHP snippets
*/
public void testPHPParser() {
- checkPHP("$b = $c;");
- checkPHP("$b = ($c);");
- checkPHP("$b = ($b) ? $a : $c;");
- checkPHP("$b = $b.$a && $f.'a' || 'n '.$b;");
- checkPHP("$toto = 0;");
- checkPHP("$toto = \"tata\";");
- checkPHP("$toto = 'tata';");
- checkPHP("$$a = 'toto';");
- checkPHP("$add = 'a'.$i;");
- checkPHP("$add = 'a'.$i;$val = $$add;");
- checkPHP("$a==2;");
- checkPHP("($a==\"b\") || c($this->x)==\"d\";");
+ checkHTML("<?php" +
+ "\n//if (!isset($AtreidesLanguage)) $AtreidesLanguage='french';" +
+ "\n$AtreidesLanguage='french';" +
+ "\n$for = 1;" +
+ "\n\ninclude_once('php/template.inc');" +
+ "\ninclude ' php/class.PHPLIBTemplateAdaptor.php';" +
+ "\ninclude 'php/class.CachedTemplate.php';" +
+ "\n$_PHPLIB['libdir']='php/';" +
+ "\ninclude 'php/oohforms.inc';" +
+ "\n include 'objet/outil.php';" +
+ "\ninclude 'objet/metier.php';" +
+ "\ninclude 'php/db_mysql.inc';" +
+ "\ninclude 'objet/db5.php';" +
+ "\ninclude 'objet/gui.php';" +
+ "\ninclude 'objet/application.php';" +
+ "\n//----------------------------------------------------" +
+ "\n// Objets du site" +
+ "\n//----------------------------------------------------" +
+ "\n// Objets de base de donnée" +
+ "\ninclude 'atreides/db_soft.php';" +
+ "\n// Objets metier" +
+ "\ninclude 'atreides/soft.php';" +
+ "\n// Objets application" +
+ "\ninclude 'atreides/atreides.php';" +
+ "\n$AtreidesTheme='normal/$AtreidesLanguage';" +
+ "\nif(Vide($oCentral)) $oCentral='Soft';" +
+ "\nif (vide($oModeCentral)) $oModeCentral = 'recherche';" +
+ "\nif (Vide($theme)) $theme='normal';" +
+ "\nif (Vide($mode)) $mode='visu';" +
+ "\n$Atreides=new Atreides($mode,$ini);" +
+ "\n$Atreides->tabAffich['oModeCentral']=$oModeCentral;" +
+ "\nob_start('ob_gzhandler');" +
+ "\necho $Atreides->vueMetier('visu',$AtreidesTheme);" +
+ "\n?>");
+ checkHTML("<html>sdfsdf <?php phpinfo(); ?>");
+ checkHTML("\n\n\n\n <?php print \"Hello world\"?> ");
+ checkHTML("<?php phpinfo()?>");
+ checkHTML("<?php phpinfo(); ?> foo <?php phpinfo(); ?>");
+ checkHTML(" <?php //this is a line comment ?>");
+ checkPHP("'caca'");
+ checkPHP("if $cac a) echo 'coucou';");
+ checkPHP("$oka dd = 'a'.$i;$val = $$add;");
+ checkPHP("($a==\"b\") || (c($this->x)==\"d\");");
checkPHP("(substr($this->file, 0, 2) == \"MM\");");
checkPHP("(substr($this->file, 0, 2) == \"MM\") || substr($this->file, 0, 2) == \"II\";");
checkPHP("return (substr($this->file, 0, 2) == \"MM\") || substr($this->file, 0, 2) == \"II\";");
+ checkPHP("$this->highlightfile->linkscripts{$category};");
+ checkPHP("$code = call_user_method($this->highlightfile->linkscripts{$category}, $this->highlightfile, $oldword, $this->output_module);");
checkPHP("$this->startmap[$startcurrtag]();");
checkPHP("new $this->startmap[$startcurrtag]();");
checkPHP("$this->highlightfile = new $this->startmap[$startcurrtag]();");
checkPHP("echo \"Test\", \"me\";");
checkPHP("print (\"Test me\");");
-// checkPHP("$s = <<<HEREDOC \n dskjfhskj\n \n\nHEREDOC;"); invalid
- checkPHP("$a == 0 ? print (\"true\") : print (\"false\");");
+// checkPHP("$s = <<<HEREDOC \n dskjfhskj\n \n\nHEREDOC;");
+// checkPHP("$a == 0 ? print \"true\" : print \"false\";");
checkPHP("if(!$result = mysql_query($sql)) return(array());");
checkPHP("class test { function &fetchRow($result, $fetchmode = DB_FETCHMODE_DEFAULT, $rownum=null) \n{ \n } \n }");
+ checkPHP("call_user_method_array($function_name[1], ${$objectname}, $arguments);");
checkPHP("@$connect_function($dbhost, $user, $pw);");
checkPHP("$conn = @$connect_function($dbhost, $user, $pw);");
+ checkPHP("global ${$objectname}; ");
checkPHP("class DB_mssql extends DB_common { var $connection; var $phptype, $dbsyntax; } ");
checkPHP("unset($this->blockvariables[$block][$varname]);");
checkPHP("new IT_Error(\"The block '$block' was not found in the template.\", __FILE__, __LINE__);");
checkPHP("if (isset($test)) { } elseif (isset($lang)) { }");
checkPHP("require_once(\"mainfile.php\"); ");
checkPHP("if (eregi(\"footer.php\",$PHP_SELF)) {\n" + "Header(\"Location: index.php\");\n" + "die();\n" + "}\n");
+ checkPHP("while (eregi(\"footer.php\",$PHP_SELF)) {\n" + "Header(\"Location: index.php\");\n" + "die();\n" + "}\n");
+ checkPHP("while (eregi(\"footer.php\",$PHP_SELF)) :\n" + "Header(\"Location: index.php\");\n" + "die();\n" + "endwhile;\n");
checkPHP("$tipath = \"images/topics/\";");
checkPHP("$reasons = array(\"1\", \"2\",\"test\");");
checkPHP("if ($home == 1) { message_box(); blocks(Center);}");
checkPHP("$message .= \"\"._THISISAUTOMATED.\"\\n\\n\";");
checkPHP("if (!empty($pass) AND $pass==$passwd) { }");
checkPHP("$AllowableHTML = array(\"b\"=>1,\n \"i\"=>1);");
+ checkPHP("if ($term{0}!=$firstChar) {}");
checkPHP(
"echo \"<center><b>\"._NOADMINYET.\"</b></center><br><br>\"\n"
+ ".\"<form action=\\\"admin.php\\\" method=\\\"post\\\">\"\n"
+ ".\"<tr><td><b>\"._NICKNAME.\":</b></td><td><input type=\\\"text\\\" name=\\\"name\\\" size=\\\"30\\\" maxlength=\\\"25\\\"></td></tr>\"\n"
+ ";");
- checkPHP("/* \n overLib is from Eric Bosrup (http://www.bosrup.com/web/overlib/) \n */");
+ checkPHP("/* \n overLib is from Eric Bosrup (http://www.bosrup.com/web/overlib/) \n */;");
checkPHP("if ($arrAtchCookie[1]==0 && $IdAtchPostId!=null){ } ");
checkPHP("$arrAtchCookie[1] -= filesize(realpath($AtchTempDir).\"/\".$xattachlist)/ 1024; ");
- checkPHP("$ol = new Overlib();");
- checkPHP("$risultato = mysql_query($sql) or\n die(mysql_error());");
checkPHP(
"if (!isset($message)){ \n"
+ "$message = $myrow[post_text];\n"
+ "$message = eregi_replace(\"\\[addsig]\", \"\\n-----------------\\n\" . $myrow[user_sig], $message); \n"
+ "$message = str_replace(\"<BR>\", \"\\n\", $message); \n"
+ "$message = str_replace(\"<br>\", \"\\n\", $message); \n } ");
- checkPHP("while (eregi(\"footer.php\",$PHP_SELF)) {\n" + "Header(\"Location: index.php\");\n" + "die();\n" + "}\n");
- checkPHP("while (eregi(\"footer.php\",$PHP_SELF)) :\n" + "Header(\"Location: index.php\");\n" + "die();\n" + "endwhile;\n");
- checkPHP("if ($term{0}!=$firstChar) {}");
- checkPHP("$this->highlightfile->linkscripts{$category};");
- checkPHP("$code = call_user_method($this->highlightfile->linkscripts{$category}, $this->highlightfile, $oldword, $this->output_module);");
- checkPHP("call_user_method_array($function_name[1], ${$objectname}, $arguments);");
- checkPHP("global ${$objectname};");
checkPHP("do {$array[] = array(\"$myrow[uid]\" => \"$myrow[uname]\"); } while($myrow = mysql_fetch_array($result));");
+ checkPHP("$ol = new Overlib();");
+ checkPHP("$risultato = mysql_query($sql) or\n die(mysql_error());");
}
private void checkPHP(String strEval) {
try {
System.out.println("strEval = " + strEval);
- phpparser.ReInit(new CharArrayReader(strEval.toCharArray()));
- phpparser.parse();
+ parser.phpParserTester(strEval);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ }
+ private void checkHTML(String strEval) {
+ try {
+ System.out.println("strEval = " + strEval);
+ parser.htmlParserTester(strEval);
+ } catch (CoreException e) {
+ e.printStackTrace();
} catch (ParseException e) {
- System.out.println(strEval);
e.printStackTrace();
}
+
}
/**
* The JUnit setup method
*/
protected void setUp() {
- phpparser = new PHPParser2(new CharArrayReader("".toCharArray()));
+ parser = (test.PHPParser) PHPParserManager.getParser();
}
+
}
--- /dev/null
+/* Generated By:JavaCC: Do not edit this line. PHPParserTokenManager.java */
+package test;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.ui.texteditor.MarkerUtilities;
+import org.eclipse.jface.preference.IPreferenceStore;
+import java.io.CharArrayReader;
+import java.util.Hashtable;
+import java.io.StringReader;
+import java.text.MessageFormat;
+import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
+
+public class PHPParserTokenManager implements PHPParserConstants
+{
+ public static java.io.PrintStream debugStream = System.out;
+ public static void setDebugStream(java.io.PrintStream ds) { debugStream = ds; }
+static private final int jjStopAtPos(int pos, int kind)
+{
+ jjmatchedKind = kind;
+ jjmatchedPos = pos;
+ return pos + 1;
+}
+static private final int jjMoveStringLiteralDfa0_0()
+{
+ switch(curChar)
+ {
+ case 60:
+ return jjMoveStringLiteralDfa1_0(0x6L, 0x0L);
+ case 63:
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x1L);
+ default :
+ return 1;
+ }
+}
+static private final int jjMoveStringLiteralDfa1_0(long active0, long active2)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 62:
+ if ((active2 & 0x1L) != 0L)
+ return jjStopAtPos(1, 128);
+ break;
+ case 63:
+ if ((active0 & 0x4L) != 0L)
+ {
+ jjmatchedKind = 2;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_0(active0, 0x2L, active2, 0L);
+ default :
+ return 2;
+ }
+ return 2;
+}
+static private final int jjMoveStringLiteralDfa2_0(long old0, long active0, long old2, long active2)
+{
+ if (((active0 &= old0) | (active2 &= old2)) == 0L)
+ return 2;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return 2;
+ }
+ switch(curChar)
+ {
+ case 80:
+ case 112:
+ return jjMoveStringLiteralDfa3_0(active0, 0x2L);
+ default :
+ return 3;
+ }
+}
+static private final int jjMoveStringLiteralDfa3_0(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return 3;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return 3;
+ }
+ switch(curChar)
+ {
+ case 72:
+ case 104:
+ return jjMoveStringLiteralDfa4_0(active0, 0x2L);
+ default :
+ return 4;
+ }
+}
+static private final int jjMoveStringLiteralDfa4_0(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return 4;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return 4;
+ }
+ switch(curChar)
+ {
+ case 80:
+ case 112:
+ if ((active0 & 0x2L) != 0L)
+ return jjStopAtPos(4, 1);
+ break;
+ default :
+ return 5;
+ }
+ return 5;
+}
+static private final int jjMoveStringLiteralDfa0_4()
+{
+ switch(curChar)
+ {
+ case 42:
+ return jjMoveStringLiteralDfa1_4(0x8000L);
+ default :
+ return 1;
+ }
+}
+static private final int jjMoveStringLiteralDfa1_4(long active0)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 47:
+ if ((active0 & 0x8000L) != 0L)
+ return jjStopAtPos(1, 15);
+ break;
+ default :
+ return 2;
+ }
+ return 2;
+}
+static private final int jjMoveStringLiteralDfa0_2()
+{
+ return jjMoveNfa_2(0, 0);
+}
+static private final void jjCheckNAdd(int state)
+{
+ if (jjrounds[state] != jjround)
+ {
+ jjstateSet[jjnewStateCnt++] = state;
+ jjrounds[state] = jjround;
+ }
+}
+static private final void jjAddStates(int start, int end)
+{
+ do {
+ jjstateSet[jjnewStateCnt++] = jjnextStates[start];
+ } while (start++ != end);
+}
+static private final void jjCheckNAddTwoStates(int state1, int state2)
+{
+ jjCheckNAdd(state1);
+ jjCheckNAdd(state2);
+}
+static private final void jjCheckNAddStates(int start, int end)
+{
+ do {
+ jjCheckNAdd(jjnextStates[start]);
+ } while (start++ != end);
+}
+static private final void jjCheckNAddStates(int start)
+{
+ jjCheckNAdd(jjnextStates[start]);
+ jjCheckNAdd(jjnextStates[start + 1]);
+}
+static private final int jjMoveNfa_2(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 5;
+ 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 0:
+ if ((0x2400L & l) != 0L)
+ {
+ if (kind > 13)
+ kind = 13;
+ }
+ else if (curChar == 63)
+ jjstateSet[jjnewStateCnt++] = 3;
+ if (curChar == 13)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if (curChar == 10 && kind > 13)
+ kind = 13;
+ break;
+ case 2:
+ if (curChar == 13)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 3:
+ if (curChar == 62)
+ kind = 13;
+ break;
+ case 4:
+ if (curChar == 63)
+ jjstateSet[jjnewStateCnt++] = 3;
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else
+ {
+ int i2 = (curChar & 0xff) >> 6;
+ long l2 = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 5 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+private static final int jjStopStringLiteralDfa_1(int pos, long active0, long active1)
+{
+ switch (pos)
+ {
+ case 0:
+ if ((active0 & 0xfffffff8fffe0000L) != 0L || (active1 & 0x1L) != 0L)
+ {
+ jjmatchedKind = 75;
+ return 14;
+ }
+ if ((active0 & 0x1400L) != 0L || (active1 & 0x40080000000000L) != 0L)
+ return 2;
+ if ((active1 & 0x2000000L) != 0L)
+ return 16;
+ if ((active1 & 0x400000000800000L) != 0L)
+ return 8;
+ return -1;
+ case 1:
+ if ((active0 & 0x1000L) != 0L)
+ return 0;
+ if ((active0 & 0x8800010000100000L) != 0L)
+ return 14;
+ if ((active0 & 0x77fffef8ffee0000L) != 0L || (active1 & 0x1L) != 0L)
+ {
+ if (jjmatchedPos != 1)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 1;
+ }
+ return 14;
+ }
+ return -1;
+ case 2:
+ if ((active0 & 0x6000280000080000L) != 0L || (active1 & 0x1L) != 0L)
+ return 14;
+ if ((active0 & 0x1fffd6f8ffe60000L) != 0L)
+ {
+ if (jjmatchedPos != 2)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 2;
+ }
+ return 14;
+ }
+ return -1;
+ case 3:
+ if ((active0 & 0x58f386e8fd860000L) != 0L)
+ {
+ if (jjmatchedPos != 3)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 3;
+ }
+ return 14;
+ }
+ if ((active0 & 0x70c501002600000L) != 0L)
+ return 14;
+ return -1;
+ case 4:
+ if ((active0 & 0x1011042801820000L) != 0L)
+ return 14;
+ if ((active0 & 0x4ae282c0fc240000L) != 0L)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 4;
+ return 14;
+ }
+ return -1;
+ case 5:
+ if ((active0 & 0x8c28000c0200000L) != 0L)
+ return 14;
+ if ((active0 & 0x422002c03c040000L) != 0L)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 5;
+ return 14;
+ }
+ return -1;
+ case 6:
+ if ((active0 & 0x420002803c000000L) != 0L)
+ return 14;
+ if ((active0 & 0x20004000040000L) != 0L)
+ {
+ if (jjmatchedPos != 6)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 6;
+ }
+ return 14;
+ }
+ return -1;
+ case 7:
+ if ((active0 & 0x30000000L) != 0L)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 7;
+ return 14;
+ }
+ if ((active0 & 0x20004000040000L) != 0L)
+ return 14;
+ return -1;
+ case 8:
+ if ((active0 & 0x30000000L) != 0L)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 8;
+ return 14;
+ }
+ return -1;
+ case 9:
+ if ((active0 & 0x30000000L) != 0L)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 9;
+ return 14;
+ }
+ return -1;
+ case 10:
+ if ((active0 & 0x30000000L) != 0L)
+ {
+ jjmatchedKind = 75;
+ jjmatchedPos = 10;
+ return 14;
+ }
+ return -1;
+ default :
+ return -1;
+ }
+}
+private static final int jjStartNfa_1(int pos, long active0, long active1)
+{
+ return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0, active1), pos + 1);
+}
+static 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);
+}
+static private final int jjMoveStringLiteralDfa0_1()
+{
+ switch(curChar)
+ {
+ case 33:
+ jjmatchedKind = 93;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x800000000L);
+ case 36:
+ return jjStartNfaWithStates_1(0, 89, 16);
+ case 37:
+ jjmatchedKind = 111;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x800000000000000L);
+ case 38:
+ jjmatchedKind = 108;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x80002000000000L);
+ case 40:
+ return jjStopAtPos(0, 79);
+ case 41:
+ return jjStopAtPos(0, 80);
+ case 42:
+ jjmatchedKind = 106;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x20000000000000L);
+ case 43:
+ jjmatchedKind = 104;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x8004000000000L);
+ case 44:
+ return jjStopAtPos(0, 86);
+ case 45:
+ jjmatchedKind = 105;
+ return jjMoveStringLiteralDfa1_1(0x100000000L, 0x10008000000000L);
+ case 46:
+ jjmatchedKind = 87;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x400000000000000L);
+ case 47:
+ jjmatchedKind = 107;
+ return jjMoveStringLiteralDfa1_1(0x1400L, 0x40000000000000L);
+ case 58:
+ jjmatchedKind = 95;
+ return jjMoveStringLiteralDfa1_1(0x200000000L, 0x0L);
+ case 59:
+ return jjStopAtPos(0, 85);
+ case 60:
+ jjmatchedKind = 92;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x1001000200000000L);
+ case 61:
+ jjmatchedKind = 90;
+ return jjMoveStringLiteralDfa1_1(0x400000000L, 0x100000000L);
+ case 62:
+ jjmatchedKind = 91;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x6006000400000000L);
+ case 63:
+ jjmatchedKind = 94;
+ return jjMoveStringLiteralDfa1_1(0x10L, 0x0L);
+ case 64:
+ return jjStopAtPos(0, 88);
+ case 91:
+ return jjStopAtPos(0, 83);
+ case 93:
+ return jjStopAtPos(0, 84);
+ case 94:
+ jjmatchedKind = 110;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x200000000000000L);
+ case 65:
+ case 97:
+ return jjMoveStringLiteralDfa1_1(0x800000L, 0x1L);
+ case 66:
+ case 98:
+ return jjMoveStringLiteralDfa1_1(0x300000800000000L, 0x0L);
+ case 67:
+ case 99:
+ return jjMoveStringLiteralDfa1_1(0x7000020000L, 0x0L);
+ case 68:
+ case 100:
+ return jjMoveStringLiteralDfa1_1(0x800018000000000L, 0x0L);
+ case 69:
+ case 101:
+ return jjMoveStringLiteralDfa1_1(0x20020002600000L, 0x0L);
+ case 70:
+ case 102:
+ return jjMoveStringLiteralDfa1_1(0x10000c0000040000L, 0x0L);
+ case 71:
+ case 103:
+ return jjMoveStringLiteralDfa1_1(0x100040000000L, 0x0L);
+ case 73:
+ case 105:
+ return jjMoveStringLiteralDfa1_1(0x6000000014100000L, 0x0L);
+ case 78:
+ case 110:
+ return jjMoveStringLiteralDfa1_1(0x600000000000L, 0x0L);
+ case 79:
+ case 111:
+ return jjMoveStringLiteralDfa1_1(0x8080000000000000L, 0x0L);
+ case 80:
+ case 112:
+ return jjMoveStringLiteralDfa1_1(0x1000000L, 0x0L);
+ case 82:
+ case 114:
+ return jjMoveStringLiteralDfa1_1(0x400800028000000L, 0x0L);
+ case 83:
+ case 115:
+ return jjMoveStringLiteralDfa1_1(0x43000080000000L, 0x0L);
+ case 84:
+ case 116:
+ return jjMoveStringLiteralDfa1_1(0xc000000000000L, 0x0L);
+ case 86:
+ case 118:
+ return jjMoveStringLiteralDfa1_1(0x80000L, 0x0L);
+ case 87:
+ case 119:
+ return jjMoveStringLiteralDfa1_1(0x10000000000000L, 0x0L);
+ case 123:
+ return jjStopAtPos(0, 81);
+ case 124:
+ jjmatchedKind = 109;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x100001000000000L);
+ case 125:
+ return jjStopAtPos(0, 82);
+ default :
+ return jjMoveNfa_1(3, 0);
+ }
+}
+static private final int jjMoveStringLiteralDfa1_1(long active0, long active1)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(0, active0, active1);
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 38:
+ if ((active1 & 0x2000000000L) != 0L)
+ return jjStopAtPos(1, 101);
+ break;
+ case 42:
+ if ((active0 & 0x1000L) != 0L)
+ return jjStartNfaWithStates_1(1, 12, 0);
+ break;
+ case 43:
+ if ((active1 & 0x4000000000L) != 0L)
+ return jjStopAtPos(1, 102);
+ break;
+ case 45:
+ if ((active1 & 0x8000000000L) != 0L)
+ return jjStopAtPos(1, 103);
+ break;
+ case 47:
+ if ((active0 & 0x400L) != 0L)
+ return jjStopAtPos(1, 10);
+ break;
+ case 58:
+ if ((active0 & 0x200000000L) != 0L)
+ return jjStopAtPos(1, 33);
+ break;
+ case 60:
+ if ((active1 & 0x1000000000000L) != 0L)
+ {
+ jjmatchedKind = 112;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x1000000000000000L);
+ case 61:
+ if ((active1 & 0x100000000L) != 0L)
+ return jjStopAtPos(1, 96);
+ else if ((active1 & 0x200000000L) != 0L)
+ return jjStopAtPos(1, 97);
+ else if ((active1 & 0x400000000L) != 0L)
+ return jjStopAtPos(1, 98);
+ else if ((active1 & 0x800000000L) != 0L)
+ return jjStopAtPos(1, 99);
+ else if ((active1 & 0x8000000000000L) != 0L)
+ return jjStopAtPos(1, 115);
+ else if ((active1 & 0x10000000000000L) != 0L)
+ return jjStopAtPos(1, 116);
+ else if ((active1 & 0x20000000000000L) != 0L)
+ return jjStopAtPos(1, 117);
+ else if ((active1 & 0x40000000000000L) != 0L)
+ return jjStopAtPos(1, 118);
+ else if ((active1 & 0x80000000000000L) != 0L)
+ return jjStopAtPos(1, 119);
+ else if ((active1 & 0x100000000000000L) != 0L)
+ return jjStopAtPos(1, 120);
+ else if ((active1 & 0x200000000000000L) != 0L)
+ return jjStopAtPos(1, 121);
+ else if ((active1 & 0x400000000000000L) != 0L)
+ return jjStopAtPos(1, 122);
+ else if ((active1 & 0x800000000000000L) != 0L)
+ return jjStopAtPos(1, 123);
+ break;
+ case 62:
+ if ((active0 & 0x10L) != 0L)
+ return jjStopAtPos(1, 4);
+ else if ((active0 & 0x100000000L) != 0L)
+ return jjStopAtPos(1, 32);
+ else if ((active0 & 0x400000000L) != 0L)
+ return jjStopAtPos(1, 34);
+ else if ((active1 & 0x2000000000000L) != 0L)
+ {
+ jjmatchedKind = 113;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x6004000000000000L);
+ case 65:
+ case 97:
+ return jjMoveStringLiteralDfa2_1(active0, 0x41000080000L, active1, 0L);
+ case 66:
+ case 98:
+ return jjMoveStringLiteralDfa2_1(active0, 0x80000000000000L, active1, 0L);
+ case 67:
+ case 99:
+ return jjMoveStringLiteralDfa2_1(active0, 0x2000000L, active1, 0L);
+ case 69:
+ case 101:
+ return jjMoveStringLiteralDfa2_1(active0, 0x400a08028000000L, active1, 0L);
+ case 70:
+ case 102:
+ if ((active0 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_1(1, 20, 14);
+ break;
+ case 72:
+ case 104:
+ return jjMoveStringLiteralDfa2_1(active0, 0x14000000000000L, active1, 0L);
+ case 76:
+ case 108:
+ return jjMoveStringLiteralDfa2_1(active0, 0x1000000040620000L, active1, 0L);
+ case 78:
+ case 110:
+ return jjMoveStringLiteralDfa2_1(active0, 0x6020000014000000L, active1, 0x1L);
+ case 79:
+ case 111:
+ if ((active0 & 0x10000000000L) != 0L)
+ {
+ jjmatchedKind = 40;
+ jjmatchedPos = 1;
+ }
+ return jjMoveStringLiteralDfa2_1(active0, 0xb00186000000000L, active1, 0L);
+ case 82:
+ case 114:
+ if ((active0 & 0x8000000000000000L) != 0L)
+ return jjStartNfaWithStates_1(1, 63, 14);
+ return jjMoveStringLiteralDfa2_1(active0, 0x8000801800000L, active1, 0L);
+ case 84:
+ case 116:
+ return jjMoveStringLiteralDfa2_1(active0, 0x40000080000000L, active1, 0L);
+ case 85:
+ case 117:
+ return jjMoveStringLiteralDfa2_1(active0, 0x1400000040000L, active1, 0L);
+ case 87:
+ case 119:
+ return jjMoveStringLiteralDfa2_1(active0, 0x2000000000000L, active1, 0L);
+ case 88:
+ case 120:
+ return jjMoveStringLiteralDfa2_1(active0, 0x20000000000L, active1, 0L);
+ case 124:
+ if ((active1 & 0x1000000000L) != 0L)
+ return jjStopAtPos(1, 100);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_1(0, active0, active1);
+}
+static private final int jjMoveStringLiteralDfa2_1(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_1(0, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(1, active0, active1);
+ return 2;
+ }
+ switch(curChar)
+ {
+ case 61:
+ if ((active1 & 0x1000000000000000L) != 0L)
+ return jjStopAtPos(2, 124);
+ else if ((active1 & 0x2000000000000000L) != 0L)
+ return jjStopAtPos(2, 125);
+ break;
+ case 62:
+ if ((active1 & 0x4000000000000L) != 0L)
+ {
+ jjmatchedKind = 114;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x4000000000000000L);
+ case 65:
+ case 97:
+ return jjMoveStringLiteralDfa3_1(active0, 0x400000080020000L, active1, 0L);
+ case 67:
+ case 99:
+ return jjMoveStringLiteralDfa3_1(active0, 0x14000000L, active1, 0L);
+ case 68:
+ case 100:
+ if ((active1 & 0x1L) != 0L)
+ return jjStartNfaWithStates_1(2, 64, 14);
+ return jjMoveStringLiteralDfa3_1(active0, 0x20000000000000L, active1, 0L);
+ case 69:
+ case 101:
+ return jjMoveStringLiteralDfa3_1(active0, 0x800000000L, active1, 0L);
+ case 70:
+ case 102:
+ return jjMoveStringLiteralDfa3_1(active0, 0x8000000000L, active1, 0L);
+ case 72:
+ case 104:
+ return jjMoveStringLiteralDfa3_1(active0, 0x2000000L, active1, 0L);
+ case 73:
+ case 105:
+ return jjMoveStringLiteralDfa3_1(active0, 0x16000001000000L, active1, 0L);
+ case 74:
+ case 106:
+ return jjMoveStringLiteralDfa3_1(active0, 0x80000000000000L, active1, 0L);
+ case 76:
+ case 108:
+ return jjMoveStringLiteralDfa3_1(active0, 0x440000000000L, active1, 0L);
+ case 78:
+ case 110:
+ return jjMoveStringLiteralDfa3_1(active0, 0x6000040000L, active1, 0L);
+ case 79:
+ case 111:
+ return jjMoveStringLiteralDfa3_1(active0, 0x1300000040000000L, active1, 0L);
+ case 80:
+ case 112:
+ return jjMoveStringLiteralDfa3_1(active0, 0x1000000000000L, active1, 0L);
+ case 81:
+ case 113:
+ return jjMoveStringLiteralDfa3_1(active0, 0x28000000L, active1, 0L);
+ case 82:
+ case 114:
+ if ((active0 & 0x80000L) != 0L)
+ return jjStartNfaWithStates_1(2, 19, 14);
+ else if ((active0 & 0x80000000000L) != 0L)
+ return jjStartNfaWithStates_1(2, 43, 14);
+ return jjMoveStringLiteralDfa3_1(active0, 0x40000000800000L, active1, 0L);
+ case 83:
+ case 115:
+ return jjMoveStringLiteralDfa3_1(active0, 0x1000600000L, active1, 0L);
+ case 84:
+ case 116:
+ if ((active0 & 0x2000000000000000L) != 0L)
+ {
+ jjmatchedKind = 61;
+ jjmatchedPos = 2;
+ }
+ return jjMoveStringLiteralDfa3_1(active0, 0x4000920000000000L, active1, 0L);
+ case 85:
+ case 117:
+ return jjMoveStringLiteralDfa3_1(active0, 0x808000000000000L, active1, 0L);
+ case 87:
+ case 119:
+ if ((active0 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_1(2, 45, 14);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_1(1, active0, active1);
+}
+static private final int jjMoveStringLiteralDfa3_1(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_1(1, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(2, active0, active1);
+ return 3;
+ }
+ switch(curChar)
+ {
+ case 61:
+ if ((active1 & 0x4000000000000000L) != 0L)
+ return jjStopAtPos(3, 126);
+ break;
+ case 65:
+ case 97:
+ return jjMoveStringLiteralDfa4_1(active0, 0x1000008800800000L, active1, 0L);
+ case 66:
+ case 98:
+ return jjMoveStringLiteralDfa4_1(active0, 0x800000040000000L, active1, 0L);
+ case 67:
+ case 99:
+ return jjMoveStringLiteralDfa4_1(active0, 0x40000L, active1, 0L);
+ case 69:
+ case 101:
+ if ((active0 & 0x400000L) != 0L)
+ {
+ jjmatchedKind = 22;
+ jjmatchedPos = 3;
+ }
+ else if ((active0 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 36, 14);
+ else if ((active0 & 0x8000000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 51, 14);
+ return jjMoveStringLiteralDfa4_1(active0, 0x4081020000200000L, active1, 0L);
+ case 73:
+ case 105:
+ return jjMoveStringLiteralDfa4_1(active0, 0x40000000000000L, active1, 0L);
+ case 76:
+ case 108:
+ if ((active0 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 46, 14);
+ else if ((active0 & 0x100000000000000L) != 0L)
+ {
+ jjmatchedKind = 56;
+ jjmatchedPos = 3;
+ }
+ else if ((active0 & 0x400000000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 58, 14);
+ return jjMoveStringLiteralDfa4_1(active0, 0x210000014000000L, active1, 0L);
+ case 78:
+ case 110:
+ return jjMoveStringLiteralDfa4_1(active0, 0x1000000L, active1, 0L);
+ case 79:
+ case 111:
+ if ((active0 & 0x2000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 25, 14);
+ else if ((active0 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 44, 14);
+ break;
+ case 83:
+ case 115:
+ if ((active0 & 0x4000000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 50, 14);
+ return jjMoveStringLiteralDfa4_1(active0, 0x42000020000L, active1, 0L);
+ case 84:
+ case 116:
+ return jjMoveStringLiteralDfa4_1(active0, 0x2004080000000L, active1, 0L);
+ case 85:
+ case 117:
+ return jjMoveStringLiteralDfa4_1(active0, 0x800028000000L, active1, 0L);
+ case 87:
+ case 119:
+ return jjMoveStringLiteralDfa4_1(active0, 0x20000000000000L, active1, 0L);
+ default :
+ break;
+ }
+ return jjStartNfa_1(2, active0, active1);
+}
+static private final int jjMoveStringLiteralDfa4_1(long old0, long active0, long old1, long active1)
+{
+ if (((active0 &= old0) | (active1 &= old1)) == 0L)
+ return jjStartNfa_1(2, old0, old1);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(3, active0, 0L);
+ return 4;
+ }
+ switch(curChar)
+ {
+ case 65:
+ case 97:
+ return jjMoveStringLiteralDfa5_1(active0, 0x40000000L);
+ case 67:
+ case 99:
+ return jjMoveStringLiteralDfa5_1(active0, 0x82000000000000L);
+ case 69:
+ case 101:
+ if ((active0 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 42, 14);
+ else if ((active0 & 0x10000000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 52, 14);
+ return jjMoveStringLiteralDfa5_1(active0, 0x200000000000000L);
+ case 71:
+ case 103:
+ return jjMoveStringLiteralDfa5_1(active0, 0x4000000000000000L);
+ case 72:
+ case 104:
+ return jjMoveStringLiteralDfa5_1(active0, 0x20000000000000L);
+ case 73:
+ case 105:
+ return jjMoveStringLiteralDfa5_1(active0, 0x40a8200000L);
+ case 75:
+ case 107:
+ if ((active0 & 0x800000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 35, 14);
+ break;
+ case 76:
+ case 108:
+ return jjMoveStringLiteralDfa5_1(active0, 0x800000000000000L);
+ case 78:
+ case 110:
+ return jjMoveStringLiteralDfa5_1(active0, 0x40020000000000L);
+ case 82:
+ case 114:
+ if ((active0 & 0x1000000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 48, 14);
+ return jjMoveStringLiteralDfa5_1(active0, 0x800000000000L);
+ case 83:
+ case 115:
+ if ((active0 & 0x20000L) != 0L)
+ return jjStartNfaWithStates_1(4, 17, 14);
+ break;
+ case 84:
+ case 116:
+ if ((active0 & 0x1000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 24, 14);
+ else if ((active0 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 37, 14);
+ else if ((active0 & 0x1000000000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 60, 14);
+ return jjMoveStringLiteralDfa5_1(active0, 0x40000L);
+ case 85:
+ case 117:
+ return jjMoveStringLiteralDfa5_1(active0, 0x8014000000L);
+ case 89:
+ case 121:
+ if ((active0 & 0x800000L) != 0L)
+ return jjStartNfaWithStates_1(4, 23, 14);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_1(3, active0, 0L);
+}
+static private final int jjMoveStringLiteralDfa5_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(3, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(4, active0, 0L);
+ return 5;
+ }
+ switch(curChar)
+ {
+ case 65:
+ case 97:
+ return jjMoveStringLiteralDfa6_1(active0, 0x200000000000000L);
+ case 67:
+ case 99:
+ if ((active0 & 0x80000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 31, 14);
+ break;
+ case 68:
+ case 100:
+ return jjMoveStringLiteralDfa6_1(active0, 0x20014000000L);
+ case 69:
+ case 101:
+ if ((active0 & 0x800000000000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 59, 14);
+ return jjMoveStringLiteralDfa6_1(active0, 0x4000000000000000L);
+ case 70:
+ case 102:
+ if ((active0 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_1(5, 21, 14);
+ break;
+ case 71:
+ case 103:
+ if ((active0 & 0x40000000000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 54, 14);
+ break;
+ case 72:
+ case 104:
+ if ((active0 & 0x2000000000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 49, 14);
+ break;
+ case 73:
+ case 105:
+ return jjMoveStringLiteralDfa6_1(active0, 0x20000000040000L);
+ case 76:
+ case 108:
+ if ((active0 & 0x40000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 30, 14);
+ return jjMoveStringLiteralDfa6_1(active0, 0x8000000000L);
+ case 78:
+ case 110:
+ if ((active0 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 47, 14);
+ return jjMoveStringLiteralDfa6_1(active0, 0x4000000000L);
+ case 82:
+ case 114:
+ return jjMoveStringLiteralDfa6_1(active0, 0x28000000L);
+ case 84:
+ case 116:
+ if ((active0 & 0x80000000000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 55, 14);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_1(4, active0, 0L);
+}
+static private final int jjMoveStringLiteralDfa6_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(4, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(5, active0, 0L);
+ return 6;
+ }
+ switch(curChar)
+ {
+ case 69:
+ case 101:
+ if ((active0 & 0x4000000L) != 0L)
+ {
+ jjmatchedKind = 26;
+ jjmatchedPos = 6;
+ }
+ else if ((active0 & 0x8000000L) != 0L)
+ {
+ jjmatchedKind = 27;
+ jjmatchedPos = 6;
+ }
+ return jjMoveStringLiteralDfa7_1(active0, 0x30000000L);
+ case 76:
+ case 108:
+ return jjMoveStringLiteralDfa7_1(active0, 0x20000000000000L);
+ case 78:
+ case 110:
+ if ((active0 & 0x200000000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 57, 14);
+ break;
+ case 79:
+ case 111:
+ return jjMoveStringLiteralDfa7_1(active0, 0x40000L);
+ case 82:
+ case 114:
+ if ((active0 & 0x4000000000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 62, 14);
+ break;
+ case 83:
+ case 115:
+ if ((active0 & 0x20000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 41, 14);
+ break;
+ case 84:
+ case 116:
+ if ((active0 & 0x8000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 39, 14);
+ break;
+ case 85:
+ case 117:
+ return jjMoveStringLiteralDfa7_1(active0, 0x4000000000L);
+ default :
+ break;
+ }
+ return jjStartNfa_1(5, active0, 0L);
+}
+static private final int jjMoveStringLiteralDfa7_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(5, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(6, active0, 0L);
+ return 7;
+ }
+ switch(curChar)
+ {
+ case 95:
+ return jjMoveStringLiteralDfa8_1(active0, 0x30000000L);
+ case 69:
+ case 101:
+ if ((active0 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_1(7, 38, 14);
+ else if ((active0 & 0x20000000000000L) != 0L)
+ return jjStartNfaWithStates_1(7, 53, 14);
+ break;
+ case 78:
+ case 110:
+ if ((active0 & 0x40000L) != 0L)
+ return jjStartNfaWithStates_1(7, 18, 14);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_1(6, active0, 0L);
+}
+static private final int jjMoveStringLiteralDfa8_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(6, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(7, active0, 0L);
+ return 8;
+ }
+ switch(curChar)
+ {
+ case 79:
+ case 111:
+ return jjMoveStringLiteralDfa9_1(active0, 0x30000000L);
+ default :
+ break;
+ }
+ return jjStartNfa_1(7, active0, 0L);
+}
+static private final int jjMoveStringLiteralDfa9_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(7, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(8, active0, 0L);
+ return 9;
+ }
+ switch(curChar)
+ {
+ case 78:
+ case 110:
+ return jjMoveStringLiteralDfa10_1(active0, 0x30000000L);
+ default :
+ break;
+ }
+ return jjStartNfa_1(8, active0, 0L);
+}
+static private final int jjMoveStringLiteralDfa10_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(8, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(9, active0, 0L);
+ return 10;
+ }
+ switch(curChar)
+ {
+ case 67:
+ case 99:
+ return jjMoveStringLiteralDfa11_1(active0, 0x30000000L);
+ default :
+ break;
+ }
+ return jjStartNfa_1(9, active0, 0L);
+}
+static private final int jjMoveStringLiteralDfa11_1(long old0, long active0)
+{
+ if (((active0 &= old0)) == 0L)
+ return jjStartNfa_1(9, old0, 0L);
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ jjStopStringLiteralDfa_1(10, active0, 0L);
+ return 11;
+ }
+ switch(curChar)
+ {
+ case 69:
+ case 101:
+ if ((active0 & 0x10000000L) != 0L)
+ return jjStartNfaWithStates_1(11, 28, 14);
+ else if ((active0 & 0x20000000L) != 0L)
+ return jjStartNfaWithStates_1(11, 29, 14);
+ break;
+ default :
+ break;
+ }
+ return jjStartNfa_1(10, active0, 0L);
+}
+static final long[] jjbitVec0 = {
+ 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
+};
+static private final int jjMoveNfa_1(int startState, int curPos)
+{
+ int[] nextStates;
+ int startsAt = 0;
+ jjnewStateCnt = 56;
+ 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 ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddStates(0, 6);
+ else if (curChar == 39)
+ jjCheckNAddStates(7, 10);
+ else if (curChar == 34)
+ jjCheckNAddStates(11, 16);
+ else if (curChar == 36)
+ jjstateSet[jjnewStateCnt++] = 16;
+ else if (curChar == 46)
+ jjCheckNAdd(8);
+ else if (curChar == 47)
+ jjstateSet[jjnewStateCnt++] = 2;
+ if ((0x3fe000000000000L & l) != 0L)
+ {
+ if (kind > 65)
+ kind = 65;
+ jjCheckNAddTwoStates(5, 6);
+ }
+ else if (curChar == 48)
+ {
+ if (kind > 65)
+ kind = 65;
+ jjCheckNAddStates(17, 19);
+ }
+ break;
+ case 0:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 1;
+ break;
+ case 1:
+ if ((0xffff7fffffffffffL & l) != 0L && kind > 11)
+ kind = 11;
+ break;
+ case 2:
+ if (curChar == 42)
+ jjstateSet[jjnewStateCnt++] = 0;
+ break;
+ case 4:
+ if ((0x3fe000000000000L & l) == 0L)
+ break;
+ if (kind > 65)
+ kind = 65;
+ jjCheckNAddTwoStates(5, 6);
+ break;
+ case 5:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 65)
+ kind = 65;
+ jjCheckNAddTwoStates(5, 6);
+ break;
+ case 7:
+ if (curChar == 46)
+ jjCheckNAdd(8);
+ break;
+ case 8:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 69)
+ kind = 69;
+ jjCheckNAddStates(20, 22);
+ break;
+ case 10:
+ if ((0x280000000000L & l) != 0L)
+ jjCheckNAdd(11);
+ break;
+ case 11:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 69)
+ kind = 69;
+ jjCheckNAddTwoStates(11, 12);
+ break;
+ case 14:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 75)
+ kind = 75;
+ jjstateSet[jjnewStateCnt++] = 14;
+ break;
+ case 15:
+ if (curChar == 36)
+ jjstateSet[jjnewStateCnt++] = 16;
+ break;
+ case 17:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 127)
+ kind = 127;
+ jjstateSet[jjnewStateCnt++] = 17;
+ break;
+ case 18:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddStates(0, 6);
+ break;
+ case 19:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(19, 20);
+ break;
+ case 20:
+ if (curChar != 46)
+ break;
+ if (kind > 69)
+ kind = 69;
+ jjCheckNAddStates(23, 25);
+ break;
+ case 21:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 69)
+ kind = 69;
+ jjCheckNAddStates(23, 25);
+ break;
+ case 23:
+ if ((0x280000000000L & l) != 0L)
+ jjCheckNAdd(24);
+ break;
+ case 24:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 69)
+ kind = 69;
+ jjCheckNAddTwoStates(24, 12);
+ break;
+ case 25:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(25, 26);
+ break;
+ case 27:
+ if ((0x280000000000L & l) != 0L)
+ jjCheckNAdd(28);
+ break;
+ case 28:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 69)
+ kind = 69;
+ jjCheckNAddTwoStates(28, 12);
+ break;
+ case 29:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddStates(26, 28);
+ break;
+ case 31:
+ if ((0x280000000000L & l) != 0L)
+ jjCheckNAdd(32);
+ break;
+ case 32:
+ if ((0x3ff000000000000L & l) != 0L)
+ jjCheckNAddTwoStates(32, 12);
+ break;
+ case 33:
+ if (curChar != 48)
+ break;
+ if (kind > 65)
+ kind = 65;
+ jjCheckNAddStates(17, 19);
+ break;
+ case 35:
+ if ((0x3ff000000000000L & l) == 0L)
+ break;
+ if (kind > 65)
+ kind = 65;
+ jjCheckNAddTwoStates(35, 6);
+ break;
+ case 36:
+ if ((0xff000000000000L & l) == 0L)
+ break;
+ if (kind > 65)
+ kind = 65;
+ jjCheckNAddTwoStates(36, 6);
+ break;
+ case 37:
+ if (curChar == 34)
+ jjCheckNAddStates(11, 16);
+ break;
+ case 38:
+ if ((0xfffffffbffffffffL & l) != 0L)
+ jjCheckNAddStates(29, 31);
+ break;
+ case 39:
+ if (curChar == 34)
+ jjCheckNAddStates(29, 31);
+ break;
+ case 41:
+ if (curChar == 34 && kind > 71)
+ kind = 71;
+ break;
+ case 42:
+ if ((0xfffffffbffffffffL & l) != 0L)
+ jjCheckNAddStates(32, 34);
+ break;
+ case 43:
+ if (curChar == 34)
+ jjCheckNAddStates(32, 34);
+ break;
+ case 45:
+ if (curChar == 34 && kind > 72)
+ kind = 72;
+ break;
+ case 46:
+ if (curChar == 39)
+ jjCheckNAddStates(7, 10);
+ break;
+ case 47:
+ if ((0xffffff7fffffffffL & l) != 0L)
+ jjCheckNAddTwoStates(47, 48);
+ break;
+ case 48:
+ if (curChar == 39 && kind > 71)
+ kind = 71;
+ break;
+ case 49:
+ if ((0xffffff7fffffffffL & l) != 0L)
+ jjCheckNAddTwoStates(49, 50);
+ break;
+ case 50:
+ if (curChar == 39 && kind > 73)
+ kind = 73;
+ break;
+ case 52:
+ jjAddStates(35, 36);
+ break;
+ case 54:
+ jjAddStates(37, 38);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ else if (curChar < 128)
+ {
+ long l = 1L << (curChar & 077);
+ MatchLoop: do
+ {
+ switch(jjstateSet[--i])
+ {
+ case 3:
+ if ((0x7fffffe87fffffeL & l) != 0L)
+ {
+ if (kind > 75)
+ kind = 75;
+ jjCheckNAdd(14);
+ }
+ else if (curChar == 96)
+ jjCheckNAddStates(39, 42);
+ break;
+ case 1:
+ if (kind > 11)
+ kind = 11;
+ break;
+ case 6:
+ if ((0x100000001000L & l) != 0L && kind > 65)
+ kind = 65;
+ break;
+ case 9:
+ if ((0x2000000020L & l) != 0L)
+ jjAddStates(43, 44);
+ break;
+ case 12:
+ if ((0x5000000050L & l) != 0L && kind > 69)
+ kind = 69;
+ break;
+ case 13:
+ case 14:
+ if ((0x7fffffe87fffffeL & l) == 0L)
+ break;
+ if (kind > 75)
+ kind = 75;
+ jjCheckNAdd(14);
+ break;
+ case 16:
+ case 17:
+ if ((0x7fffffe87fffffeL & l) == 0L)
+ break;
+ if (kind > 127)
+ kind = 127;
+ jjCheckNAdd(17);
+ break;
+ case 22:
+ if ((0x2000000020L & l) != 0L)
+ jjAddStates(45, 46);
+ break;
+ case 26:
+ if ((0x2000000020L & l) != 0L)
+ jjAddStates(47, 48);
+ break;
+ case 30:
+ if ((0x2000000020L & l) != 0L)
+ jjAddStates(49, 50);
+ break;
+ case 34:
+ if ((0x100000001000000L & l) != 0L)
+ jjCheckNAdd(35);
+ break;
+ case 35:
+ if ((0x7e0000007eL & l) == 0L)
+ break;
+ if (kind > 65)
+ kind = 65;
+ jjCheckNAddTwoStates(35, 6);
+ break;
+ case 38:
+ jjAddStates(29, 31);
+ break;
+ case 40:
+ if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 39;
+ break;
+ case 42:
+ jjAddStates(32, 34);
+ break;
+ case 44:
+ if (curChar == 92)
+ jjstateSet[jjnewStateCnt++] = 43;
+ break;
+ case 47:
+ jjAddStates(51, 52);
+ break;
+ case 49:
+ jjAddStates(53, 54);
+ break;
+ case 51:
+ if (curChar == 96)
+ jjCheckNAddStates(39, 42);
+ break;
+ case 52:
+ if ((0xfffffffeffffffffL & l) != 0L)
+ jjCheckNAddTwoStates(52, 53);
+ break;
+ case 53:
+ if (curChar == 96 && kind > 71)
+ kind = 71;
+ break;
+ case 54:
+ if ((0xfffffffeffffffffL & l) != 0L)
+ jjCheckNAddTwoStates(54, 55);
+ break;
+ case 55:
+ if (curChar == 96 && kind > 74)
+ kind = 74;
+ 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 > 11)
+ kind = 11;
+ break;
+ case 38:
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(29, 31);
+ break;
+ case 42:
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(32, 34);
+ break;
+ case 47:
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(51, 52);
+ break;
+ case 49:
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(53, 54);
+ break;
+ case 52:
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(35, 36);
+ break;
+ case 54:
+ if ((jjbitVec0[i2] & l2) != 0L)
+ jjAddStates(37, 38);
+ break;
+ default : break;
+ }
+ } while(i != startsAt);
+ }
+ if (kind != 0x7fffffff)
+ {
+ jjmatchedKind = kind;
+ jjmatchedPos = curPos;
+ kind = 0x7fffffff;
+ }
+ ++curPos;
+ if ((i = jjnewStateCnt) == (startsAt = 56 - (jjnewStateCnt = startsAt)))
+ return curPos;
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) { return curPos; }
+ }
+}
+static private final int jjMoveStringLiteralDfa0_3()
+{
+ switch(curChar)
+ {
+ case 42:
+ return jjMoveStringLiteralDfa1_3(0x4000L);
+ default :
+ return 1;
+ }
+}
+static private final int jjMoveStringLiteralDfa1_3(long active0)
+{
+ try { curChar = input_stream.readChar(); }
+ catch(java.io.IOException e) {
+ return 1;
+ }
+ switch(curChar)
+ {
+ case 47:
+ if ((active0 & 0x4000L) != 0L)
+ return jjStopAtPos(1, 14);
+ break;
+ default :
+ return 2;
+ }
+ return 2;
+}
+static final int[] jjnextStates = {
+ 19, 20, 25, 26, 29, 30, 12, 47, 48, 49, 50, 38, 40, 41, 42, 44,
+ 45, 34, 36, 6, 8, 9, 12, 21, 22, 12, 29, 30, 12, 38, 40, 41,
+ 42, 44, 45, 52, 53, 54, 55, 52, 53, 54, 55, 10, 11, 23, 24, 27,
+ 28, 31, 32, 47, 48, 49, 50,
+};
+public static final String[] jjstrLiteralImages = {
+"", null, "\74\77", null, null, null, null, null, null, null, null, null, null,
+null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+null, null, null, null, null, "\55\76", "\72\72", "\75\76", null, null, null, null,
+null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+null, null, null, null, null, null, null, null, null, null, null, null, "\50",
+"\51", "\173", "\175", "\133", "\135", "\73", "\54", "\56", "\100", "\44", "\75",
+"\76", "\74", "\41", "\77", "\72", "\75\75", "\74\75", "\76\75", "\41\75",
+"\174\174", "\46\46", "\53\53", "\55\55", "\53", "\55", "\52", "\57", "\46", "\174",
+"\136", "\45", "\74\74", "\76\76", "\76\76\76", "\53\75", "\55\75", "\52\75",
+"\57\75", "\46\75", "\174\75", "\136\75", "\56\75", "\45\75", "\74\74\75", "\76\76\75",
+"\76\76\76\75", null, "\77\76", };
+public static final String[] lexStateNames = {
+ "DEFAULT",
+ "PHPPARSING",
+ "IN_SINGLE_LINE_COMMENT",
+ "IN_FORMAL_COMMENT",
+ "IN_MULTI_LINE_COMMENT",
+};
+public static final int[] jjnewLexState = {
+ -1, 1, 1, -1, 0, -1, -1, -1, -1, -1, 2, 3, 4, 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, -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, -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,
+};
+static final long[] jjtoToken = {
+ 0xfffffffffffe0007L, 0xffffffffffff8fa3L, 0x1L,
+};
+static final long[] jjtoSkip = {
+ 0xe3f8L, 0x0L, 0x0L,
+};
+static final long[] jjtoSpecial = {
+ 0xe010L, 0x0L, 0x0L,
+};
+static final long[] jjtoMore = {
+ 0x11c00L, 0x0L, 0x0L,
+};
+static private SimpleCharStream input_stream;
+static private final int[] jjrounds = new int[56];
+static private final int[] jjstateSet = new int[112];
+static StringBuffer image;
+static int jjimageLen;
+static int lengthOfMatch;
+static protected char curChar;
+public PHPParserTokenManager(SimpleCharStream stream)
+{
+ if (input_stream != null)
+ throw new TokenMgrError("ERROR: Second call to constructor of static lexer. You must use ReInit() to initialize the static variables.", TokenMgrError.STATIC_LEXER_ERROR);
+ input_stream = stream;
+}
+public PHPParserTokenManager(SimpleCharStream stream, int lexState)
+{
+ this(stream);
+ SwitchTo(lexState);
+}
+static public void ReInit(SimpleCharStream stream)
+{
+ jjmatchedPos = jjnewStateCnt = 0;
+ curLexState = defaultLexState;
+ input_stream = stream;
+ ReInitRounds();
+}
+static private final void ReInitRounds()
+{
+ int i;
+ jjround = 0x80000001;
+ for (i = 56; i-- > 0;)
+ jjrounds[i] = 0x80000000;
+}
+static public void ReInit(SimpleCharStream stream, int lexState)
+{
+ ReInit(stream);
+ SwitchTo(lexState);
+}
+static public void SwitchTo(int lexState)
+{
+ if (lexState >= 5 || lexState < 0)
+ throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
+ else
+ curLexState = lexState;
+}
+
+static private final Token jjFillToken()
+{
+ Token t = Token.newToken(jjmatchedKind);
+ t.kind = jjmatchedKind;
+ String im = jjstrLiteralImages[jjmatchedKind];
+ t.image = (im == null) ? input_stream.GetImage() : im;
+ t.beginLine = input_stream.getBeginLine();
+ t.beginColumn = input_stream.getBeginColumn();
+ t.endLine = input_stream.getEndLine();
+ t.endColumn = input_stream.getEndColumn();
+ return t;
+}
+
+static int curLexState = 0;
+static int defaultLexState = 0;
+static int jjnewStateCnt;
+static int jjround;
+static int jjmatchedPos;
+static int jjmatchedKind;
+
+public static final Token getNextToken()
+{
+ int kind;
+ Token specialToken = null;
+ Token matchedToken;
+ int curPos = 0;
+
+ EOFLoop :
+ for (;;)
+ {
+ try
+ {
+ curChar = input_stream.BeginToken();
+ }
+ catch(java.io.IOException e)
+ {
+ jjmatchedKind = 0;
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ return matchedToken;
+ }
+ image = null;
+ jjimageLen = 0;
+
+ for (;;)
+ {
+ switch(curLexState)
+ {
+ case 0:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_0();
+ if (jjmatchedPos == 0 && jjmatchedKind > 3)
+ {
+ jjmatchedKind = 3;
+ }
+ break;
+ case 1:
+ try { input_stream.backup(0);
+ while (curChar <= 32 && (0x100003600L & (1L << curChar)) != 0L)
+ curChar = input_stream.BeginToken();
+ }
+ catch (java.io.IOException e1) { continue EOFLoop; }
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_1();
+ break;
+ case 2:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_2();
+ if (jjmatchedPos == 0 && jjmatchedKind > 16)
+ {
+ jjmatchedKind = 16;
+ }
+ break;
+ case 3:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_3();
+ if (jjmatchedPos == 0 && jjmatchedKind > 16)
+ {
+ jjmatchedKind = 16;
+ }
+ break;
+ case 4:
+ jjmatchedKind = 0x7fffffff;
+ jjmatchedPos = 0;
+ curPos = jjMoveStringLiteralDfa0_4();
+ if (jjmatchedPos == 0 && jjmatchedKind > 16)
+ {
+ jjmatchedKind = 16;
+ }
+ break;
+ }
+ if (jjmatchedKind != 0x7fffffff)
+ {
+ if (jjmatchedPos + 1 < curPos)
+ input_stream.backup(curPos - jjmatchedPos - 1);
+ if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ matchedToken.specialToken = specialToken;
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ return matchedToken;
+ }
+ else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L)
+ {
+ matchedToken = jjFillToken();
+ if (specialToken == null)
+ specialToken = matchedToken;
+ else
+ {
+ matchedToken.specialToken = specialToken;
+ specialToken = (specialToken.next = matchedToken);
+ }
+ SkipLexicalActions(matchedToken);
+ }
+ else
+ SkipLexicalActions(null);
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ continue EOFLoop;
+ }
+ MoreLexicalActions();
+ if (jjnewLexState[jjmatchedKind] != -1)
+ curLexState = jjnewLexState[jjmatchedKind];
+ curPos = 0;
+ jjmatchedKind = 0x7fffffff;
+ try {
+ curChar = input_stream.readChar();
+ continue;
+ }
+ catch (java.io.IOException e1) { }
+ }
+ int error_line = input_stream.getEndLine();
+ int error_column = input_stream.getEndColumn();
+ String error_after = null;
+ boolean EOFSeen = false;
+ try { input_stream.readChar(); input_stream.backup(1); }
+ catch (java.io.IOException e1) {
+ EOFSeen = true;
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ if (curChar == '\n' || curChar == '\r') {
+ error_line++;
+ error_column = 0;
+ }
+ else
+ error_column++;
+ }
+ if (!EOFSeen) {
+ input_stream.backup(1);
+ error_after = curPos <= 1 ? "" : input_stream.GetImage();
+ }
+ throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR);
+ }
+ }
+}
+
+static final void SkipLexicalActions(Token matchedToken)
+{
+ switch(jjmatchedKind)
+ {
+ default :
+ break;
+ }
+}
+static final void MoreLexicalActions()
+{
+ jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
+ switch(jjmatchedKind)
+ {
+ 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;
+ input_stream.backup(1);
+ break;
+ default :
+ break;
+ }
+}
+}
--- /dev/null
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 2.1 */
+package test;
+
+/**
+ * This exception is thrown when parse errors are encountered.
+ * You can explicitly create objects of this exception type by
+ * calling the method generateParseException in the generated
+ * parser.
+ *
+ * You can modify this class to customize your error reporting
+ * mechanisms so long as you retain the public fields.
+ */
+public class ParseException extends Exception {
+
+ /**
+ * This constructor is used by the method "generateParseException"
+ * in the generated parser. Calling this constructor generates
+ * a new object of this type with the fields "currentToken",
+ * "expectedTokenSequences", and "tokenImage" set. The boolean
+ * flag "specialConstructor" is also set to true to indicate that
+ * this constructor was used to create this object.
+ * This constructor calls its super class with the empty string
+ * to force the "toString" method of parent class "Throwable" to
+ * print the error message in the form:
+ * ParseException: <result of getMessage>
+ */
+ public ParseException(Token currentTokenVal,
+ int[][] expectedTokenSequencesVal,
+ String[] tokenImageVal
+ )
+ {
+ super("");
+ specialConstructor = true;
+ currentToken = currentTokenVal;
+ expectedTokenSequences = expectedTokenSequencesVal;
+ tokenImage = tokenImageVal;
+ }
+
+ /**
+ * The following constructors are for use by you for whatever
+ * purpose you can think of. Constructing the exception in this
+ * manner makes the exception behave in the normal way - i.e., as
+ * documented in the class "Throwable". The fields "errorToken",
+ * "expectedTokenSequences", and "tokenImage" do not contain
+ * relevant information. The JavaCC generated code does not use
+ * these constructors.
+ */
+
+ public ParseException() {
+ super();
+ specialConstructor = false;
+ }
+
+ public ParseException(String message) {
+ super(message);
+ specialConstructor = false;
+ }
+
+ /**
+ * This variable determines which constructor was used to create
+ * this object and thereby affects the semantics of the
+ * "getMessage" method (see below).
+ */
+ protected boolean specialConstructor;
+
+ /**
+ * This is the last token that has been consumed successfully. If
+ * this object has been created due to a parse error, the token
+ * followng this token will (therefore) be the first error token.
+ */
+ public Token currentToken;
+
+ /**
+ * Each entry in this array is an array of integers. Each array
+ * of integers represents a sequence of tokens (by their ordinal
+ * values) that is expected at this point of the parse.
+ */
+ public int[][] expectedTokenSequences;
+
+ /**
+ * This is a reference to the "tokenImage" array of the generated
+ * parser within which the parse error occurred. This array is
+ * defined in the generated ...Constants interface.
+ */
+ public String[] tokenImage;
+
+ /**
+ * This method has the standard behavior when this object has been
+ * created using the standard constructors. Otherwise, it uses
+ * "currentToken" and "expectedTokenSequences" to generate a parse
+ * error message and returns it. If this object has been created
+ * due to a parse error, and you do not catch it (it gets thrown
+ * from the parser), then this method is called during the printing
+ * of the final stack trace, and hence the correct error message
+ * gets displayed.
+ */
+ public String getMessage() {
+ if (!specialConstructor) {
+ return super.getMessage();
+ }
+ String expected = "";
+ int maxSize = 0;
+ for (int i = 0; i < expectedTokenSequences.length; i++) {
+ if (maxSize < expectedTokenSequences[i].length) {
+ maxSize = expectedTokenSequences[i].length;
+ }
+ for (int j = 0; j < expectedTokenSequences[i].length; j++) {
+ expected += tokenImage[expectedTokenSequences[i][j]] + " ";
+ }
+ if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
+ expected += "...";
+ }
+ expected += eol + " ";
+ }
+ String retval = "Encountered \"";
+ Token tok = currentToken.next;
+ for (int i = 0; i < maxSize; i++) {
+ if (i != 0) retval += " ";
+ if (tok.kind == 0) {
+ retval += tokenImage[0];
+ break;
+ }
+ retval += add_escapes(tok.image);
+ tok = tok.next;
+ }
+ retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
+ retval += "." + eol;
+ if (expectedTokenSequences.length == 1) {
+ retval += "Was expecting:" + eol + " ";
+ } else {
+ retval += "Was expecting one of:" + eol + " ";
+ }
+ retval += expected;
+ return retval;
+ }
+
+ /**
+ * The end of line string for this machine.
+ */
+ protected String eol = System.getProperty("line.separator", "\n");
+
+ /**
+ * Used to convert raw characters to their escaped version
+ * when these raw version cannot be used as part of an ASCII
+ * string literal.
+ */
+ protected String add_escapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+}
--- /dev/null
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 2.1 */
+package test;
+
+/**
+ * An implementation of interface CharStream, where the stream is assumed to
+ * contain only ASCII characters (without unicode processing).
+ */
+
+public final class SimpleCharStream
+{
+ public static final boolean staticFlag = true;
+ static int bufsize;
+ static int available;
+ static int tokenBegin;
+ static public int bufpos = -1;
+ static private int bufline[];
+ static private int bufcolumn[];
+
+ static private int column = 0;
+ static private int line = 1;
+
+ static private boolean prevCharIsCR = false;
+ static private boolean prevCharIsLF = false;
+
+ static private java.io.Reader inputStream;
+
+ static private char[] buffer;
+ static private int maxNextCharInd = 0;
+ static private int inBuf = 0;
+
+ static private final void ExpandBuff(boolean wrapAround)
+ {
+ char[] newbuffer = new char[bufsize + 2048];
+ int newbufline[] = new int[bufsize + 2048];
+ int newbufcolumn[] = new int[bufsize + 2048];
+
+ try
+ {
+ if (wrapAround)
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ System.arraycopy(buffer, 0, newbuffer,
+ bufsize - tokenBegin, bufpos);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+ bufcolumn = newbufcolumn;
+
+ maxNextCharInd = (bufpos += (bufsize - tokenBegin));
+ }
+ else
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ buffer = newbuffer;
+
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ bufline = newbufline;
+
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ bufcolumn = newbufcolumn;
+
+ maxNextCharInd = (bufpos -= tokenBegin);
+ }
+ }
+ catch (Throwable t)
+ {
+ throw new Error(t.getMessage());
+ }
+
+
+ bufsize += 2048;
+ available = bufsize;
+ tokenBegin = 0;
+ }
+
+ static private final void FillBuff() throws java.io.IOException
+ {
+ if (maxNextCharInd == available)
+ {
+ if (available == bufsize)
+ {
+ if (tokenBegin > 2048)
+ {
+ bufpos = maxNextCharInd = 0;
+ available = tokenBegin;
+ }
+ else if (tokenBegin < 0)
+ bufpos = maxNextCharInd = 0;
+ else
+ ExpandBuff(false);
+ }
+ else if (available > tokenBegin)
+ available = bufsize;
+ else if ((tokenBegin - available) < 2048)
+ ExpandBuff(true);
+ else
+ available = tokenBegin;
+ }
+
+ int i;
+ try {
+ if ((i = inputStream.read(buffer, maxNextCharInd,
+ available - maxNextCharInd)) == -1)
+ {
+ inputStream.close();
+ throw new java.io.IOException();
+ }
+ else
+ maxNextCharInd += i;
+ return;
+ }
+ catch(java.io.IOException e) {
+ --bufpos;
+ backup(0);
+ if (tokenBegin == -1)
+ tokenBegin = bufpos;
+ throw e;
+ }
+ }
+
+ static public final char BeginToken() throws java.io.IOException
+ {
+ tokenBegin = -1;
+ char c = readChar();
+ tokenBegin = bufpos;
+
+ return c;
+ }
+
+ static private final void UpdateLineColumn(char c)
+ {
+ column++;
+
+ if (prevCharIsLF)
+ {
+ prevCharIsLF = false;
+ line += (column = 1);
+ }
+ else if (prevCharIsCR)
+ {
+ prevCharIsCR = false;
+ if (c == '\n')
+ {
+ prevCharIsLF = true;
+ }
+ else
+ line += (column = 1);
+ }
+
+ switch (c)
+ {
+ case '\r' :
+ prevCharIsCR = true;
+ break;
+ case '\n' :
+ prevCharIsLF = true;
+ break;
+ case '\t' :
+ column--;
+ column += (8 - (column & 07));
+ break;
+ default :
+ break;
+ }
+
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
+ }
+
+ static public final char readChar() throws java.io.IOException
+ {
+ if (inBuf > 0)
+ {
+ --inBuf;
+
+ if (++bufpos == bufsize)
+ bufpos = 0;
+
+ return buffer[bufpos];
+ }
+
+ if (++bufpos >= maxNextCharInd)
+ FillBuff();
+
+ char c = buffer[bufpos];
+
+ UpdateLineColumn(c);
+ return (c);
+ }
+
+ /**
+ * @deprecated
+ * @see #getEndColumn
+ */
+
+ static public final int getColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ /**
+ * @deprecated
+ * @see #getEndLine
+ */
+
+ static public final int getLine() {
+ return bufline[bufpos];
+ }
+
+ static public final int getEndColumn() {
+ return bufcolumn[bufpos];
+ }
+
+ static public final int getEndLine() {
+ return bufline[bufpos];
+ }
+
+ static public final int getBeginColumn() {
+ return bufcolumn[tokenBegin];
+ }
+
+ static public final int getBeginLine() {
+ return bufline[tokenBegin];
+ }
+
+ static public final void backup(int amount) {
+
+ inBuf += amount;
+ if ((bufpos -= amount) < 0)
+ bufpos += bufsize;
+ }
+
+ public SimpleCharStream(java.io.Reader dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ if (inputStream != null)
+ throw new Error("\n ERROR: Second call to the constructor of a static SimpleCharStream. You must\n" +
+ " either use ReInit() or set the JavaCC option STATIC to false\n" +
+ " during the generation of this class.");
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ }
+
+ public SimpleCharStream(java.io.Reader dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.Reader dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+ public void ReInit(java.io.Reader dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ inputStream = dstream;
+ line = startline;
+ column = startcolumn - 1;
+
+ if (buffer == null || buffersize != buffer.length)
+ {
+ available = bufsize = buffersize;
+ buffer = new char[buffersize];
+ bufline = new int[buffersize];
+ bufcolumn = new int[buffersize];
+ }
+ prevCharIsLF = prevCharIsCR = false;
+ tokenBegin = inBuf = maxNextCharInd = 0;
+ bufpos = -1;
+ }
+
+ public void ReInit(java.io.Reader dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+
+ public void ReInit(java.io.Reader dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+ public SimpleCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ this(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ this(dstream, startline, startcolumn, 4096);
+ }
+
+ public SimpleCharStream(java.io.InputStream dstream)
+ {
+ this(dstream, 1, 1, 4096);
+ }
+
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn, int buffersize)
+ {
+ ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
+ }
+
+ public void ReInit(java.io.InputStream dstream)
+ {
+ ReInit(dstream, 1, 1, 4096);
+ }
+ public void ReInit(java.io.InputStream dstream, int startline,
+ int startcolumn)
+ {
+ ReInit(dstream, startline, startcolumn, 4096);
+ }
+ static public final String GetImage()
+ {
+ if (bufpos >= tokenBegin)
+ return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+ else
+ return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+ new String(buffer, 0, bufpos + 1);
+ }
+
+ static public final char[] GetSuffix(int len)
+ {
+ char[] ret = new char[len];
+
+ if ((bufpos + 1) >= len)
+ System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+ else
+ {
+ System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+ len - bufpos - 1);
+ System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+ }
+
+ return ret;
+ }
+
+ static public void Done()
+ {
+ buffer = null;
+ bufline = null;
+ bufcolumn = null;
+ }
+
+ /**
+ * Method to adjust line and column numbers for the start of a token.<BR>
+ */
+ static public void adjustBeginLineColumn(int newLine, int newCol)
+ {
+ int start = tokenBegin;
+ int len;
+
+ if (bufpos >= tokenBegin)
+ {
+ len = bufpos - tokenBegin + inBuf + 1;
+ }
+ else
+ {
+ len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+ }
+
+ int i = 0, j = 0, k = 0;
+ int nextColDiff = 0, columnDiff = 0;
+
+ while (i < len &&
+ bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+ {
+ bufline[j] = newLine;
+ nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+ bufcolumn[j] = newCol + columnDiff;
+ columnDiff = nextColDiff;
+ i++;
+ }
+
+ if (i < len)
+ {
+ bufline[j] = newLine++;
+ bufcolumn[j] = newCol + columnDiff;
+
+ while (i++ < len)
+ {
+ if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+ bufline[j] = newLine++;
+ else
+ bufline[j] = newLine;
+ }
+ }
+
+ line = bufline[j];
+ column = bufcolumn[j];
+ }
+
+}
--- /dev/null
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 2.1 */
+package test;
+
+/**
+ * Describes the input token stream.
+ */
+
+public class Token {
+
+ /**
+ * An integer that describes the kind of this token. This numbering
+ * system is determined by JavaCCParser, and a table of these numbers is
+ * stored in the file ...Constants.java.
+ */
+ public int kind;
+
+ /**
+ * beginLine and beginColumn describe the position of the first character
+ * of this token; endLine and endColumn describe the position of the
+ * last character of this token.
+ */
+ public int beginLine, beginColumn, endLine, endColumn;
+
+ /**
+ * The string image of the token.
+ */
+ public String image;
+
+ /**
+ * A reference to the next regular (non-special) token from the input
+ * stream. If this is the last token from the input stream, or if the
+ * token manager has not read tokens beyond this one, this field is
+ * set to null. This is true only if this token is also a regular
+ * token. Otherwise, see below for a description of the contents of
+ * this field.
+ */
+ public Token next;
+
+ /**
+ * This field is used to access special tokens that occur prior to this
+ * token, but after the immediately preceding regular (non-special) token.
+ * If there are no such special tokens, this field is set to null.
+ * When there are more than one such special token, this field refers
+ * to the last of these special tokens, which in turn refers to the next
+ * previous special token through its specialToken field, and so on
+ * until the first special token (whose specialToken field is null).
+ * The next fields of special tokens refer to other special tokens that
+ * immediately follow it (without an intervening regular token). If there
+ * is no such token, this field is null.
+ */
+ public Token specialToken;
+
+ /**
+ * Returns the image.
+ */
+ public final String toString()
+ {
+ return image;
+ }
+
+ /**
+ * Returns a new Token object, by default. However, if you want, you
+ * can create and return subclass objects based on the value of ofKind.
+ * Simply add the cases to the switch for all those special cases.
+ * For example, if you have a subclass of Token called IDToken that
+ * you want to create if ofKind is ID, simlpy add something like :
+ *
+ * case MyParserConstants.ID : return new IDToken();
+ *
+ * to the following switch statement. Then you can cast matchedToken
+ * variable to the appropriate type and use it in your lexical actions.
+ */
+ public static final Token newToken(int ofKind)
+ {
+ switch(ofKind)
+ {
+ default : return new Token();
+ }
+ }
+
+}
--- /dev/null
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 2.1 */
+package test;
+
+public class TokenMgrError extends Error
+{
+ /*
+ * Ordinals for various reasons why an Error of this type can be thrown.
+ */
+
+ /**
+ * Lexical error occured.
+ */
+ static final int LEXICAL_ERROR = 0;
+
+ /**
+ * An attempt wass made to create a second instance of a static token manager.
+ */
+ static final int STATIC_LEXER_ERROR = 1;
+
+ /**
+ * Tried to change to an invalid lexical state.
+ */
+ static final int INVALID_LEXICAL_STATE = 2;
+
+ /**
+ * Detected (and bailed out of) an infinite loop in the token manager.
+ */
+ static final int LOOP_DETECTED = 3;
+
+ /**
+ * Indicates the reason why the exception is thrown. It will have
+ * one of the above 4 values.
+ */
+ int errorCode;
+
+ /**
+ * Replaces unprintable characters by their espaced (or unicode escaped)
+ * equivalents in the given string
+ */
+ protected static final String addEscapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
+ }
+ }
+ return retval.toString();
+ }
+
+ /**
+ * Returns a detailed message for the Error when it is thrown by the
+ * token manager to indicate a lexical error.
+ * Parameters :
+ * EOFSeen : indicates if EOF caused the lexicl error
+ * curLexState : lexical state in which this error occured
+ * errorLine : line number when the error occured
+ * errorColumn : column number when the error occured
+ * errorAfter : prefix that was seen before this error occured
+ * curchar : the offending character
+ * Note: You can customize the lexical error message by modifying this method.
+ */
+ private static final String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+ return("Lexical error at line " +
+ errorLine + ", column " +
+ errorColumn + ". Encountered: " +
+ (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+ "after : \"" + addEscapes(errorAfter) + "\"");
+ }
+
+ /**
+ * You can also modify the body of this method to customize your error messages.
+ * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+ * of end-users concern, so you can return something like :
+ *
+ * "Internal Error : Please file a bug report .... "
+ *
+ * from this method for such cases in the release version of your parser.
+ */
+ public String getMessage() {
+ return super.getMessage();
+ }
+
+ /*
+ * Constructors of various flavors follow.
+ */
+
+ public TokenMgrError() {
+ }
+
+ public TokenMgrError(String message, int reason) {
+ super(message);
+ errorCode = reason;
+ }
+
+ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+ }
+}