added syntax color for {} operators
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCodeScanner.java
index 7e5c2cb..23212ba 100644 (file)
@@ -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);