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) {
}
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
}
}
}