Changes:
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / parser / Scanner.java
index 3391262..2206c00 100644 (file)
@@ -14,7 +14,9 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import net.sourceforge.phpdt.core.compiler.*;
+import net.sourceforge.phpdt.core.compiler.IScanner;
+import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
+import net.sourceforge.phpdt.core.compiler.InvalidInputException;
 import net.sourceforge.phpdt.internal.compiler.ast.StringLiteral;
 
 public class Scanner implements IScanner, ITerminalSymbols {
@@ -218,8 +220,7 @@ public class Scanner implements IScanner, ITerminalSymbols {
   public int getCurrentTokenEndPosition() {
     return this.currentPosition - 1;
   }
-  
-  
+
   public final char[] getCurrentTokenSource() {
     // Return the token REAL source (aka unicodes are precomputed)
 
@@ -277,17 +278,17 @@ public class Scanner implements IScanner, ITerminalSymbols {
   public int getCurrentTokenStartPosition() {
     return this.startPosition;
   }
-  
-       public final char[] getCurrentStringLiteralSource() {
-               // Return the token REAL source (aka unicodes are precomputed)
 
-               char[] result;
+  public final char[] getCurrentStringLiteralSource() {
+    // Return the token REAL source (aka unicodes are precomputed)
+
+    char[] result;
 
-               int length;
-               System.arraycopy(source, startPosition+1, result = new char[length = currentPosition - startPosition - 2], 0, length);
-               //    }
-               return result;
-       }
+    int length;
+    System.arraycopy(source, startPosition + 1, result = new char[length = currentPosition - startPosition - 2], 0, length);
+    //    }
+    return result;
+  }
 
   /*
    * Search the source position corresponding to the end of a given line number
@@ -865,8 +866,12 @@ public class Scanner implements IScanner, ITerminalSymbols {
                 return TokenNameTWIDDLE_EQUAL;
               return TokenNameTWIDDLE;
             case '!' :
-              if (getNextChar('='))
+              if (getNextChar('=')) {
+                if (getNextChar('=')) {
+                  return TokenNameNOT_EQUAL_EQUAL;
+                }
                 return TokenNameNOT_EQUAL;
+              }
               return TokenNameNOT;
             case '*' :
               if (getNextChar('='))
@@ -946,8 +951,12 @@ public class Scanner implements IScanner, ITerminalSymbols {
                 return TokenNameGREATER;
               }
             case '=' :
-              if (getNextChar('='))
+              if (getNextChar('=')) {
+                if (getNextChar('=')) {
+                  return TokenNameEQUAL_EQUAL_EQUAL;
+                }
                 return TokenNameEQUAL_EQUAL;
+              }
               if (getNextChar('>'))
                 return TokenNameEQUAL_GREATER;
               return TokenNameEQUAL;
@@ -2538,6 +2547,9 @@ public class Scanner implements IScanner, ITerminalSymbols {
     };
 
     if (isVariable) {
+      if (new String(getCurrentTokenSource()).equals("$this")) {
+        return TokenNamethis;
+      }
       return TokenNameVariable;
     }
     int index, length;
@@ -3229,7 +3241,7 @@ public class Scanner implements IScanner, ITerminalSymbols {
 
     switch (act) {
       case TokenNameERROR :
-        return "ScannerError(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$
+        return "ScannerError"; // + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$
       case TokenNameStopPHP :
         return "StopPHP(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
       case TokenNameIdentifier :
@@ -3310,6 +3322,8 @@ public class Scanner implements IScanner, ITerminalSymbols {
         return "var"; //$NON-NLS-1$
       case TokenNamewhile :
         return "while"; //$NON-NLS-1$
+      case TokenNamethis :
+        return "$this"; //$NON-NLS-1$
       case TokenNameIntegerLiteral :
         return "Integer(" + new String(getCurrentTokenSource()) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
       case TokenNameDoubleLiteral :
@@ -3329,6 +3343,8 @@ public class Scanner implements IScanner, ITerminalSymbols {
         return "--"; //$NON-NLS-1$
       case TokenNameEQUAL_EQUAL :
         return "=="; //$NON-NLS-1$
+      case TokenNameEQUAL_EQUAL_EQUAL :
+        return "==="; //$NON-NLS-1$
       case TokenNameEQUAL_GREATER :
         return "=>"; //$NON-NLS-1$
       case TokenNameLESS_EQUAL :
@@ -3337,6 +3353,8 @@ public class Scanner implements IScanner, ITerminalSymbols {
         return ">="; //$NON-NLS-1$
       case TokenNameNOT_EQUAL :
         return "!="; //$NON-NLS-1$
+      case TokenNameNOT_EQUAL_EQUAL :
+        return "!=="; //$NON-NLS-1$
       case TokenNameLEFT_SHIFT :
         return "<<"; //$NON-NLS-1$
       case TokenNameRIGHT_SHIFT :