X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java index 9567e32..7369a24 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java @@ -1222,38 +1222,38 @@ public class Parser //extends PHPParserSuperclass // getNextToken(); // } // return; - } else if (token == TokenNamedefine) { - getNextToken(); - if (token == TokenNameLPAREN) { - getNextToken(); - } else { - throwSyntaxError("'(' expected after 'define' keyword."); - } - expr(); - if (token == TokenNameCOMMA) { - getNextToken(); - } else { - throwSyntaxError("',' expected after first 'define' constant."); - } - expr(); - if (token == TokenNameCOMMA) { - getNextToken(); - expr(); - } - if (token == TokenNameRPAREN) { - getNextToken(); - } else { - throwSyntaxError("')' expected after 'define' statement."); - } - if (token == TokenNameSEMICOLON) { - getNextToken(); - } else { - if (token != TokenNameStopPHP) { - throwSyntaxError("';' expected after 'define' statement."); - } - getNextToken(); - } - return; +// } else if (token == TokenNamedefine) { +// getNextToken(); +// if (token == TokenNameLPAREN) { +// getNextToken(); +// } else { +// throwSyntaxError("'(' expected after 'define' keyword."); +// } +// expr(); +// if (token == TokenNameCOMMA) { +// getNextToken(); +// } else { +// throwSyntaxError("',' expected after first 'define' constant."); +// } +// expr(); +// if (token == TokenNameCOMMA) { +// getNextToken(); +// expr(); +// } +// if (token == TokenNameRPAREN) { +// getNextToken(); +// } else { +// throwSyntaxError("')' expected after 'define' statement."); +// } +// if (token == TokenNameSEMICOLON) { +// getNextToken(); +// } else { +// if (token != TokenNameStopPHP) { +// throwSyntaxError("';' expected after 'define' statement."); +// } +// getNextToken(); +// } +// return; } else if (token == TokenNamefunction) { MethodDeclaration methodDecl = new MethodDeclaration( this.compilationUnit.compilationResult); @@ -1410,10 +1410,10 @@ public class Parser //extends PHPParserSuperclass typeDecl.declarationSourceEnd = scanner.getCurrentTokenEndPosition(); getNextToken(); } else { - throwSyntaxError("'}' expected at end of interface body."); + throwSyntaxError("'}' expected at end of class body."); } } else { - throwSyntaxError("'{' expected at start of interface body."); + throwSyntaxError("'{' expected at start of class body."); } } private void class_entry_type() { @@ -1422,7 +1422,7 @@ public class Parser //extends PHPParserSuperclass // | T_FINAL T_CLASS if (token == TokenNameclass) { getNextToken(); - } else if (token == TokenNamefinal) { + } else if (token == TokenNameabstract) { checkAndSetModifiers(AccAbstract); getNextToken(); if (token != TokenNameclass) { @@ -1431,10 +1431,13 @@ public class Parser //extends PHPParserSuperclass getNextToken(); } else if (token == TokenNamefinal) { checkAndSetModifiers(AccFinal); + getNextToken(); if (token != TokenNameclass) { throwSyntaxError("Keyword 'class' expected after keyword 'final'."); } getNextToken(); + } else { + throwSyntaxError("Keyword 'class' 'final' or 'abstract' expected"); } } private void interface_extends_list() { @@ -1489,7 +1492,14 @@ public class Parser //extends PHPParserSuperclass private void class_statement_list() { do { class_statement(); - } while (token == TokenNamefunction || token == TokenNamevar); + } while (token == TokenNamepublic || + token == TokenNameprotected || + token == TokenNameprivate || + token == TokenNamestatic || + token == TokenNameabstract || + token == TokenNamefinal || + token == TokenNamefunction || + token == TokenNamevar); } private void class_statement() { // class_statement: @@ -2182,6 +2192,26 @@ public class Parser //extends PHPParserSuperclass getNextToken(); } break; + case TokenNamearray : + // T_ARRAY '(' array_pair_list ')' + getNextToken(); + if (token == TokenNameLPAREN) { + getNextToken(); + if (token == TokenNameRPAREN) { + getNextToken(); + break; + } + array_pair_list(); + if (token != TokenNameRPAREN) { + throwSyntaxError("')' expected after keyword 'array'" + + "(Found token: " + scanner.toStringAction(token) + ")"); + } + getNextToken(); + } else { + throwSyntaxError("'(' expected after keyword 'array'" + + "(Found token: " + scanner.toStringAction(token) + ")"); + } + break; case TokenNameprint : getNextToken(); expr(); @@ -2355,6 +2385,29 @@ public class Parser //extends PHPParserSuperclass } } while (while_flag); } + private void array_pair_list() { +// array_pair_list: +// /* empty */ +//| non_empty_array_pair_list possible_comma + non_empty_array_pair_list(); + if (token == TokenNameCOMMA) { + getNextToken(); + } + } + + + private void non_empty_array_pair_list() { +//non_empty_array_pair_list: +// non_empty_array_pair_list ',' expr T_DOUBLE_ARROW expr +//| non_empty_array_pair_list ',' expr +//| expr T_DOUBLE_ARROW expr +//| expr +//| non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable +//| non_empty_array_pair_list ',' '&' w_variable +//| expr T_DOUBLE_ARROW '&' w_variable +//| '&' w_variable + } + private void unaryExpression() { switch (token) { case TokenNamePLUS_PLUS :