X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Scanner.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Scanner.java index af7f65a..0997cb7 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Scanner.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Scanner.java @@ -871,6 +871,8 @@ public class Scanner implements IScanner, ITerminalSymbols { // } } } catch (IndexOutOfBoundsException e) { +// reset end position for error reporting + currentPosition-=2; throw new InvalidInputException(UNTERMINATED_STRING); } catch (InvalidInputException e) { if (e.getMessage().equals(INVALID_ESCAPE)) { @@ -967,6 +969,8 @@ public class Scanner implements IScanner, ITerminalSymbols { // } } } catch (IndexOutOfBoundsException e) { + // reset end position for error reporting + currentPosition-=2; throw new InvalidInputException(UNTERMINATED_STRING); } catch (InvalidInputException e) { if (e.getMessage().equals(INVALID_ESCAPE)) { @@ -1063,6 +1067,8 @@ public class Scanner implements IScanner, ITerminalSymbols { // } } } catch (IndexOutOfBoundsException e) { +// reset end position for error reporting + currentPosition-=2; throw new InvalidInputException(UNTERMINATED_STRING); } catch (InvalidInputException e) { if (e.getMessage().equals(INVALID_ESCAPE)) { @@ -1185,7 +1191,7 @@ public class Scanner implements IScanner, ITerminalSymbols { case '{' : if (encapsedChar == '$') { if (getNextChar('$')) - return TokenNameCURLY_OPEN; + return TokenNameLBRACE_DOLLAR; } return TokenNameLBRACE; case '}' : @@ -1197,7 +1203,7 @@ public class Scanner implements IScanner, ITerminalSymbols { case '\'' : if (tokenizeStrings) { consumeStringConstant(); - return TokenNameStringConstant; + return TokenNameStringSingleQuote; } return TokenNameEncapsedString1; case '"' : @@ -1462,11 +1468,11 @@ public class Scanner implements IScanner, ITerminalSymbols { return TokenNameAT; case '\'' : consumeStringConstant(); - return TokenNameStringConstant; + return TokenNameStringSingleQuote; case '"' : if (tokenizeStrings) { consumeStringLiteral(); - return TokenNameStringLiteral; + return TokenNameStringDoubleQuote; } return TokenNameEncapsedString2; case '`' : @@ -1704,6 +1710,8 @@ public class Scanner implements IScanner, ITerminalSymbols { return TokenNameCOMMENT_BLOCK; } } catch (IndexOutOfBoundsException e) { +// reset end position for error reporting + currentPosition-=2; throw new InvalidInputException(UNTERMINATED_COMMENT); } break; @@ -2259,6 +2267,9 @@ public class Scanner implements IScanner, ITerminalSymbols { public char[] getSource() { return this.source; } + public static boolean isIdentifierOrKeyword(int token) { + return (token == TokenNameIdentifier) || (token > TokenNameKEYWORD); + } final char[] optimizedCurrentTokenSource1() { //return always the same char[] build only once //optimization at no speed cost of 99.5 % of the singleCharIdentifier @@ -3726,9 +3737,9 @@ public class Scanner implements IScanner, ITerminalSymbols { return "Integer(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ case TokenNameDoubleLiteral : return "Double(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ - case TokenNameStringLiteral : + case TokenNameStringDoubleQuote : return "StringLiteral(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ - case TokenNameStringConstant : + case TokenNameStringSingleQuote : return "StringConstant(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$ case TokenNameStringInterpolated : return "StringInterpolated(" + new String(getCurrentTokenSource()) @@ -3849,6 +3860,8 @@ public class Scanner implements IScanner, ITerminalSymbols { return "$"; case TokenNameDOLLAR_LBRACE : return "${"; + case TokenNameLBRACE_DOLLAR : + return "{$"; case TokenNameEOF : return "EOF"; //$NON-NLS-1$ case TokenNameWHITESPACE :