Two interfaces added for outlineable objects
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / parser / Parser.java
index 8a9f5e1..e3d3672 100644 (file)
@@ -26,11 +26,7 @@ import test.PHPParserSuperclass;
 
 public class Parser extends PHPParserSuperclass implements ITerminalSymbols {
 
-  public static final int ERROR = 2;
-  public static final int WARNING = 1;
-  public static final int INFO = 0;
-
-  //scanner token 
+  //scanner token
   public Scanner scanner;
 
   private IFile fileToParse;
@@ -156,7 +152,7 @@ public class Parser extends PHPParserSuperclass implements ITerminalSymbols {
     this.initializeScanner();
   }
   /**
-   *  Class Constructor.
+   *  ClassDeclaration Constructor.
    *
    *@param  s
    *@param  sess  Description of Parameter
@@ -198,36 +194,6 @@ public class Parser extends PHPParserSuperclass implements ITerminalSymbols {
     setMarker(fileToParse, message, charStart, charEnd, errorLevel);
   }
 
-  public static void setMarker(
-    IFile file,
-    String message,
-    int charStart,
-    int charEnd,
-    int errorLevel)
-    throws CoreException {
-    if (file != null) {
-      Hashtable attributes = new Hashtable();
-      MarkerUtilities.setMessage(attributes, message);
-      switch (errorLevel) {
-        case ERROR :
-          attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
-          break;
-        case WARNING :
-          attributes.put(
-            IMarker.SEVERITY,
-            new Integer(IMarker.SEVERITY_WARNING));
-          break;
-        case INFO :
-          attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
-          break;
-      }
-      MarkerUtilities.setCharStart(attributes, charStart);
-      MarkerUtilities.setCharEnd(attributes, charEnd);
-      // setLineNumber(attributes, lineNumber);
-      MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
-    }
-  }
-
   /**
    * This method will throw the SyntaxError.
    * It will add the good lines and columns to the Error
@@ -1452,7 +1418,7 @@ public class Parser extends PHPParserSuperclass implements ITerminalSymbols {
 
   private void parseDeclarations(
     PHPOutlineInfo outlineInfo,
-    PHPSegmentWithChildren current,
+    OutlineableWithChildren current,
     boolean goBack) {
     char[] ident;
     //   PHPClassDeclaration current = (PHPClassDeclaration) stack.peek();
@@ -1471,7 +1437,8 @@ public class Parser extends PHPParserSuperclass implements ITerminalSymbols {
           if (token == TokenNameVariable
             && store.getBoolean(PHPeclipsePlugin.PHP_OUTLINE_VAR)) {
             ident = scanner.getCurrentIdentifierSource();
-            String variableName = new String(ident);
+            //substring(1) added because PHPVarDeclaration doesn't need the $ anymore
+            String variableName = new String(ident).substring(1);
             outlineInfo.addVariable(variableName);
             getNextToken();
             if (token != TokenNameSEMICOLON) {
@@ -2009,11 +1976,15 @@ public class Parser extends PHPParserSuperclass implements ITerminalSymbols {
         if (token == TokenNameIdentifier) {
           getNextToken();
         } else {
-          throwSyntaxError("Class name expected after keyword 'extends'.");
+          throwSyntaxError("ClassDeclaration name expected after keyword 'extends'.");
         }
       }
     } else {
-      throwSyntaxError("Class name expected after keyword 'class'.");
+      if (token > TokenNameKEYWORD) {
+        throwSyntaxError(
+          "Don't use keyword for class declaration [" + token + "].");
+      }
+      throwSyntaxError("ClassDeclaration name expected after keyword 'class'.");
     }
   }
 
@@ -2104,6 +2075,12 @@ public class Parser extends PHPParserSuperclass implements ITerminalSymbols {
       } else {
         getNextToken();
       }
+    } else {
+      if (token > TokenNameKEYWORD) {
+        throwSyntaxError(
+          "Don't use keyword for function declaration [" + token + "].");
+      }
+      throwSyntaxError("Function name expected after keyword 'function'.");
     }
   }
   //