/* 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.util.Hashtable;
-import java.util.ArrayList;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.Reader;
import java.io.StringReader;
-import java.io.*;
import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Hashtable;
-import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
-import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-import net.sourceforge.phpdt.internal.compiler.ast.*;
-import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
+import net.sourceforge.phpdt.core.IJavaModelMarker;
+import net.sourceforge.phpdt.internal.compiler.ast.AbstractCase;
+import net.sourceforge.phpdt.internal.compiler.ast.AbstractVariable;
+import net.sourceforge.phpdt.internal.compiler.ast.ArrayDeclarator;
+import net.sourceforge.phpdt.internal.compiler.ast.ArrayInitializer;
+import net.sourceforge.phpdt.internal.compiler.ast.ArrayVariableDeclaration;
+import net.sourceforge.phpdt.internal.compiler.ast.AstNode;
+import net.sourceforge.phpdt.internal.compiler.ast.BinaryExpression;
+import net.sourceforge.phpdt.internal.compiler.ast.Block;
+import net.sourceforge.phpdt.internal.compiler.ast.Break;
+import net.sourceforge.phpdt.internal.compiler.ast.Case;
+import net.sourceforge.phpdt.internal.compiler.ast.CastExpression;
+import net.sourceforge.phpdt.internal.compiler.ast.ClassAccess;
+import net.sourceforge.phpdt.internal.compiler.ast.ClassDeclaration;
+import net.sourceforge.phpdt.internal.compiler.ast.ClassInstantiation;
+import net.sourceforge.phpdt.internal.compiler.ast.ConditionalExpression;
+import net.sourceforge.phpdt.internal.compiler.ast.ConstantIdentifier;
+import net.sourceforge.phpdt.internal.compiler.ast.Continue;
+import net.sourceforge.phpdt.internal.compiler.ast.DefaultCase;
+import net.sourceforge.phpdt.internal.compiler.ast.Define;
+import net.sourceforge.phpdt.internal.compiler.ast.DoStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.EchoStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.Else;
+import net.sourceforge.phpdt.internal.compiler.ast.ElseIf;
+import net.sourceforge.phpdt.internal.compiler.ast.EmptyStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.Expression;
+import net.sourceforge.phpdt.internal.compiler.ast.FalseLiteral;
+import net.sourceforge.phpdt.internal.compiler.ast.FieldDeclaration;
+import net.sourceforge.phpdt.internal.compiler.ast.ForStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.ForeachStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.FunctionCall;
+import net.sourceforge.phpdt.internal.compiler.ast.GlobalStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.HTMLBlock;
+import net.sourceforge.phpdt.internal.compiler.ast.HTMLCode;
+import net.sourceforge.phpdt.internal.compiler.ast.IfStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.InclusionStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.LabeledStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.ListExpression;
+import net.sourceforge.phpdt.internal.compiler.ast.Literal;
+import net.sourceforge.phpdt.internal.compiler.ast.MethodDeclaration;
+import net.sourceforge.phpdt.internal.compiler.ast.NullLiteral;
+import net.sourceforge.phpdt.internal.compiler.ast.NumberLiteral;
+import net.sourceforge.phpdt.internal.compiler.ast.OperatorIds;
+import net.sourceforge.phpdt.internal.compiler.ast.PHPDocument;
+import net.sourceforge.phpdt.internal.compiler.ast.PHPEchoBlock;
+import net.sourceforge.phpdt.internal.compiler.ast.PostfixedUnaryExpression;
+import net.sourceforge.phpdt.internal.compiler.ast.PrefixedUnaryExpression;
+import net.sourceforge.phpdt.internal.compiler.ast.PrintExpression;
+import net.sourceforge.phpdt.internal.compiler.ast.ReturnStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.Statement;
+import net.sourceforge.phpdt.internal.compiler.ast.StaticStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.StringLiteral;
+import net.sourceforge.phpdt.internal.compiler.ast.SwitchStatement;
+import net.sourceforge.phpdt.internal.compiler.ast.TrueLiteral;
+import net.sourceforge.phpdt.internal.compiler.ast.Variable;
+import net.sourceforge.phpdt.internal.compiler.ast.VariableDeclaration;
+import net.sourceforge.phpdt.internal.compiler.ast.WhileStatement;
import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;
+import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
-import net.sourceforge.phpdt.internal.corext.Assert;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.texteditor.MarkerUtilities;
/**
* A new php parser.
* You can test the parser with the PHPParserTestCase2.java
* @author Matthieu Casanova
*/
-public final class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
+public class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
//todo : fix the variables names bug
//todo : handle tilde operator
//ast stack
private final static int AstStackIncrement = 100;
/** The stack of node. */
- private static AstNode[] nodes;
+ protected static AstNode[] nodes;
/** The cursor in expression stack. */
private static int nodePtr;
/**
* Reinitialize the parser.
*/
- private static final void init() {
+ protected static final void init() {
nodes = new AstNode[AstStackIncrement];
nodePtr = -1;
htmlStart = 0;
e.currentToken.sourceStart,
e.currentToken.sourceEnd,
errorLevel,
- "Line " + e.currentToken.beginLine+", "+e.currentToken.sourceStart+":"+e.currentToken.sourceEnd);
+ "Line " + e.currentToken.beginLine+", "+e.currentToken.sourceStart+':'+e.currentToken.sourceEnd);
} else {
setMarker(fileToParse,
errorMessage,
errorStart,
errorEnd,
errorLevel,
- "Line " + e.currentToken.beginLine+", "+errorStart+":"+errorEnd);
+ "Line " + e.currentToken.beginLine+", "+errorStart+':'+errorEnd);
errorStart = -1;
errorEnd = -1;
}
else
attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
MarkerUtilities.setLineNumber(attributes, lineNumber);
- MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
+// MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
+ MarkerUtilities.createMarker(file, attributes, IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER);
}
}
}
currentPosition > SimpleCharStream.currentBuffer.length()) {
return;
}
- final char[] chars = SimpleCharStream.currentBuffer.substring(htmlStart,
- currentPosition).toCharArray();
- pushOnAstNodes(new HTMLCode(chars, htmlStart,currentPosition));
+ final String html = SimpleCharStream.currentBuffer.substring(htmlStart, currentPosition);
+ pushOnAstNodes(new HTMLCode(html, htmlStart,currentPosition));
}
/** Create a new task. */
}
}
- private static final void parse() throws ParseException {
+ protected static final void parse() throws ParseException {
phpFile();
}
break;
case IDENTIFIER:
token = jj_consume_token(IDENTIFIER);
- outlineInfo.addVariable("$" + token.image);
+ outlineInfo.addVariable('$' + token.image);
{if (true) return new Variable(token.image,token.sourceStart,token.sourceEnd);}
break;
default:
;
}
variableDeclaration = VariableDeclaratorNoSuffix();
- outlineInfo.addVariable("$"+variableDeclaration.name());
+ outlineInfo.addVariable('$'+variableDeclaration.name());
if (token != null) {
variableDeclaration.setReference(true);
}
expr = UnaryExpression();
} catch (ParseException e) {
if (errorMessage != null) {if (true) throw e;}
- errorMessage = "unexpected token '"+e.currentToken.next.image+"'";
+ errorMessage = "unexpected token '"+e.currentToken.next.image+'\'';
errorLevel = ERROR;
errorStart = PHPParser.token.sourceStart;
errorEnd = PHPParser.token.sourceEnd;
Statement statement;
final ArrayList stmts = new ArrayList();
final Token token = PHPParser.token;
+ final int start = PHPParser.token.next.sourceStart;
expr = SwitchLabel();
label_31:
while (true) {
final Statement[] stmtsArray = new Statement[listSize];
stmts.toArray(stmtsArray);
if (expr == null) {//it's a default
- {if (true) return new DefaultCase(stmtsArray,token.sourceStart,stmtsArray[listSize-1].sourceEnd);}
+ final int end = PHPParser.token.next.sourceStart;
+ {if (true) return new DefaultCase(stmtsArray,start,end);}
}
if (listSize != 0) {
{if (true) return new Case(expr,stmtsArray,expr.sourceStart,stmtsArray[listSize-1].sourceEnd);}
}
try {
statement = Statement();
- pos = rparenToken.sourceEnd+1;
+ pos = statement.sourceEnd+1;
} catch (ParseException e) {
if (errorMessage != null) {if (true) throw e;}
errorMessage = "statement expected";
variable,
statement,
foreachToken.sourceStart,
- statement.sourceEnd);}
+ pos);}
throw new Error("Missing return statement in function");
}
return false;
}
+ static final private boolean jj_3_5() {
+ if (jj_3R_45()) return true;
+ if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
+ return false;
+ }
+
static final private boolean jj_3R_186() {
if (jj_scan_token(BIT_AND)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
return false;
}
- static final private boolean jj_3_5() {
- if (jj_3R_45()) 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(ORASSIGN)) return true;
if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
JJCalls next;
}
+
}