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 55d8783..a3a6e0f 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 @@ -306,27 +306,35 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { return false; } + /** + * Read until HEREDOC ends + * + * @return + */ private boolean readUntilEscapedHEREDOC() { - // search until heredoc ends try { char ch; StringBuffer buf = new StringBuffer(); char[] heredocIdent; + if (position >= end) { return false; } + ch = document.getChar(position++); - // #1493165 start + + while (ch == ' ') { if (position >= end) { return false; } ch = document.getChar(position++); } - // #1493165 end + if (!Scanner.isPHPIdentifierStart(ch)) { return false; } + while (Scanner.isPHPIdentifierPart(ch)) { buf.append(ch); if (position >= end) { @@ -334,27 +342,35 @@ public class PHPPartitionScanner implements IPartitionTokenScanner { } ch = document.getChar(position++); } + heredocIdent = buf.toString().toCharArray(); + while (true) { if (position >= end) { return false; } - ch = document.getChar(position++); - if (ch == '\n') { // heredoc could end after a newline + + ch = document.getChar (position++); // Get the next character from file + + if (ch == '\n') { // heredoc could end after a newline int pos = 0; + while (true) { - if (position >= end) { - return false; + if (position >= end) { // If we are at the end of file + return false; // Return } - if (pos == heredocIdent.length) { - return true; + + if (pos == heredocIdent.length) { // If the found length equals the length of heredoc id + return true; // we found the end of heredoc } - ch = document.getChar(position++); // ignore escaped - // character - if (ch != heredocIdent[pos]) { - break; + + ch = document.getChar (position++); // Ignore escaped character + + if (ch != heredocIdent[pos]) { // If current character doesn't match the heredoc id + break; // break the heredoc end search } - pos++; + + pos++; // Character matched the heredoc id so far } } }