X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPPartitionScanner.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPPartitionScanner.java index 4b163e0..5f1c3a7 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPPartitionScanner.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPPartitionScanner.java @@ -8,7 +8,7 @@ Contributors: Igor Malinin - initial contribution - $Id: PHPPartitionScanner.java,v 1.27 2005-05-06 00:57:28 stefanbjarni Exp $ + $Id: PHPPartitionScanner.java,v 1.28 2005-05-13 20:19:42 axelcl Exp $ **********************************************************************/ package net.sourceforge.phpeclipse.phpeditor.php; @@ -169,11 +169,17 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { break; case '/': // read until end of line - readSingleLine(); + if (!readSingleLine()) { + state = STATE_DEFAULT; + return getToken(token); + } break; case '*': // read until end of comment - readMultiLineComment(); + if (!readMultiLineComment()) { + state = STATE_DEFAULT; + return getToken(token); + } break; default: continue; @@ -181,7 +187,10 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { break; case '#': // line comment // read until end of line - readSingleLine(); + if (!readSingleLine()) { + state = STATE_DEFAULT; + return getToken(token); + } break; case '?': ch = read(); @@ -193,6 +202,8 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { case '?': continue; + default: + continue; } } @@ -252,6 +263,14 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { return Token.EOF; } +// if (length<0) { +// try { +// System.out.println("Length<0:"+document.get(offset,5)+""+length); +// } catch (BadLocationException e) { +// e.printStackTrace(); +// } +// } + if (type == null) { return Token.UNDEFINED; } @@ -280,14 +299,17 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { private boolean readUntilEscapedDQ() { // search last double quoted character - if (position >= end) { - return false; - } try { char ch; while (true) { + if (position >= end) { + return false; + } ch = document.getChar(position++); if (ch == '\\') { + if (position >= end) { + return false; + } ch = document.getChar(position++); // ignore escaped character } else if (ch == '"') { return true; @@ -301,14 +323,17 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { private boolean readUntilEscapedSQ() { // search last single quoted character - if (position >= end) { - return false; - } try { char ch; while (true) { + if (position >= end) { + return false; + } ch = document.getChar(position++); if (ch == '\\') { + if (position >= end) { + return false; + } ch = document.getChar(position++); // ignore escaped character } else if (ch == '\'') { return true; @@ -320,39 +345,42 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { return false; } - private void readSingleLine() { - if (position >= end) { - return; - } + private boolean readSingleLine() { try { - while (document.getChar(position++) != '\n') { - - } + do { + if (position >= end) { + return false; + } + } while (document.getChar(position++) != '\n'); + return true; } catch (BadLocationException e) { --position; - return; } + return false; } - private void readMultiLineComment() { - if (position >= end) { - return; - } + private boolean readMultiLineComment() { try { char ch; while (true) { + if (position >= end) { + return false; + } ch = document.getChar(position++); if (ch == '*') { + if (position >= end) { + return false; + } if (document.getChar(position) == '/') { position++; - break; + return true; } } } } catch (BadLocationException e) { --position; - return; } + return false; } private void unread() {