public IToken evaluate(ICharacterScanner scanner) {
int c = scanner.read();
boolean isVariable = false;
+ boolean isUnderscore = false;
if (c == '<') {
c = scanner.read();
if (c != '?') {
if (fColumn == UNDEFINED || (fColumn == scanner.getColumn() - 1)) {
fBuffer.setLength(0);
- do {
- fBuffer.append((char) c);
+ fBuffer.append((char) c);
+ c = scanner.read();
+ if (c == '_') {
+ isUnderscore = true;
+ }
+ while (c != ICharacterScanner.EOF && fDetector.isWordPart((char) c)) {
+ fBuffer.append((char) c);
c = scanner.read();
- } while (c != ICharacterScanner.EOF && fDetector.isWordPart((char) c));
+ }
scanner.unread();
if (isVariable) {
+ if (isUnderscore) {
+ return getToken(IPreferenceConstants.PHP_VARIABLE_DOLLAR);
+ }
return getToken(IPreferenceConstants.PHP_VARIABLE);
}
IToken token = (IToken) fWords.get(fBuffer.toString());
IPreferenceConstants.PHP_KEYWORD,
IPreferenceConstants.PHP_FUNCTIONNAME,
IPreferenceConstants.PHP_VARIABLE,
+ IPreferenceConstants.PHP_VARIABLE_DOLLAR,
IPreferenceConstants.PHP_STRING_DQ,
IPreferenceConstants.PHP_STRING_SQ,
IPreferenceConstants.PHP_TYPE,