improved php parser
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / PHPParserAction.java
index 6882db1..dd34221 100644 (file)
@@ -41,8 +41,8 @@ public class PHPParserAction extends TextEditorAction {
   //   public static final String LIBRARY = "library"; //$NON-NLS-1$
   //   public static final String MODULE = "module"; //$NON-NLS-1$
 
-  private static final String ERROR = "error"; //$NON-NLS-1$
-  private static final String WARNING = "warning"; //$NON-NLS-1$
+ // private static final String ERROR = "error"; //$NON-NLS-1$
+ // private static final String WARNING = "warning"; //$NON-NLS-1$
 
   private static PHPParserAction instance = new PHPParserAction();
 
@@ -120,19 +120,19 @@ public class PHPParserAction extends TextEditorAction {
   /**
    * Create marker for the parse error
    */
-  protected void setMarker(String message, int lineNumber) throws CoreException {
-
-    Hashtable attributes = new Hashtable();
-    MarkerUtilities.setMessage(attributes, message);
-    if (message.startsWith(ERROR))
-      attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
-    else if (message.startsWith(WARNING))
-      attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
-    else
-      attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
-    MarkerUtilities.setLineNumber(attributes, lineNumber);
-    MarkerUtilities.createMarker(fileToParse, attributes, IMarker.PROBLEM);
-  }
+//  protected void setMarker(String message, int lineNumber) throws CoreException {
+//
+//    Hashtable attributes = new Hashtable();
+//    MarkerUtilities.setMessage(attributes, message);
+//    if (message.startsWith(ERROR))
+//      attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
+//    else if (message.startsWith(WARNING))
+//      attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
+//    else
+//      attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
+//    MarkerUtilities.setLineNumber(attributes, lineNumber);
+//    MarkerUtilities.createMarker(fileToParse, attributes, IMarker.PROBLEM);
+//  }
 
   //  private String getIdentifier(InputStream iStream, int c) {
   //    //    int i = 0;
@@ -157,11 +157,7 @@ public class PHPParserAction extends TextEditorAction {
   //  }
 
   protected void parse(InputStream iStream) {
-    boolean lineCommentMode = false;
-    boolean multiLineCommentMode = false;
-    boolean stringMode = false;
 
-    //   ArrayList phpList = new ArrayList();
     StringBuffer buf = new StringBuffer();
     int c0;
     try {
@@ -172,136 +168,8 @@ public class PHPParserAction extends TextEditorAction {
       return;
     }
     String input = buf.toString();
-    int lineNumber = 1;
-    int startLineNumber = 1;
-    int startIndex = 0;
-    char ch;
-    char ch2;
-    boolean phpMode = false;
-    boolean phpFound = false;
-
-    try {
-      int i = 0;
-      while (i < input.length()) {
-        ch = input.charAt(i++);
-        if (ch == '\n') {
-          lineNumber++;
-        }
-        if ( (! phpMode) && ch == '<') {
-          ch2 = input.charAt(i++);
-          if (ch2 == '?') {
-            ch2 = input.charAt(i++);
-            if (Character.isWhitespace(ch2)) {
-              // php start 
-              phpMode = true;
-              phpFound = true;
-              startIndex = i;
-              startLineNumber = lineNumber;
-              continue;
-            } else if (ch2 == 'p') {
-              ch2 = input.charAt(i++);
-              if (ch2 == 'h') {
-                ch2 = input.charAt(i++);
-                if (ch2 == 'p') {
-                  phpMode = true;
-                  phpFound = true;
-                  startIndex = i;
-                  startLineNumber = lineNumber;
-                  continue;
-                }
-                i--;
-              }
-              i--;
-            } else if (ch2 == 'P') {
-              ch2 = input.charAt(i++);
-              if (ch2 == 'H') {
-                ch2 = input.charAt(i++);
-                if (ch2 == 'P') {
-                  phpMode = true;
-                  phpFound = true;
-                  startIndex = i;
-                  startLineNumber = lineNumber;
-                  continue;
-                }
-                i--;
-              }
-              i--;
-            }
-            i--;
-          }
-          i--;
-        }
-
-        if (phpMode) {
-          buf.append(ch);
-          if (lineCommentMode && (ch == '\n')) {
-            lineCommentMode = false;
-            // read until end of line
-          } else if ((!stringMode) && (ch == '#')) {
-            // read until end of line
-            lineCommentMode = true;
-            continue;
-          } else if ((!stringMode) && (!multiLineCommentMode) && (ch == '/')) {
-            ch2 = input.charAt(i++);
-            if (ch2 == '/') {
-              lineCommentMode = true;
-              continue;
-            } else if (ch2 == '*') {
-              multiLineCommentMode = true;
-              continue;
-            } else {
-              i--;
-            }
-          } else if (ch == '*' && multiLineCommentMode) {
-            ch2 = input.charAt(i++);
-            if (ch2 == '/') {
-              multiLineCommentMode = false;
-              continue;
-            } else {
-              i--;
-            }
-          } else if (ch == '\\' && stringMode) {
-            ch2 = input.charAt(i++);
-            if (ch2 == '"') {
-              continue;
-            } else {
-              i--;
-            }
-          } else if ((!lineCommentMode) && (!multiLineCommentMode) && (ch == '"')) {
-            if (stringMode) {
-              stringMode = false;
-            } else {
-              stringMode = true;
-            }
-            continue;
-          }
-          if (lineCommentMode || multiLineCommentMode || stringMode) {
-            continue;
-          }
-
-          if (ch == '?') {
-            ch2 = input.charAt(i++);
-            if (ch2 == '>') {
-              // php end
-              phpMode = false;
-              //             phpList.add(input.substring(startIndex, i-2));
-              try {
-                PHPParser parser = new PHPParser();
-                parser.start(input.substring(startIndex, i - 2), startLineNumber);
-              } catch (SyntaxError err) {
-                setMarker(err.getMessage(), err.getLine());
-              }
-              continue;
-            }
-            i--;
-          }
-        } else {
-        }
-      }
-      if (!phpFound) {
-        setMarker("No PHP source code found.", lineNumber);
-      }
-    } catch (CoreException e) {
-    }
+    
+      PHPParser parser = new PHPParser(fileToParse);
+      parser.htmlParse(input);
   }
 }
\ No newline at end of file