Contributors:
Igor Malinin - initial contribution
- $Id: PHPPartitionScanner.java,v 1.26 2005-05-05 14:06:38 axelcl Exp $
+ $Id: PHPPartitionScanner.java,v 1.28 2005-05-13 20:19:42 axelcl Exp $
**********************************************************************/
package net.sourceforge.phpeclipse.phpeditor.php;
import net.sourceforge.phpeclipse.ui.text.rules.AbstractPartitioner;
-import org.eclipse.core.internal.indexing.AbstractPagePolicy;
import org.eclipse.jface.text.Assert;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
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;
break;
case '#': // line comment
// read until end of line
- readSingleLine();
+ if (!readSingleLine()) {
+ state = STATE_DEFAULT;
+ return getToken(token);
+ }
break;
case '?':
ch = read();
case '?':
continue;
+ default:
+ continue;
}
}
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;
}
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;
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;
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() {