import net.sourceforge.phpdt.core.compiler.IScanner;
import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
import net.sourceforge.phpdt.core.compiler.InvalidInputException;
-import net.sourceforge.phpdt.internal.compiler.ast.StringLiteral;
+import net.sourceforge.phpeclipse.internal.compiler.ast.StringLiteral;
+
+
public class Scanner implements IScanner, ITerminalSymbols {
/*
* APIs ares - getNextToken() which return the current type of the token
// }
}
} 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)) {
// }
}
} 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)) {
// }
}
} 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)) {
case '{' :
if (encapsedChar == '$') {
if (getNextChar('$'))
- return TokenNameCURLY_OPEN;
+ return TokenNameLBRACE_DOLLAR;
}
return TokenNameLBRACE;
case '}' :
case '\'' :
if (tokenizeStrings) {
consumeStringConstant();
- return TokenNameStringConstant;
+ return TokenNameStringSingleQuote;
}
return TokenNameEncapsedString1;
case '"' :
return TokenNameAT;
case '\'' :
consumeStringConstant();
- return TokenNameStringConstant;
+ return TokenNameStringSingleQuote;
case '"' :
if (tokenizeStrings) {
consumeStringLiteral();
- return TokenNameStringLiteral;
+ return TokenNameStringDoubleQuote;
}
return TokenNameEncapsedString2;
case '`' :
return TokenNameCOMMENT_BLOCK;
}
} catch (IndexOutOfBoundsException e) {
+// reset end position for error reporting
+ currentPosition-=2;
throw new InvalidInputException(UNTERMINATED_COMMENT);
}
break;
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
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())
return "$";
case TokenNameDOLLAR_LBRACE :
return "${";
+ case TokenNameLBRACE_DOLLAR :
+ return "{$";
case TokenNameEOF :
return "EOF"; //$NON-NLS-1$
case TokenNameWHITESPACE :