Parser detects wrong include files now
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCodeScanner.java
index 5e324f1..452b3d3 100644 (file)
@@ -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
@@ -300,76 +306,6 @@ public class PHPCodeScanner extends AbstractJavaScanner {
   protected String[] getTokenProperties() {
     return fgTokenProperties;
   }
-  //  public void updateToken(JavaColorManager provider) {
-  //    final IPreferenceStore store =
-  // PHPeclipsePlugin.getDefault().getPreferenceStore();
-  //
-  //    Color BackgroundColor =
-  // provider.getColor(PreferenceConverter.getColor(store,
-  // PHP_EDITOR_BACKGROUND));
-  //
-  //    variable.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store, PHP_VARIABLE)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_VARIABLE_BOLD) ? SWT.BOLD : SWT.NONE)
-  //          + (store.getBoolean(PHP_VARIABLE_ITALIC) ? SWT.ITALIC : SWT.NONE)));
-  //    keyword.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store, PHP_KEYWORD)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_KEYWORD_BOLD) ? SWT.BOLD : SWT.NONE)
-  //          + (store.getBoolean(PHP_KEYWORD_ITALIC) ? SWT.ITALIC : SWT.NONE)));
-  //    type.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store, PHP_TYPE)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_TYPE_BOLD) ? SWT.BOLD : SWT.NONE) +
-  // (store.getBoolean(PHP_TYPE_ITALIC) ? SWT.ITALIC : SWT.NONE)));
-  //    functionName.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store, PHP_FUNCTIONNAME)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_FUNCTIONNAME_BOLD) ? SWT.BOLD : SWT.NONE)
-  //          + (store.getBoolean(PHP_FUNCTIONNAME_ITALIC) ? SWT.ITALIC : SWT.NONE)));
-  //    constant.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store, PHP_CONSTANT)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_CONSTANT_BOLD) ? SWT.BOLD : SWT.NONE)
-  //          + (store.getBoolean(PHP_CONSTANT_ITALIC) ? SWT.ITALIC : SWT.NONE)));
-  //    string.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store, PHP_STRING)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_STRING_BOLD) ? SWT.BOLD : SWT.NONE) +
-  // (store.getBoolean(PHP_STRING_ITALIC) ? SWT.ITALIC : SWT.NONE)));
-  //    comment.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store,
-  // PHP_SINGLELINE_COMMENT)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_SINGLELINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NONE)
-  //          + (store.getBoolean(PHP_SINGLELINE_COMMENT_ITALIC) ? SWT.ITALIC :
-  // SWT.NONE)));
-  //    multi_comment.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store,
-  // PHP_MULTILINE_COMMENT)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_MULTILINE_COMMENT_BOLD) ? SWT.BOLD : SWT.NONE)
-  //          + (store.getBoolean(PHP_MULTILINE_COMMENT_ITALIC) ? SWT.ITALIC :
-  // SWT.NONE)));
-  //    other.setData(
-  //      new TextAttribute(
-  //        provider.getColor(PreferenceConverter.getColor(store, PHP_DEFAULT)),
-  //        BackgroundColor,
-  //        (store.getBoolean(PHP_DEFAULT_BOLD) ? SWT.BOLD : SWT.NONE)
-  //          + (store.getBoolean(PHP_DEFAULT_ITALIC) ? SWT.ITALIC : SWT.NONE)));
-  //  }
-
-  // public void updateWordRules() {
-
 
   /*
    * @see AbstractJavaScanner#createRules()
@@ -427,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);