X-Git-Url: http://git.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 7e5c2cb..452b3d3 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 @@ -7,7 +7,7 @@ http://www.eclipse.org/legal/cpl-v10.html Contributors: IBM Corporation - Initial implementation - Klaus Hartlage - www.eclipseproject.de + www.phpeclipse.de **********************************************************************/ package net.sourceforge.phpeclipse.phpeditor.php; @@ -45,18 +45,21 @@ public class PHPCodeScanner extends AbstractJavaScanner { protected class OperatorRule implements IRule { /** Java operators */ - private final char[] JAVA_OPERATORS= { ';', '(', ')', '{', '}', '.', '=', '/', '\\', '+', '-', '*', '[', ']', '<', '>', ':', '?', '!', ',', '|', '&', '^', '%', '~', '@'}; + private final char[] JAVA_OPERATORS= { ';', '(', ')', '.', '=', '/', '\\', '+', '-', '*', '[', ']', '<', '>', ':', '?', '!', ',', '|', '&', '^', '%', '~', '@'}; /** Token to return for this rule */ private final IToken fToken; - + /** Token to return for braces */ + private final IToken fTokenBraces; /** * Creates a new operator rule. * * @param token * Token to use for this rule */ - public OperatorRule(IToken token) { + public OperatorRule(IToken token, IToken tokenBraces) { fToken= token; + fTokenBraces= tokenBraces; + } /** @@ -81,10 +84,13 @@ public class PHPCodeScanner extends AbstractJavaScanner { public IToken evaluate(ICharacterScanner scanner) { int character= scanner.read(); + if (character=='{' || character=='}') { + return fTokenBraces; + } if (isOperator((char) character)) { int lastCharacter = character; character= scanner.read(); - if (!isOperator((char) character)) { + if (!isOperator((char) character)) { scanner.unread(); return fToken; } @@ -92,12 +98,11 @@ public class PHPCodeScanner extends AbstractJavaScanner { scanner.unread(); scanner.unread(); return Token.UNDEFINED; - } - if (lastCharacter=='?' && character=='>') { + } else if (lastCharacter=='?' && character=='>') { scanner.unread(); scanner.unread(); return Token.UNDEFINED; - } + } do { character= scanner.read(); } while (isOperator((char) character)); @@ -211,6 +216,7 @@ public class PHPCodeScanner extends AbstractJavaScanner { IPreferenceConstants.PHP_CONSTANT, IPreferenceConstants.PHP_DEFAULT, IPreferenceConstants.PHP_OPERATOR, + IPreferenceConstants.PHP_BRACE_OPERATOR, IPreferenceConstants.PHP_KEYWORD_RETURN}; /** * Creates a PHP code scanner @@ -357,8 +363,7 @@ public class PHPCodeScanner extends AbstractJavaScanner { wordRule.addWord("return", token); // Add rule for operators and brackets (at the end !) - token= getToken(IPreferenceConstants.PHP_OPERATOR); - rules.add(new OperatorRule(token)); + rules.add(new OperatorRule(getToken(IPreferenceConstants.PHP_OPERATOR), getToken(IPreferenceConstants.PHP_BRACE_OPERATOR))); rules.add(wordRule);