better error messages for unterminated strings and comments
authorkhartlage <khartlage>
Sun, 11 Jul 2004 20:49:26 +0000 (20:49 +0000)
committerkhartlage <khartlage>
Sun, 11 Jul 2004 20:49:26 +0000 (20:49 +0000)
net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Parser.java
net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/parser/Scanner.java

index 264b0ad..137bf14 100644 (file)
@@ -208,6 +208,13 @@ public class Parser //extends PHPParserSuperclass
       }
     } catch (InvalidInputException e) {
       token = TokenNameERROR;
+      String detailedMessage = e.getMessage();
+      
+      if (detailedMessage==Scanner.UNTERMINATED_STRING) {
+        throwSyntaxError("Unterminated string.");
+      } else if (detailedMessage==Scanner.UNTERMINATED_COMMENT) {
+        throwSyntaxError("Unterminated commment.");
+      }
     }
     return;
   }
index 0544363..e313f23 100644 (file)
@@ -871,6 +871,8 @@ public class Scanner implements IScanner, ITerminalSymbols {
         //                  }
       }
     } catch (IndexOutOfBoundsException e) {
+//    reset end position for error reporting
+      currentPosition-=2; 
       throw new InvalidInputException(UNTERMINATED_STRING);
     } catch (InvalidInputException e) {
       if (e.getMessage().equals(INVALID_ESCAPE)) {
@@ -967,6 +969,8 @@ public class Scanner implements IScanner, ITerminalSymbols {
         //                  }
       }
     } catch (IndexOutOfBoundsException e) {
+      // reset end position for error reporting
+      currentPosition-=2;
       throw new InvalidInputException(UNTERMINATED_STRING);
     } catch (InvalidInputException e) {
       if (e.getMessage().equals(INVALID_ESCAPE)) {
@@ -1063,6 +1067,8 @@ public class Scanner implements IScanner, ITerminalSymbols {
         //                  }
       }
     } catch (IndexOutOfBoundsException e) {
+//    reset end position for error reporting
+      currentPosition-=2;
       throw new InvalidInputException(UNTERMINATED_STRING);
     } catch (InvalidInputException e) {
       if (e.getMessage().equals(INVALID_ESCAPE)) {
@@ -1704,6 +1710,8 @@ public class Scanner implements IScanner, ITerminalSymbols {
                       return TokenNameCOMMENT_BLOCK;
                     }
                   } catch (IndexOutOfBoundsException e) {
+//                  reset end position for error reporting
+                    currentPosition-=2;
                     throw new InvalidInputException(UNTERMINATED_COMMENT);
                   }
                   break;