X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java index be00721..9ad50d5 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCodeScanner.java @@ -22,8 +22,6 @@ import net.sourceforge.phpeclipse.phpeditor.util.PHPWhitespaceDetector; import net.sourceforge.phpeclipse.phpeditor.util.PHPWordDetector; import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.rules.EndOfLineRule; import org.eclipse.jface.text.rules.ICharacterScanner; import org.eclipse.jface.text.rules.IRule; import org.eclipse.jface.text.rules.IToken; @@ -181,7 +179,7 @@ public class PHPCodeScanner extends AbstractJavaScanner { if (character == '`') { - while (true) { + while (character != ICharacterScanner.EOF) { character = scanner.read(); if (character == '\\') { character = scanner.read(); @@ -189,7 +187,8 @@ public class PHPCodeScanner extends AbstractJavaScanner { return fToken; } } - + scanner.unread(); + return Token.UNDEFINED; } else { scanner.unread(); return Token.UNDEFINED; @@ -212,6 +211,7 @@ public class PHPCodeScanner extends AbstractJavaScanner { public IToken evaluate(ICharacterScanner scanner) { int c = scanner.read(); boolean isVariable = false; + boolean isUnderscore = false; if (c == '<') { c = scanner.read(); if (c != '?') { @@ -262,13 +262,21 @@ public class PHPCodeScanner extends AbstractJavaScanner { 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()); @@ -296,6 +304,7 @@ public class PHPCodeScanner extends AbstractJavaScanner { IPreferenceConstants.PHP_KEYWORD, IPreferenceConstants.PHP_FUNCTIONNAME, IPreferenceConstants.PHP_VARIABLE, + IPreferenceConstants.PHP_VARIABLE_DOLLAR, IPreferenceConstants.PHP_STRING_DQ, IPreferenceConstants.PHP_STRING_SQ, IPreferenceConstants.PHP_TYPE,