import net.sourceforge.phpdt.internal.compiler.util.Util;
import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
import net.sourceforge.phpeclipse.internal.compiler.ast.AbstractMethodDeclaration;
-import net.sourceforge.phpeclipse.internal.compiler.ast.AstNode;
+import net.sourceforge.phpeclipse.internal.compiler.ast.ASTNode;
import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration;
import net.sourceforge.phpeclipse.internal.compiler.ast.FieldDeclaration;
import net.sourceforge.phpeclipse.internal.compiler.ast.ImportReference;
if (astPtr == 0) {
compilationUnit.types.add(methodDecl);
} else {
- AstNode node = astStack[astPtr];
+ ASTNode node = astStack[astPtr];
if (node instanceof TypeDeclaration) {
TypeDeclaration typeDecl = ((TypeDeclaration) node);
if (typeDecl.methods == null) {
// statementList();
// }
else {
- throwSyntaxError("':' character after 'case' constant expected (Found token: " + scanner.toStringAction(token) + ")");
+ throwSyntaxError("':' character expected after 'case' constant (Found token: " + scanner.toStringAction(token) + ")");
}
} else { // TokenNamedefault
getNextToken();
// empty default case
break;
}
- statementList();
+ if (token != TokenNamecase) {
+ statementList();
+ }
} else {
- throwSyntaxError("':' character after 'default' expected.");
+ throwSyntaxError("':' character expected after 'default'.");
}
}
} while (token == TokenNamecase || token == TokenNamedefault);
//| static_member '(' function_call_parameter_list ')'
//| variable_without_objects '(' function_call_parameter_list ')'
char[] defineName = null;
+ char[] ident = null;
int startPos=0;
int endPos=0;
if (Scanner.TRACE) {
System.out.println("TRACE: function_call()");
}
if (token == TokenNameIdentifier) {
- defineName = scanner.getCurrentIdentifierSource();
+ ident = scanner.getCurrentIdentifierSource();
+ defineName = ident;
startPos = scanner.getCurrentTokenStartPosition();
endPos = scanner.getCurrentTokenEndPosition();
getNextToken();
}
non_empty_function_call_parameter_list();
if (token != TokenNameRPAREN) {
- throwSyntaxError("')' expected in function call.");
+ String functionName;
+ if (ident==null) {
+ functionName = new String(" ");
+ } else {
+ functionName = new String(ident);
+ }
+ throwSyntaxError("')' expected in function call ("+functionName+").");
}
getNextToken();
}
// }
} else if (token == TokenNameMINUS_GREATER) {
getNextToken();
- if (token != TokenNameIdentifier) {
- throwSyntaxError("String token expected.");
+ if (token != TokenNameIdentifier &&
+ token != TokenNameVariable) {
+ throwSyntaxError("String or Variable token expected.");
}
getNextToken();
}
//ast stack
final static int AstStackIncrement = 100;
protected int astPtr;
- protected AstNode[] astStack = new AstNode[AstStackIncrement];
+ protected ASTNode[] astStack = new ASTNode[AstStackIncrement];
protected int astLengthPtr;
protected int[] astLengthStack;
- AstNode[] noAstNodes = new AstNode[AstStackIncrement];
+ ASTNode[] noAstNodes = new ASTNode[AstStackIncrement];
public CompilationUnitDeclaration compilationUnit; /*
* the result from parse()
*/
astLengthStack[astLengthPtr] = pos;
}
}
- protected void pushOnAstStack(AstNode node) {
+ protected void pushOnAstStack(ASTNode node) {
/*
* add a new obj on top of the ast stack
*/
astStack[++astPtr] = node;
} catch (IndexOutOfBoundsException e) {
int oldStackLength = astStack.length;
- AstNode[] oldStack = astStack;
- astStack = new AstNode[oldStackLength + AstStackIncrement];
+ ASTNode[] oldStack = astStack;
+ astStack = new ASTNode[oldStackLength + AstStackIncrement];
System.arraycopy(oldStack, 0, astStack, 0, oldStackLength);
astPtr = oldStackLength;
astStack[astPtr] = node;