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 1f05db8..f79075c 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 @@ -422,6 +422,9 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI try { statement = statement(); blockStatements.add(statement); + if (token == TokenNameEOF) { + return null; + } if (branchStatement && statement != null) { // reportSyntaxError("Unreachable code", statement.sourceStart, // statement.sourceEnd); @@ -453,10 +456,10 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI } if (token == TokenNameif || token == TokenNameswitch || token == TokenNamefor || token == TokenNamewhile || token == TokenNamedo || token == TokenNameforeach || token == TokenNamecontinue || token == TokenNamebreak - || token == TokenNamereturn || token == TokenNameexit || token == TokenNameecho || token == TokenNameglobal - || token == TokenNamestatic || token == TokenNameunset || token == TokenNamefunction || token == TokenNamedeclare - || token == TokenNametry || token == TokenNamecatch || token == TokenNamethrow || token == TokenNamefinal - || token == TokenNameabstract || token == TokenNameclass || token == TokenNameinterface) { + || token == TokenNamereturn || token == TokenNameexit || token == TokenNameecho || token == TokenNameECHO_INVISIBLE + || token == TokenNameglobal || token == TokenNamestatic || token == TokenNameunset || token == TokenNamefunction + || token == TokenNamedeclare || token == TokenNametry || token == TokenNamecatch || token == TokenNamethrow + || token == TokenNamefinal || token == TokenNameabstract || token == TokenNameclass || token == TokenNameinterface) { break; } // System.out.println(scanner.toStringAction(token)); @@ -748,33 +751,26 @@ public class Parser implements ITerminalSymbols, CompilerModifiers, ParserBasicI getNextToken(); } return statement; - } else if (token == TokenNameINLINE_HTML) { - if (scanner.phpExpressionTag) { - // start of block + } else if (token == TokenNameECHO_INVISIBLE) { + // 0-length token directly after PHP short tag <?= + getNextToken(); + expressionList(); + if (token == TokenNameSEMICOLON) { getNextToken(); - expr(); - if (token == TokenNameSEMICOLON) { - getNextToken(); - } if (token != TokenNameINLINE_HTML) { - throwSyntaxError("Missing '?>' for open PHP expression block ('' expected after PHP short tag expression (only the first expression will be echoed)."); } } else { + if (token != TokenNameINLINE_HTML) { + throwSyntaxError("';' expected after PHP short tag '