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 69bc1d5..62687dd 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.26 2005-05-05 14:06:38 axelcl Exp $ + $Id: PHPPartitionScanner.java,v 1.30 2005-09-30 18:10:36 axelcl Exp $ **********************************************************************/ package net.sourceforge.phpeclipse.phpeditor.php; @@ -17,7 +17,6 @@ import java.util.Map; 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; @@ -27,19 +26,13 @@ import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.Token; /** - * - * + * + * * @author Igor Malinin */ public class PHPPartitionScanner implements IPartitionTokenScanner { - // public static final String JSP_DIRECTIVE = "__jsp_directive"; - // public static final String JSP_COMMENT = "__jsp_comment"; - //// public static final String JSP_TAG = "__jsp_tag"; - // public static final String JSP_DECLARATION = "__jsp_declaration"; public static final String PHP_SCRIPTING_AREA = "__php_scripting_area "; - // public static final String JSP_EXPRESSION = "__jsp_expression"; - public static final int STATE_DEFAULT = 0; // public static final int STATE_TAG = 1; @@ -47,7 +40,7 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { private IDocument document; - private int begin; +// private int begin; private int end; @@ -57,7 +50,7 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { private int position; - private int state; +// private int state; private Map tokens = new HashMap(); @@ -76,35 +69,23 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { switch (read()) { case ICharacterScanner.EOF: - state = STATE_DEFAULT; +// state = STATE_DEFAULT; return getToken(null); case '<': switch (read()) { case ICharacterScanner.EOF: - state = STATE_DEFAULT; +// state = STATE_DEFAULT; return getToken(null); - case '?': // <%SCRIPLET <%@DIRECTIVE <%!DECLARATION <%=EXPRESSION <%--COMMENT - int ch = read(); - // if (Character.isWhitespace((char)ch)) { - // return nextJSPToken(PHP_SCRIPTING_AREA); - // } - switch (ch) { - case ICharacterScanner.EOF: - state = STATE_DEFAULT; - return getToken(PHP_SCRIPTING_AREA); - - // case '-': // <%- <%--COMMENT - // switch (read()) { - // case ICharacterScanner.EOF: - // case '-': // <%-- - // return nextCommentToken(); - // } - // - // break; - } - + case '?': // ': - state = STATE_DEFAULT; +// state = STATE_DEFAULT; return getToken(token); case '?': continue; + default: + continue; } } @@ -201,51 +193,6 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { } } - // private IToken nextCommentToken() { - // int ch = read(); - // loop: while (true) { - // switch (ch) { - // case ICharacterScanner.EOF: - // break loop; - // - // case '-': // - --%> - // ch = read(); - // switch (ch) { - // case ICharacterScanner.EOF: - // break loop; - // - // case '-': // -- --%> - // ch = read(); - // switch (ch) { - // case ICharacterScanner.EOF: - // break loop; - // - // case '%': // --% --%> - // ch = read(); - // switch (ch) { - // case ICharacterScanner.EOF: - // case '>': - // break loop; - // } - // - // continue loop; - // - // case '-': // --- ---%> - // unread(); - // continue loop; - // } - // - // ch = read(); - // continue loop; - // } - // } - // - // ch = read(); - // } - // - // return getToken(JSP_COMMENT); - // } - private IToken getToken(String type) { length = position - offset; @@ -253,6 +200,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; } @@ -281,14 +236,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; @@ -299,17 +257,20 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { } return false; } - + private boolean readUntilEscapedSQ() { // search last single quoted character - if (position >= end) { - return false; - } - try { + try { char ch; while (true) { - ch = document.getChar(position++); + 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; @@ -321,39 +282,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() { @@ -382,7 +346,7 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { */ public void setRange(IDocument document, int offset, int length) { this.document = document; - this.begin = offset; +// this.begin = offset; this.end = offset + length; this.offset = offset; @@ -394,14 +358,14 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { * @see org.eclipse.jface.text.rules.IPartitionTokenScanner */ public void setPartialRange(IDocument document, int offset, int length, String contentType, int partitionOffset) { - state = STATE_DEFAULT; - // if (partitionOffset > -1) { - // int delta= offset - partitionOffset; - // if (delta > 0) { - // this.setRange(document, partitionOffset, length + delta); - // return; - // } - // } +// state = STATE_DEFAULT; + if (partitionOffset > -1) { + int delta = offset - partitionOffset; + if (delta > 0) { + setRange(document, partitionOffset, length + delta); + return; + } + } setRange(document, partitionOffset, length); }